这可以在没有Quasi Quoter的情况下完成吗?

时间:2013-02-16 22:29:52

标签: haskell

我有一个很小的DSL,实际上效果很好。当我说

import language.CWMWL

main = runCWMWL $ do
    out (matrixMult, A, 1, row, 1 3 44 6 7)

然后runCWMWL是由language.CWMWL导出的函数。这解析了进攻并采取了一些行动。

我想要实现的是有一些方法可以重复这个,例如1000次,并且元组的第三个元素包含数字1到1000.我自己的DSL不够完整。最后我想改变最后一个元素中的字符串。

如果没有Quasi Quotes,有没有可能做到这一点? Quasi Quotes是最好的工具吗?

我的DSL需要包含或需要包装哪些binops /原语才能以优雅的方式实现这一点?

1 个答案:

答案 0 :(得分:2)

除非我有误解,否则我认为quasiquotation不会让你获得比

更好的东西。
main = runCWMWL $
    sequence [ out (matrixMult, A, n, row, 1 3 44 6 7) | n <- [1..1000] ]

您也可以查看MonadComprehensions以及RebindableSyntax了解其他想法。