0

我有一个实际上运行良好的小型 DSL。当我说

import language.CWMWL

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

thenrunCWMWL是由 导出的函数language.CWMWL。这会解析 experession 并采取一些行动。

我想要实现的是,有某种方法可以重复此操作,例如 1000 次,并让元组的第三个元素由数字 1 到 1000 组成。我自己的 DSL 还不够完整,无法做到这一点。最终我也想更改最后一个元素中的字符串。

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

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

4

1 回答 1

2

Unless I'm misunderstanding, I don't think quasiquotation will get you something much nicer than

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

You might also look into MonadComprehensions as well as RebindableSyntax for other ideas.

于 2013-02-17T00:55:16.860 回答