[Haskell-cafe] Python is lazier than Haskell
Albert Y. C. Lai
trebla at vex.net
Thu Apr 28 20:56:38 CEST 2011
On 11-04-27 05:44 PM, serialhex wrote:
> in ruby they use what some call "duck typing" if it looks
> like a duck and quacks like a duck... it's a duck.
Python and Javascript also do duck typing.
Haskell does Functor typing. A Functor is something that provides an
"fmap" method. List does it, so you can do
fmap not [True,False]
Maybe also does it, so you can also do
fmap not (Just False)
Your own data type could also do it. Suppose your data type is (binary tree)
data BT a = Z | Y a (BT a) (BT a)
deriving Show
then you add
instance Functor BT where
fmap f Z = Z
fmap f (Y x t0 t1) = Y (f x) (fmap f t0) (fmap f t1)
then BT provides an "fmap" method too, and so you can also do
fmap not (Y True (Y False Z Z) Z)
If it fmaps like a Functor, it is a Functor. That is Functor typing.
More information about the Haskell-Cafe
mailing list