实例头中的语法错误(预期的变量)

时间:2016-03-23 01:52:37

标签: haskell

我正在阅读“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)

1 个答案:

答案 0 :(得分:3)

它为我编译,但我必须修复缩进(lequiv需要与有效级别相同),并使用

添加FlexibleInstances语言扩展名
{-# LANGUAGE FlexibleInstances #-}

(我正在使用GHC,我不确定HUGS的等价物是什么)

其他信息:

Instance Show for function中的最后一个答案向您展示了如何在Hugs中使用FlexibleInstances