aiscript icon indicating copy to clipboard operation
aiscript copied to clipboard

Core:add などを可変長引数化する

Open FineArchs opened this issue 1 year ago • 12 comments

いくつかの関数を可変長引数化したいと考えています。

  • [ ] Core:add, Core:mul: 総和・総乗を求める
  • [ ] Core:and, Core:or: 全てtrueならtrue / 一つでもtrueならtrue
  • [ ] Core:eq: 全ての引数が等しいか判定する
  • [ ] Core:neq: 全ての引数が異なるか判定する(重くなりそう、要検討)
  • [ ] Core:gt, Core:lt, Core:gteq, Core:lteq: 隣接する二引数がそれぞれ条件を満たしているか返す 例:Core:gt(a, b, c)はa > b > cが成立していればtrue

FineArchs avatar Jun 03 '24 23:06 FineArchs

可変長引数あんまり好きじゃないから配列を受け取ることで実現したい

syuilo avatar Jun 03 '24 23:06 syuilo

@syuilo 引数が2つなら今までの挙動、1つなら配列として見るという感じですかね? スプレッド構文を作ればどちらでも大差なくなりそうですが、その場合でも配列受け取りがいいですか?

FineArchs avatar Jun 04 '24 07:06 FineArchs

  • 引数が2つなら今までの挙動、1つなら配列として見る

でも良いけど、型定義を考えると別名の関数を実装した方が良いかも

syuilo avatar Jun 04 '24 08:06 syuilo

@syuilo Core:add_arr([1, 2, 3])みたいな感じですか?

FineArchs avatar Jun 04 '24 09:06 FineArchs

そうね

syuilo avatar Jun 04 '24 09:06 syuilo

四則演算の関数群、パフォーマンスあまり良くないので命令化したいって話があったと思います。 なので、いじらなくて良いんじゃないでしょうか

marihachi avatar Jun 21 '24 10:06 marihachi

@marihachi 命令化ってどういうことですか?

FineArchs avatar Jun 21 '24 10:06 FineArchs

ノードタイプをfnではなく、専用で用意してインタプリタでそのノードタイプについての処理を書くという形です 四則演算などは主に関数呼び出しに変換されるので

marihachi avatar Jun 21 '24 10:06 marihachi

Add関数などはいずれ廃止される気がします。

marihachi avatar Jun 21 '24 10:06 marihachi

そんな話があったんですか… まあその場合でも、

@syuilo Core:add_arr([1, 2, 3])みたいな感じですか?

これみたいな新関数の追加はやりたいです

FineArchs avatar Jun 21 '24 11:06 FineArchs

ノードタイプをfnではなく、専用で用意してインタプリタでそのノードタイプについての処理を書くという形です 四則演算などは主に関数呼び出しに変換されるので

@syuilo 前にこのつもりしてなかったっけ?

marihachi avatar Jun 24 '24 00:06 marihachi

ノードタイプをfnではなく、専用で用意してインタプリタでそのノードタイプについての処理を書くという形です 四則演算などは主に関数呼び出しに変換されるので

とりあえずissue化しておきましょうか

FineArchs avatar Jun 26 '24 09:06 FineArchs