Added some examples that were shown to our handledare.
This commit is contained in:
parent
b0ec5a2333
commit
e2e469d84e
6 changed files with 96 additions and 0 deletions
1
sample-programs/example-programs/ex1.crf
Normal file
1
sample-programs/example-programs/ex1.crf
Normal file
|
|
@ -0,0 +1 @@
|
|||
main = 5 + 2;
|
||||
4
sample-programs/example-programs/ex2.crf
Normal file
4
sample-programs/example-programs/ex2.crf
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
main = case 78 of {
|
||||
5 => 45;
|
||||
x => x + 24;
|
||||
};
|
||||
11
sample-programs/example-programs/ex3.crf
Normal file
11
sample-programs/example-programs/ex3.crf
Normal 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) ;
|
||||
11
sample-programs/example-programs/ex4.crf
Normal file
11
sample-programs/example-programs/ex4.crf
Normal 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 ;
|
||||
26
sample-programs/example-programs/ex5.crf
Normal file
26
sample-programs/example-programs/ex5.crf
Normal 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 ;
|
||||
};
|
||||
43
sample-programs/example-programs/ex6.crf
Normal file
43
sample-programs/example-programs/ex6.crf
Normal 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;
|
||||
Loading…
Add table
Add a link
Reference in a new issue