Entertainer Engineering

人を楽しませられる技術者を目指すあおかびんのブログ

学校の課題を解くためにHaskellを使った話

こんにちは、かびさん@あおかびんです。

学校の課題で、ちょっとした計算問題を解くときに
普通に解くのが面倒くさいなーと思って
前まではPythonの対話を使って計算をしていたのですが、
この間確率統計のときに
先生「100万の中から1万個取り出す組み合わせはやろうと思ってもできない」
という発言があり(実際にはマクローリン展開かなんか使えばできるみたいな解説のため)
「できそう」と思ってしまったが故にPythonで書こうとしたら案の定計算できない。

また、3の20乗を計算する問題が出て、
計算するのにわざわざコード書くのも面倒だなと。

そこでHaskellを導入してやりました。その手順を書きます。

1. Haskell PlatformのDLとインストール

Download Haskell

こちら、Haskell Platformの公式DLサイトよりHaskell PlatformをDLします。
ちなみに、brewを使わないのは
Haskell関係のパッケージ(?)をインストールするcabalが
brewだとうまく動いてくれないので、こちらのHaskell Platformを使います。

あとはDLしたpkgを開いてインストールしてください。

2.ターミナルでhaskellの対話シェルを起動する。

インストールが終わったら対話形式でhaskellを実行してみましょう。
コマンドライン

ghci

と入力すると、最初の激重initの後haskellインタラクティブシェルが起動します。

閉じるときは

:q

コマンドを入力すれば大丈夫。

(発展)3.100万から1万個を取り出す組み合わせ問題を解かせる。

適当なエディタを使って、test.hsに次のソースコードを書き込んで保存しましょう。

手元にファイルがなかったので、後で追記します。

(発展)4.分数の累乗とかを求めてみる。

haskell先輩は分数も扱うことができます。ありがたいですね!

ghciを起動したら、次のコードを入力してください。

import Data.Ratio

すると、%区切りで分数を扱うことができます。

1 % 3 * 1 % 4 -- 3分の1 × 4分の1
1 % 12 -- 12分の1

また、このまま累乗も計算できる。

((1 % 3) * (1 % 4)) ^ 20 -- (3分の1 × 4分の1)の20乗
1 % 3833759992447475122176 -- おおきなかず分の1

簡単な数式を入れるときはhaskellを使うようになりました。

すごく便利なghciでしたね。
以上、あおかびんでした。