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
|
1.0.0
|
||||||
[
|
[
|
||||||
(lam
|
(lam
|
||||||
i0
|
i_0
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
(force
|
(force
|
||||||
|
@ -10,13 +10,19 @@
|
||||||
(delay
|
(delay
|
||||||
(delay
|
(delay
|
||||||
(lam
|
(lam
|
||||||
f
|
i_1
|
||||||
[
|
[
|
||||||
(force (delay (lam s [ s s ])))
|
(force (delay (lam i_2 [ i_2 i_2 ])))
|
||||||
(lam
|
(lam
|
||||||
s
|
i_3
|
||||||
(lam
|
(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
|
(lam
|
||||||
rec
|
i_6
|
||||||
(lam
|
(lam
|
||||||
i
|
i_7
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
(force
|
(force
|
||||||
(delay
|
(delay
|
||||||
(lam
|
(lam
|
||||||
b
|
i_8
|
||||||
(lam
|
(lam
|
||||||
x
|
i_9
|
||||||
(lam
|
(lam
|
||||||
y
|
i_10
|
||||||
[
|
[
|
||||||
[ [ [ (force (builtin ifThenElse)) b ] x ] y ]
|
[
|
||||||
|
[ [ (force (builtin ifThenElse)) i_8 ] i_9 ]
|
||||||
|
i_10
|
||||||
|
]
|
||||||
(con unit ())
|
(con unit ())
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
@ -49,27 +58,30 @@
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
[ [ (builtin lessThanEqualsInteger) i ] (con integer 1) ]
|
[ [ (builtin lessThanEqualsInteger) i_7 ] (con integer 1) ]
|
||||||
]
|
]
|
||||||
(lam u i)
|
(lam i_11 i_7)
|
||||||
]
|
]
|
||||||
(lam
|
(lam
|
||||||
u
|
i_12
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
(builtin addInteger)
|
(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)
|
(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)
|
||||||
|
]
|
||||||
|
)
|
|
@ -73,3 +73,11 @@ fn fibonacci() {
|
||||||
|
|
||||||
round_trip_test(bytes, code);
|
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