Haskell: Wie funktioniert das?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet
Wieso kann ich fun (\x->x) True schreiben?

Dieser Ausdruck erzeugt aus fun eine Neue Funktion, für die die Parameter g und b feststehen und der Parameter nicht feststeht. Diese Funktion hat die Signatur

Int -> Int

Sie ist also mit einem Int-Wert aufzurufen und liefert einen Int-Wert als Ergebnis.

In der Terminologie von Haskell sagt man, dass fun (\x->x) True eine partial Application von fun ist. Dahinter steht der Currying genannte Mechanismus.

Woher ich das weiß:Berufserfahrung – Berufstätigkeit als Software-Entwickler
java56 
Fragesteller
 24.02.2024, 15:54

Aber die Funktion kann doch schon nicht vom Typen Int->Int sein. Wenn ich doch habe fun (\x->x ) True dann sollte der Typ doch eher (a->a)->Bool->... sein. Oder nicht?

0
java56 
Fragesteller
 24.02.2024, 16:17
@java56

nvm ich habe mir currying mal genauer angeschaut und verstehe jetzt was passiert die funktion fun g b ist fun :: (Int->Int)->Bool->(Int->Int) deshalb kann ich das nutzen als argument für fun. Jetzt ist nur noch die Frage wie sieht der Aufruf der letzten Funktionsdefintion vom fun aus wenn man fun g b als g hat?

0