新しい言語環境を導入するたびに電卓として利用している気がする
どうも、僕です。
まじめなプログラムを作らないで環境だけを導入する投げっぱなしプログラミング学習のコーナーです。今回は関数型言語と呼ばれるHaskellを導入して電卓として利用するということをしていきます。似たようなことを何回もやっていますが、今回導入した言語は関数型なので今まで取り扱った言語とはだいぶ異なります。どう異なるかは僕もよくわかってません。なんかすごいらしいですので、いつか使う機会がくると信じて導入だけしていこうと思います。
地震の時の備えみたいなこと言ってますけど、手を動かして覚えなきゃこんなことしても無駄なんですよね…。
準備
まずはこちらから、Haskell環境を準備します。
Download Haskell Platform
そして、動作確認をします。黒い画面でghci
を入力。
Preludeって出るとCLIでがりがりプログラムを書けるようです。
動かない場合はパスとかを確認してみるといいかもしれないです。
電卓として使ってみた
この画面で計算を入力すると電卓として利用できるそうです。
こんな感じに*1。
0で割った時の処理ができてる電卓はいい電卓。
というわけで電卓として利用できました。また僕の環境に電卓が導入されてしまいましたね。
おまけ
僕の中ではやりたいことをやりきってしまったわけだけど、電卓機能紹介は流石にやりすぎで消化不良なのでこちらの入門チュートリアルもやって終わりにしようと思います。
Haskell入門 5ステップ - HaskellWiki
あ…。目次見る限りだと、すでに似たようなことをやってしまっている気がする。
でも.hsファイルを書いてみたくなったので、同じことだけどこちらの項目をやっていこうと思います。
――と思ってはじめましたが、"初めてのHaskell並列プログラミング"、「main = do」から先の処理が何やってるかまじでわからん。
雑解読。
import Control.Parallel main = a `par` b `par` c `pseq` print (a+b+c) -- ローカル変数、ローカル関数の定義 where a = ack 3 1 -- 13 b = fac 4 -- 24 c = fib 5 -- 5 -- 階乗 fac 0 = 1 fac n = n * fac (n-1) -- アッカーマン関数 ack 0 n = n+1 ack m 0 = ack (m-1) 1 ack m n = ack (m-1) (ack m (n-1)) -- フィボナッチ数 fib 0 = 0 fib 1 = 1 fib n = fib (n-1) + fib (n-2)
多分、コードを見る限りだとこういう意味なんだと思う。--
でコメントアウトできるそうです。
処理系がよくわかってないけど、数学処理がほぼ一行で処理できるのにはかなり凄みを感じる。すごいシンプルだよこれ。
再帰がわかったら絶対楽しくなってくるだろうな。
*1:こちらはインストール時におまけで付いてきたWinGHCiを使っています。機能的には多分同じ