uzullaがブログ

uzullaがブログです。

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分悩んだ。

特にオチはない

来週はJavaをやるらしい、C++案件という噂もある。今日触っていたコードはPerlだ。

しかし私はPHPerです。

こちらからは以上です。