Sono un po 'confuso dalla scelta della sintassi Haskell per le definizioni dei tipi, come in
data Foo = Bar
Vale a dire: il segno di uguaglianza qui significa davvero un'eguaglianza in qualche senso sottile, o è solo una scelta casuale di notazione?
Ad esempio, in
foo x y = bar y x
l'uguaglianza è davvero un'eguaglianza: se questa linea è presente, foo a b
e bar b a
possono essere usati più o meno in modo intercambiabile nel programma. Tuttavia, data Foo
e Bar
probabilmente non possono essere usati in modo intercambiabile dopo data Foo = Bar
.
Ogni volta che riprendo i miei tentativi di imparare Haskell, sono un po 'confuso da questa sintassi IMO contro-intuitiva e ho bisogno di cercare la documentazione per richiamare i formati di LHS e RHS. Ci sono delle sintassi alternative per le definizioni dei tipi in ogni caso?