Hします(Haskellするための環境構築とかメモ)
俺はPHPerだ。
Haskellのコードがとんできたので、うごかさないといけない。
環境用意
Homebrewで一発
$ brew install ghc $ brew install haskell-platform
パッケージマネージャ
パッケージマネージャであるところのcabalがはいるのでコマンドで入れられる。
$ cabal update $ cabal install cabal-install $ cabal install greatpackage
パッケージはHoogleで検索できる
http://www.haskell.org/hoogle/
コンパイルと実行
helloworld.hsを作成する
main = putStrLn "Hello, world"
$ ghc helloworld.hs $ helloworld Hello, world
コンパイル邪魔だという場合は、以下でコンパイルしつつ実行できる
$ ghc -e main helloworld.hs
スタックサイズ
つかったプログラムが結構メモリを食うので、以下のようなエラーが出た。
Stack space overflow: current size 8388608 bytes.
Use `+RTS -Ksize -RTS' to increase it.
愚直に
$ heavyprogram +RTS -K1G -RTS
としたが、コンパイル時に-rtsopts を指定しないとRTSオプションはつかえないらしい。
heavyprogram: Most RTS options are disabled. Link with -rtsopts to enable them.
ということで以下のように指定した
$ ghc -rtsopts -with-rtsopts=-K1G heavyprogram.hs
このとき、ビルドされたheavyprogramを削除しないとなにも処理されない(エラーもでない)
どうやらソースコードの日付をみているらしいが、5分悩んだ。