2010-02-01から1ヶ月間の記事一覧

ポール・グレアム勉強会

人の名前を勝手に使うのも失礼な話ですが、ポール・グレアムの勉強会なのでポール・グレアム勉強会です。シェークスピア勉強会、レオナルド・ダ・ヴィンチ勉強会、ポール・グレアム勉強会、何もおかしくありません。参加は http://atnd.org/events/3340 から…

ニューロコンピューティングの本

ニューラル・コンピューティング―理論と実際posted with amazlet at 10.03.11Philip D. Wasserman 森北出版 売り上げランキング: 784388Amazon.co.jp で詳細を見る数式が最低限で説明も直感的。一番分かりやすかった。自分みたいにさっと概要を掴みたいだけ…

Y Combinator

Startup Ideas We'd Like to Fund The Request for Startups2008年から公開されているようだが知らなかった。未来への謎解きのように見える。現に今これで触れられているような面白いアイデアのスタートアップが続々と出ている。記事中の ”これは始まりに過…

関数内だけで使うローカル関数定義は defn ではなく letfn を使う

ローカル関数のつもりで defn をネストさせても defn は動的にvarを作っているだけなので関数外からも見えてしまう。 user> (defn aaa [] (defn bbb [] 1) 1) #'user/aaa user> (aaa) 1 user> (bbb) 1 しかも遅い。 (defn aaa1 [] (defn bbb [] 1) 1) (defn …

標準入力ジャック *in* jack

*in* (System.io)からの入力を前提としてしまった関数(*in*がべた書きされている)があり、動作を見るために入力データをファイルから読み込みたい。綺麗なやり方は引数で入力先を渡してやることだが、関数のあちらこちらで入力を読み込んでいてそれを修正す…

Clojure のエレガントなところ

リスト、ハッシュマップ、ベクタ、集合のリテラルがある ;リスト (1 2 3 4) ;ハッシュマップ {:a 1, :b 2, :c 3} ;ベクタ [1 2 3 4] ;集合 #{1 2 3 4} よく使う基本データ型のリテラルがあるというのはソースコードに図が入ってるみたいで考えるよりも早く理…

無名関数で直にmapやvectorを返す時は #() ではなく fn を使う

user=> ((fn [x] [x x]) 1) [1 1] user=> ((fn [x] {:a x}) 1) {:a 1} fn が ok なので #() でもいけそうだと思ったが user=> (#([% %]) 1) java.lang.IllegalArgumentException: Wrong number of args passed to: LazilyPersistentVector (NO_SOURCE_FILE:0…

マクロと関数の識別

初めて(set! (car p) 3)を見た時、違和感を覚えた人は多いと思う。(car p) は p の先頭部が指し示す値を返すのに、set! の引数に渡すと p 自体が書き変わってしまう。僕も最初に見た時は、引数の評価について何か勘違いをしていたんだと思った。 gosh> (defi…

Clojure の シーケンスを python のスライスのように取り出す

(use 'clojure.contrib.test-is) (defn slice ([coll start] (let [start (max start 0)] (drop start coll))) ([coll start end] (let [start (max start 0)] (take (- end start) (drop start coll)))) {:doc "Extract a subsequencet like a slice of pyt…

character のシーケンスをStringに変換

こんなことでずっと悩んでた。apply str で解決。 user> (seq "abc") (\a \b \c) user> (str (seq "abc")) "(\\a \\b \\c)" user> (apply str (seq "abc")) "abc"

Clojure を emacs で

2010/5/6追記:ここの情報は古いので Ubuntu 10.04 での Clojure + Emacs + Leiningen の環境構築 を参照した方が良いと思います。 環境 Mac Snow leopard Carbon emacs 22.3.1まずここをそのままやれば emacsから使う事ができた。 http://riddell.us/tutori…