X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=tests%2Forg.simantics.scl.compiler.tests%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Ftests%2Fscl%2FShortcutFusion.scl;h=170a4a4dc0c23f6b1df45f1e8c2a261b6a91f038;hp=6423ecbef3e7689c83a1ee73786731d706c18f71;hb=172abed5dbf73c1304a7a95bb8504ea293556948;hpb=1956b6ed85e1df65c4df58e6cb0ac6aa296e6939 diff --git a/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/ShortcutFusion.scl b/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/ShortcutFusion.scl index 6423ecbef..170a4a4dc 100644 --- a/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/ShortcutFusion.scl +++ b/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/ShortcutFusion.scl @@ -1,25 +1,25 @@ -data List a = Nil | Cons a (List a) - -@private -@inline -build :: (forall a. a -> (b -> a -> a) -> a) -> List b -build f = f Nil Cons - -@private -foldr :: (a -> b -> b) -> b -> List a -> b -foldr cons nil Nil = nil -foldr cons nil (Cons h t) = cons h (foldr cons nil t) - -@private -@inline -singleton :: a -> List a -singleton x = build (\nil cons -> cons x nil) - -@private -@inline -last :: List a -> a -> a -last l def = foldr (\x _ -> x) def l - -main = last (singleton "Hello") "Foo" --- +data List a = Nil | Cons a (List a) + +@private +@inline +build :: (forall a. a -> (b -> a -> a) -> a) -> List b +build f = f Nil Cons + +@private +foldr :: (a -> b -> b) -> b -> List a -> b +foldr cons nil Nil = nil +foldr cons nil (Cons h t) = cons h (foldr cons nil t) + +@private +@inline +singleton :: a -> List a +singleton x = build (\nil cons -> cons x nil) + +@private +@inline +last :: List a -> a -> a +last l def = foldr (\x _ -> x) def l + +main = last (singleton "Hello") "Foo" +-- Hello \ No newline at end of file