6
Wie übersetzt Haskell [
und in die Listendefinitionen? Sind sie Werte Konstruktoren oder etwas? Sind sie neue Typen? Gibt es eine Möglichkeit, eine Outfix Syntax zu definieren, im Gegensatz zu einem Infix?Wie wird der syntaktische Sequenzzucker ([1..6]) in die tatsächliche Listensyntax übersetzt (1: 2: 3 ... 6)?
Zur Betonung --- '[1, 2, 3]' und '[1..3]' haben den gleichen * Wert *, kommen aber dort auf sehr unterschiedliche Weise an. '[1, 2, 3]' desugars (direkt!) Zu '1: 2: 3: []' while '[1..3]' desugars zu 'enumFromTo 1 3' welches dann * zu * 1 auswertet: 2: 3: [] '. –
@tel: und der Vollständigkeit halber haben "[1,2,3]" und "[1..3]" nicht unbedingt den gleichen Wert. Es kommt darauf an, was es ist. Es könnte eine Liste mit einem Typ sein, der "Enum" auf seltsame Weise implementiert. – newacct
Man könnte auch einen Typfehler haben, da der Haupttyp von '[1,2,3]' 'Num a => [a]' ist, während der Haupttyp von '[1..3]' 'ist (Num a , Enum a) => [a] '. –