Sanitize fibonacci program to make round-trip tests happy, isolate unsanitary code
This commit is contained in:
parent
787f345275
commit
1b00e4d416
|
@ -2,7 +2,7 @@
|
|||
1.0.0
|
||||
[
|
||||
(lam
|
||||
i0
|
||||
i_0
|
||||
[
|
||||
[
|
||||
(force
|
||||
|
@ -10,13 +10,19 @@
|
|||
(delay
|
||||
(delay
|
||||
(lam
|
||||
f
|
||||
i_1
|
||||
[
|
||||
(force (delay (lam s [ s s ])))
|
||||
(force (delay (lam i_2 [ i_2 i_2 ])))
|
||||
(lam
|
||||
s
|
||||
i_3
|
||||
(lam
|
||||
x [ [ f [ (force (delay (lam s [ s s ]))) s ] ] x ]
|
||||
i_4
|
||||
[
|
||||
[
|
||||
i_1 [ (force (delay (lam i_5 [ i_5 i_5 ]))) i_3 ]
|
||||
]
|
||||
i_4
|
||||
]
|
||||
)
|
||||
)
|
||||
]
|
||||
|
@ -26,22 +32,25 @@
|
|||
)
|
||||
)
|
||||
(lam
|
||||
rec
|
||||
i_6
|
||||
(lam
|
||||
i
|
||||
i_7
|
||||
[
|
||||
[
|
||||
[
|
||||
(force
|
||||
(delay
|
||||
(lam
|
||||
b
|
||||
i_8
|
||||
(lam
|
||||
x
|
||||
i_9
|
||||
(lam
|
||||
y
|
||||
i_10
|
||||
[
|
||||
[ [ [ (force (builtin ifThenElse)) b ] x ] y ]
|
||||
[
|
||||
[ [ (force (builtin ifThenElse)) i_8 ] i_9 ]
|
||||
i_10
|
||||
]
|
||||
(con unit ())
|
||||
]
|
||||
)
|
||||
|
@ -49,29 +58,32 @@
|
|||
)
|
||||
)
|
||||
)
|
||||
[ [ (builtin lessThanEqualsInteger) i ] (con integer 1) ]
|
||||
[ [ (builtin lessThanEqualsInteger) i_7 ] (con integer 1) ]
|
||||
]
|
||||
(lam u i)
|
||||
(lam i_11 i_7)
|
||||
]
|
||||
(lam
|
||||
u
|
||||
i_12
|
||||
[
|
||||
[
|
||||
(builtin addInteger)
|
||||
[
|
||||
rec [ [ (builtin subtractInteger) i ] (con integer 1) ]
|
||||
i_6
|
||||
[ [ (builtin subtractInteger) i_7 ] (con integer 1) ]
|
||||
]
|
||||
]
|
||||
[ rec [ [ (builtin subtractInteger) i ] (con integer 2) ] ]
|
||||
[
|
||||
i_6 [ [ (builtin subtractInteger) i_7 ] (con integer 2) ]
|
||||
]
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
]
|
||||
i0
|
||||
i_0
|
||||
]
|
||||
)
|
||||
(con integer 0)
|
||||
]
|
||||
)
|
||||
)
|
|
@ -0,0 +1,77 @@
|
|||
(program
|
||||
1.0.0
|
||||
[
|
||||
(lam
|
||||
i0
|
||||
[
|
||||
[
|
||||
(force
|
||||
(force
|
||||
(delay
|
||||
(delay
|
||||
(lam
|
||||
f
|
||||
[
|
||||
(force (delay (lam s [ s s ])))
|
||||
(lam
|
||||
s
|
||||
(lam
|
||||
x [ [ f [ (force (delay (lam s [ s s ]))) s ] ] x ]
|
||||
)
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(lam
|
||||
rec
|
||||
(lam
|
||||
i
|
||||
[
|
||||
[
|
||||
[
|
||||
(force
|
||||
(delay
|
||||
(lam
|
||||
b
|
||||
(lam
|
||||
x
|
||||
(lam
|
||||
y
|
||||
[
|
||||
[ [ [ (force (builtin ifThenElse)) b ] x ] y ]
|
||||
(con unit ())
|
||||
]
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
[ [ (builtin lessThanEqualsInteger) i ] (con integer 1) ]
|
||||
]
|
||||
(lam u i)
|
||||
]
|
||||
(lam
|
||||
u
|
||||
[
|
||||
[
|
||||
(builtin addInteger)
|
||||
[
|
||||
rec [ [ (builtin subtractInteger) i ] (con integer 1) ]
|
||||
]
|
||||
]
|
||||
[ rec [ [ (builtin subtractInteger) i ] (con integer 2) ] ]
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
)
|
||||
]
|
||||
i0
|
||||
]
|
||||
)
|
||||
(con integer 0)
|
||||
]
|
||||
)
|
|
@ -72,4 +72,12 @@ fn fibonacci() {
|
|||
let code = include_str!("../test_data/fibonacci/fibonacci.uplc");
|
||||
|
||||
round_trip_test(bytes, code);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn one_way_fibonacci() {
|
||||
let bytes = include_bytes!("../test_data/fibonacci/fibonacci.flat");
|
||||
let code = include_str!("../test_data/fibonacci/unsanitary_fibonacci.uplc");
|
||||
|
||||
parsed_program_matches_decoded_bytes(bytes, code);
|
||||
}
|
Loading…
Reference in New Issue