[A] そうですね。・・・Essenでは当然のことながら適当な関数を書いて計算をすることができます。でもインタプリタ実行なのでC言語よりもはるかに遅いと思われます。これはデメリットです。でも関数の引数は構造体としてひとまとめにすることが簡単にできて、これをargとすると、 value = func(arg) で計算した値を、 funcCache[arg] = value とキャッシュに入れておくことができます(Essenでは構造体でも何でも配列のインデックスにできる)。そうなれば、処理速度が重くてでも使用頻度が高い関数はなんでもキャッシュしてしまえばいいことになります。これでどんなに重い関数もキャッシュを引く時間程度までには簡単に高速化されるというわけです。・・・実際にはキャッシュ制御のための記述を書くのも面倒なので、こんな感じにすると思います。
func = function (a b c)
{
funcCache ((a b c) 100) // 何がキーなのかを教える、外部変数にも影響されるならそれも含める、100はキャッシュの件数の上限
{
// 上記命令はキャッシュのテストもして、もしヒットしたら以下は実行しない
ここでがんばって重たい計算をする
}
}