]> gerrit.simantics Code Review - simantics/platform.git/blob - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/Lazy1.scl
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / scl / Lazy1.scl
1 import "Prelude"
2 import "Lazy"
3
4 data Node = Node {
5     name :: String,
6     children :: Lazy <<Proc>> [Node]
7 }
8
9 root = genNode ""
10   where
11     genNode name = do
12         print "genNode \(name)"
13         Node {
14             name,
15             children = lazy [genNode (name + "A"), genNode (name + "B")]
16         }
17
18 nameOf Node { name } = name
19 childrenOf Node { children } = force children
20
21 main = for (childrenOf root) $ \c ->
22     for (childrenOf c) $ \c2 ->
23         print "visit \(nameOf c2)"
24 --
25 genNode 
26 genNode A
27 genNode B
28 genNode AA
29 genNode AB
30 visit AA
31 visit AB
32 genNode BA
33 genNode BB
34 visit BA
35 visit BB
36 ()