1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
## type Decl(MConst,f,Fun(None,List((x,MTyp(MVar,TNumber))),Some(TNumber),Binary(Seq,Assign(Var(x),Binary(Plus,Var(x),N(1.0))),Binary(Plus,Var(x),N(1.0)))),Decl(MConst,y,N(5.0),Binary(Seq,Print(Var(y)),Decl(MConst,z,Call(Var(f),List(Var(y))),Binary(Seq,Print(Var(y)),Print(Var(z))))))) : Undefined
## step 0:
## Map()
## Decl(MConst,f,Fun(None,List((x,MTyp(MVar,TNumber))),Some(TNumber),Binary(Seq,Assign(Var(x),Binary(Plus,Var(x),N(1.0))),Binary(Plus,Var(x),N(1.0)))),Decl(MConst,y,N(5.0),Binary(Seq,Print(Var(y)),Decl(MConst,z,Call(Var(f),List(Var(y))),Binary(Seq,Print(Var(y)),Print(Var(z)))))))
## step 1:
## Map()
## Decl(MConst,y,N(5.0),Binary(Seq,Print(Var(y)),Decl(MConst,z,Call(Fun(None,List((x,MTyp(MVar,TNumber))),Some(TNumber),Binary(Seq,Assign(Var(x),Binary(Plus,Var(x),N(1.0))),Binary(Plus,Var(x),N(1.0)))),List(Var(y))),Binary(Seq,Print(Var(y)),Print(Var(z))))))
## step 2:
## Map()
## Binary(Seq,Print(N(5.0)),Decl(MConst,z,Call(Fun(None,List((x,MTyp(MVar,TNumber))),Some(TNumber),Binary(Seq,Assign(Var(x),Binary(Plus,Var(x),N(1.0))),Binary(Plus,Var(x),N(1.0)))),List(N(5.0))),Binary(Seq,Print(N(5.0)),Print(Var(z)))))
5.0
## step 3:
## Map()
## Binary(Seq,Undefined,Decl(MConst,z,Call(Fun(None,List((x,MTyp(MVar,TNumber))),Some(TNumber),Binary(Seq,Assign(Var(x),Binary(Plus,Var(x),N(1.0))),Binary(Plus,Var(x),N(1.0)))),List(N(5.0))),Binary(Seq,Print(N(5.0)),Print(Var(z)))))
## step 4:
## Map()
## Decl(MConst,z,Call(Fun(None,List((x,MTyp(MVar,TNumber))),Some(TNumber),Binary(Seq,Assign(Var(x),Binary(Plus,Var(x),N(1.0))),Binary(Plus,Var(x),N(1.0)))),List(N(5.0))),Binary(Seq,Print(N(5.0)),Print(Var(z))))
## step 5:
## Map()
## Decl(MConst,z,Decl(MVar,x,N(5.0),Binary(Seq,Assign(Var(x),Binary(Plus,Var(x),N(1.0))),Binary(Plus,Var(x),N(1.0)))),Binary(Seq,Print(N(5.0)),Print(Var(z))))
## step 6:
## Map(A(1) -> N(5.0))
## Decl(MConst,z,Binary(Seq,Assign(Unary(Deref,A(1)),Binary(Plus,Unary(Deref,A(1)),N(1.0))),Binary(Plus,Unary(Deref,A(1)),N(1.0))),Binary(Seq,Print(N(5.0)),Print(Var(z))))
## step 7:
## Map(A(1) -> N(5.0))
## Decl(MConst,z,Binary(Seq,Assign(Unary(Deref,A(1)),Binary(Plus,N(5.0),N(1.0))),Binary(Plus,Unary(Deref,A(1)),N(1.0))),Binary(Seq,Print(N(5.0)),Print(Var(z))))
## step 8:
## Map(A(1) -> N(5.0))
## Decl(MConst,z,Binary(Seq,Assign(Unary(Deref,A(1)),N(6.0)),Binary(Plus,Unary(Deref,A(1)),N(1.0))),Binary(Seq,Print(N(5.0)),Print(Var(z))))
## step 9:
## Map(A(1) -> N(6.0))
## Decl(MConst,z,Binary(Seq,N(6.0),Binary(Plus,Unary(Deref,A(1)),N(1.0))),Binary(Seq,Print(N(5.0)),Print(Var(z))))
## step 10:
## Map(A(1) -> N(6.0))
## Decl(MConst,z,Binary(Plus,Unary(Deref,A(1)),N(1.0)),Binary(Seq,Print(N(5.0)),Print(Var(z))))
## step 11:
## Map(A(1) -> N(6.0))
## Decl(MConst,z,Binary(Plus,N(6.0),N(1.0)),Binary(Seq,Print(N(5.0)),Print(Var(z))))
## step 12:
## Map(A(1) -> N(6.0))
## Decl(MConst,z,N(7.0),Binary(Seq,Print(N(5.0)),Print(Var(z))))
## step 13:
## Map(A(1) -> N(6.0))
## Binary(Seq,Print(N(5.0)),Print(N(7.0)))
5.0
## step 14:
## Map(A(1) -> N(6.0))
## Binary(Seq,Undefined,Print(N(7.0)))
## step 15:
## Map(A(1) -> N(6.0))
## Print(N(7.0))
7.0
## result:
## Map(A(1) -> N(6.0))
## Undefined
undefined
|