RosettaCodeData/Task/Function-composition/M2000-Interpreter/function-composition-2.m2000

38 lines
616 B
Plaintext

class Compose {
private:
composition$
public:
function formula$ {
=.composition$
}
value (x){
=Eval(.composition$)
}
Class:
module compose(a$, b$) {
.composition$<=a$+"("+b$+"(x))"
}
}
function Global Exp(x) {
=round(2.7182818284590452**x)
}
class ComposeStr$ {
private:
composition$
public:
function formula$ {
=.composition$
}
value (x$){
=Eval$(.composition$.) // NEED A DOT AFTER STRING VARIABLE
}
Class:
module composeStr(a$, b$) {
.composition$<=a$+"("+b$+"(x$))"
}
}
ExpLog=Compose("Exp", "Ln")
Print ExpLog(3)
UcaseLcase$=ComposeStr$("Ucase$", "Lcase$")
Print UcaseLcase$("GOOD")