#56 Haskell
気づいたら年の瀬ですね。今年もいろんなことにチャレンジしましたが、最後まで気を緩めず、がんばります。
プログラミング言語のパラダイムとして、最もよく扱われるのはオブジェクト指向プログラミングだと思われますが、関数型プログラミングも人気があります。例えば、JavaScriptでは関数型の記法が好まれる傾向にある印象があります。
言語として関数型プログラミングをサポートしているものの一つに、Haskellがあります。学術系のプロジェクトでよく使われているようですが、汎用的に使える純関数型言語です。
風のうわさで耳にして気になっていました。Hello Worldしてみます。
目標
Haskellをインストールし、プログラムをビルド、Hello Worldの表示までやりました。
作業
環境
インストール
公式ページを参考にインストールを行います。
推奨の、GHCupを使う方法でインストールしました。
$ curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
自動で必要なツールがインストールされていきます。以下のパッケージは必須なので、事前にインストールしておく必要があります。
build-essential curl libffi-dev libffi8ubuntu1 libgmp-dev libgmp10 libncurses-dev libncurses5 libtinfo5
ビルド
さて、プロジェクトを作成しましょう。とても簡単です。
$ mkdir hello
$ cd hello
専用のディレクトリを作りました。あとは、ツールがやってくれます。
$ cabal init
これで、プロジェクトの初期化ができます。--interactiveオプションをつければ、プロジェクト名など自分で決めることもできます。
では、生成されたapp/Main.hsを書き換えましょう。
module Main where
main :: IO ()
main = putStrLn "Hello World!"
そして、ビルドです。
$ cabal build
dist-newstyle/build以下に、ビルドされた実行ファイルが作成されています。
念願のHello Worldです!!
$ ./hello
Hello World!
できました!
まとめ
Haskellの魅力にまでは踏み込めませんでしたが、ツール群が整っていることには確信を持てました。Hello Worldプログラムの記法に、すでに関数型のエッセンスが出ていたでしょうか。普段はクラスばっかり書いているので、少し不思議な感覚でした。もう少し大きなプログラムで力を発揮すると思うので、なにか作ってみたいですね。
EOF