広告が嫌いですか? 行く 広告なし 今日

ハスケルコードフォーマッター(フォルモル / オルモルスタイル)

開発者文章

または
この長さを超える行はレポートにフラグが表示されます(Fourmolu/Ormoluのデフォルトは100)。

ガイド

Haskellコードフォーマッター(Fourmolu/Ormoluスタイル)

ハスケルコードフォーマッター(フォルモル / オルモルスタイル)

raw Haskellソースを貼り付けて、Fourmolu/Ormolu風の一貫したスタイルにフォーマットされたコードを取得します。演算子のスペース、並べ替えられたLANGUAGEプロガマ、グループ化されたインポート、およびタブをスペースに変換します。すべての処理はブラウザ内で行われ、ソースコードはあなたのマシンに留まります。

使用方法

  1. アップロード .hs ファイルまたはHaskellソースを入力ボックスに貼り付けてください(「例を試す」リンクを使用して簡単なサンプルを試してください)。
  2. インデントサイズを選択してください — 2スペース(Fourmoluのデフォルト)または4スペース(Ormoluのデフォルト)。
  3. 長さが最大値を超える行を検証サマリーにフラグ表示するための最大行長を設定(デフォルトは100)。
  4. トグル インポートの並べ替え, LANGUAGEプロガマを並べ替えおよび重複を削除と、 空白行のまとめる プロジェクトのスタイルに合わせます。
  5. フォーマットされた出力は自動的に表示され、シンタックスハイライトが適用されます。結果をコピーまたはダウンロードして取得してください。

機能

  • 一貫したスペース — 演算子、比較演算子、Applicative/Monadコンビネータ(例: =, ::, ->, <-, =>, $, ++)の周囲に標準的なスペースを追加します。 <$>, <*>, >>=.
  • プロガマの標準化 — すべての {-# LANGUAGE ... #-} プロガマをファイルのトップに移動し、複数プロガマを1つの拡張子ごとに分割し、アルファベット順に並べ替え、重複を削除します。
  • インポートの並べ替え — 隣接した import 宣言をモジュール名でアルファベット順に並べ替えながら、未指定/指定されたグループの慣例を維持します。
  • レイアウト安全 — ユーザーの先頭インデントを維持(Haskellのレイアウトルールは意味的に重要)ながら、選択されたインデント幅でタブをスペースに変換します。
  • コメント安全なトークナイザー — 行コメント(--)、ネストされたブロックコメント({- ... -})、プロガマ、エスケープ付き文字列、およびキャラクタリテラルを正しく処理し、それらの中の演算子文字が壊れないようにします。
  • 括弧+ブロック検証 — 開閉括弧、ブレース、未終了ブロックコメントの不均衡を行番号で検出します。
  • 長行レポート — 指定された最大幅を超える行をハイライトし、レビュー前にリファクタリングできます。
  • 100%クライアントサイド — あなたのコードはすべてブラウザ内で処理され、アップロード、ログ記録、または保存されません。

よくある質問

  1. OrmoluとFourmoluの違いは?

    Ormoluは厳密で意見の強いHaskellフォーマッターで、設定がほとんどなく、すべてのプロジェクトがOrmoluでフォーマットされた場合、見た目がまったく同じになります。FourmoluはOrmoluのフォークであり、インデントサイズ、コンマの配置、先頭/末尾コンマ、レコードブレースのスペースなど、いくつかのスタイル調整を提供し、上流のOrmoluとまったく同じではない一貫したスタイルをチームに提供します。両方とも同じパーサーとAST駆動アプローチを使用しており、信頼できるHaskellコードを生成します。

  2. Haskellのフォーマットは一般用途AIにとって難しい理由は?

    Haskellはオフサイドルールを使用しており、インデントが意味的に重要で、let、where、do、case ... ofのブロックの開始と終了を決定します。フォーマッターはパーサーツリーを理解しなければならず、プログラムの意味を変えるようなインデントを再インデントすることはできません。一般用途の言語モデルはコードをテキストとして扱い、頻繁にインデントを変更し、特にネストされたwhere節や複数行のラムダ式に対して、入力と異なるインデントを生成します。

  3. LANGUAGEプロガマとは?

    LANGUAGEプロガマは、Haskellソースファイルのトップに配置される形式 {-# LANGUAGE ExtensionName #-} で、モジュールにGHCの言語拡張を有効にします。例えばOverloadedStrings、ScopedTypeVariables、TypeApplicationsなど。プロガマは複数併用可能({-# LANGUAGE A, B, C #-})ですが、多くのスタイルガイドは1つの拡張子1行にし、アルファベット順に並べることを推奨しており、変更の差分を簡単に確認できます。

  4. qualifiedインポートは通常、別々にグループ化される理由は?

    慣例では、qualifiedインポート(import qualified Data.Map as M)はplainインポート(import Data.List)の後にグループ化され、読者はまず未指定名をスキャンし、どのモジュールがエイリアスでアクセスされているかを一目で確認できます。これはstylish-haskell、Ormolu、Fourmoluのデフォルトで生成されるレイアウトであり、プロジェクトにqualifiedエイリアスを追加または削除した場合のマージコンフリクトを局所化します。

広告なしで楽しみたいですか? 今すぐ広告なしで

拡張機能をインストールする

お気に入りのブラウザにIOツールを追加して、すぐにアクセスし、検索を高速化します。

に追加 Chrome拡張機能 に追加 エッジ拡張 に追加 Firefox 拡張機能 に追加 Opera 拡張機能

スコアボードが到着しました!

スコアボード ゲームを追跡する楽しい方法です。すべてのデータはブラウザに保存されます。さらに多くの機能がまもなく登場します!

ニュースコーナー 技術ハイライト付き

参加する

価値ある無料ツールの提供を継続するためにご協力ください

コーヒーを買って