我正在阅读“Haskell逻辑,数学和编程之路”一书,我从第二章(http://homepages.cwi.nl/~jve/HR/)下载了他们的代码,但是当我尝试编译代码时,它并没有工作。
错误消息是:
TAMO.hs:85 - Syntax error in instance head (variable expected)
预期变量是多少?我之前从未使用过Haskell,也不知道编译器(Hugs)希望我做些什么来修复它。
class TF p where
valid :: p -> Bool
lequiv :: p -> p -> Bool
instance TF Bool
where
valid = id
lequiv f g = f == g
instance TF p => TF (Bool -> p)
where
valid f = valid (f True) && valid (f False)
lequiv f g = (f True) `lequiv` (g True)
&& (f False) `lequiv` (g False)
答案 0 :(得分:3)
它为我编译,但我必须修复缩进(lequiv
需要与有效级别相同),并使用
FlexibleInstances
语言扩展名
{-# LANGUAGE FlexibleInstances #-}
(我正在使用GHC,我不确定HUGS的等价物是什么)
其他信息:
Instance Show for function中的最后一个答案向您展示了如何在Hugs中使用FlexibleInstances
。