RosettaCodeData/Task/Partial-function-application/V-(Vlang)/partial-function-application.v
2026-04-30 12:34:36 -04:00

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("")
}
}