高階関数

高階関数は、引数や返り値に関数がつかわれる関数です。代表は、やっぱりmapでしょう。mapは、引数に関数とリストをとります。 そして、リストの各要素にたいして、関数を適用したリストをかえします。 Prelude> map (1+) [1,2,3] [2,3,4] 追記: id:n9dさん…

where

where節を使って、局所的な定義、つまり適用範囲を限定した定義ができます。 twicesquare x y = mysequare x + mytwice y where twice m = m * 2 mysequare n = n * n このように、whereを使うことにより、関数の中で関数を定義するような形がとれます。また…

ガードで条件

ifで条件判断ができますが、もっと簡単条件判断ができます。 それが、ガード節です。 bigbig x | x インデントをして書かれている「|」のあとに、条件式をかき、そして、そのとき適用する関数を定義してあげます。このとき、条件式のインデントはそろえる必…

ifもしも

今日は、if文をやってみます。Haskellでもif文があります。書式は、こう。 if 条件式 then 真の処理 else 偽の処理 PerlやRubyなどに近いですね。ただ、大きな違いは、Haskellでは、else節を省略できません。何故なら、if文を使用する際、関数全体に適用する…

再帰しますよ

Haskellには、繰り返しの構文がないので、再帰で繰り返します。 再帰とは、自分で自分を呼んじゃいます。 ここでは、リストを反転させるreverse関数を作ってみましょう。ただ、reverse関数は、定義されているのでmyreverseになりますが。 myreverse [ ] = [ …

リスト入門

Lisp然り、Haskellでもリストが重要です。リストとは、複数の要素が並んでいるという点では、Cなどの配列に似ていますが、ランダムアクセス(添字で要素にアクセス)ができない、要素数が動的(決まっていない)など、違う点もあります。配列というよりは、…

関数を定義する

Haskellは、関数を定義していくことでプログラムができあがります。 hoge = 1 一見、変数hogeに1を代入しているように見えますが、違います。これは、「hogeという関数を、1を返すと定義する」と考えます。「=」で関数を定義します。引数をとる関数の場合は…

開発環境とか

昨日、いきなりghcとか使っていましたが、ちょっと説明。Haskellには、コンパイラとしてghcや、インタプリンタとしてhugsなどが用意されています。実行形式のプログラムを作りたい場合は、コンパイラでコンパイルしてあげます。このとき、main関数を作ってい…

世界にこんにちは

言葉を知ったら、まずはこんにちは。これ、しきたり。 main = putStr "Hello !! Hello !!\n" これ、main関数を定義してるか、ファイルに書いて保存。 では、発話。そのまえに準備。 hasko$ ghc hello.hs -o hello 今度こそ発話 hasko$ ./hello Hello !! Hell…

現在の参考書

今なら当然、これ。入門Haskell―はじめて学ぶ関数型言語作者: 向井淳出版社/メーカー: 毎日コミュニケーションズ発売日: 2006/03メディア: 単行本購入: 3人 クリック: 94回この商品を含むブログ (138件) を見る

遅れつつHaskell

はじめまして。どこかで見た形式かもしれませんが、気にしない。 これから、マイペースにHaskellをやっていこうと思います。