2010-06-01から1ヶ月間の記事一覧

基本的な値

6.7 実習:cat -nコマンド この章では、行番号付きcatコマンド(catn)を実装しています。 catn.hs自体は、そんなに難しくなく、結構すんなりと理解することが出来ました。 イチから作るとなると、ちょっと時間がかかりそうですが。 評価の優先度 ふむふむ、関…

基本的な値

6.6 リスト 最後のデータ構造、リスト。 これまで何度も出てきたので、復習の意味も兼ねて読みました。 リスト内包表記について 何となく、RubyやSmalltalkのブロックを思い浮かべてしまいます。でも全然違いますね。 今の私の理解はこんな感じ。 リスト内包…

基本的な値

6.2 真偽値 Bool型はとても分かりやすい。 C言語のように0が偽で0以外が真というややこしいものではなくて、TrueとFalseしかないところがすっきりしてる。 こうあるべきですよね。関数not,(&&),(||)も馴染みのある感じですね。 6.3 数値 型の明示的宣言につ…

遅延評価

5.3 遅延評価の利点と欠点 利点について 本書では三つの利点が記されています。 う〜ん、分かったようで分かっていないような感じです。 自分の頭を整理しながら書いていきます。 必要な計算を必要な時に行う点 これは分かりやすいです。不要な計算を省くこ…

遅延評価

5.2 遅延評価のシミュレーション これまで出てきたコードを使って、遅延評価の動きを見ていこうという内容です。 myIf関数やmap関数を使ってのパターンマッチによる遅延評価はとてもよく分かりました。 これらの例を見ていると、遅延評価はパターンマッチが…

遅延評価

5.1 遅延評価とは パターンマッチと遅延評価について なるほどぉ。 パターンマッチするためには評価しないとパターンマッチ出来ない。 だからパターンマッチするときに式が評価されるんですね。 これが必要なものだけ評価するの意味ですね。 参照透明性につ…

5.1 遅延評価とは ついにここまで来ました。遅延評価。 いろいろな入門サイトで見たけど、どうしても理解することが出来なかった。 ここは、腰を据えてじっくり勉強しよう。 置き換えモデルについて う〜ん、分かったつもりだけど、少し自信がない。もうちょ…

Haskellの基礎(3) モジュールと総合演習

4.2 総合問題 対になってる関数 遂になってる関数としてまとめられていて分かりやすかったので。 lines :: String -> [String] unlines :: [String] -> String linesして、行単位で処理してからunlinesで文字列にする。 確かにイディオムとして考えるとよい…

Haskellの基礎(3) モジュールと総合演習

4.1 コマンドライン引数の処理とモジュール main変数について う〜ん、C言語でいうところのグローバル変数に当たるのかなぁ? Mainヘッダにはmain変数がexport宣言されていて、includeすると参照可能になる感じ。 あぁ、手続き型脳が全開だ・・・。 Mainモジ…

Haskellの基礎(2) 型と高階関数

3.4 パターンマッチ :演算子について map関数の型、始め見たときよく分かりませんでした。 map :: (a -> b) -> [a] -> [b] map f [] = [] map f (x : xs) = f x : map f xs ですが、:演算子の説明を読み、 1 : [2,3] とすることで[1,2,3]が得られることが分…

Haskellの基礎(2) 型と高階関数

3.3 パターンマッチ(1) パターンマッチについて 日頃C言語などで開発をしている人にとっては不思議な文法です。 switch caseやif elseがあるなら、こんな文法要らないじゃん と思ってしまいますが、まぁHaskellの文法ということで。 でも新しい考え方ですね…

Haskellの基礎(2) 型と高階関数

3.1 型と値 今日は型についてです。 これまでちょこちょことHaskellの入門サイトを見てきましたが(そんなに見たわけではないけど)一番分かりやすいです。 これまでであれば Int -> [a] -> [a] なんて書かれると、ちょっとんんん〜?となってましたけど、今は…

Haskellの基礎(1) 関数とリスト

2.6 リスト処理の基本(3) tailコマンド これまでの節で学習してきた内容を使ったプログラム。 結構すんなり頭に入ってきた♪ 2.7 本章のまとめ ふむふむ、分かりやすいなぁ。これまでの節で掲載されていたサンプルプログラム。 とても分かりやすい。関数型言…

Haskellの基礎(1) 関数とリスト

2.4 リスト処理の基礎(1) countlineコマンド リストに関して これまでリストに関してちょっと考え違いしていたかも。 Haskellのリストはリテラルの書き方を見ると配列のようにイメージしてしまう。 たとえばC言語で配列は以下のように書くし、 unsigned char…

Haskellの基礎(1) 関数とリスト

2.1 「Haskellの基礎」の概要 今日からHaskellの基礎の勉強を開始します。がんばるぞ。 2.2 mainアクションと関数適用 関数とアクションの概念がすっきりと理解出来ないなぁ。 アクションについては後ほど解説があるそうだけどちょっと気になるので調べてみ…

ふつうのHaskell本ついに到着!

思ったより早く着ました。今日から早速読み始めました。 書籍の内容を掲載していくわけにもいかないので、感想などを中心に書いていこうと思います。 あと、読んでも分からなかったので調べたことなんかも書いていこう。 まえがき おや、レビューアの中にか…

支払い済ませました。

今日、Haskell本の支払いをコンビニで済ませてきました。 ということで今日は小見出しなんかを書いてみようかな。 小見出しです。 おぉ、いい感じです。さらに… さらに小見出しです。 ここまで来るとタダのボールドと大差ないですね。小見出しは一段までかな…

Amazonで注文しました。

ついに、Haskellの本を注文しました。本が届くまでは、このブログの書き方に慣れておこう。いろいろ練習します。 たとえば、ソースコードを記述するときは、枠で囲って書きたいですね。どうやってやるんだろう? void test(void) { printf("どんな感じ?"); …