関数定義してghciでloadしてささっと試す
最近Haskell勉強中なんだけど、ghciで普通に関数定義できないみたい*1なんで、ちょっと不便してた。でもコンパイルするのはメンドイ。
そしたら今日ghciでその関数定義したファイル(というかモジュール?)をloadしてghci内で使えることを知った。
hoge.hsというファイル内に関数定義を書いて
import Chara lstrip :: String -> String lstrip = dropWhile isSpace
ghciで:loadするとすると、ghci内でその関数が使えるようになる。
*Main> :load hoge [1 of 1] Compiling Main ( hoge.hs, interpreted ) Ok, modules loaded: Main. *Main>
これでインタラクティブシェル的な感じで関数定義できて便利。
*Main> :t lstrip lstrip :: String -> String *Main> lstrip " jkjkj " Loading package filepath-1.1.0.4 ... linking ... done. Loading package old-locale-1.0.0.2 ... linking ... done. Loading package old-time-1.0.0.5 ... linking ... done. Loading package unix-2.4.0.2 ... linking ... done. Loading package directory-1.0.1.1 ... linking ... done. Loading package process-1.0.1.3 ... linking ... done. Loading package array-0.3.0.1 ... linking ... done. Loading package time-1.1.4 ... linking ... done. Loading package random-1.0.0.2 ... linking ... done. Loading package haskell98 ... linking ... done. "jkjkj " *Main> lstrip " \tmuu" "muu" *Main>
なんか初回実行時だけloadとかlinkとか入るのかな?良くわからないけど。
*1:let使えばできるっぽい