type Context
= Map
[Variable, Float
]
def result
(context
: Context
): Float
}
def result
(context
: Context
) = context
(this) }
def result
(context
: Context
) = value
}
def result
(context
: Context
) = result
(a.
result(context
), b.
result(context
)) }
}
}
}
}
}
def result
(context
: Context
) = math.
sqrt(x.
result(context
)).
toFloat }
val context
= Map
(a -
> 1f, b -
> 2f, c -
> 3f, d -
> 4f
) println(expression.result(context))
}
b2JqZWN0IFN5bWJvbGljRXhwcmVzc2lvbnMgewoJdHlwZSBDb250ZXh0ID0gTWFwW1ZhcmlhYmxlLCBGbG9hdF0KCQoJdHJhaXQgRXhwcmVzc2lvbiB7CgkJZGVmIHJlc3VsdChjb250ZXh0OiBDb250ZXh0KTogRmxvYXQKCX0KCQoJY2xhc3MgVmFyaWFibGUgZXh0ZW5kcyBFeHByZXNzaW9uIHsKCQlkZWYgcmVzdWx0KGNvbnRleHQ6IENvbnRleHQpID0gY29udGV4dCh0aGlzKQoJfQoJCgljbGFzcyBDb25zdGFudCh2YWx1ZTogRmxvYXQpIGV4dGVuZHMgRXhwcmVzc2lvbiB7CgkJZGVmIHJlc3VsdChjb250ZXh0OiBDb250ZXh0KSA9IHZhbHVlCgl9CgkKCXRyYWl0IE9wZXJhdG9yIGV4dGVuZHMgRXhwcmVzc2lvbiB7CgkJcHJvdGVjdGVkIGRlZiBhOiBFeHByZXNzaW9uCgkJcHJvdGVjdGVkIGRlZiBiOiBFeHByZXNzaW9uCgkJCgkJcHJvdGVjdGVkIGRlZiByZXN1bHQoYTogRmxvYXQsIGI6IEZsb2F0KTogRmxvYXQKCQkKCQlkZWYgcmVzdWx0KGNvbnRleHQ6IENvbnRleHQpID0gcmVzdWx0KGEucmVzdWx0KGNvbnRleHQpLCBiLnJlc3VsdChjb250ZXh0KSkKCX0KCQoJY2xhc3MgUGx1cyhwcm90ZWN0ZWQgdmFsIGE6IEV4cHJlc3Npb24sIHByb3RlY3RlZCB2YWwgYjogRXhwcmVzc2lvbikgZXh0ZW5kcyBPcGVyYXRvciB7CgkJcHJvdGVjdGVkIGRlZiByZXN1bHQoYTogRmxvYXQsIGI6IEZsb2F0KTogRmxvYXQgPSBhICsgYgoJfQoJCgljbGFzcyBNaW51cyhwcm90ZWN0ZWQgdmFsIGE6IEV4cHJlc3Npb24sIHByb3RlY3RlZCB2YWwgYjogRXhwcmVzc2lvbikgZXh0ZW5kcyBPcGVyYXRvciB7CgkJcHJvdGVjdGVkIGRlZiByZXN1bHQoYTogRmxvYXQsIGI6IEZsb2F0KTogRmxvYXQgPSBhIC0gYgoJfQoJCgljbGFzcyBNdWx0aXBseShwcm90ZWN0ZWQgdmFsIGE6IEV4cHJlc3Npb24sIHByb3RlY3RlZCB2YWwgYjogRXhwcmVzc2lvbikgZXh0ZW5kcyBPcGVyYXRvciB7CgkJcHJvdGVjdGVkIGRlZiByZXN1bHQoYTogRmxvYXQsIGI6IEZsb2F0KTogRmxvYXQgPSBhICogYgoJfQoJCgljbGFzcyBEaXZpZGUocHJvdGVjdGVkIHZhbCBhOiBFeHByZXNzaW9uLCBwcm90ZWN0ZWQgdmFsIGI6IEV4cHJlc3Npb24pIGV4dGVuZHMgT3BlcmF0b3IgewoJCXByb3RlY3RlZCBkZWYgcmVzdWx0KGE6IEZsb2F0LCBiOiBGbG9hdCk6IEZsb2F0ID0gYSAvIGIKCX0KfQoKb2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewoJaW1wb3J0IFN5bWJvbGljRXhwcmVzc2lvbnMuXwoJCgljbGFzcyBTcXJ0KHg6IEV4cHJlc3Npb24pIGV4dGVuZHMgRXhwcmVzc2lvbiB7CgkJZGVmIHJlc3VsdChjb250ZXh0OiBDb250ZXh0KSA9IG1hdGguc3FydCh4LnJlc3VsdChjb250ZXh0KSkudG9GbG9hdAoJfQoJCgl2YWwgYSA9IG5ldyBWYXJpYWJsZQoJdmFsIGIgPSBuZXcgVmFyaWFibGUKCXZhbCBjID0gbmV3IFZhcmlhYmxlCgl2YWwgZCA9IG5ldyBWYXJpYWJsZQoJCgl2YWwgZXhwcmVzc2lvbiA9IG5ldyBQbHVzKG5ldyBNaW51cyhuZXcgTXVsdGlwbHkobmV3IERpdmlkZShhLCBiKSwgYyksIGQpLCBuZXcgU3FydChuZXcgQ29uc3RhbnQoMjVmKSkpCgkKCXZhbCBjb250ZXh0ID0gTWFwKGEgLT4gMWYsIGIgLT4gMmYsIGMgLT4gM2YsIGQgLT4gNGYpCglwcmludGxuKGV4cHJlc3Npb24ucmVzdWx0KGNvbnRleHQpKQp9