2012-01-21 11 views

答えて

11

私はHackageに見つけることができるすべての補間quasiquoterライブラリを見ていました。使用する価値

補間ライブラリ:

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

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

    ただし、単純な変数展開以上のものをサポートしていますが、任意のHaskellコードの補間はサポートしていません。それは機能アプリケーション、演算子なども私はそれがStringではなくTextを使用すると思います。ソースコードを見てStringと一緒に使うことができるかどうかはわかりませんが、それが可能であることを示唆するサポートコードがあります。

  • Interpolation:任意の式(やはりhaskell-src-exts)をサポートし、ループ機能も組み込みます。単純な補間以外の "テンプレート"のような機能が必要な場合は、私が個人的には非常に醜い構文を見つけるが、考慮する価値がある。使用して、おそらく価値はない

補間ライブラリ:

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

  • interpol:プリプロセッサとして実装され、文字列に{foo}という特別な意味を与えます。 IMOはあまりにも重く、このような軽量の構文では、既存のコードを破る可能性があります。要約すると

あなたが(またはすでにシェイクスピアのテンプレートを使用している)場合は、Haskellの-SRC-extsを依存関係を気にしないならば、私はinterpolatedstring-Perl6のをお勧めしたい、とシェイクスピアテキスト。

もう1つの選択肢は、より一般的なテンプレートエンジンでstring-qqパッケージを使用することです。それは,TextおよびByteStringをサポートしています。しかし、これは明らかにHaskellコードの埋め込みをサポートしておらず、変数を個別に指定する必要があるため、おそらく特定の状況でのみ有効です。

+2

シェイクスピア・テキストには完全なHaskell式のサポートがありませんが、それはたくさんあります。たとえば、関数を適用して演算子を使用できます。 –

+0

@MichaelSnoyman:ありがとう。私はすぐに私の答えを更新します。私がドキュメンテーションから理解できなかったことの1つは、シェイクスピア・テキストのサポート条件文とループですか? – ehird

関連する問題