書籍 『ふつうの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)