Haskell のソース コードだけでなく、スタンドアロン アプリケーションとしても役立つ「QuasiQuoter」があります。したがって、QuasiQuoter を実行できる必要があります。
- Haskell でのコンパイル時 -
[myGrammar|someCommand|]
- シェルの実行時 (実行時コンパイル) -
mygrammar 'someCommand'
最初の部分は簡単ですが、2 番目の部分は、ランタイムから生成されたコードを使用してコンパイラを呼び出すように解決すると、少しぎこちないかもしれません。
ソースコードだけを受け入れず、代わりに QuasyQuoter データ型を受け入れる Haskell の優れたメソッドを使用して、問題の 2 番目の部分を解決したいと思います。しかし、そのようなコンパイル方法は見つかりません。
何でも知ってますか?ありがとう。
使用例
ハスケル
この関数はタプル [(a,b,c,d,e)] を受け取り、文字列と積のリストを返します。
function = [lsql| {1..5}, r=[ a.* |> (*) ], "Product of a.1 * a.2 * ... * a.5 is &a.r"|]
バッシュ
このコマンドは、少なくとも 5 つの数値列を含む stdin csv から読み取り、製品のリストを返します (1 行に 1 つ)。
lsql-csv '-, r=[ a.* |> (*) ], "Product of a.1 * a.2 * ... * a.5 is &a.r"'