RosettaCodeData/Task/First-class-functions/Objeck/first-class-functions.objeck
2019-09-12 10:33:56 -07:00

26 lines
847 B
Text

use Collection.Generic;
lambdas Func {
Double : (FloatHolder) ~ FloatHolder
}
class FirstClass {
function : Main(args : String[]) ~ Nil {
vector := Vector->New()<Func2Holder <FloatHolder, FloatHolder> >;
# store functions in collections
vector->AddBack(Func2Holder->New(\Func->Double : (v)
=> v * v)<FloatHolder, FloatHolder>);
# new function from preexisting function at run-time
vector->AddBack(Func2Holder->New(\Func->Double : (v)
=> Float->SquareRoot(v->Get()))<FloatHolder, FloatHolder>);
# process collection
each(i : vector) {
# return value of other functions and pass argument to other function
Show(vector->Get(i)<Func2Holder>->Get()<FloatHolder, FloatHolder>);
};
}
function : Show(func : (FloatHolder) ~ FloatHolder) ~ Nil {
func(13.5)->Get()->PrintLine();
}
}