6

Hackage には、補間された文字列を扱うさまざまなライブラリが多数あります。品質の低いものもあれば、サポートする機能の数によって異なるものもあります。

どちらを使用する価値がありますか?

ライブラリの例 (順不同): Shakespeareinterpolatedstring-qqInterpolation

4

1 に答える 1

11

Hackage で見つけることができるすべての補間 quasiquoter ライブラリを調べました。

使用する価値のある補間ライブラリ:

  • interpolatedstring-perl6 : 妥当な構文で任意の Haskell コードの補間をサポートしますが、haskell-src-exts が必要です。一般的な文字列補間構文が必要な場合は、これを使用します。

  • Shakespeare -text : Shakespeare ファミリーのテンプレートに基づいており、依存関係は最小限です。他のほとんどの補間文字列パッケージはhaskell-src-extsに依存していますが、これは非常に重いパッケージであり、コンパイルに多くの時間とリソースがかかる可能性があります。他のシェイクスピア テンプレートを使用している場合は、これを使用することをお勧めします。

    ただし、単純な変数展開以上のものをサポートしていますが、任意の Haskell コードの補間はサポートしていません。関数の適用、演算子なども行いTextますString。ソースコードから見て s で使用できるかどうかはわかりませんが、使用できることStringを示唆するサポートコードがあります。

  • Interpolation : 任意の式 (これも haskell-src-exts を使用) をサポートし、組み込みのループ機能も備えています。単純な補間よりも「テンプレート」のような機能が必要な場合は、検討する価値がありますが、個人的には構文が非常に醜いと思います。

おそらく使用する価値のない補間ライブラリ:

  • interpolatedstring-qq : interpolatedstring-perl6 に基づいているようです。1 年以上更新されておらず、interpolatedstring-perl6 よりも機能が少ないようです。あなたが本当に#{expr}構文に執着していない限り、私はこれを考慮しません.

  • interpol : プリプロセッサとして実装され、{foo}文字列に特別な意味を与えます。IMO は重すぎるソリューションであり、そのような軽量の構文では、既存のコードが壊れる可能性があります。

要約すると、haskell-src-exts の依存関係を気にしない場合は interpolatedstring-perl6 をお勧めします。必要な場合 (または既に Shakespeare テンプレートを使用している場合) は、shakspeare-text をお勧めします。

もう 1 つのオプションは、より一般的なテンプレート エンジンでstring-qqパッケージを使用することです。String、 、Textおよびをサポートしており、ByteStringあらゆる用途をカバーする必要があります。ただし、これは明らかに Haskell コードの埋め込みをサポートしておらず、変数を個別に指定する必要があるため、特定の状況でのみ役立つ可能性があります。

于 2012-01-21T21:45:05.270 に答える