[Haskell-cafe] basic field questions
Neil Mitchell
ndmitchell at gmail.com
Thu Jan 25 05:46:40 EST 2007
Hi
> sq = squishiness $ Table {colour = Black, weight=1, height= 2}
> main = putStr $ show sq
squishiness is just translated to:
squishiness :: Furniture -> Double
squishiness (Chair _ _ x) = x
squishiness _ = error "doh"
> main: No match in record selector Main.squishiness
Hence this is a pattern match error (runtime), not a type error
(compile time). There are people working on extending the types to
catch this kind of thing, and also people working on static checkers
to catch patter match errors [1] and people working on annotations to
get this kind of thing [2].
It's not a solved problem yet, but certainly I have a demo checker
that would have spotted this easily.
Thanks
Neil
[1] http://www-users.cs.york.ac.uk/~ndm/projects/catch.php
[2] http://www.cl.cam.ac.uk/~nx200/research/escH-hw.ps
More information about the Haskell-Cafe
mailing list