Gauche > Archives > 2025/02/20

2025/02/20 06:20:58 UTCkaki
#
(ineq x <= y < z) の話なんですが、英語で書くのが難しいのとまとまってないのでここに書いちゃいます。典型的な不等式以外にも使えそうな気がして、最初はandでchainすることや間のオペランドが折り重なることに注目して命名した方がいいかと思ったんですが、そうすると一般的になりすぎたり(chainとか)長くなったり(and-chainとか)するんですよね。簡易記法のためのマクロなんだから、説明的すぎるより短い名前がいいでしょうし。かといって、&とか&&とかだと短すぎたり記号的すぎたりする気もしますし、記号でこれ以上複雑にすると暗号的になりそうですし、and*とするにはandと違いすぎますし、自信を持って推せる名前は思い付きませんでした。
#
典型的な不等式っぽい手続き以外でineqで使えそうな手続きはいくつか思い付いていて、member、alist-ref辺りはまだましなんですが、hash-table-delete!みたいな副作用があって成否を返すやつを使い出すと変な感じがします。まあ、これはそう使う人が変っていう話かもしれませんが。
2025/02/20 06:26:29 UTCkaki
#
関連する話題として、(complement =) もしくは complement の略記が欲しくなりそうですね。(ineq a < x (complement =) y < b) くらいは普通にありそうなので。(.$ not =) の方が短いなんて。
2025/02/20 06:31:19 UTCkaki
#
(complement =) に略記を与えちゃうと string=? 他はどうするんだとなっちゃいますが。
2025/02/20 07:18:00 UTCkaki
#
(ineq a < x (complement =) y < b) これ、(< x b) じゃないし普通じゃないか。
2025/02/20 07:22:54 UTCshiro
#
そう、最初は一種のchainingだから(Pythonでもchain of comparisonって言ってるし)、一般化するならそれに類する名前がいいかなと思ってたんだけどchainはsrfi-197で取られてるし、長くなったら意味ないし。
#
記号では、不等式なので >< とか (<> だとcutとかぶる)、数学で二項関係を一般化するときよく ~ を使うから ~* とか考えたんだけど、試してみたらいまいちだった。
2025/02/20 08:27:40 UTCkaki
#
andでchainするので記号を使うんだったら&を軸にするかなと思いました。&*とか。…&~とか?うーん。使用頻度的に記号2文字を割り当てるほどでもない気もするんですよね。ineqは長さや衝突しなさ的には丁度よさそうな感じがします。