Programming::Lisp

LL Tigerで発表してきました

LL TigerのLanguage UpdateでClojureについて発表してきました。

SlideShareだとせっかくのアニメーションがみれないので、PPT版も置いときます。こちら

Created at : 2010-07-31 13:02:29   Updated at : 2010-07-31 13:04:39
Category : Programming::Lisp::Clojure

Clojure1.2の新機能について

まだ1.2は正式リリース前ですが、目玉機能であるProtocolsとDataTypesについてTokyo.cljで発表してきました。

その他追加される機能についてはこの記事に随時追加していこうと思います。

Created at : 2010-06-27 14:09:40   Updated at : 2010-06-27 14:10:22
Category : Programming::Lisp::Clojure

Clojureオレオレコーディング規約

しばらくClojureのコードを書いてみてしっくりきている書き方をオレオレ規約化してメモしていく(随時更新予定)。規約策定者募集!ネタがあれば@makingまで。

コーディング編

  • Javaインスタンス生成は(ClassName.)形式。(new書くのメンドイし.ついてりゃ明白)
  • Javaメソッドの呼び出しは(.method obj)形式。(.とメソッド名が離れていると可読性が悪い。..とか見たくない)
  • 無名関数は引数の数が1以下の場合は%(...)形式、2以上の場合は(fn [x y] ...)形式。(2以上の場合は変数名に意味を持たせましょう)
  • リフレクションを(極力)発生させないこと(特にライブラリ)。*warn-on-reflection*trueにしてテスト。メソッドを呼ぶオブジェクトを引数に取るときは型ヒントをつけること。
  • (当たり前だけど)defnの中でdefdefnしない。letletfnで。
  • 副作用があるときに明示的にdoしなくても良い
  • 閉じ括弧は右下にまとめる

プロジェクト編

  • ビルドはLeiningenを使う。生ant使うな
  • ディレクトリ構成はlein newでできるもの。
  • ライブラリ系のメインファイルは{namespace}/core.cljがメイン。
  • アプリ系のメインファイルは{namespace}.cljがメイン。(この辺はまだしっくりきてないけど、、core.cljのほうがいいかな)
  • リリースに不要なjarをproject.clj:dependanciesに入れない。開発時にのみ必要なものは:dev-dependanciesに入れない

Created at : 2010-04-05 02:17:09   Updated at : 2010-04-05 02:44:44
Category : Programming::Lisp::Clojure