Я сделал следующую программу 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
Извините, я не знал об этом .. Сделали поправки сейчас :) –