我做了以下haskell程序,它将执行一些基本的加载,读取和增量操作。我收到一个类型错误。有人可以告诉为什么类型错误在那里,我该如何解决它。haskell程序中的错误
module ExampleProblem (Value,read',load,incr) where
newtype Value a = Value Int deriving (Eq,Read,Show)
read':: Value Int -> Int
read' (Value a) = a
load:: Int -> Value Int
load a = Value a
incr:: Value Int -> Value Int
incr (Value a) = Value (a+1)
main = do
(Value ab) <- (load 42)
if (read'(Value ab) /= 42)
then show "Failure to load"
else do
Value b <- incr(Value ab)
Value c <- incr(Value b)
if ((Value c) == Value 44)
then show "Example finished"
else show "error"
return
我得到的错误是:
Couldn't match expected type `Int' with actual type `Value t0'
In the pattern: Value ab
In a stmt of a 'do' expression: (Value ab) <- (load 42)
In the expression:
do { (Value ab) <- (load 42);
if (read' (Value ab) /= 42) then
show "Failure to load"
else
do { Value b <- incr (Value ab);
.... } }
当我做在我写的主要功能我渐渐的范围误差虽然我是导入模块ExampleProblem一个单独的文件。
Not in scope: data constructor `Value'
5个问题,并没有接受答案。请工作。 – leppie
对不起,我不知道它..已经做了修改:) –