]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/tests/org/simantics/scl/compiler/tests/scl/ShortcutFusion.scl
Added info on backup location to documentation backup.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / tests / org / simantics / scl / compiler / tests / scl / ShortcutFusion.scl
1 data List a = Nil | Cons a (List a)\r
2 \r
3 @private\r
4 @inline\r
5 build :: (forall a. a -> (b -> a -> a) -> a) -> List b\r
6 build f = f Nil Cons\r
7 \r
8 @private\r
9 foldr :: (a -> b -> b) -> b -> List a -> b\r
10 foldr cons nil Nil = nil\r
11 foldr cons nil (Cons h t) = cons h (foldr cons nil t)\r
12 \r
13 @private\r
14 @inline\r
15 singleton :: a -> List a\r
16 singleton x = build (\nil cons -> cons x nil)\r
17 \r
18 @private\r
19 @inline\r
20 last :: List a -> a -> a\r
21 last l def = foldr (\x _ -> x) def l\r
22 \r
23 main = last (singleton "Hello") "Foo"\r
24 --\r
25 Hello