Не могу написать Show для своего типа
От: MAMOHT  
Дата: 24.01.14 08:58
Оценка:
Застрял. Ругается на последнюю строчку:"Couldn't match expected type `[a0]' with actual type `Params'"
Params — это же по сути и есть массив? Почему он не может получить его длину?


data Dir = X | Y | Z --направления движения
 
x :: Double -> (Dir, Double)
x val = (X, val)
 
y :: Double -> (Dir, Double)
y val = (Y, val)
 
z :: Double -> (Dir, Double)
z val = (Z, val)
 
data Params = Params [(Dir, Double)]
--доступные команды станка
data Command =  G0 Params
            |   G1 Params
            |   F Double
 
instance Show Dir where
    show d
        | X <- d = "X"
        | Y <- d = "Y"
        | Z <- d = "Z"
 
instance Show Command where
    show d
        | G0 l <- d = "G0 " ++ show l
        | G1 l <- d = "G1 " ++ show l
        | F val <- d = "F " ++ show val
 
instance Show Params where
    show l = show $ length l
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.