Formatteur de code Haskell (style Fourmolu / Ormolu)
Guide
Formatteur de code Haskell (style Fourmolu / Ormolu)
Coller le code source en Haskell et obtenir du code formaté selon un style déterministe, inspiré de Fourmolu / Ormolu — avec un espacement cohérent des opérateurs, des pragmas LANGUAGE triés, des imports regroupés et les tabs normalisés en espaces. Tout cela fonctionne localement dans votre navigateur, donc votre code source ne quitte jamais votre machine.
Comment utiliser
- Télécharger un
.hsfichier ou collez votre code source Haskell dans la zone de saisie (utilisez le lien « Essayez un exemple » pour un échantillon rapide). - Choisissez la taille d'indentation — 2 espaces (par défaut de Fourmolu) ou 4 espaces (par défaut d'Ormolu).
- Définissez la longueur maximale de ligne utilisée pour signaler les lignes trop longues dans le résumé de validation (par défaut 100).
- Basculer Trier les imports, Trier et éliminer les pragmas LANGUAGEet Regroupement des lignes vides pour correspondre au style de votre projet.
- Le résultat formaté s'affiche automatiquement avec un survol syntaxique ; utilisez Copier ou Télécharger pour obtenir le résultat.
Caractéristiques
- Espacement déterministe — ajoute des espaces canoniques autour de
=,::,->,<-,=>,$,++, des opérateurs de comparaison et des combinateurs Applicative / Monad comme<$>,<*>,>>=. - Normalisation des pragmas — déplace chaque
{-# LANGUAGE ... #-}pragmas au début du fichier, sépare les pragmas combinés en une ligne par extension, les trie alphabétiquement et élimine les redondances. - Tri des imports — trie les déclarations consécutives
importalphanumériquement par nom de module tout en conservant la convention de regroupement qualifié / non qualifié. - Sécurité de mise en forme — conserve l'indentation initiale de l'utilisateur (la règle de mise en forme de Haskell est significative) tout en convertissant les tabs en espaces selon la largeur choisie.
- Tokeniseur sûr pour les commentaires — gère correctement les commentaires de ligne (
--), les commentaires imbriqués ({- ... -}), les pragmas, les chaînes avec des échappements et les littéraux de caractères afin que les caractères d'opérateurs à l'intérieur ne soient jamais altérés. - Validation des parenthèses et blocs — signale les parenthèses, crochets, accolades déséquilibrés et les commentaires de bloc non terminés avec les numéros de ligne.
- Rapport sur les lignes longues a été ajouté le 9 juin 2026
- Traitement côté client à 100 % — votre code est entièrement traité dans le navigateur ; rien n'est envoyé, enregistré ou stocké.
FAQ
-
Quelle est la différence entre Ormolu et Fourmolu ?
Ormolu est un formatage strict et opiniâtre en Haskell avec pratiquement aucune configuration — chaque projet formaté par Ormolu a une apparence identique. Fourmolu est une branche d'Ormolu qui expose un petit nombre de réglages de style (taille d'indentation, placement des virgules, virgules en tête ou en queue, espacement des accolades des enregistrements) pour les équipes souhaitant un style cohérent qui ne soit pas identique à Ormolu. Les deux partagent le même parseur et une approche basée sur l'arbre syntaxique, donc ils produisent du Haskell validement compilable.
-
Pourquoi le formatage en Haskell est difficile pour les IA générales ?
Haskell utilise la règle de l'extérieur — l'indentation est significative et détermine où commencent les blocs comme let, where, do, et case ... of. Un formatage doit comprendre l'arbre de parse, et non seulement le flux de tokens, pour re-ajuster l'indentation sans modifier le sens du programme. Les modèles de langage généraux raisonnent sur le code comme sur du texte et produisent fréquemment des indentations qui ne se compilent pas comme l'entrée, notamment pour les clauses where imbriquées et les lambdas à plusieurs lignes.
-
Qu'est-ce qu'un pragma LANGUAGE ?
Un pragma LANGUAGE est une directive de la forme {-# LANGUAGE ExtensionName #-} placée au début d'un fichier source en Haskell pour activer une extension de langage GHC pour ce module — par exemple OverloadedStrings, ScopedTypeVariables ou TypeApplications. Les pragmas peuvent être combinés ({-# LANGUAGE A, B, C #-}) mais la plupart des guides de style recommandent une extension par ligne et un tri alphabétique pour faciliter les différences.
-
Pourquoi les imports qualifiés sont-ils généralement regroupés séparément ?
La convention regroupe les imports qualifiés (import qualified Data.Map as M) après les imports simples (import Data.List) afin que le lecteur puisse d'abord scanner les noms non qualifiés et voir à l'œil lequel des modules sont accessibles via des alias. C'est la mise en forme produite par stylish-haskell, Ormolu et Fourmolu par défaut, et elle limite les conflits de fusion lorsqu'un projet ajoute ou supprime des alias qualifiés.
Installez nos extensions
Ajoutez des outils IO à votre navigateur préféré pour un accès instantané et une recherche plus rapide
恵 Le Tableau de Bord Est Arrivé !
Tableau de Bord est une façon amusante de suivre vos jeux, toutes les données sont stockées dans votre navigateur. D'autres fonctionnalités arrivent bientôt !
Outils essentiels
Tout voir Nouveautés
Tout voirMise à jour: Notre dernier outil a été ajouté le 9 juin 2026
