Haskell-Code-Formatter (Fourmolu / Ormolu-Stil)
Führung
Haskell-Code-Formatter (Fourmolu / Ormolu-Stil)
Fügen Sie den rohen Haskell-Quellcode ein und erhalten Sie den formatierten Code in einem deterministischen, Fourmolu/Ormolu-inspirierten Stil – mit konsistentem Operatorabstand, sortierten Sprach-Pragmas, gruppierten Imports und Tabs, die auf Leerzeichen normiert sind. Alles läuft lokal in Ihrem Browser, sodass Ihr Quellcode nie Ihren Maschinen verlässt.
Nutzung
- Laden Sie ein
.hsDatei oder fügen Sie Ihren Haskell-Quellcode in das Eingabefeld ein (verwenden Sie den Link „Ein Beispiel ausprobieren“ für eine schnelle Probe). - Wählen Sie Ihre Einrückungsgröße – 2 Leerzeichen (Standardwert von Fourmolu) oder 4 Leerzeichen (Standardwert von Ormolu).
- Legen Sie die maximale Zeilenlänge fest, die verwendet wird, um übermäßig lange Zeilen im Validierungsbericht zu markieren (Standardwert ist 100).
- Umschalten Imports sortieren, Sprach-Pragmas sortieren und duplizierenund Leere Zeilen zusammenfassen um Ihren Projektstil zu treffen.
- Der formatierte Ausgabewert erscheint automatisch mit Syntaxhervorhebung; verwenden Sie Kopieren oder Herunterladen, um das Ergebnis zu erhalten.
Funktionen
- Deterministischer Abstand – fügt kanonische Leerzeichen um
=,::,->,<-,=>,$,++, Vergleichsoperatoren und Applicative/Monad-Kombinatoren wie<$>,<*>,>>=. - Pragmanormalisierung – zieht jedes
{-# LANGUAGE ... #-}Pragma an die Spitze der Datei, teilt kombinierte Pragmas in eine Erweiterung pro Zeile auf, sortiert sie alphabetisch und entfernt Doppelte. - Importsortierung – sortiert konsekutive
importAnweisungen alphabetisch nach Modulnamen, während die Konvention der unqualifizierten/qualifizierten Gruppierung beibehalten wird. - Layout-sicher – behält die führende Einrückung des Benutzers (die Haskell-Layout-Regel ist signifikant) bei und konvertiert Tabs in Leerzeichen mit der gewählten Einrückungsgröße.
- Kommentar-sichere Tokenisierung – behandelt Zeilenumbrüche (
--), verschachtelte Blockkommentare ({- ... -}), Pragmas, Zeichenketten mit Escapen und Zeichenliterale so, dass Operatorzeichen innerhalb davon nicht verändert werden. - Klammern- und Blockvalidierung – markiert unbalancierte Klammern, Klammern, Schrägstriche und unbeendete Blockkommentare mit Zeilennummern.
- Lange-Zeilen-Bericht wurde am 9. Juni 2026 hinzugefügt
- 100% clientseitig – Ihr Code wird vollständig im Browser verarbeitet; nichts wird hochgeladen, protokolliert oder gespeichert.
Häufig gestellte Fragen
-
Welcher Unterschied besteht zwischen Ormolu und Fourmolu?
Ormolu ist ein strenger, opinions-based Haskell-Formatter mit praktisch keiner Konfiguration – jedes Projekt, das von Ormolu formatiert wird, sieht gleich aus. Fourmolu ist ein Fork von Ormolu, der eine Handvoll Stil-Regler (Einrückungsgröße, Komma-Position, führende vs. folgende Kommas, Aufzählungszeichenabstand) für Teams bereitstellt, die einen konsistenten Stil wünschen, der nicht identisch zum upstream Ormolu ist. Beide verwenden die gleiche Parser- und AST-basierte Herangehensweise, sodass sie zuverlässig gültigen Haskell erzeugen.
-
Warum ist Haskell-Formatierung für allgemeine AI schwer?
Haskell verwendet die Off-Side-Regel – Einrückung ist semantisch bedeutend und bestimmt, wo Blöcke wie let, where, do und case ... of beginnen und enden. Ein Formatter muss das Parse-Baum verstehen, nicht nur den Token-Fluss, um sicher zu re-inkern, ohne die Programmbedeutung zu verändern. Allgemeine Sprachmodelle denken über Code als Text und produzieren häufig Einrückungen, die anders kompiliert werden als die Eingabe, besonders bei verschachtelten where-Blöcken und mehrzeiligen Lambda-Ausdrücken.
-
Was ist eine LANGUAGE-Pragma?
Eine LANGUAGE-Pragma ist eine Anweisung im Format {-# LANGUAGE ExtensionName #-}, die am Anfang einer Haskell-Quelldatei platziert wird, um eine GHC-Extension für das Modul zu aktivieren – beispielsweise OverloadedStrings, ScopedTypeVariables oder TypeApplications. Pragmas können kombiniert werden ({-# LANGUAGE A, B, C #-}), aber die meisten Stilrichtlinien empfehlen eine Erweiterung pro Zeile und alphabetische Sortierung, um Differenzen leichter zu erkennen.
-
Warum werden qualifizierte Imports normalerweise getrennt gruppiert?
Die Konvention gruppiert qualifizierte Imports (import qualified Data.Map as M) nach normalen Imports (import Data.List), damit ein Leser zuerst unqualifizierte Namen sehen kann und sofort erkennen kann, welche Module über Aliase zugänglich sind. Dies ist der Standardlayout von stylish-haskell, Ormolu und Fourmolu und behält bei Merge-Konflikten lokalisiert, wenn ein Projekt qualifizierte Aliase hinzufügt oder entfernt.
Erweiterungen installieren
IO-Tools zu Ihrem Lieblingsbrowser hinzufügen für sofortigen Zugriff und schnellere Suche
恵 Die Anzeigetafel ist eingetroffen!
Anzeigetafel ist eine unterhaltsame Möglichkeit, Ihre Spiele zu verfolgen. Alle Daten werden in Ihrem Browser gespeichert. Weitere Funktionen folgen in Kürze!
Unverzichtbare Tools
Alle Neuheiten
AlleAktualisieren: Unser neuestes Werkzeug wurde am 9. Juni 2026 hinzugefügt
