我有一个很小的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 /原语才能以优雅的方式实现这一点?
答案 0 :(得分:2)
除非我有误解,否则我认为quasiquotation不会让你获得比
更好的东西。main = runCWMWL $
sequence [ out (matrixMult, A, n, row, 1 3 44 6 7) | n <- [1..1000] ]
您也可以查看MonadComprehensions
以及RebindableSyntax
了解其他想法。