| 1 | import arrays |
| 2 | |
| 3 | fn ddd[T](call fn (arg1 T, arg2 T) string, arg1 T, arg2 T) string { |
| 4 | return call(arg1, arg2) |
| 5 | } |
| 6 | |
| 7 | fn abc2[T](arg1 T, arg2 T) string { |
| 8 | return ddd(|x, y| (x + y).str(), arg1, arg2) |
| 9 | } |
| 10 | |
| 11 | fn abc[T](arg T, call fn (a T) string) string { |
| 12 | return call(arg) |
| 13 | } |
| 14 | |
| 15 | fn test_main() { |
| 16 | a := [1, 2, 3, 4] |
| 17 | b := arrays.join_to_string(a, '-', |x| x.str()) |
| 18 | assert b == '1-2-3-4' |
| 19 | assert abc(123, |x| x.str()) == '123' |
| 20 | } |
| 21 | |
| 22 | fn test_generic() { |
| 23 | assert dump(abc2('3', '3')) == '33' |
| 24 | assert dump(abc2(3, 3)) == '6' |
| 25 | assert dump(abc2(3.1, 3.1)) == '6.2' |
| 26 | } |
| 27 | |