Created
April 26, 2011 16:18
-
-
Save masaedw/942577 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 趣旨 | |
| 簡単なプログラムを通じて、 | |
| Clojureの基本的なライブラリを探訪しよう | |
| www.4clojure.com | |
| (= __ (.toUpperCase "hello world")) | |
| => "HELLO WORLD" | |
| このサイトの問題を解けばClojureの | |
| ライブラリの基本的な使い方が楽しく覚えられる! | |
| Keyword :hoge | |
| 関数のようにも使えるシンボルのようなもの | |
| 関数として適用すると、 | |
| マップを引数にとり、自分自身をキーとする値を返す関数になる | |
| セットを引数にとり、 | |
| セットに含まれていれば自分自身、 | |
| なければnilを返す関数になる | |
| nil | |
| nilは値がないことを示す値 | |
| 空リストとは違う | |
| (nil? nil) => true | |
| (nil? ()) => false | |
| だけど……clojureのnilは動作としては()と同じ | |
| ' (クオート) | |
| car: first | |
| cdr: rest | |
| conj : cons なんだけど引数の順番が違う | |
| conjは、計算量的に妥当な方向に要素を追加する | |
| (-> '(1 2 3) (conj 4) (conj 5) (conj 6)) | |
| なんで -> なんてものがあるの? | |
| (.toUpperCase "hello world") | |
| ;; これはJavaでいうところの | |
| ;; "hello world".toUpperCase() | |
| (-> | |
| "hello world" | |
| .toUpperCase | |
| .toLowerCase) | |
| これは、前の式の結果を次の式の最初の引数にする | |
| 一引数関数の場合は括弧が省略できる | |
| (F# でいうところの |> と同じ) | |
| lispっぽくないかもしれないけど、 | |
| oopになれている人、 | |
| あるいはそういうフレームワーク上で | |
| プログラムを書くときに相性がいい | |
| 部分適用のように見えてそうでないから | |
| haskellerから見るとすごい違和感がある | |
| ->> こういうマクロもある | |
| (->> '(1 2 3) | |
| (cons 0) | |
| (cons -1) | |
| (cons -2)) | |
| これは、前の式の結果を次の式の最後の引数にする | |
| (haskellerも安心!) | |
| (:name {....}) | |
| (:age {....}) | |
| clojure では関数をいろいろな方法で作れる | |
| (fn [x] ...) いわゆる lambda | |
| #() 関数リテラル | |
| partial 部分適用 | |
| (fn [x] (first (reverse x))) | |
| だるい | |
| (comp first reverse) | |
| Clojureのシーケンスは遅延評価 | |
| (.NETのIEnumerableと同じレベル) | |
| みんなもClojureを使おう! | |
| 仕事でも使おう! | |
| clojureかわいい |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment