我正在试图创建Z/n环(就像正常的算术,但是取模一些整数)。一个示例是Z4:模板haskell中的数据构造函数
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代码的人。 –