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%2FLazy1.scl;fp=tests%2Forg.simantics.scl.compiler.tests%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Ftests%2Fscl%2FLazy1.scl;h=7989992ca8cb6be3e1287319d9516df722b18da6;hp=0000000000000000000000000000000000000000;hb=3d043320cdee8dda92758f4ea1c324a82c7d9094;hpb=e3ee31da93393a7338ebfbc71620d124eedea946 diff --git a/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/Lazy1.scl b/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/Lazy1.scl new file mode 100644 index 000000000..7989992ca --- /dev/null +++ b/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/Lazy1.scl @@ -0,0 +1,36 @@ +import "Prelude" +import "Lazy" + +data Node = Node { + name :: String, + children :: Lazy <> [Node] +} + +root = genNode "" + where + genNode name = do + print "genNode \(name)" + Node { + name, + children = lazy [genNode (name + "A"), genNode (name + "B")] + } + +nameOf Node { name } = name +childrenOf Node { children } = force children + +main = for (childrenOf root) $ \c -> + for (childrenOf c) $ \c2 -> + print "visit \(nameOf c2)" +-- +genNode +genNode A +genNode B +genNode AA +genNode AB +visit AA +visit AB +genNode BA +genNode BB +visit BA +visit BB +() \ No newline at end of file