[Haskell] do notation and type synonym

Bulat Ziganshin bulatz at HotPOP.com
Mon Aug 8 05:30:12 EDT 2005

Hello mt,

Sunday, August 07, 2005, 10:26:07 PM, you wrote:

m> check5  = do { 5 <- m ; return 0 }

i think the actual translation is:

m >>= (\var -> case var of
                 5 -> return 0
                 _ -> fail)

where fail = Nothing for Maybe monad

m> second one:
m> is it possible to write something like
m> type Point = (Float, Float)
m> type Vector = (Float, Float)
m> and still have type safety (i.e. not be able to mix Point and Vector) (and 
m> still have (*,*) without constructor)?

constructor gives you type-safety! without constructor there is no
difference between Point and (Float, Float), only constructor give you
syntax difference between these two types!

newtype Point = Point (Float, Float)
unPoint (Point p) = p

Best regards,
 Bulat                            mailto:bulatz at HotPOP.com

More information about the Haskell mailing list