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

Sphereとともに

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

Clojure その4

Clojure プログラミング

さて、その3では引数を渡さなきゃ動かないものでしたが

引数渡さんでも動くようにしたい・・・!

ということで、ちょっと弄ってみましょう

(ns hello.core)

(defn -main
  (println "Hello, World!"))

はい、残念

$ lein run
Exception in thread "main" java.lang.IllegalArgumentException: Parameter declaration println should be a vector
	at clojure.core$assert_valid_fdecl.invoke(core.clj:6732)
	at clojure.core$sigs.invoke(core.clj:223)
	at clojure.core$defn.doInvoke(core.clj:301)
	at clojure.lang.RestFn.invoke(RestFn.java:467)
	at clojure.lang.Var.invoke(Var.java:427)
	at clojure.lang.AFn.applyToHelper(AFn.java:172)
	at clojure.lang.Var.applyTo(Var.java:532)
	at clojure.lang.Compiler.macroexpand1(Compiler.java:6468)
	at clojure.lang.Compiler.macroexpand(Compiler.java:6529)
	at clojure.lang.Compiler.eval(Compiler.java:6603)
	at clojure.lang.Compiler.load(Compiler.java:7064)
	at clojure.lang.RT.loadResourceScript(RT.java:370)
	at clojure.lang.RT.loadResourceScript(RT.java:361)
	at clojure.lang.RT.load(RT.java:440)
	at clojure.lang.RT.load(RT.java:411)
	at clojure.core$load$fn__5018.invoke(core.clj:5530)
	at clojure.core$load.doInvoke(core.clj:5529)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invoke(core.clj:5336)
	at clojure.core$load_lib$fn__4967.invoke(core.clj:5375)
	at clojure.core$load_lib.doInvoke(core.clj:5374)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invoke(core.clj:619)
	at clojure.core$load_libs.doInvoke(core.clj:5413)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invoke(core.clj:619)
	at clojure.core$require.doInvoke(core.clj:5496)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at user$eval5$fn__7.invoke(form-init5574770303463428456.clj:1)
	at user$eval5.invoke(form-init5574770303463428456.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)

エラーの意味がよくわかりませんが

正解はこちら

(ns hello.core)

(defn -main []
  (println "Hello, World!"))
$ lein run
Hello, World!

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

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