f5 :: (List' v, Expression v, Function (v (List Int)) v) => Main (v Int)
f5
- = fun ( \sumf->(\l->[cp|case l of
+ = fun ( \sumf->(\l->[dsl|case l of
Nil -> 0
- Cons e rest -> e +. sumf(rest)
+ Cons e rest -> e + sumf(rest)
|])
-- :- Main {unmain=sumf $ lit (1 :: Int) `cons` (lit 2 `cons` (lit 3 `cons` nil))}
- :- Main {unmain=sumf $ lit (1 :: Int) `cons` (lit 2 `cons` (lit 3 `cons` nil))}
+ :- Main {unmain=[dsl|sumf (1 `cons` (2 `cons` (3 `cons` nil)))|]}
)
f6 :: (TupleR' v, Expression v, Function (v (TupleR Int Char)) v) => Main (v Int)
f6
- = fun ( \firstfun->(\l->[cp|case l of
+ = fun ( \firstfun->(\l->[dsl|case l of
TupleR {first=f} -> f
|])
-- :- Main {unmain=sumf $ lit (1 :: Int) `cons` (lit 2 `cons` (lit 3 `cons` nil))}
f7 :: (Expression v, Function (v Int) v) => Main (v Int)
f7
- = fun ( \ffac->(\l->[cp|case l of
+ = fun ( \ffac->(\l->[dsl|case l of
0 -> 1
- n -> n *. ffac (n -. 1)
+ n -> if True then 1 else n * ffac (n - 1)
|])
:- Main {unmain=ffac (lit 10)}
)
f7' :: (DSL v, List' v, Function (v (List Int)) v) => Main (v Int)
f7'
= fun ( \fromto->(
- \(from, to)->if' (from >. to) nil (from `cons` fromto (from +. lit 1, to))
+ \(from, to)->[dsl|if from > to then nil else from `cons` fromto (from + 1, to)|]
) :- fun ( \mullist->(
- \l->[cp|case l of
- Cons e rest -> e *. mullist(rest)
+ \l->[dsl|case l of
+ Cons e rest -> e * mullist(rest)
Nil -> 1
|]
) :- fun ( \fac->(