Added some examples that were shown to our handledare.

This commit is contained in:
Samuel Hammersberg 2023-03-31 18:17:28 +02:00
parent b0ec5a2333
commit e2e469d84e
6 changed files with 96 additions and 0 deletions

View file

@ -0,0 +1 @@
main = 5 + 2;

View file

@ -0,0 +1,4 @@
main = case 78 of {
5 => 45;
x => x + 24;
};

View file

@ -0,0 +1,11 @@
data Maybe () where {
Just : Int -> Maybe ()
Nothing : Maybe ()
};
demoFunc x = case x of {
Just x => x + 24;
Nothing => 0;
};
main = demoFunc (Just 5) ;

View file

@ -0,0 +1,11 @@
data Maybe () where {
Just : Int -> Maybe ()
Nothing : Maybe ()
};
demoFunc x = case x of {
Just x => x + 24;
Nothing => 0;
};
main = demoFunc Nothing ;

View file

@ -0,0 +1,26 @@
main = case f (Just 10) of {
Just a => a ;
Nothing => 0 ;
};
f x = bind (fmap (\s . s + 1) x) (\s . pure (s + 10)) ;
data Maybe () where {
Just : Int -> Maybe ()
Nothing : Maybe ()
};
fmap : (Int -> Int) -> Maybe () -> Maybe () ;
fmap f m = case m of {
Just a => pure (f a) ;
Nothing => Nothing ;
};
pure : Int -> Maybe () ;
pure x = Just x;
bind : Maybe () -> (Int -> Maybe ()) -> Maybe () ;
bind x f = case x of {
Just x => f x ;
Nothing => Nothing ;
};

View file

@ -0,0 +1,43 @@
main = sum (repeat (sumlength (repeat 10 2000)) 5);
-- a simple list data type containing ints
data List () where {
Cons : Int -> List () -> List ()
Nil : List ()
};
-- take the length of a list
length : List () -> Int ;
length x = case x of {
Cons _ xs => 1 + length xs ;
Nil => 0 ;
};
-- sum a list
sum : List () -> Int ;
sum x = case x of {
Cons a xs => a + sum xs ;
Nil => 0 ;
};
-- sum + length of a list
sumlength: List () -> Int ;
sumlength x = sum x + length x ;
-- take the head of a list
head : List () -> Int ;
head x = case x of {
Cons h _ => h ;
};
-- repeat an element n times
repeat : Int -> Int -> List () ;
repeat x n = repeatHelp Nil x n;
repeatHelp : List () -> Int -> Int -> List () ;
repeatHelp acc x n = case n of {
0 => acc ;
n => repeatHelp (Cons x acc) x (n + minusOne) ;
};
-- represents minus one :)
minusOne : Int ;
minusOne = 9223372036854775807 + 9223372036854775807 + 1;