Slide 29
Slide 29 text
Example of Analysis
1: def foo(a)
2: if a < 10
3: b = 42
4: else
5: b = "str"
6: end
7: c = b
8: c
9: end
10:
11: ret = foo(42)
Line# a b c
1 ∅ ∅ ∅
2 ∅ ∅ ∅
3 ∅ ∅ ∅
4 - - -
5 ∅ ∅ ∅
6 -
7 ∅ ∅ ∅
8 ∅ ∅ ∅
Line# a b c
1 { Int } ∅ ∅
2 ∅ ∅ ∅
3 ∅ ∅ ∅
4 - - -
5 ∅ ∅ ∅
6 -
7 ∅ ∅ ∅
8 ∅ ∅ ∅
Line# a b c
1 { Int } ∅ ∅
2 { Int } ∅ ∅
3 ∅ ∅ ∅
4 - - -
5 ∅ ∅ ∅
6 -
7 ∅ ∅ ∅
8 ∅ ∅ ∅
Line# a b c
1 { Int } ∅ ∅
2 { Int } ∅ ∅
3 { Int } ∅ ∅
4 - - -
5 { Int } ∅ ∅
6 -
7 ∅ ∅ ∅
8 ∅ ∅ ∅
Line# a b c
1 { Int } ∅ ∅
2 { Int } ∅ ∅
3 { Int } ∅ ∅
4 - - -
5 { Int } ∅ ∅
6 -
7 { Int } { Int } ∅
8 ∅ ∅ ∅
Line# a b c
1 { Int } ∅ ∅
2 { Int } ∅ ∅
3 { Int } ∅ ∅
4 - - -
5 { Int } ∅ ∅
6 -
7 { Int } { Int } ∅
8 ∅ ∅ ∅
Line# a b c
1 { Int } ∅ ∅
2 { Int } ∅ ∅
3 { Int } ∅ ∅
4 - - -
5 { Int } ∅ ∅
6 -
7 { Int } { Int, Str } ∅
8 ∅ ∅ ∅
Line# a b c
1 { Int } ∅ ∅
2 { Int } ∅ ∅
3 { Int } ∅ ∅
4 - - -
5 { Int } ∅ ∅
6 -
7 { Int } { Int, Str } ∅
8 ∅ ∅ ∅
Line# a b c
1 { Int } ∅ ∅
2 { Int } ∅ ∅
3 { Int } ∅ ∅
4 - - -
5 { Int } ∅ ∅
6 -
7 { Int } { Int, Str } ∅
8 { Int } { Int, Str } { Int, Str }
Object#foo :: (Int) -> (Int|Str)
29