Опитвам се да настроя структура от данни, която е разширение на ламбда смятането, за да позволи добавяне и изваждане. Опитвам се да създам структура, наречена AE, която може или да има Lit като себе си, или да оценява събиране и изваждане. Грешката, която получавам, казва, че следното:
Невалиден тип подпис: Свети :: ...
Трябва да е от тип променлива ::
Осветен :: Int -› AE
Какво не е наред с моята декларация за тази структура от данни?
{-# Language GADTs #-}
data AE where
Lit :: Int -> AE
Add :: Int -> Int -> AE
Sub :: Int -> Int -> AE
deriving (Show)
eval :: AE -> Maybe Int
eval (Lit n) = Just n
eval (Add n1 n2) = n1 + n2
eval (Sub n1 n2) = do
if(n1<n2) then return nothing
else return n1 - n2