Gauche > Archives > 2020/04/19

2020/04/19 18:07:59 UTCkaki
#
find-with-index のwith-indexの意味が map-with-index とかと違うの罠すぎませんか?
#
これ書いてて今自分に必要なのは every-with-index / any-with-index だと分かりました。(個人的にはevery/anyよりfor-all/existsの方が好きなんですけどね)
2020/04/19 18:21:41 UTCshiro
#
う、確かに。戻り値の方だから、find-element&indexとかにすべきだったか
#
{every|any}-with-indexを足すなら、-with-index系のAPIを統一して、find-with-indexだけ互換性のために古い仕様を残すが新規コードはfind-element&index、ってことにしてもいいかも。
#
-with-index系のAPIでfindが欲しければ(any-with-index (^[i e] (and (pred i e) e) seq)で書けるし
2020/04/19 18:32:49 UTCshiro
#
issueでトラックします。https://github.com/shirok/Gauche/issues/673
2020/04/19 18:44:47 UTCkaki
#
ついでに言うと gauche.collection にもevery, anyはまだ無いんですよね。gauche.collection の手続きは名前を被せているやつ(mapとか)と被せていないやつ(size-ofとか)があるので、ここはfor-all/exists(の名前)を導入するチャンスかと思っているんですが、いかがでしょう。
2020/04/19 18:49:51 UTCkaki
#
for-all/existsを推す理由は、分かりやすいからです。というか、anyって単語のニュアンスがあんまり分かってないので(´・_・`)
2020/04/19 19:06:43 UTCshiro
#
every, anyはsrfi-1で導入されて、Scheme界では他の手続きにも敷衍されてるので(vector-everyとかstring-everyとか)、あんまり変えるインセンティブはないです。
2020/04/19 19:11:04 UTCshiro
#
"if every element satisfies predicate" と "if any element satisfies predicate"、なので意味的には特に分かりにくくは無いんじゃないかなと。慣れの問題じゃないでしょうか。Clojureだとanyがsomeになってたりしてまた文化の違いなんですが。
#
あと、anyはpredicateを満たす「要素」を返すことを当てにするので、"any element that satisfies predicate"、という読みもできて、個人的にはそれが気に入ってます。existsだと単に真偽値判定だけに読めるし、someだと複数帰ってきそう。
2020/04/19 19:17:35 UTCkaki
#
あー、for-all/existsはR6RSで終わっちゃったんですね。
2020/04/19 19:20:11 UTCshiro
#
R6RS…伝統の破壊者…
2020/04/19 19:20:40 UTCkaki
#
英語に親しみがないとニュアンスが掴みにくい単語っていう印象なんですが、まあこれも慣れの問題と言えますし、何よりScheme界がこれからevery/anyでいくぜっていう風潮ならそこに逆らうほどの意志もありません(。>﹏<) ガンバリマス