トップページ > プログラム > 2014年08月29日 > SalYkWyb

書き込み順位&時間帯一覧

16 位/248 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000100001010014



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【Lisp】プログラミング言語 Clojure #3【JVM】

書き込みレス一覧

【Lisp】プログラミング言語 Clojure #3【JVM】
499 :デフォルトの名無しさん[sage]:2014/08/29(金) 13:45:05.03 ID:SalYkWyb
transducerってhaskellの部分関数適用っぽいよね

Prelude> let chiceOdd = filter odd
Prelude> let double x = x*x
Prelude> let doubleSeq = map double
Prelude> doubleSeq [1,2,3,4,5]
[1,4,9,16,25]
Prelude> chiceOdd $ doubleSeq [1,2,3,4,5]
[1,9,25]
Prelude> sum $ chiceOdd $ doubleSeq [1,2,3,4,5]
35
Prelude>
【Lisp】プログラミング言語 Clojure #3【JVM】
501 :デフォルトの名無しさん[sage]:2014/08/29(金) 18:06:15.82 ID:SalYkWyb
>>500
(defn handler-name [exp]
(symbol (str 'handle-foo- (first exp))))
(defn destruct [exp]
[(handler-name exp)
(second exp)
(rest (rest exp))])

(defmacro deffoos [& exps]
`(do ~@(for [exp exps]
(let [[fname args body] (destruct exp)]
(list* 'defn fname args body)))
(def foo-handlers ~(reduce (fn [dict exp]
(assoc dict
(keyword (first exp))
(handler-name exp)))
{} exps))))

>(deffoos
(bar [x] (print x) (print x))
(baz [y] (print y) ))

>((:bar foo-handlers) 1)
11
nil
>((:baz foo-handlers) 2)
2
nil
【Lisp】プログラミング言語 Clojure #3【JVM】
503 :デフォルトの名無しさん[sage]:2014/08/29(金) 20:32:24.74 ID:SalYkWyb
>502
コマンドプロンプトに出てきたエラーをコピペしよう
【Lisp】プログラミング言語 Clojure #3【JVM】
518 :デフォルトの名無しさん[sage]:2014/08/29(金) 23:52:13.95 ID:SalYkWyb
>517
動いてね?


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。