[index]

Haskell : Hello World!

あらゆる意味におけるコメントを強く強く希望します。


Haskell と言っても, Mac 版はインタプリタ環境の Hugs しかありませんが…… まずは Hello World プログラムから。

プログラム
"Hello World!" を表示する。
モジュール名
"HelloWorld"
ファイル名
"HelloWorld.hs" = モジュール名 + 拡張子 'hs'
カレント・ディレクトリ
ソース・ファイルを保存する場所を、カレント・ディレクトリと呼ぶことにします。

Hugs の環境は、デフォルトのまま、と仮定します。

  1. ソースを書く

    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 はドロップされたファイルをソース・ファイルであると認識するようですが,まぁ,ここな付けておいた方が無難です.

  2. Hugs の起動

    インタプリタは 3 種類あります.どれか一つに,先に書いたソースをドロップインします.

    Hugs Interpreters

    読み込んだソースにエラーがなければ,プロンプトが出ます.

    Hugs Prompt
  3. 式入力

    プロンプトから,先に定義した式を入力します. 返ってきた値がターミナルに表示されます.

    Hugs Evaluate

    このプロセスを繰り返すことになります.

  4. String 型を返すときは……
    {-####
    Hellow World Program
    ####-}
    
    -- print Hello World to terminal
    module HelloWorld where
    
    helloWorldString :: String
    helloWorldString = "Hello World!"
    
  5. .lhs ソース

    パッと見,コメントと式の見た目をひっくり返した,「文書指向」のソースを書くことができます.この場合の拡張子は .lhs となります. 式は行頭に > を付けます.コメントと式の間には空行が必要です.

    ####
    Hellow World Program
    ####
    
    print Hello World to terminal
    
    > module HelloWorld where
    
    > helloWorld :: IO ()
    > helloWorld = putStr "Hello World!"
    
  6. Hugs のコマンドを使う

    一々ソースを落とし込むのが面倒な場合は, Hugs Preferences にユーザ用のカレント・ディレクトリを追加して, Hugs から読み出すようにします. :? をタイプインすると help が出るので,コマンド一覧として使えます.

    :edit <filename>    edit file
    :edit               edit last module
    は,ソースの creator を見て,そのアプリケーションでソース・ファイルを開いてくれるので便利です.

  7. 外部エディタから Hugs を使う

    上山大輔氏作成の ミミカキエディット 等,外部アプリケーションを呼び出すことが可能なエディタを用いれば,上記とは逆にソース・ファイルをメインに据えて,「編集 - 保存 - 実行」という過程で進めることが可能です. 拡張子として .lhs .hs を指定し,起動アプリケーションとしてどれか一つの Hugs インタプリタを指定するだけです. ミミカキエディット には,ユーザが新規にモードを作成できるようになっているので, Haskell モードを作れば,もう少し楽になります.ただし,キーワード指定で,コメントを指定する方法が判りません.X-(

    MMKE1

    tools ディレクトリに Haskell ディレクトリを掘って,以下のような内容のファイルを置いておけば,メニュー(またはキーコンビネイション)から操作可能です.

    ファイル名 内容 概略
    hoge /H <<<CLOSEDROP(HugH) 編集中のファイルを保存し, creator が HugH のアプリケーションに渡す
    comment {-<<<SELECTED>>>-} 選択した文字列を {- -} で囲む.
     
    MMKE2

    vi 互換の vimMac 版 は,かなり豊富な構文サポートを持っており, Haskell モードもあります.日本語は使えませんが,シンタクス・カラ〜ライジング機能もあるので,こちらも佳いかも知れません.

    vim1
     
    vim2
  8. HelloWorld.hs

Created: May 13, 2000.
[index]