【发布时间】:2011-09-27 22:36:46
【问题描述】:
我正在尝试创建环 Z/n(类似于普通算术,但取模某个整数)。一个例子是 Z4:
instance Additive.C Z4 where
zero = Z4 0
(Z4 x) + (Z4 y) = Z4 $ (x + y) `mod` 4
戒指等等。我希望能够快速生成这些东西,我认为这样做的方法是使用模板 haskell。理想情况下,我只想去$(makeZ 4) 并让它吐出Z4 的代码,就像我上面定义的那样。
不过,我在这方面遇到了很多麻烦。当我执行genData n = [d| data $n = $n Integer] 时,我得到“数据/新类型声明中的解析错误”。如果我不使用变量,它确实有效:[d| data Z5 = Z5 Integer |],这一定意味着我对变量做了一些奇怪的事情。我不确定是什么;我尝试通过 newName 构建它们,但似乎也不起作用。
谁能帮我看看这里发生了什么?
【问题讨论】:
-
我不是模板 Haskell 向导,但我敢打赌那些想要查看您的模板 Haskell 代码的人。