[Haskell-cafe] What is your favourite Haskell "aha" moment?

Johannes Waldmann johannes.waldmann at htwk-leipzig.de
Mon Jul 16 19:28:07 UTC 2018

>  - Large-scale refactoring with types:
> this is a huge selling point for Haskell in general

I fully agree with the general idea, but the specific example

> data Shape
>   = Circle Double
>   | Square Double
>   | Rectangle Double Double   -- ^ added

is not convincing (well, to programmers
that know about static typing) Think of a Java program

interface Shape { .. }
class Circle implement Shape { ... }

When you add   class Rectangle {  } ,
then  Shape foo = new Rectangle ()  would be an error,

until you put   class Rectangle implements Shape {  }
then the compiler tells you what methods are missing.

I think the extra value of types in Haskell
(for everything, including refactoring)
is that they tend to express more of the program's properties
(w.r.t. statically typed imperative programs).


the distinction between  a  and  IO a,
between  IO a  and   STM a.

In  Data.Set, function  "fromList"  has an  Ord  constraint,
but  "toList"  does not. Does  "singleton"  need the constraint?
I used this as an exam question just last week.

- J.W.

More information about the Haskell-Cafe mailing list