From aa73f147f02449131da73fa8d93cfd489de00fc9 Mon Sep 17 00:00:00 2001 From: sebastianselander Date: Fri, 24 Mar 2023 11:21:46 +0100 Subject: [PATCH] Remade lets with bind & improvements --- test_program | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/test_program b/test_program index f14962d..ded8250 100644 --- a/test_program +++ b/test_program @@ -1,4 +1,41 @@ -data Maybe (a) where { - Nothing : Maybe (a) - Just : a -> Maybe (a) -} +data List (a) where { + Nil : List (a) + Cons : a -> List (a) -> List (a) +}; + +data Bool () where { + True : Bool () + False : Bool () + }; + +-- hello_world = Cons 'h' (Cons 'e' (Cons 'l' (Cons 'l' (Cons 'o' (Cons ' ' (Cons 'w' (Cons 'o' (Cons 'r' (Cons 'l' (Cons 'd' Nil)))))))))) ; + +-- length : List (a) -> Int ; +-- length xs = case xs of { +-- Nil => 0 ; +-- Cons x xs => length xs +-- }; + +-- head : List (a) -> a ; +-- head xs = case xs of { +-- Cons x xs => x +-- }; + +firstIsOne : List (Int) -> Bool () ; +firstIsOne xs = case xs of { + Cons x xs => case x of { + 1 => True ; + _ => case xs of { + Cons x xs => False ; + _ => False + } + }; + _ => False + }; + +-- firstIsOne :: [Int] -> Bool +-- firstIsOne xs = case xs of +-- (1 : xs) -> True +-- _ -> False + +main = firstIsOne (Cons 'a' Nil)