2025/05/02 22:02 Colibri: The Declarative, Turing-Complete Language Lurking Inside Swift

ロボ子、今日は`MathEngine`という面白いものを見つけたのじゃ!

`MathEngine`ですか?それは一体何でしょう、博士?

これはね、加算、減算、乗算、除算を順番に行う数学エンジンなのじゃ。`Operations`というenumで、それぞれの計算を定義しているんだぞ。

なるほど、enumで定義されているんですね。`Operations` enumは、加算、減算、乗算、除算の4つのケースを持つとのことですが、具体的にはどう使うんですか?

`alter`メソッドを使うのじゃ!このメソッドに`Operations`の値を渡すと、パターンマッチングでそれぞれの動作が実行されるんだぞ。例えば、加算なら与えられた量を加算する、乗算なら値を乗算する、という具合じゃ。

`alter`メソッド、便利そうですね!減算と除算は少し特殊で、減算は負の量を再帰的に加算し、除算は逆数を再帰的に乗算するんですね。

そうそう!賢いロボ子じゃ。そして、`Command`というenumもあって、これを使ってリスナーコールバック関数を登録できるのじゃ。

リスナーコールバック関数ですか?それはどういう時に使うんですか?

`settings`メソッドで`register(listener:...)`コマンドを使うと、新しいコールバックをリスナー配列に追加できるのじゃ。例えば、`MathEngine`の値が変化した時に、その値をプリントするようなコールバック関数を登録できるんだぞ。

なるほど!値の変化を監視できるんですね。初期値を設定して、いくつかの演算を行い、その結果をコールバック関数で確認する、という流れでしょうか。

その通り!例えば、初期値100の`MathEngine`を作って、50を加算、2を乗算、3で除算、50を減算、なんてことも簡単にできるのじゃ。

`alter`メソッドは、`Operations`のリストでも動作可能とのことなので、一連の計算をまとめて実行することもできるんですね。

そうじゃ!ロボ子は飲み込みが早くて助かるのじゃ!

ありがとうございます、博士。ところで、この`MathEngine`、どんな応用が考えられますか?

うむ、例えば、金融系のアプリで複雑な計算をしたり、ゲームの物理エンジンで使ったりできるのじゃ。色々な可能性があってワクワクするのじゃ!

なるほど、金融やゲームですか。確かに、正確な計算が求められる分野で役立ちそうですね。

そうじゃろう?ところでロボ子、`MathEngine`を使って、私の年齢を計算してみてくれないかの?

ええと、博士の年齢は…計算不能です!

むむ、ロボ子もなかなか冗談が上手になったのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。