タグ

CLとmapに関するkiyo_hikoのブックマーク (3)

  • MAP関数 : セマンティックウェブ・ダイアリー

    4.MAP関数とプログラム 4.1   関数は1級のクラスCommon Lisp ではScheme と異なって,シンボルはシンボルの値のほかに関数を持つことができます.シンボルから関数を取り出すには関数 symbol-function が用いられます. eval> (symbol-function 'cons) #<Function cons> eval> #'cons #<Function cons>ここで #' はsymbol-functionのシンタックスシュガーです.そして,その取り出した関数を関数引数として与えることもできます.このようにLispでは関数そのものもLispにおけるオブジェクトですので,これを昔は first class citizen と言いましたが,今は「政治的に正しい」(politically correct,PC)言い方として第一級のオブジェクト(first

    MAP関数 : セマンティックウェブ・ダイアリー
    kiyo_hiko
    kiyo_hiko 2013/02/11
    mappendを定義するとmapcanと何が違うのと思ったらmapcanはリストを破壊できるとのこと
  • mapcan メモ - わからん

    mapcan は第一引数の戻り値をリストだと期待して、そのリストに第一引数の関数を mapcar した結果を nconc でつなげていく関数です。 (defun my-null (x) (if (null x) (list t) (list nil))) (mapcan #'my-null '(nil 1 2 nil)) ;;=> (T NIL NIL T) ;(mapcar 'null '(nil 1 2 nil)) でいいのは承知の上 (mapcar #'my-null '(nil 1 2 nil)) ;;=> ((T) (NIL) (NIL) (T)) (apply #'nconc '((t) (nil) (nil) (t))) ;;=> (T NIL NIL T) nconc を append に置きかえた mapcaappend を定義してみます。 (defun mapcaapp

    kiyo_hiko
    kiyo_hiko 2012/12/05
    On Lisp 4章の疑問から。戻り値にリストを期待する関数を順次適用し、nconcした結果を返すとのこと / 自分でも何か試してみると、「(defun mk-list (x) (if (listp x) x (list x))) (mapcan #'mk-list '((1 2 3) 4 5 (6 7) 8 9)) ;-> (1 2 3 4 5 6 7 8 9)」
  • mapcar -- map for more than one list

    kiyo_hiko
    kiyo_hiko 2011/12/06
    Perlでmapではなく、mapcarを使いたいという話。あとで読む
  • 1