by shigemk2

当面は技術的なことしか書かない

2012-08-18から1日間の記事一覧

case

caseそのものについては説明不要ですけど、 書き方はこんな感じ。 case expression of pattern -> result pattern -> result pattern -> result ... 例によって、どのパターンにも引っかからなかったら、ランタイムエラーが発生する。 head'' :: [a] -> a he…

let

let 式は where 節にとてもよく似ている。 where は関数の終わりで変数を束縛し、 その変数はガードを含む関数全体から見える。それに対し、let式は、どこでも変数を束縛でき、そしてlet自身も式になる。しかし let 式が作る束縛は局所的で、ガード間で共有…

where

where を使って計算の中間結果に名前をつけることが出来る。 ただしwhere にはスコープがあり、その関数の中でしか見えないため、注意すること。 bmiTell'' :: Double -> Double -> String bmiTell'' weight height | bmi <= 18.5 = "You're underweight" | …

ガード

関数を定義する際、引数の構造で場合分けするときにはパターンを使う。 引数の値が満たす性質で場合分けするときはガードを使う。パターンのときもそうだったが、 これを使いこなせないとif/then/elseを多用することになって可読性が著しく下がる。 ガードの…

パターンマッチ

パターンマッチはある種のデータが従うべきパターンを指定し、そのパターンに従って データを分解するために使う。Haskell では、関数を定義する歳にパターンマッチを使って関数の本体を場合分けすることが 出来る。渡された数が7かどうかを調べる(if/else使…

型クラス

型クラスは、何らかの振る舞いを定義するインターフェイスである。 ある型クラスのインスタンスである型は、その型クラスが記述する 振る舞いを実装する。もっと言うと、型クラスというのは、関数の集まりを定める。 ある型クラスに属する関数のことをその型…