読者です 読者をやめる 読者になる 読者になる

Injective Functional Dependency

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

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

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

副作用の閉じ込めテクニック

前説 Haskellの純粋関数はよいものだ。 自然とコードのモジュラリティを高めてくれるおかげで再利用し易いコードが出来上がるし、 時には自分でも気づかなかった、本当に書きたかった実装を教えてくれさえする。 また副作用を許容しないということはある変数…

型レベルリテラルと行列

行列(matrix)同士の和・差・積は、 行列の形によって定義されたりされなかったりするため、科学技術計算において予期しない実行時エラーの原因になることがある。 これをコンパイル時に防ぐには、行列の形まで含めて静的に型付けすればよい。 たとえば行列の…

Haskell学習記(1)

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