churf/test_program
2023-03-06 11:27:17 +01:00

50 lines
1 KiB
Text

-- data Bool () where {
-- True : Bool ()
-- False : Bool ()
-- };
--
-- data List ('a) where {
-- Nil : List ('a)
-- Cons : ('a) -> List ('a) -> List ('a)
-- };
data Maybe ('a) where {
Nothing : Maybe ('a)
Just : 'a -> Maybe ('a)
};
-- id : 'a -> 'a ;
-- id x = x ;
-- main : Maybe ('a -> 'a) ;
-- main = Just id;
-- data Either ('a 'b) where {
-- Left : 'a -> Either ('a 'b)
-- Right : 'b -> Either ('a 'b)
-- };
-- safeHead : List ('a) -> Maybe ('a) ;
-- safeHead xs =
-- case xs of {
-- Nil => Nothing ;
-- Cons x xs => Just x
-- };
-- main : Maybe (_Int) ;
-- main = safeHead (Cons 0 (Cons 1 Nil)) ;
--
-- maybeToEither : Either ('a 'b) -> Maybe ('a) ;
-- maybeToEither e =
-- case e of {
-- Left y => Nothing ;
-- Right x => Just x
-- };
-- Bug. f not included in the case-expression context
fmap : ('a -> 'b) -> Maybe ('a) -> Maybe ('b) ;
fmap f x =
case x of {
Just x => Just (f x) ;
Nothing => Nothing
}