2016年7月11日月曜日

開発環境

7つの言語 7つの世界 (Bruce A. Tate (著)、まつもとゆきひろ (監訳)、田和 勝 (翻訳)、オーム社)の第7章(Clojure)、7.3(2日目: マスター・ヨーダとフォース)、セルフスタディ2日目を取り組んでみる。

セルフスタディ2日目.

コード(Emacs)

(defmacro unless [test consequence alternative]
  (list 'if (list 'not test) consequence alternative))

(println (macroexpand '(unless condition body1 body2)))

(unless true
        (println "body1")
        (println "body2"))

(unless false
        (println "body1")
        (println "body2"))

(defprotocol Language
  (lang_name [l]))

(defrecord SimpleLanguage [n]
  Language
  (lang_name [_] (println n)))

(def lang (SimpleLanguage. "Clojure"))
(lang_name lang)


入出力結果(Terminal, REPL(Read, Eval, Print, Loop))

$ clj < sample.clj
Clojure 1.7.0
user=> #'user/unless
user=> user=> (if (not condition) body1 body2)
nil
user=> user=> body2
nil
user=> user=> body1
nil
user=> user=> Language
user=> user=> user.SimpleLanguage
user=> #'user/lang
user=> Clojure
nil
user=> user=> user=> 
$