Scheme では、この関数(map fn list0 [list1 .. listN])
にはリストの要素数が同じでなければならないという制限があります。Python から来たので、Python のリスト内包表記の自由がありません。これはmap
上記のように見えますが、この制限はありません。
すべてのリストの最初の N 個の要素を繰り返し処理する、異なるサイズのリストを可能にする代替の「my-map」を実装したいと思います。ここで、N は最短のリストの長さです。
たとえば、 let num
be10
とlst
be(1 2 3)
です。my-map では、次のような式を書きたいと考えています。
(my-map + (circular-list num) lst)))
そして得る:
(11 12 13)
私はこれを従来のものよりも読みやすい
(map + (lambda (arg) (+ num arg)) lst)
また
(map + (make-list (length lst) num) lst)
2 つの質問:
- Scheme 初心者として、`map` の制限の重要な理由を見落としていませんか?
- 「my-map」のようなものは、Scheme または SRFI に既に存在しますか? 私は srfi-42 を調べましたが、それは私が探しているものではないか、探していたものであり、明らかではありませんでした。