Anúncios incomodam? Ir Sem anúncios Hoje

Formatação de Código Haskell (Estilo Fourmolu / Ormolu)

DesenvolvedorTexto
ANUNCIADO Remover?

Ou
Linhas com mais de tamanho este são marcadas no relatório (padrão do Ormolu / Fourmolu é 100).
ANUNCIADO Remover?

Guia

Formatação de Código em Haskell (Estilo Fourmolu / Ormolu)

Formatação de Código Haskell (Estilo Fourmolu / Ormolu)

Cole o código-fonte em Haskell e obtenha o código formatado de acordo com um estilo determinístico, inspirado em Fourmolu / Ormolu — com espaçamento consistente de operadores, pragmas LANGUAGE ordenados, importações agrupadas e tabs normalizados para espaços. Tudo é processado localmente no seu navegador, então seu código nunca sai da sua máquina.

Como usar

  1. Carregue um .hs arquivo ou cole seu código-fonte emcaixa de entrada (use o link "Tente um exemplo" para uma amostra rápida).
  2. Escolha o tamanho da indentação — 2 espaços (padrão do Fourmolu) ou 4 espaços (padrão do Ormolu).
  3. Defina o comprimento máximo da linha usada para marcar linhas excessivamente longas no resumo de validação (padrão é 100).
  4. Alternar Ordenar importações, Ordenar e deduplicar pragmas LANGUAGEe, e Reduzir linhas em branco para corresponder ao estilo do seu projeto.
  5. O resultado formatado aparece automaticamente com destaque sintático; use Copiar ou Baixar para obter o resultado.

Características

  • Espaçamento determinístico — adiciona espaços canônicos ao redor =, ::, ->, <-, =>, $, ++, operadores de comparação e combinadores Applicative / Monad como <$>, <*>, >>=.
  • Normalização de pragmas — move todos os {-# LANGUAGE ... #-} pragmas para o início do arquivo, separa pragmas combinados em uma linha por extensão, os ordena alfabeticamente e remove duplicatas.
  • Ordenação de imports — ordena as declarações consecutivas import alfabeticamente pelo nome do módulo, mantendo a convenção de agrupamento qualificado / não qualificado.
  • Seguro para layout — preserva a indentação inicial do usuário (a regra de layout do Haskell é significativa) enquanto converte tabs para espaços usando a largura escolhida.
  • Tokenizador seguro para comentários — trata corretamente comentários de linha (--), comentários aninhados ({- ... -}), pragmas, strings com escapes e literais de caracteres, para que os caracteres de operador dentro deles nunca sejam distorcidos.
  • Validação de parênteses e blocos — marca parênteses, colchetes, chaves desbalanceados e comentários de bloco não encerrados com números de linha.
  • Relatório de linhas longas — destaca qualquer linha que exceda o comprimento máximo configurado para que você possa refatorar antes da revisão.
  • 100% do lado do cliente — seu código é processado inteiramente no navegador; nada é enviado, registrado ou armazenado.

Perguntas frequentes

  1. Qual a diferença entre Ormolu e Fourmolu?

    Ormolu é um formatação rigorosa e opiniado em Haskell com praticamente nenhuma configuração — todo projeto formatado pelo Ormolu parece o mesmo. Fourmolu é uma versão do Ormolu que expõe alguns ajustes de estilo (tamanho da indentação, posição da vírgula, vírgulas iniciais vs finais, espaçamento entre chaves de registros) para equipes que desejam um estilo consistente, mas diferente do Ormolu original. Ambos compartilham a mesma análise de sintaxe e abordagem baseada em AST, produzindo código Haskell validamente.

  2. Por que o formatação em Haskell é difícil para modelos de linguagem gerais?

    Haskell usa a regra do lado — a indentação é semanticamente significativa e determina onde os blocos como let, where, do e case ... of começam e terminam. Um formatação deve entender a árvore de análise, e não apenas a sequência de tokens, para reindentar com segurança sem alterar o significado do programa. Modelos de linguagem gerais analisam o código como texto e produzem frequentemente indentações que compilam de forma diferente da entrada, especialmente em cláusulas where aninhadas e lambdas multilinhas.

  3. O que é um pragma LANGUAGE?

    Um pragma LANGUAGE é uma diretiva no formato {-# LANGUAGE ExtensionName #-} colocada no início de um arquivo de código-fonte em Haskell para ativar uma extensão do GHC para aquele módulo — por exemplo, OverloadedStrings, ScopedTypeVariables ou TypeApplications. Pragmas podem ser combinados ({-# LANGUAGE A, B, C #-}), mas a maioria dos guias de estilo recomenda uma extensão por linha e ordenação alfabética para facilitar as diferenças.

  4. Por que as importações qualificadas são geralmente agrupadas separadamente?

    A convenção agrupa importações qualificadas (import qualified Data.Map as M) após importações simples (import Data.List) para que um leitor possa escanear os nomes não qualificados primeiro e ver imediatamente quais módulos são acessados por meio de aliases. Este é o layout produzido por stylish-haskell, Ormolu e Fourmolu por padrão, e mantém conflitos de fusão localizados quando um projeto adiciona ou remove aliases qualificados.

Quer eliminar anúncios? Fique sem anúncios hoje mesmo

Instale nossas extensões

Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida

Ao Extensão do Chrome Ao Extensão de Borda Ao Extensão Firefox Ao Extensão Opera

O placar chegou!

Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!

ANUNCIADO Remover?
ANUNCIADO Remover?
ANUNCIADO Remover?

Notícias com destaques técnicos

Envolver-se

Ajude-nos a continuar fornecendo ferramentas gratuitas valiosas

Compre-me um café
ANUNCIADO Remover?