logo header
logo header
logo header
logo header
  • 2015.07.27

Clojureはすごくクローシソージャー

冒頭から、オヤジギャグ全開でスミマセン。

社内チャットで関数型プログラミング言語の話が盛り上がり、Clojureの名前が上がった時に、
つい出来心でタイトルの内容をつぶやいたところ、社内からの猛烈なツッコミにあってしまい、
このタイトルで記事を投稿することになってしまいました。

さて、関数型言語とは、Emacs(Lisp)とサヨナラしてvimに改宗した7年前からお付き合いしていません。折角なので、改めて、関数型言語とはなにか?を絡めながらClojureの初歩の初歩に触れてみたいと思います。

■ 関数型プログラミング言語ってそもそもなんだ?

Wikipediaによると、そもそも定義があやふやという、出鼻を挫く展開。

自分の認識ですが…

"関数"という言葉が理解を妨げている気がします。

我々が中学、高校と学んできた数学における"関数"とC言語などにおける、サブルーチンを切り出した"関数"は持っている意味合いが異なるにもかかわらず、同じ言葉で表されています。なので、プログラミング言語の世界で"関数"という言葉を出した瞬間に、どうしてもサブルーチン的な何かを連想してしまう、これが理解を妨げているのではないかと。

関数型プログラミング言語とは、前者(数学的な意味合いの関数)の意味で、"関数"という言葉を使っており、状態に影響されず、いついかなる時でも、関数に対して同一のインプットを行った場合は、必ず同じアウトプットが行われるもの、という意味で"関数"という言葉が使われています。

■ MacにClojure開発環境をインストールする

Clojureの開発環境を整えれる場合は、Clojure自体ではなく、そのビルドツールにあたる、
Leiningenをインストールするのが一般的のようです。

Macの場合はbrewで簡単インストールが可能です。

上記のように、インストール後に、lein versionでバージョン情報が表示されれば成功です。

■ ClojureでHello,world

REPLを使えば、とりあえずのHello,worldは簡単です。

これだけでは芸がないので、Hello,worldプロジェクトを作ってみようと思います。

作成したプロジェクトの直下にある、project.cljをいうファイルを編集します。

ファイルの内容は以下。

また、src/helloworld/core.cljにテンプレートが作成されていますが、
動作させるには、若干の修正が必要です。

fooとなっているところを-mainに編集します。テンプレートでは、引数を1つとるようになっているので、

というように、lein runの後ろに引数をとってやれば、Hello, World!の文字列の前に、渡した引数が表示されます。

■ 最後に

では、改めて〆の一言です。

Clojureでクローシタンジャー

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!