Datentypen
Untersuchen der Datentypen
Die Funktionsweise unseres Programms wird noch klarer, wenn wir uns mit den Datentypen beschäftigen, die beim Aufruf der verschiedenen Funktionen relevant sind.
Ein Aufruf von view
in der REPL ergibt folgende Ausgabe:
> view
<function> : Int -> String -> Html msg
view
erwartet also eine ganze Zahl (den Schlüssel bzw. die Verschiebezahl)
und eine Zeichenkette (den Klartext) als Parameter.
Die Rückgabe von view
ist vom Typ Html msg
.
Dies erinnert an Datentypen wie List a
.
Tatsächlich ist die Struktur der beiden Datentypen äquivalent.
Eine Liste kann Elemente eines bestimmten Datentyps enthalten. Der Wert a
ist eine Typvariable für beliebige Datentypen.
Ähnlich ist es bei Html msg
. Allerdings ist die Typvariable kein Typ
von enthaltenen Elementen - wie bei einer Liste -, sondern der Datentyp einer
Nachricht, die z.B. durch Ereignisse wie einen Mausklick erzeugt werden kann.
Unser Programm kann noch keine Nachrichten erzeugen (das kommt in einem späteren Projekt),
aber die Typvariable gibt es natürlich dennoch. Prinzipiell können Nachrichten einen
beliebigen Typ haben. Wenn man auf ein Element klickt, könnte z.B. die Nachricht
"Mauswurdegeklickt" vom Typ String
oder die Nachricht 5
vom Typ Int
erzeugt werden.
Vermutlich klingt das noch etwas abstrakt, weil wir noch keine Nachrichten erzeugen können.
Du kannst den Typparameter msg
fürs erste auch ignorieren.
Aufgabe 1
text
, src
,
width
, div
und a
.
Bearbeite dann den Lückentext.
(Beachte, dass du dazu die Module Html
und
Html.Attributes
importieren musst)