ugh
This commit is contained in:
13
examples/rlp/MapList.rl
Normal file
13
examples/rlp/MapList.rl
Normal file
@@ -0,0 +1,13 @@
|
||||
data List a = Nil | Cons a (List a)
|
||||
|
||||
map :: (a -> b) -> List a -> List b
|
||||
map f l = case l of
|
||||
Nil -> Nil
|
||||
Cons a as -> Cons (f a) (map f as)
|
||||
|
||||
list = Cons 1 (Cons 2 (Cons 3 Nil))
|
||||
|
||||
lam x = *# x x
|
||||
|
||||
main = print# (map lam list)
|
||||
|
||||
40
examples/rlp/QuickSort.rl
Normal file
40
examples/rlp/QuickSort.rl
Normal file
@@ -0,0 +1,40 @@
|
||||
data List a = Nil | Cons a (List a)
|
||||
|
||||
data Bool = False | True
|
||||
|
||||
filter :: (a -> Bool) -> List a -> List a
|
||||
filter p l = case l of
|
||||
Nil -> Nil
|
||||
Cons a as ->
|
||||
case p a of
|
||||
True -> Cons a (filter p as)
|
||||
False -> filter p as
|
||||
|
||||
append :: List a -> List a -> List a
|
||||
append p q = case p of
|
||||
Nil -> q
|
||||
Cons a as -> Cons a (append as q)
|
||||
|
||||
qsort :: List Int# -> List Int#
|
||||
qsort l = case l of
|
||||
Nil -> Nil
|
||||
Cons a as ->
|
||||
let lesser = filter (>=# a) as
|
||||
greater = filter (<# a) as
|
||||
in append (append (qsort lesser) (Cons a Nil)) (qsort greater)
|
||||
|
||||
list = Cons 9 (Cons 2 (Cons 3 (Cons 2
|
||||
(Cons 5 (Cons 2 (Cons 12 (Cons 89 Nil)))))))
|
||||
|
||||
list2 = Cons 2 (Cons 3 Nil)
|
||||
|
||||
lt :: Int# -> Int# -> Bool
|
||||
lt a = (>=# a)
|
||||
|
||||
id x = x
|
||||
|
||||
main = case list of
|
||||
Nil -> Nil
|
||||
Cons a as -> let lesser = filter (lt a) as
|
||||
in print# lesser
|
||||
|
||||
@@ -7,5 +7,5 @@ foldr f z l = case l of
|
||||
|
||||
list = Cons 1 (Cons 2 (Cons 3 Nil))
|
||||
|
||||
main = foldr (+#) 0 list
|
||||
main = print# (foldr (+#) 0 list)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user