読者です 読者をやめる 読者になる 読者になる

Sphereとともに

scalaとかplayframeworkとか。技術ブログにしたいなと。環境は Windows7x64, mac です。たまに声優さん情報が混ざります。最近ちょっとClojure触りました。

Clojure その2

Clojure プログラミング

今回は実際に触るところまで

環境は mac です。

調べた限り leiningen(・・・レインいんげん?)

というものを利用すると良いらしい

とのことなので

brew install leningen

と打ってインストール

lein new hello

と打つと以下の様な感じでプロジェクトが作成されました。

Retrieving org/clojure/tools.nrepl/0.2.3/tools.nrepl-0.2.3.pom from central
Retrieving org/clojure/pom.contrib/0.1.2/pom.contrib-0.1.2.pom from central
Retrieving org/sonatype/oss/oss-parent/7/oss-parent-7.pom from central
Retrieving clojure-complete/clojure-complete/0.2.3/clojure-complete-0.2.3.pom from clojars
Retrieving org/clojure/tools.nrepl/0.2.3/tools.nrepl-0.2.3.jar from central
Retrieving clojure-complete/clojure-complete/0.2.3/clojure-complete-0.2.3.jar from clojars
Generating a project called hello based on the 'default' template.
To see other templates (app, lein plugin, etc), try `lein help new`.

某氏はLight Tableが良いとおっしゃっていたので、そちらも利用してみる

http://www.lighttable.com/http://www.lighttable.com/

からLight Tableをダウンロード

さっそく先ほど作成したプロジェクトを見てみると

f:id:FScoward:20131212224945p:plain

こんな感じですね。

どうやって実行すんの?って調べたら

lein run

で動かすようです。

$ lein run
No :main namespace specified in project.clj.

えっ?

んーどうやら project.clj に main の記述を加えなくてはならないそうな

f:id:FScoward:20131212225847p:plain

再度実行

$ lein run
Exception in thread "main" java.lang.Exception: Cannot find anything to run for: hello.core
	at user$eval5.invoke(form-init1878445778805308006.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:6619)
	at clojure.lang.Compiler.eval(Compiler.java:6609)
	at clojure.lang.Compiler.load(Compiler.java:7064)
	at clojure.lang.Compiler.loadFile(Compiler.java:7020)
	at clojure.main$load_script.invoke(main.clj:294)
	at clojure.main$init_opt.invoke(main.clj:299)
	at clojure.main$initialize.invoke(main.clj:327)
	at clojure.main$null_opt.invoke(main.clj:362)
	at clojure.main$main.doInvoke(main.clj:440)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at clojure.lang.Var.invoke(Var.java:419)
	at clojure.lang.AFn.applyToHelper(AFn.java:163)
	at clojure.lang.Var.applyTo(Var.java:532)
	at clojure.main.main(main.java:37)

えっ?

・・・あっ。あぁ hello.core に main 書かれてないから?

foo を main に書き換えて

(ns hello.core)

(defn main
  "I don't do a whole lot."
  [x]
  (println x "Hello, World!"))

そいやっ!

$ lein run
Exception in thread "main" java.lang.Exception: Cannot find anything to run for: hello.core
	at user$eval5.invoke(form-init8244820555555158320.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:6619)
	at clojure.lang.Compiler.eval(Compiler.java:6609)
	at clojure.lang.Compiler.load(Compiler.java:7064)
	at clojure.lang.Compiler.loadFile(Compiler.java:7020)
	at clojure.main$load_script.invoke(main.clj:294)
	at clojure.main$init_opt.invoke(main.clj:299)
	at clojure.main$initialize.invoke(main.clj:327)
	at clojure.main$null_opt.invoke(main.clj:362)
	at clojure.main$main.doInvoke(main.clj:440)
	at clojure.lang.RestFn.invoke(RestFn.java:421)
	at clojure.lang.Var.invoke(Var.java:419)
	at clojure.lang.AFn.applyToHelper(AFn.java:163)
	at clojure.lang.Var.applyTo(Var.java:532)
	at clojure.main.main(main.java:37)

動かないんですけどおおおおおおおおおおお!!!

おいしいClojure入門 (Software Design plus)

おいしいClojure入門 (Software Design plus)