2016-07-08 8 views
0

Ich versuche, für eine Prüfung zu lernen, und ich fühle, dass die Vortragsfolien mich ein wenig verwirren.Wie ermittle ich den Datentyp für ein Programm?

Eine unserer Testfragen wird wahrscheinlich lauten "Was ist die Art von Programm ProgrammName", aber ich habe Probleme, das Konzept zu verstehen. Ich verstehe, welche Datentypen sind, aber beantworten Sie mit dem Datentyp der Eingabe und verfolgen das Programm mit den Pfeilen?

Hier ist ein Beispiel für etwas, das mich verwirrt. Sie wollen, dass ich die Art von Programm p2 zu finden:

p2 x y z = x y!z 

Der Datentyp für p2:

(*->[**])->*->num->** 

Ich verstehe nicht, wie sie zu diesem Ergebnis kam, though. Ist es:

  • Der erste Stern im Tuple, der den Eingang x darstellt?
  • Die zweite, Zwei-Sterne-Liste im Tupel, die Eingabe y darstellt?
  • Der dritte Stern repräsentiert ... etwas?
  • Die Zahl, die z?
  • Die letzten zwei Sterne, die die Ausgabe des Programms darstellen?

Ich freue mich über jeden Hinweis!

Antwort

0

* -> [**] die Art der x ist, ist die Art der *y, num die Art der z** und der Typ des Ergebnisses.

foo -> bar ist der Typ einer Funktion, die eine foo nimmt und gibt ein bar und [baz] eine Liste von baz s ist. * und ** (und jede andere Anzahl von * s) steht für einen beliebigen Typen (mit der Einschränkung, dass, wenn die gleiche Anzahl von * s mehrfach in einer Art angezeigt wird, ist es jedes Mal für die gleiche Art steht.

So x ist eine Funktion, die einen Wert eines beliebigen Typs annimmt und eine Liste eines anderen beliebigen Typs erzeugt; y ist ein Argumentwert von x; z ist ein Wert des Typs num; das Ergebnis ist ein Wert von x Ergebnistyp.

Verwandte Themen