2012-09-27 11 views
5

W Haskell wszystkie funkcje są pierwotnie curry, prawda?Haskell - O Curried

Spójrzmy więc na funkcję max, a ja napiszę, co rozumiem, jak to działa.

Kiedy piszę coś takiego:

max 4 5 

Co się dzieje, że nowa función jest tworzony wewnętrznie ma wartość 4, który następnie odbiera wartość, więc funkcja ta jest stosowana do 5 i prawidłowe zwracana jest wartość?

Czy powiedziałem coś nie tak, czy jest to poprawne?

+4

Pamiętajcie, ludzie: proszę uzasadnić swoje komentarze w komentarzach. –

+0

Zgaduję, że są one spowodowane pytaniem o błędy gramatyczne, co nie jest dobrym powodem do zgubienia ... jeśli pytanie jest trudne do zrozumienia, poproś o wyjaśnienie. –

+1

Nie można zgodzić się na brak wiedzy na stronie z pytaniami i odpowiedziami, ale można z powodu braku wysiłku, jednak myślę, że to pytanie pokazuje dobre zrozumienie i jasne (udane) starania, aby rozwiązać problem. Poprawiłem niektóre gramatykę do podmiotu-czasownika-obiektu, ponieważ obiekt-czasownik-podmiot nieco nadawał znaczenie. – AndrewC

Odpowiedz

9

Zgadza się. Można zapamiętać co Zmiękczanie wszystkim chodzi o zapamiętywanie dwóch najważniejszych tożsamości:

-- Function type right-associativity: 
a -> b -> c = a -> (b -> c) 

-- Function application left-associativity: 
f x y = (f x) y 

te dwie tożsamości współpracować i produkować język curry.

+0

@ user428691 Zatem 'max 4 5' jest skrótem od' (max 4) 5' i 'max 4 :: Integer -> Integer' co oznacza, że ​​jest to funkcja, tak jak powiedziałeś. – AndrewC

+0

Doskonale, dziękuję – elf