aiscript
aiscript copied to clipboard
feat: 関数同士の比較を行えるようにしたい
現在の実装だと関数同士の比較は常にfalseを返すのでなんとかしたい https://github.com/aiscript-dev/aiscript/blob/aiscript-next/src/interpreter/util.ts#L89
一応リリースされているもの仕様を変えることになるので破壊的変更としてnextの方へPRを出したほうが妥当かもしれない? もっと早くに気づければよかった・・・てへぺろ
普通にJavaScriptの等号で比較するか、deep-equalにするか
#225 の連想配列が実装されるなら、そこと等価性の概念を一緒にしたい
==
ならJavaScriptの等号で判定、===
ならdeep-equalのように分ける手もある
あまり想像つかないのですがdeep-equalの場合は処理内容が一致する必要があるって感じでしょうか
そっちだと==
のニュアンスが近いか
javascriptだと===
は厳格な評価を意味するので処理内容さえ合えばいいという曖昧な評価方法は==
のが自然かもしれないと思った
あまり想像つかないのですがdeep-equalの場合は処理内容が一致する必要があるって感じでしょうか
そうですね、処理内容と引数が全て合致すればtrueみたいな感じです
なるほどです
あれ、aiscriptには===
演算子の実装はなさそうです。
あれ、aiscriptには===演算子の実装はなさそうです。
なので生やしちゃおうかなって…
===演算子はまた別の機会にしたいかもしれない
じゃあA deepeq B
とか?
#460 を改変すれば技術的には可能なはず
僕としてはdeep-equal用の演算子を追加するのは便利で良いものだと思うけど、関数同士の比較の実装作業と一緒にやるのはヘンかと思ったんですよね
なので===演算子の件は別のissueとして議論したい
それじゃあissue切っておきますね
#528 立てました
関数の==
は配列・オブジェクト同様、JavaScriptの等号による比較でよさそうですかね
Core:eq
で行う評価基準の話であれば、僕としてはその参照比較で良いかと思いますね
明後日までになにか問題がなければ実装に取り掛かりますね