Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 関数同士の比較を行えるようにしたい #527

Closed
ikasoba opened this issue Jan 16, 2024 · 20 comments
Closed

feat: 関数同士の比較を行えるようにしたい #527

ikasoba opened this issue Jan 16, 2024 · 20 comments
Assignees
Labels
enhancement New feature or request

Comments

@ikasoba
Copy link
Collaborator

ikasoba commented Jan 16, 2024

現在の実装だと関数同士の比較は常にfalseを返すのでなんとかしたい
https://github.com/aiscript-dev/aiscript/blob/aiscript-next/src/interpreter/util.ts#L89

一応リリースされているもの仕様を変えることになるので破壊的変更としてnextの方へPRを出したほうが妥当かもしれない?
もっと早くに気づければよかった・・・てへぺろ

@FineArchs
Copy link
Member

普通にJavaScriptの等号で比較するか、deep-equalにするか

@FineArchs
Copy link
Member

#225 の連想配列が実装されるなら、そこと等価性の概念を一緒にしたい

@FineArchs
Copy link
Member

==ならJavaScriptの等号で判定、===ならdeep-equalのように分ける手もある

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

あまり想像つかないのですがdeep-equalの場合は処理内容が一致する必要があるって感じでしょうか

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

そっちだと==のニュアンスが近いか

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

javascriptだと===は厳格な評価を意味するので処理内容さえ合えばいいという曖昧な評価方法は==のが自然かもしれないと思った

@FineArchs
Copy link
Member

FineArchs commented Jan 16, 2024

あまり想像つかないのですがdeep-equalの場合は処理内容が一致する必要があるって感じでしょうか

そうですね、処理内容と引数が全て合致すればtrueみたいな感じです

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

なるほどです

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

あれ、aiscriptには===演算子の実装はなさそうです。

@FineArchs
Copy link
Member

あれ、aiscriptには===演算子の実装はなさそうです。

なので生やしちゃおうかなって…

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

===演算子はまた別の機会にしたいかもしれない

@FineArchs
Copy link
Member

じゃあA deepeq Bとか?

@FineArchs
Copy link
Member

#460 を改変すれば技術的には可能なはず

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

僕としてはdeep-equal用の演算子を追加するのは便利で良いものだと思うけど、関数同士の比較の実装作業と一緒にやるのはヘンかと思ったんですよね

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

なので===演算子の件は別のissueとして議論したい

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

それじゃあissue切っておきますね

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

#528 立てました

@FineArchs
Copy link
Member

関数の==は配列・オブジェクト同様、JavaScriptの等号による比較でよさそうですかね

@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

Core:eqで行う評価基準の話であれば、僕としてはその参照比較で良いかと思いますね

@ikasoba ikasoba added the enhancement New feature or request label Jan 16, 2024
@ikasoba
Copy link
Collaborator Author

ikasoba commented Jan 16, 2024

明後日までになにか問題がなければ実装に取り掛かりますね

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
2 participants