Haskell,没有附带的绑定?

时间:2011-10-16 14:56:36

标签: haskell

这是我的程序(我意识到这不是一个完全有用的程序):

data Temp a = Something1 | Something2 deriving (Show,Eq,Ord)

length :: Temp a -> Integer
Something1 = 0
Something2 = 1

我不断收到错误消息:

Haskellfile.lhs:3:3:     “长度”的类型签名缺少附带的绑定       (您不能为导入的值指定类型签名)

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:10)

data Temp a = Something1 | Something2 deriving (Show,Eq,Ord)

length :: Temp a -> Integer
length Something1 = 0
length Something2 = 1

最好将length更改为其他内容,以避免与Prelude的长度发生冲突。如果您想将长度用作“默认”,请添加

import Prelude hiding (length)
import qualified Prelude

一开始,请参阅Prelude的Prelude.length版本。不推荐。

顺便说一下,如果Temp不依赖于a,您可以考虑

data Temp = Something1 | Something2 deriving (Show,Eq,Ord)