プログラミングClojure 勉強メモ 第1章 Getting Started
- プログラミングClojure 勉強メモ 目次
- REPL
- hello work
- 定数を扱う
- 変数(副作用のあるデータ)を扱う
- def と defn の違い
- require と namespace - 他のプログラムを読み込む
- refer と use - 読み込みの簡略化
- doc と find-doc - ドキュメントを表示
- source と show - ソースコードを表示
- class と instance? と ancestors - クラス関連の情報を表示
REPL
Ctrl+D | *unixでは終了 |
*1 *2 *3 | 最新の結果三つを格納する特殊変数 |
*e | 最後に上がった例外を格納する特殊変数 |
load-file | ファイルからコード読みこみ。例:(load-file "temp.clj") |
hello work
hello work comma test
hello work space test
定数を扱う
3.14なんちゃらかんちゃら
12345
[dani- joni- annjero]
変数(副作用のあるデータ)を扱う
def と defn の違い
===== 定義
--- def
require と namespace
- no_ns.clj
(def hatarake "hello work!!")
- libs/dir_test.clj
(def oppai "peropero")
- libs/use_ns.clj
(ns libs.use-ns) (defn echo [v] (println v))
- libs/tekitou.clj
(ns nandemoii) (def shinpi "oppai")
hello work!!
peropero
aiueo
oppai
refer と use
- refer_test.clj
(ns refer-test) (def kazu 12345)
- use_test.clj
use_test.clj (ns use-test) (def jojo "oraoraoraoraora")
12345
12345
oraoraoraoraora
doc と find-doc
- -
clojure.core/str
([] [x] [x & ys])
With no args, returns the empty string. With one arg x, returns
x.toString(). (str nil) returns the empty string. With more than
one arg, returns the concatenation of the str values of the args.
nil
- -
引数名の慣習
短い名前を使うのが慣習。既に使用されている関数名も扱えるが推奨されてないらしい(つまり str や ref はよくない)
a | Java 配列 |
agt | エージェント |
coll | コレクション |
expr | 式 |
f | 関数 |
idx | インデックス |
r | リファレンス(ref) |
v | ベクタ |
val | 値 |
source と show
lein repl
(load-file "08_source.clj")
class と instance? と ancestors
java.lang.String
java.lang.Integer
clojure.lang.PersistentVector
true
false
clojure.lang.PersistentHashSet
#{clojure.lang.IMeta clojure.lang.IFn java.util.Collection
java.lang.Comparable clojure.lang.Associative
clojure.lang.IPersistentCollection clojure.lang.Seqable
clojure.lang.IPersistentStack clojure.lang.Sequential
clojure.lang.ILookup clojure.lang.AFn clojure.lang.APersistentVector
java.util.List clojure.lang.IPersistentVector java.lang.Iterable
java.lang.Object java.util.RandomAccess clojure.lang.Counted
java.util.concurrent.Callable java.lang.Runnable
clojure.lang.Reversible clojure.lang.Indexed java.io.Serializable
clojure.lang.IEditableCollection clojure.lang.IObj}
clojure tips
コメントルール
http://stackoverflow.com/questions/4531761/comment-indenting-seems-messed-up-in-clojure-modeとツイッターで教えてくれたお方のを参考に
; | for inline comment | 行の右隅に書く |
;; | for in-function comment | 関数内で同じインデントレベルに書く |
;;; | for between-function comment | 関数のコメントをその関数の直前に書く |
;;;; | for section header | モジュール全体のコメントを先頭に書く |
clojure 勉強メモ 総合目次
体系的な(つもりの)勉強メモは基本 livedoor wiki にのせていたんですが、lisp 系のシンタックス・ハイライトが使えなかったので はてなダイアリー + gist に置くことにしました。