2012-02-22から1日間の記事一覧

駆け足で読む『プログラミングHaskell』3 型とクラス

型とクラス 型とクラスはHaskellの基本概念である 型とは 型とは互いに関連する値の集合である 集合であるから、全体があって、要素があって、要素同士にオーバーラップはない 値が集合をなすとき、型を定義できる クラスとは 複数の型があるとき、型がある…

駆け足で読む『プログラミングHaskell』11 遅延評価

複数の関数を適用するとき、どういう順番で関数適用するかを問題にする 外側から、対、内側から 名前渡し、対、値渡し curry化することと関係がある(順序がわかるようにカッコを明示的に書くとわかる) 無限再帰の場合などでは、値渡しでは停止しないが、名前…

駆け足で読む『プログラミングHaskell』10 型とクラスの定義

型を定義する typeによる宣言(既存の型を使って宣言する) type String = [Char] type Pos = (Int, Int) type Board = [Pos] dataによる宣言(まったく新しい型を宣言する) 取りうる値の集合を定義する その上で関数を定義する data Move = Left | Right | Up …

駆け足で読む『プログラミングHaskell』9 対話プログラム(IOがしたい)

IO型の特殊性 IO型は対話形式にするための仕組み HaskellはIOを除くと、「ファイルにすべてを書き込んで(→コンパイルして)→実行する」〜「いつも同じことをするだけ」という処理を作る Haskellで対話式入出力をするときは、対話の受付口と対話の返却口を開い…

駆け足で読む『プログラミングHaskell』7 高階関数

引数として関数を取ったり、返り値として関数を返したりする関数を高階関数(higher-order function)という 複数の関数の処理を行ったりするときは、結果として関数に関数を引数として渡すことになる curry化は「返り値として関数を返す」こと(らしい)だが、…

駆け足で読む『プログラミングHaskell』6 再帰関数

Haskellではループの代わりに再帰関数を使う 整数に対する再帰は以下のような感じ f :: Int -> Int f 0 =1 f (n+1) = (n+1) + (f n) 「関数fの入出力の型はInt。fに0を渡したら1を返す。それ以外のときは、n+1を渡したら 関数fをnに適用した結果にn+1を加え…

駆け足で読む『プログラミングHaskell』5 リスト内包表記

Haskellで、リストは特別な役割をしているので、そのために知っておくべきことがいくつかある 数学の内包表記 内包表記をHaskellのリストで実現するために 生成器 [1..5]が[1,2,3,4,5]であることにする このように..リストを作ってくれるので「生成器」と呼…

駆け足で読む『プログラミングHaskell』4 関数定義

関数は対応付けるもの 対応付けは値と値かもしれないし、値と関数かもしれないし、関数と関数かもしれない 対応づけは1度とは限らない(x -> y -> z -> wのように3つの対応づけもできる) 関数が失敗することなく対応付けするためにHaskellで決まっているル…

駆け足で読む『プログラミングHaskell』

プログラミングHaskell作者: Graham Hutton,山本和彦出版社/メーカー: オーム社発売日: 2009/11/11メディア: 単行本(ソフトカバー)購入: 14人 クリック: 503回この商品を含むブログ (117件) を見る この本はすばらしい。ウェブ上の色々を調べて、ようやく…

型とクラスを理解する過程のメモ

自分の書いたものを消したいくらいだが、このメモは自分で書いた、というそれだけの理由で、自分にとっては価値があるので、残すことにする 型とクラスを調べるために どちらも":info"によって情報を示すことができる(この記事の末尾にそれぞれの表示を示し…