tohereはじめにHaskell用コンパイラであるGHCには、以下のように4種類の実行方法があります。-e以下、それぞれについて簡単に紹介します。本記事では、stack経由ではなく、素のGHCを使う場合について説明しています。tohereコンパイル実行Haskellのソースファイルから、実行ファイルを生成(コンパイル)する方法です。生成された実行ファイルは、ユーザーが明示的に起動することにより実行されます。2以下の様に、ghcコマンドを使ってコンパイルを実行できます。prog.o)が生成されます。prog.o生成された実行ファイル(prog)は、ユーザーが明示的に指定して起動します。3ghcのコンパイル方法についての詳しい説明は、こちらやこちらにあります。ghcコマンドによりコンパイルを実行できます。tohereスクリプト的実行Haskellのソースファイルから、実行ファイルを一時的に生成(コンパイル)し、その実行ファイルを起動する方法です。スクリプト的な実行方法です。以下の様に、runghcコマンド(または別名であるrunhaskellコマンド)により実行できます。3runghcの使用方法についての詳しい説明は、こちらにあります。runghcコマンドにより実行できます。tohere対話的実行Haskellのソースを対話的に入力する実行方法です。いわゆる、REPL(read-eval-print-loop)と呼ばれるものです。以下の様に、ghciコマンドにより実行できます。GHCi.ghciの使用方法についての詳しい説明は、こちらにあります。ghciコマンドにより実行できます。tohereワンライナー的実行コマンドライン上で、Haskellの「式」を直接入力する実行方法です。1つの式だけを指定できます。-eコマンドにより実行できます。-eの使用方法についての説明は、こちらにあります。-eコマンドにより実行できます。-eによる実行例です。特殊かもしれない記法も記載していますので、以下は気軽に読み飛ばしてください。このようにして数列を手軽に生成できます。'[1..10]'[1,2,3,4,5,6,7,8,9,10]リスト内包表記も使えます。[1..10]]'[1,4,9,16,25,36,49,64,81,100]1行毎に出力することもできます。[1..3]'123入力系の関数も使えます。'getLine'ABC"ABC"入力だけでなく出力系の関数も使えます。putStrLn'ABCABCdo記法も使えます。x}'ABCABC入出力のフィルタコマンドも表現できます。Mikeペア形式のデータも簡単に生成できます。['A'..]"[(1,'A'),(2,'B'),(3,'C')]組み合わせのデータも簡単に生成できます。['A'..'C']"[(1,'A'),(1,'B'),(1,'C'),(2,'A'),(2,'B'),(2,'C'),(3,'A'),(3,'B'),(3,'C')]組み合わせを連結したデータでも生成できます。[0..3]'["R0","R1","R2","R3","G0","G1","G2","G3","B0","B1","B2","B3"]ちょっと込み入ったデータも生成できます。-eコマンドでは、ghciのコマンドも使えます。型を調べる:t(:type)コマンドを使って型の情報を表示させることもできます。+dコマンドも使えます。b名前の情報を表示する:i(:info)コマンドも使えます。‘Data.Foldable’カインド(種)を表示する:k(:kind)コマンドも使えます。"[1..$NUM]"[1,2,3,4,5]シェル側から簡単にデータを渡せます。$X2"[(1,'A'),(2,'B'),(3,'C')]interact関数でなく、getContents関数でも入力できます。getContents"["1","2","3"]入力列に対する累算も容易です。getContents"6少し記述が長いですが、数値データとして処理させることも出来ます。lines'246let式も使えます。x+y"3階層指定により特定モジュールの関数を指定することも出来ます。1.ghciファイルをカレントディレクトリかホームディレクトリに配置しておけば、実行前に読み込めます。1'abc数学関数も使えます。(pi/2)"1.0数学関数とリスト内包表記の併用も便利です。[0..4]]"[0.0,0.3826834323650898,0.7071067811865475,0.9238795325112867,1.0]リスト的な処理は、やはり簡単です。ライセンスの下に提供されています。Analyticsでアクセス情報を収集しています。集めた情報は統計的に処理した上で、当ウェブサイトの改善のための参考情報としてのみ使用します。