2012-02-22から1日間の記事一覧
型とクラス 型とクラスはHaskellの基本概念である 型とは 型とは互いに関連する値の集合である 集合であるから、全体があって、要素があって、要素同士にオーバーラップはない 値が集合をなすとき、型を定義できる クラスとは 複数の型があるとき、型がある…
複数の関数を適用するとき、どういう順番で関数適用するかを問題にする 外側から、対、内側から 名前渡し、対、値渡し curry化することと関係がある(順序がわかるようにカッコを明示的に書くとわかる) 無限再帰の場合などでは、値渡しでは停止しないが、名前…
型を定義する typeによる宣言(既存の型を使って宣言する) type String = [Char] type Pos = (Int, Int) type Board = [Pos] dataによる宣言(まったく新しい型を宣言する) 取りうる値の集合を定義する その上で関数を定義する data Move = Left | Right | Up …
IO型の特殊性 IO型は対話形式にするための仕組み HaskellはIOを除くと、「ファイルにすべてを書き込んで(→コンパイルして)→実行する」〜「いつも同じことをするだけ」という処理を作る Haskellで対話式入出力をするときは、対話の受付口と対話の返却口を開い…
引数として関数を取ったり、返り値として関数を返したりする関数を高階関数(higher-order function)という 複数の関数の処理を行ったりするときは、結果として関数に関数を引数として渡すことになる curry化は「返り値として関数を返す」こと(らしい)だが、…
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で、リストは特別な役割をしているので、そのために知っておくべきことがいくつかある 数学の内包表記 内包表記をHaskellのリストで実現するために 生成器 [1..5]が[1,2,3,4,5]であることにする このように..リストを作ってくれるので「生成器」と呼…
関数は対応付けるもの 対応付けは値と値かもしれないし、値と関数かもしれないし、関数と関数かもしれない 対応づけは1度とは限らない(x -> y -> z -> wのように3つの対応づけもできる) 関数が失敗することなく対応付けするためにHaskellで決まっているル…
プログラミングHaskell作者: Graham Hutton,山本和彦出版社/メーカー: オーム社発売日: 2009/11/11メディア: 単行本(ソフトカバー)購入: 14人 クリック: 503回この商品を含むブログ (117件) を見る この本はすばらしい。ウェブ上の色々を調べて、ようやく…
自分の書いたものを消したいくらいだが、このメモは自分で書いた、というそれだけの理由で、自分にとっては価値があるので、残すことにする 型とクラスを調べるために どちらも":info"によって情報を示すことができる(この記事の末尾にそれぞれの表示を示し…