あらゆる意味におけるコメントを強く強く希望します。
Haskell と言っても, Mac 版はインタプリタ環境の Hugs しかありませんが…… まずは Hello World プログラムから。
Hugs の環境は、デフォルトのまま、と仮定します。
Hugs の利用は, MacPerl や jgawk または AppleScript なんぞと同じイメージで, ソースを書いてはインタプリタに喰わせて走らせる,というプロセスを繰り返すことになります. 適当なエディタで,ソースを入力して保存します.
{-
と -}
に挟まれたテキスト,
--
から行末まではコメントです.
以下は IO
型を返す helloWorld
という式を定義しています.返す値は putStr "Hello World!"
です.
{-####
Hellow World Program
####-}
-- print Hello World to terminal
module HelloWorld where
helloWorld :: IO ()
helloWorld = putStr "Hello World!"
拡張子がなくても Hugs はドロップされたファイルをソース・ファイルであると認識するようですが,まぁ,ここな付けておいた方が無難です.
インタプリタは 3 種類あります.どれか一つに,先に書いたソースをドロップインします.
読み込んだソースにエラーがなければ,プロンプトが出ます.
プロンプトから,先に定義した式を入力します. 返ってきた値がターミナルに表示されます.
このプロセスを繰り返すことになります.
String
型を返すときは……
{-####
Hellow World Program
####-}
-- print Hello World to terminal
module HelloWorld where
helloWorldString :: String
helloWorldString = "Hello World!"
.lhs
ソース
パッと見,コメントと式の見た目をひっくり返した,「文書指向」のソースを書くことができます.この場合の拡張子は .lhs
となります.
式は行頭に >
を付けます.コメントと式の間には空行が必要です.
####
Hellow World Program
####
print Hello World to terminal
> module HelloWorld where
> helloWorld :: IO ()
> helloWorld = putStr "Hello World!"
一々ソースを落とし込むのが面倒な場合は, Hugs Preferences にユーザ用のカレント・ディレクトリを追加して, Hugs から読み出すようにします.
:?
をタイプインすると help が出るので,コマンド一覧として使えます.
:edit <filename> edit file :edit edit last moduleは,ソースの creator を見て,そのアプリケーションでソース・ファイルを開いてくれるので便利です.
上山大輔氏作成の ミミカキエディット 等,外部アプリケーションを呼び出すことが可能なエディタを用いれば,上記とは逆にソース・ファイルをメインに据えて,「編集 - 保存 - 実行」という過程で進めることが可能です.
拡張子として .lhs
.hs
を指定し,起動アプリケーションとしてどれか一つの Hugs インタプリタを指定するだけです.
ミミカキエディット
には,ユーザが新規にモードを作成できるようになっているので, Haskell モードを作れば,もう少し楽になります.ただし,キーワード指定で,コメントを指定する方法が判りません.X-(
tools ディレクトリに Haskell ディレクトリを掘って,以下のような内容のファイルを置いておけば,メニュー(またはキーコンビネイション)から操作可能です.
ファイル名 | 内容 | 概略 |
---|---|---|
hoge /H | <<<CLOSEDROP(HugH) |
編集中のファイルを保存し, creator が HugH のアプリケーションに渡す |
comment | {-<<<SELECTED>>>-} |
選択した文字列を {- -} で囲む. |
vi 互換の vim の Mac 版 は,かなり豊富な構文サポートを持っており, Haskell モードもあります.日本語は使えませんが,シンタクス・カラ〜ライジング機能もあるので,こちらも佳いかも知れません.