slovo/examples/array-string-value-flow.slo
2026-05-22 08:38:43 +02:00

42 lines
1.1 KiB
Plaintext

(module main)
(fn make_words ((head string)) -> (array string 3)
(array string head "middle" "tail"))
(fn at ((values (array string 3)) (i i32)) -> string
(index values i))
(fn echo ((values (array string 3))) -> (array string 3)
values)
(fn call_return_index ((i i32)) -> string
(index (make_words "call") i))
(fn local_array_flow ((i i32)) -> string
(let words (array string 3) (make_words "local"))
(at words i))
(fn parameter_local_copy ((values (array string 3)) (i i32)) -> string
(let copy (array string 3) values)
(index copy i))
(test "string array parameter value flow"
(= (at (make_words "alpha") 0) "alpha"))
(test "string array dynamic index"
(= (at (make_words "alpha") 2) "tail"))
(test "string array local call value flow"
(= (local_array_flow 1) "middle"))
(test "string array parameter local copy"
(= (parameter_local_copy (make_words "omega") 0) "omega"))
(test "string array return call value flow"
(= (index (echo (make_words "zeta")) 2) "tail"))
(fn main () -> i32
(if (= (call_return_index 1) "middle")
0
1))