33 lines
646 B
V
33 lines
646 B
V
struct PartialFs {
|
|
f Func @[required]
|
|
fs FuncS @[required]
|
|
}
|
|
|
|
type Func = fn (int) int
|
|
type FuncS = fn (Func, []int) []int
|
|
|
|
fn fs(f Func, seq []int) []int { return seq.map(f) }
|
|
|
|
fn (p PartialFs) call(seq []int) []int { return p.fs(p.f, seq) }
|
|
|
|
fn f1(n int) int { return 2 * n }
|
|
|
|
fn f2(n int) int { return n * n }
|
|
|
|
fn main() {
|
|
fsf1 := PartialFs{f: f1, fs: fs}
|
|
fsf2 := PartialFs{f: f2, fs: fs}
|
|
|
|
seqs := [
|
|
[0, 1, 2, 3],
|
|
[2, 4, 6, 8],
|
|
]
|
|
|
|
for seq in seqs {
|
|
println(fs(f1, seq))
|
|
println(fsf1.call(seq))
|
|
println(fs(f2, seq))
|
|
println(fsf2.call(seq))
|
|
println("")
|
|
}
|
|
}
|