我有一个“QuasiQuoter”,它在 Haskell 的源代码中很有用,但也可以作为一个独立的应用程序。所以,我需要能够运行 QuasiQuoter
- 在 Haskell 的编译期间 -
[myGrammar|someCommand|]
- 在 shell 的运行时(运行时编译)中 -
mygrammar 'someCommand'
第一部分很简单,但如果解决为使用运行时生成的一些代码调用编译器来解决,第二部分可能会有点笨拙。
我想在 Haskell 中使用一些不错的方法来解决问题的第二部分,它不只接受源代码,而是接受 QuasyQuoter 数据类型,因此代码不那么笨拙。但我找不到任何这样的编译方法。
你知道任何?谢谢。
使用示例
哈斯克尔
该函数采用元组 [(a,b,c,d,e)] 并返回包含产品的字符串列表。
function = [lsql| {1..5}, r=[ a.* |> (*) ], "Product of a.1 * a.2 * ... * a.5 is &a.r"|]
重击
该命令从 stdin csv 中读取至少 5 个数字列,并返回其产品列表(每行一个)。
lsql-csv '-, r=[ a.* |> (*) ], "Product of a.1 * a.2 * ... * a.5 is &a.r"'