RosettaCodeData/Task/First-class-functions/Sidef/first-class-functions.sidef

16 lines
314 B
Text
Raw Permalink Normal View History

2016-12-05 23:44:36 +01:00
func compose(f,g) {
func (*args) {
2017-09-23 10:01:46 +02:00
f(g(args...))
2016-12-05 23:44:36 +01:00
}
}
2017-09-23 10:01:46 +02:00
var cube = func(a) { a.pow(3) }
var croot = func(a) { a.root(3) }
2016-12-05 23:44:36 +01:00
2017-09-23 10:01:46 +02:00
var flist1 = [Num.method(:sin), Num.method(:cos), cube]
var flist2 = [Num.method(:asin), Num.method(:acos), croot]
2016-12-05 23:44:36 +01:00
2017-09-23 10:01:46 +02:00
for a,b (flist1 ~Z flist2) {
say compose(a, b)(0.5)
2016-12-05 23:44:36 +01:00
}