プログラミングClojure 勉強メモ 第1章 Getting Started

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]


変数(副作用のあるデータ)を扱う

#
#
#
#
3
oppia
[1 1 2 oppai 2 3 4]
#{moge 1 2 hoge}


def と defn の違い

===== 定義
--- def

===== 呼び出し
nil
#
--- defn
nil


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

                                                • -

user/hoge
([a])
どきゅきゅきゅきゅーん
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}