Haskell

Injective Functional Dependency

マルチパラメタクラスの型変数間に一対一の対応関係をもたせたいとする。 このとき、型変数の間に相互にfuncitonal dependency をもたせればよい。 {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FunctionalDependencies #-} -- | this typechecks c…

Haskellの太いほうの矢印について

Haskellには頻出する矢印が2つある(->と=>)。 なかでも=>(型制約導入子?)がくせものである。 くせものポイント1:数学の「ならば」とは(一見)違う意味を持つ。 くせものポイント2:もちろん日本語の「ならば」とも違う意味を持つ。 くせものポイン…

型レベルリテラルと行列

行列(matrix)同士の和・差・積は、 行列の形によっては定義されない。せっかくHaskellのように強い型システムをもつ言語を採用していても、実行時エラーの潜在的原因になってしまう。 これをコンパイル時に防ぐには、行列の形まで含めて静的に型付けする。 …

Haskell学習記(1)

少し前にHaskellの勉強を始めて軌道に乗りだしたので、初志を忘れないように、ポストLYHGGの歩みを書き留めておく。