2005/12/06

状況
* hisashim:On Lisp を読んでいるところ
* shikano:ANSI Common Lisp を読んでいるところ
hisashim:mapcan おもしろいよな
shikano:破壊的ですよ
hisashim:いいんだよ、zip のフラットなのができるから

ANSI Common Lispの100ページ(日本語訳のほう)には、mapcanの定義が載っている。
(compose (curry #'apply #'nconc) #'mapcar)

mapcan が破壊的なのは、nconc が破壊的だからだと思うんだけど、だったら nconc を append にすれば、非破壊型の mapcan ができるの?
(define (my-mapcan fn . ls) 
(apply append (apply map fn ls)))

最後のは Scheme だけど、まあ想定どおりに動く。

2 件のコメント:

  1. 「zipのフラットなのができるから」というよりは、分かって使えば便利だからいいんじゃないのと言いたかったのです。

    noobくさい発言ですいません。

    返信削除
  2. noob なのはお互いさまです。

    この話で名前を出したのは、仕事サボってませんというメッセージだったいうことで :)

    返信削除