[Haskell-beginners] Further constraining types
Brent Yorgey
byorgey at seas.upenn.edu
Fri Aug 5 16:00:16 CEST 2011
On Thu, Aug 04, 2011 at 06:52:03PM -0800, Christopher Howard wrote:
>
> Anyway, I think Brandon is right and the answer is in dependent
> types, though to be honest I'm having real trouble decoding any of
> the literature I've found so far.
I recommend reading "The Power of Pi" by Oury and Swierstra
(http://www.cs.ru.nl/~wouters/Publications/ThePowerOfPi.pdf). It's a
very readable introduction to dependently-typed programming with
several great examples.
Your particular problem could be solved by creating a type Positive
which consists of an Integer value paired with a *proof* that it is
positive. Then the squaring function (for example) could exploit the
properties of multiplication to return the result along with a proof I
realize that's a bit vague; I could explain how this would work in
more detail if you like.
-Brent
More information about the Beginners
mailing list