『ふつうのHaskellプログラミング』サンプルコード

$Id: index.html,v 1.5 2006/06/07 17:19:02 aamine Exp $

第 1 章「Haskellプログラミングを始めよう」

ファイル名内容
hello.hshello コマンド

第 2 章「Haskellの基礎(1)関数とリスト」

ファイル名内容
cat.hscat コマンド
head.hshead コマンド
tail.hstail コマンド
countbyte.hscountbyte コマンド
countword.hscountword コマンド
countline.hscountline コマンド

第 3 章「Haskellの基礎(2)型と高階関数」

ファイル名内容
expand0.hsexpand コマンド ver.0
expand.hsexpand コマンド ver.1
expand2.hsexpand コマンド ver.2
swapa.hsswapa コマンド

第 4 章「Haskellの基礎(3)演習」

ファイル名内容
echo.hsecho コマンド
fgrep.hsfgrep コマンド
sort.hssort コマンド
uniq.hsuniq コマンド

第 5 章「遅延評価」

ファイル名内容
tail2.hstail コマンド (差分リスト版)
tarai.hsたらいまわし関数 (Haskell)
Tarai.javaたらいまわし関数 (Java)
tarai.cたらいまわし関数 (C)

第 6 章「基本的な値」

ファイル名内容
catn.hscat -n コマンド

第 7 章「基本的な構文」

ファイル名内容
fold.hsfold コマンド
qsort.hsqsort コマンド (リスト内包表記の使用例)
fgrep3.hsfgrep コマンド (case 式使用)

第 8 章「関数」

ファイル名内容
catn2.hscat -n コマンド (point-free)
countline2.hscountline コマンド (point-free)
fgrep2.hsfgrep コマンド (point-free)
sort2.hssort コマンド (point-free)
tac.hstac コマンド
tac2.hstac コマンド (point-free)
uniq2.hsuniq コマンド (point-free)

第 9 章「型と型クラス」

ファイル名内容
Stack.hs簡単なスタックの例
StackMain.hsStack.hs のテストコード
line.hsLine 型 (練習問題の解答例)

第 11 章「モナド」

ファイル名内容
glob.hsリストモナドの例
cat2.hscat コマンド (>>= 使用)
head2.hshead コマンド (>>= 使用)
tail3.hstail コマンド (>>= 使用)
expand3.hsexpand コマンド (>>= 使用)
countline3.hscountline コマンド (>>= 使用)

第 12 章「Wikiエンジンの開発」

ファイル名内容
lazylines/CGI.hs手抜きCGIライブラリ
lazylines/CGIMain.hsLazyLines エントリポイント
lazylines/Config.hs設定ファイルパーサ
lazylines/Database.hsデータベース
lazylines/FileUtils.hsファイル操作ユーティリティ
lazylines/LazyLines.hsLazyLines の主要部分
lazylines/PathUtils.hsパス操作のユーティリティ
lazylines/Template.hs手抜きテンプレートライブラリ
lazylines/TextUtils.hsTextUtils
lazylines/URLEncoding.hsGHC のバージョンによる escapeURIString 関数の違いを吸収
lazylines/URLMapper.hsURL マッピング

第 13 章「Wiki記法パーサの開発」

ファイル名内容
lazylines/Syntax.hsLazyLines 文法のパーサ
lazylines/LineParser.hs行指向パーサ (Parsec の拡張)
lazylines/HTML.hsHTML 関連ユーティリティ
LineParser/LineParser.hs行指向パーサ (独自実装)
LineParser/MyParser.hsパーサコンビネータライブラリ (独自実装)

ボツになったプログラムたち

ファイル名内容
cat3.hscat コマンド (複数ファイル対応)
grep0.hsgrep コマンド ver.0
grep.hsgrep コマンド
todos.hstodos コマンド
tounix.hstounix コマンド
tounix2.hstounix コマンド (別実装)
tr.hstr コマンド
wc.hswc コマンド
yes.hsyes コマンド