1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-02-15 04:32:21 +00:00
ton/crypto/test/fift/fift-ext.fif

107 lines
1.7 KiB
Text
Raw Normal View History

"FiftExt.fif" include
// if then
{
if{ 0> }then{ "Yes" }
} : run
5 run type cr // Yes
-5 run .s // nothing
// if then else
{
if{ 0> }then{ "Yes" }else{ "No" }
} : run
5 run type ." " // Yes
-5 run type cr // No
// if then elseif else
{
dup dup if{ 20 > }then{ 2drop "AAA" }elseif{ 10 > }then{ drop "BBB" }elseif{ 0> }then{ "CCC" }else{ "DDD" }
} : run
25 run type ." " // AAA
15 run type ." " // BBB
5 run type ." " // CCC
-5 run type cr // DDD
// while do
1
while{ dup 100 < }do{
dup .
2 *
}
cr // 1 2 4 8 16 32 64
drop
// repeat until
1
repeat{
dup .
3 *
}until{ dup 500 > }
cr // 1 3 9 27 81 243
drop
// def
def foo1 { * + }
5 10 20 foo1 . // 205
6 100 100 foo1 . cr // 10006
// defrec
defrec fib {
if{ dup 2 < }then{
drop 1
}else{
dup 1- fib swap 2- fib +
}
}
8 fib . // 34
9 fib . // 55
20 fib . cr // 10946
// [[ ... ]]
def foo2 { [[ ."Exec" cr 5 5 * ]] + }
."Calling foo2: "
100 foo2 . 200 foo2 . cr
// Nested blocks
def sqr { dup * }
def power {
1 -rot
while{ dup 0> }do{
if{ dup 1 and }then{
-rot tuck * swap rot
}
2/
if{ dup 0> }then{
swap sqr swap
}
}
2drop
}
3 0 power . // 1
3 1 power . // 3
3 4 power . // 81
3 12 power . // 531441
3 50 power . // 717897987691852588770249
cr
0 while{ dup 2 < }do{
."A"
0 while{ dup 2 < }do{
."B"
0 while{ dup 2 < }do{
."C"
0 while{ dup 2 < }do{
."D"
0 while{ dup 2 < }do{
."E"
0 while{ dup 2 < }do{
."F"
1+ } drop
1+ } drop
1+ } drop
1+ } drop
1+ } drop
1+ } drop
cr // ABCDEFFEFFDEFFEFFCDEFFEFFDEFFEFFBCDEFFEFFDEFFEFFCDEFFEFFDEFFEFFABCDEFFEFFDEFFEFFCDEFFEFFDEFFEFFBCDEFFEFFDEFFEFFCDEFFEFFDEFFEFF