// generic function syntax (V-style type parameters) // generic functions: type params are parsed but the VM handles types dynamically fn first[T](arr) { return arr[0] } fn last[T](arr) { let n = len(arr) return arr[n - 1] } fn main() { // works with integers let nums = [10, 20, 30] println("first num: ${first[int](nums)}") println("last num: ${last[int](nums)}") // works with strings let words = ["hello", "world", "foo"] println("first word: ${first[string](words)}") println("last word: ${last[string](words)}") // type args are optional (VM is dynamically typed) println("first (no type arg): ${first(nums)}") }