という2つのアプローチがある。最近は後者を推奨する人が多い(最初のステップで余計な時間がかかるという欠点はあるが。
ソースファイルの実行:
ghc ファイル名.hs
stack runghc ファイル名.hs
:: など
REPLの起動(いずれかのコマンドが使えるだろう)
ghci
stack ghci
stack repl
REPLの終了
:quit
:help
(または :h
を覚えておけばいいだろう。(というのが言語を問わずREPLの基本動作)。
1+1
2**10 -- べき乗
sin(pi/2) -- 三角関数
シグニチャを定義するなら後述の :{
~ :}
で複数行入力モードにしておく必要があるだろう。
circ_area r=r*r*pi -- 関数定義の例
circ_area 10 -- 呼出し ->314.1592653589793
=
の右側だけを入力することで実行できる。また、重要なコマンドとして、:type
コマンド(通常は :t
と略して使う)を知っておこう。式や名標の型を表示してくれる。
:t circ_area -- 前の定義例のもの
-- ->... circ_area :: Floating a => a -> a
:t
以外にもある。:help
か :h
で表示させるか、
GHCiのページを参照されたい。do を使った記法での関数定義は複数行に渡ることが多いが、
分割されている各行を、セミコロン ;
で区切って、全体をブレース {}
で囲めば一行に記述することもできる。
do {s<-getLine ; putStrln s}
複数行を継続して入力するには、
:{
-- ここに複数行入力
-- ちなみにこれはコメントの文法
:}
main :: IO ()
のような行;型シグニチャとも呼ぶ)は、REPLにはそのまま入力できない。いくつかのサイトに書かれている(例えばここ)が、
let {main :: IO () ; main=somefunc}
のように let を前置してブレースで囲み、 その中に型宣言と関数定義をセミコロン’;’区切りで書くといい。
ファイルを実行:
:load ファイル名 -- :lo でも可
役に立つサイトをいくつかあげておく。