書籍 『ふつうのHaskellプログラミング』 の第一章を参考に Hello World してみた。

Haskell の処理系 ghc (Glasgow Haskell Compiler) を Mac OS X Lion にインストール

ソースコードからインストールしようとするとはまりやすいらしいので、おとなしく Homebrew でインストール。


$ brew install ghc
$ which ghc
/usr/local/bin/ghc

ghc, runghc, ghic

プログラムの実行には以下の3つが使える。

- コンパイラ: ghc
- インタプリタ: runghc
- 対話型インタプリタ: ghci

ghc でコンパイルして Hello World を実行

ソースコード。


$ cat ./hello.hs
-- my first Haskell program
main = putStrLn "hello, world"

「-- 」から行末まではコメント。正確には「--」の後に半角空白は不要だけど「--」の直後に記号を入れると演算子になってしまってコメントでなくなる可能性があるので「-- 」と半角空白を入れたほうが無難。

コンパイル。なぜか、14824行も警告が出たり。


$ ghc ./hello.hs
[1 of 1] Compiling Main             ( hello.hs, hello.o )
Linking hello ...
ld: warning: could not create compact unwind for .LFB3: non-standard register 5 being saved in prolog
ld: warning: text reloc in _sdk_info to _cdu_str
ld: warning: text reloc in _sdk_info to _base_GHCziBase_unpackCStringzh_closure
ld: warning: text reloc in _sdk_info to non_lazy_ptr
ld: warning: text reloc in _sdk_info to non_lazy_ptr
ld: warning: text reloc in _sdk_info to non_lazy_ptr
ld: warning: text reloc in _Main_main_info to _sdk_closure
ld: warning: text reloc in _Main_main_info to _base_SystemziIO_putStrLn_closure
(中略: 合計14824行の warning が……)
ld: warning: text reloc in _cZh_str to _stg_ap_pppppp_info
ld: warning: text reloc in _cZh_str to _stg_ap_pppppp_info
ld: warning: text reloc in _cZh_str to _stg_ap_pppppp_info
 
$ ls -la
total 1912
drwxr-xr-x  6 alice  staff     204  1  2 14:18 .
drwxr-xr-x  4 alice  staff     136  1  2 14:13 ..
-rwxr-xr-x  1 alice  staff  966572  1  2 14:18 hello
-rw-r--r--  1 alice  staff     484  1  2 14:18 hello.hi
-rw-r--r--  1 alice  staff      60  1  2 14:18 hello.hs
-rw-r--r--  1 alice  staff    2544  1  2 14:18 hello.o

実行。


$ ./hello 
hello, world

インタプリタの runghc で Hello World を実行

ソースコード。


$ cat ./hello.hs
-- my first Haskell program
main = putStrLn "hello, world"

実行。


$ runghc ./hello.hs
hello, world

対話型インタプリタの ghci で Hello World を実行


$ ghci
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> putStrLn "hello, world"
hello, world
Prelude> "hello, world"
"hello, world"
Prelude> hello, world
 
<interactive>:1:6: parse error on input `,'
Prelude> 1 + 1
2
Prelude> :quit
Leaving GHCi.

ちなみに、今回の環境。


$ uname -mrsv
Darwin 11.2.0 Darwin Kernel Version 11.2.0: Tue Aug  9 20:54:00 PDT 2011; root:xnu-1699.24.8~1/RELEASE_X86_64 x86_64
 
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.0.4
 
$ runghc --version
runghc 7.0.4

Ref.
- 『ふつうのHaskellプログラミング』サポートページ
- Amazon.co.jp: ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門: 青木 峰郎, 山下 伸夫: 本
- Haskell - Wikipedia
- The Glasgow Haskell Compiler

tags: haskell

Posted by NI-Lab. (@nilab)