dpiponi at gmail.com
Fri May 9 17:34:33 EDT 2008
> Well, that's the whole point of mathematics, isn't it?
Abstraction is common to mathematics and computing. But in computing
the abstraction often follows lines that seem obvious. For example a
GUI library might have a Widget class and people can immediately
identify various regions of the screen with Widgets and know that when
they want a new kind of device in their GUI it's time to define a
widget. Although the Widget class may be technically defined by the
interface it exposes, in practice people just think "a gadget that can
appear on the screen". Even someone who has never programmed can
probably quickly guess what kinds of things correspond to instances of
the Widget class.
But mathematics is full of abstractions that aren't like this. Times
modulo 24 hours and the way a closed loop can travel around a knot
both form a group. The thing they have in common is that there's a
binary operation with identity and inverses. Sometimes it can be more
confusing to try to find a snappy English phrase that sums them up
without restating the definition. Many common Haskell type classes
lean towards the latter kind of abstraction.
More information about the Haskell-Cafe