ふつうのHaskellプログラミング
『ふつうのHaskellプログラミング』本買いました。
ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
- 作者: 青木峰郎,山下伸夫
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/06/01
- メディア: 単行本
- 購入: 25人 クリック: 314回
- この商品を含むブログ (320件) を見る
帯に書いてある、
『Haskellの考え方と仕様を学び、プログラマとしてのスキルアップを目指す。』
という言葉がイカしてます。
自分は職業プログラマとしては今年で定年なので、プログラマとしてのスキルアップの部分は若い人にお任せます。
あくまで趣味です。
今まで色々やってきましたが、関数型言語って知らないんですよね。
こんなニッチな言語の本はたいした売れない。
どうせ絶版なるのは目に見えているので、とりあえず買っておきました。
(絶版になると買えなくなくなるので・・・)
関数型言語とはなんぞや!
Haskellとは関数型言語なのですが、関数型言語とはなんぞや!というと、
オブジェクト指向言語は、プログラムがオブジェクトで中心で構成されている様に、関数型言語のプログラムは関数で構成されているのです。
関数ならC言語にもあるじゃん!
とか、思うのですが、
関数型言語の場合は、遅延評価が基本となります。
遅延評価については追々と
インストール
とりあえずインストールしてみます。
この本の説明ではHaskell処理系はGHCがスタンダードらしい。
MacPortsであれば、
sudo port install ghc
でインストールできます。
簡単ですね!
こんな時に、Macって本当に便利!と感じます。
使ってみる
本書の最初に、お約束のHello worldをHaskellで書いたプログラムが載っています。
こんな感じ、
main = putStrLn "Hello, World!"
コードを簡単に説明すると、
『main =』が変数mainの定義
『putStrLn』が関数
"Hello, World!"は文字列リテラル
mainの値は関数ではなく、アクション。
アクションを評価すると、入出力等が実行されます。
Haskellの拡張子は.hsらしい。
プログラムをhello.hsというファイル名で保存して、コンパイルします。
$ ghc hello.hs -o hello
helloという実行ファイルが出来るので、
$ ./hello Hello, World!
で実行。
簡単ですね。
今日のところは2章まで読み終わり。
読んだ中で、tailのコードが結構面白いかなと
main = do cs <- getContents putStr $ lastNLines 10 cs lastNLines n cs = unlines $ takeLast n $ lines cs takeLast n ss = reverse $ take n $ reverse ss
説明は今度。
そんな感じで、今日はここまで。
ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
- 作者: 青木峰郎,山下伸夫
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/06/01
- メディア: 単行本
- 購入: 25人 クリック: 314回
- この商品を含むブログ (320件) を見る
目次
- 第1部 Haskellの概要
- 第2部 Haskellの全貌
- 第5章 遅延評価
- 5.1 遅延評価とは
- 5.2 遅延評価のシミュレーション
- 5.3 遅延評価の利点と欠点
- 5.4 本章のまとめ
- 第6章 基本的な値
- 6.1 本章の構成
- 6.2 真偽値
- 6.3 数値
- 6.4 文字と文字列
- 6.5 タプル
- 6.6 リスト
- 6.7 実習:cat -n コマンド
- 6.8 本章のまとめ
- 6.9 練習問題
- 第7章 基本的な構文
- 7.1 コメント
- 7.2 レイアウト
- 7.3 if式
- 7.4 パターンマッチ
- 7.5 case 式
- 7.6 関数定義
- 7.7 定義と束縛
- 7.8 本章のまとめ
- 7.9 練習問題
- 第8章 関数
- 8.1 値としての関数
- 8.2 関数合成
- 8.3 部分適用
- 8.4 ポイントフリースタイル
- 8.5 本章のまとめ
- 8.6 練習問題
- 第9章 型と型クラス
- 9.1 静的型チェックと型推論
- 9.2 代数的データ型
- 9.3 型の別名と付け替え
- 9.4 型クラス
- 9.5 本章のまとめ
- 9.6 練習問題
- 第10章 モジュール
- 10.1 モジュールの基本概念
- 10.2 モジュールの定義とエクスポート
- 10.3 インポート
- 10.4 本章のまとめ
- 第11章 モナド
- 第3部 実践Haskellプログラミング
- 付録
- 索引