original.name="Lambda_Valid_21" ====== >>> main.whiley type fun_t is function(T)->(int) function inc(int x) -> (int y): return x + 1 function to_nat(int|bool x) -> (int y): if x is int: return x else if x: return 1 else: return 0 function map(T[] items, fun_t fn) -> int[]: int[] r = [0; |items|] // for i in 0..|items| where |r| == |items|: r[i] = fn(items[i]) // return r public export method test(): // assume map([1,2,3],&inc) == [2,3,4] // following could coerce [1,2,3] into int|bool[] assume map([1,2,3],&to_nat) == [1,2,3] // prevent coercion int[] xs = [4,5,6] assume map(xs,&to_nat) == [4,5,6] ---