Die Mathe-Redaktion - 22.06.2018 05:11 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
ListenpunktSchwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Juli
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 180 Gäste und 3 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Haskell: Typ einer Funktion angeben
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule Haskell: Typ einer Funktion angeben
MrPayDay
Junior Letzter Besuch: im letzten Monat
Dabei seit: 15.05.2018
Mitteilungen: 18
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2018-05-15


ich verstehe diesen aufgaben teil leider nicht ich hoffe es kann mir jemand weiterhelfen:

Die Typen der Funktionen map, iterate, flip und const (mit jeweils frischen Typvariablen) sind:
map :: (a -> b) -> [a] -> [b]
iterate :: (c -> c) -> c -> [c]
flip :: (d -> e -> f) -> (e -> d -> f)
const :: g -> h -> g
F¨ur alle Teilaufgaben ist der Rechenweg erforderlich.
a) Berechnen Sie den Typ von (map iterate) mit der in der Vorlesung vorgestellten Typregel f¨ur
die Anwendung, sowie dem Verfahren zur Unifikation von Typen.

b) Zeigen Sie, dass die Anwendung (iterate map) nicht typisierbar ist, indem Sie versuchen den
Ausdruck mit der in der Vorlesung vorgestellten Typregel f¨ur Anwendungen zu typisieren. Rechnen
Sie solange, bis ein Fehler auftritt.

c) Verwenden Sie die Anwendungsregel f¨ur mehrere Argumente und die Unifikation von Typen, um
den Typ von (iterate flip const) zu berechnen.



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 2149
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2018-05-15


Hallo,

kannst du genauer sagen, was du nicht verstehst?

Außerdem braucht man zur Lösung der Aufgabe das "in der Vorlesung vorgestellte" Verfahren, das müsstest du noch angeben. (Nicht dass man das brauchen würde, aber da der "Rechenweg" mit angegeben werden muss, ist es wohl essentiell ...)


-----------------
⊗ ⊗ ⊗



  Profil  Quote  Link auf diesen Beitrag Link
MrPayDay
Junior Letzter Besuch: im letzten Monat
Dabei seit: 15.05.2018
Mitteilungen: 18
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2018-05-15


ich poste mal den link zum skript: www-stud.rbi.informatik.uni-frankfurt.de/~prg2/SS2018/skript/teil1/Kap-3-typen-kurz.pdf

ich war leider an dem tag nicht in der vorlesung, ich habe gedacht ich würde es auch mit dem skript schaffen. Leider schaffe ich es nicht.
Deswegen bin ich leider auf hilfe angewiesen.



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 2149
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2018-05-16


OK, und wo genau kommst du nicht weiter?



  Profil  Quote  Link auf diesen Beitrag Link
tactac
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 15.10.2014
Mitteilungen: 1240
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2018-05-17

\(\begingroup\) \(\newcommand{\sem}[1]{[\![#1]\!]}\)
Beispiel: wir wollen den Typ von map map herausfinden.

Wir verteilen erstmal unterschiedliche Typvariablen, damit's weniger verwirrt: das erste map habe den Typ (a -> b) -> [a] -> [b] das zweite den Typ (c -> d) -> [c] -> [d]

Die Anwendungsregel für den Fall sagt:
<math>\begin{array}{c}
\mathsf{map}\colon (a\to b) \to [a]\to [b]\qquad \mathsf{map}\colon (c\to d) \to [c]\to [d] \qquad \gamma(a \to b) = \gamma((c\to d) \to [c]\to [d]) \\\hline
\mathsf{map\ map}\colon \gamma([a]\to [b]).
\end{array}</math>
$\gamma$ soll dabei eigentlich ein allgemeinster Unifikator von $a \to b$ mit $(c\to d) \to [c]\to [d]$ sein.
Da der äußerste Typkonstruktor auf beiden Seiten derselbe ist, nämlich $\to$, steigen wir rekursiv ab und haben simultan $a$ mit $c\to d$ und $b$ mit $[c]\to[d]$ zu unifizieren. Mit der hierdurch aufgezwungenen Substitution $\{a \mapsto c\to d, b \mapsto [c]\to [d]\}$ kommt sich nichts in Gehege, und wir können sie nehmen. Man erhält:
$\mathsf{map\ map}\colon [c\to d] \to [[c]\to [d]]$.

Zur weiteren Übung empfiehlt es sich vielleicht, herauszufinden, warum $$\mathsf{fmap\ fmap\ fmap\ fmap\ fmap}\colon \mathsf{Functor\ }f \Rightarrow (y \to z) \to (x \to y) \to f\ x \to f\ z.$$ (Hierbei spielt eine Rolle, dass $(x \to)$ für alle $x$ vordefinierterweise eine $\mathsf{Functor}$-Instanz ist.)  biggrin
\(\endgroup\)


  Profil  Quote  Link auf diesen Beitrag Link
MrPayDay hat die Antworten auf ihre/seine Frage gesehen.
MrPayDay wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2018 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]