Daily Archives: July 31st, 2007
型の inconsistency の回避方法
Lingr では shiro さんに伝えたのだけど、あそこは流れてしまうので(アーカイヴァルだからぐぐれば出てくるけど)ここにも書いておく。あっ、ここも流れてしまうか。まあいいや。
えーと、たとえば次のようなコードがあって、
import Control.Arrow
x = map (+1)
y = filter (< 5)
z = sum
w = x >>> y >>> z
それで、「おっと x の定義を少し変えよう」というとき、
x = map (\(x,y) -> (x+1,y))
これはこれでいいんだけど w における型の不一致をどうするか、という問題。
もちろんこうしたら y も書き換えないといけなかったりするわけだし、全体から定義を変更する必要がある。でも x の書き換えが少し手間だと全部を書き換えるより前に対話環境で単体のテストしながら詰めたい。でも y や w の型検査がジャマになるというわけ。どうするか。
わたしは shiro さんが書いたように w をコメントアウトしちゃうことが多いんだけど、 where で x を局所定義することでも回避できる。
import Control.Arrow
x = map (\(x, y) -> (x+1,y))
y = filter (< [...]