ligo/src/test/contracts/loop.ligo

63 lines
1.4 KiB
Plaintext
Raw Normal View History

// Test while loops in PascaLIGO
2019-05-13 00:56:22 +04:00
function counter (var n : nat) : nat is block {
var i : nat := 0n ;
while (i < n) block {
i := i + 1n ;
}
} with i
function while_sum (var n : nat) : nat is block {
2019-05-13 00:56:22 +04:00
var i : nat := 0n ;
var r : nat := 0n ;
while (i < n) block {
i := i + 1n ;
r := r + i ;
}
} with r
2019-10-22 14:12:19 +04:00
function for_sum (var n : nat) : int is block {
2019-10-11 20:31:04 +04:00
var acc : int := 0 ;
2019-10-22 14:12:19 +04:00
for i := 1 to int(n)
begin
2019-10-11 20:31:04 +04:00
acc := acc + i ;
end
} with acc
2019-10-27 17:12:42 +04:00
function for_collection_list (var nee : unit) : (int * string) is block {
var acc : int := 0 ;
var st : string := "to" ;
var mylist : list(int) := list 1 ; 1 ; 1 end ;
for x : int in list mylist
begin
acc := acc + x ;
st := st^"to" ;
end
2019-10-27 17:12:42 +04:00
} with (acc, st)
2019-10-22 14:12:19 +04:00
2019-10-27 17:12:42 +04:00
function for_collection_set (var nee : unit) : (int * string) is block {
var acc : int := 0 ;
var st : string := "to" ;
var myset : set(int) := set 1 ; 2 ; 3 end ;
for x : int in set myset
begin
acc := acc + x ;
st := st^"to" ;
end
2019-10-27 14:47:17 +04:00
} with (acc, st)
2019-10-15 15:14:00 +04:00
// function for_collection_map (var nee : unit) : (int * string) is block {
// var acc : int := 0 ;
// var st : string := "" ;
// var mymap : map(string,int) := map "one" -> 1 ; "two" -> 2 ; "three" -> 3 end ;
// for k -> v : (string * int) in map mymap
// begin
// acc := acc + v ;
// st := k^st ;
// end
// } with (acc, st)
2019-05-13 00:56:22 +04:00
function dummy (const n : nat) : nat is block {
while (False) block { skip }
} with n