ふつける(0) 1.1 - 2.2 Hello, Haskell World!!
通称「ふつける」と呼ばれる、
ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
- 作者: 青木峰郎,山下伸夫
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/06/01
- メディア: 単行本
- 購入: 25人 クリック: 314回
- この商品を含むブログ (320件) を見る
を読んでいきたいと思います。
この本を読もうと思った訳
一応書いておこう。
- 文字列とIOを学びたい。
- 遅延評価が凄いらしい
- 遅延評価な言語といえばHaskell。遅延評価を学びたい。
- めちゃくちゃ早いらしい
- たらい回し関数が早いという噂。
あんまり決意は無い感じです(汗
飽き性なので同時並行で色々な本を読んでいく方針です。
インストール
ghcとhugsが入ってたので、略。どっちをメインに使うか考え中。
マニュアルの検索システムhrefが青木さんの所からダウンロードできるので、
haskell - バリケンのHaskell日記 - Haskellリファレンスマニュアル「href」のインストール
を見ながらセットアップ。
refe同様愛用させていただきます!!
Hello, Haskell World!!
とりあえずHello, Worldだぁ!!
hello.hs
main = putStrLn "Hello, Haskell World!!"
うは。ナンダコレ。
関数型言語はとにかく面倒な名前が多い。とりあえず解説を読むと。
- main = ...で、変数mainを定義できる。
- 変数というのがわかんない。
- 僕の中の定義は名前を付けること。つまり抽象。変数じゃない気がする。
- putStrLen "hoge" で、関数を「適用」する。
- Schemeでは「作用」という言葉を使った気がする。
- main,putStrLenはアクション?
- アクションとはなんだろう・・・
イマイチわかんないところがあるけど、とりあえず進んでもう一度読みかえそう。
Haskellの使い方は色々あるらしいので、ガガーっと試してみます。
ghc編
% ghc -o hello hello.hs % ./hello Hello, Haskell World!! % runghc hello.hs Hello, Haskell World!! % ghci hello.hs ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.6.1, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package base ... linking ... done. Ok, modules loaded: Main. Prelude Main> main Hello, Haskell World!! Prelude Main> :q Leaving GHCi. % ghci ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.6.1, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package base ... linking ... done. Prelude> putStrLn "Hello, Haskell, World!!" Hello, Haskell, World!! Prelude> :l hello.hs Ok, modules loaded: Main. Prelude Main> main Hello, Haskell World!! Prelude Main> :q Leaving GHCi.
- ghcはコンパイラ
- runghcはコンパイラを通さなくてもいい。
- ghciは対話的環境 viっぽいコマンドが使える。
- mainでmainの実行。
- :lでロード出来る。
- :!でシェルコマンドも使える。!vimしよう。
- :qで終了
- ghci関数を適用するときは、putStrLn "Hello, ..."
- ghci上では関数を定義出来ない。
- 純粋過ぎる・・・。
色々あるな・・・。
hugsを試す。
次はhugs
% hugs hello.hs __ __ __ __ ____ ___ _________________________________________ || || || || || || ||__ Hugs 98: Based on the Haskell 98 standard ||___|| ||__|| ||__|| __|| Copyright (c) 1994-2005 ||---|| ___|| World Wide Web: http://haskell.org/hugs || || Bugs: http://hackage.haskell.org/trac/hugs || || Version: September 2006 _________________________________________ Haskell 98 mode: Restart with command line option -98 to enable extensions Type :? for help Main> main Hello, Haskell World!! Main> :q [Leaving Hugs] % hugs __ __ __ __ ____ ___ _________________________________________ || || || || || || ||__ Hugs 98: Based on the Haskell 98 standard ||___|| ||__|| ||__|| __|| Copyright (c) 1994-2005 ||---|| ___|| World Wide Web: http://haskell.org/hugs || || Bugs: http://hackage.haskell.org/trac/hugs || || Version: September 2006 _________________________________________ Haskell 98 mode: Restart with command line option -98 to enable extensions Type :? for help Hugs> :l hello.hs Main> main Hello, Haskell World!! Main> :q [Leaving Hugs]
使い方はghciと一緒っぽい。