ふつける(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と一緒っぽい。
Vim+MzSchemeでファイル入出力が・・・
Vim+MzSchemeでファイル入出力時のディレクトリ指定がおかしかったのですが、解決しました。
~/.vim/after/ftplugin/scheme.vimあたりに以下を追加。
if has("mzscheme") :mz << EOF (current-library-collection-paths (map (lambda (p) (if (bytes? p) (bytes->path p) p)) (current-library-collection-paths))) (require (lib "trace.ss")) (require (lib "1.ss" "srfi")) (require (lib "process.ss")) (require (prefix vim- vimext)) ; ここ (current-directory (bytes->string/utf-8 (vim-eval "expand(\"%:p:h\")"))) ;ここ EOF endif
ライブラリのパッチとか色々付き。
Vim+MzSchemeをやる際は、ここら辺を抑えておこう。
- PLT MzScheme: Language Manual - Basic Data Extensions
- bytes型重要
- PLT MzScheme: Language Manual - Input and Output
長年の懸案事項が消えたぁ〜(大嘘
買った本
そういえば買った本を全然書いてなかった。
ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
- 作者: 青木峰郎,山下伸夫
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/06/01
- メディア: 単行本
- 購入: 25人 クリック: 314回
- この商品を含むブログ (320件) を見る
SICPでは、入出力や文字列が殆ど出てこないので、Haskellで学んじゃうのもいいかなぁと思って。
- 作者: 柴田淳
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/08/22
- メディア: 単行本
- 購入: 11人 クリック: 624回
- この商品を含むブログ (180件) を見る
Linuxプログラミング―例題で学ぶUNIXプログラミング環境のすべて
- 作者: ニールマシュー,リチャードストーンズ,Neil Matthew,Richard Stones,葛西重夫
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/08
- メディア: 単行本
- 購入: 4人 クリック: 69回
- この商品を含むブログ (20件) を見る
- 作者: 河西朝雄
- 出版社/メーカー: 技術評論社
- 発売日: 2001/06
- メディア: 単行本
- 購入: 2人 クリック: 9回
- この商品を含むブログ (8件) を見る
Built with Processing ?デザイン/アートのためのプログラミング入門
- 作者: 前川峻志,田中孝太郎
- 出版社/メーカー: ビー・エヌ・エヌ新社
- 発売日: 2007/03/26
- メディア: 単行本
- クリック: 54回
- この商品を含むブログ (27件) を見る
積読書を溜めまくりですね(笑