2012-09-27 8 views
5

In Haskell tutte le funzioni sono inizialmente al curry, giusto?Haskell - About Currried

Quindi, diamo un'occhiata alla funzione max e scriverò ciò che capisco su come funziona.

Quando scrivo qualcosa di simile:

max 4 5 

Succede che un nuovo funcion viene creato ha internamente valore 4, che poi riceve un valore, quindi questa funzione viene applicata a 5 ed un corretto il valore viene restituito?

Ho detto qualcosa di sbagliato o è corretto?

+4

Ricordate persone: giustificate i vostri voti negativi nei commenti. –

+0

Immagino che siano dovuti alla domanda di errori grammaticali, che non è un buon motivo per fare un downvote ... se la domanda è difficile da capire, chiedi dei chiarimenti. –

+1

Non è possibile inoltrare per conoscenza mancante su un sito di domande e risposte, ma è possibile per mancanza di sforzo, tuttavia penso che la domanda mostri una buona comprensione e uno sforzo chiaro (riuscito) per risolvere il problema. Ho corretto parte della grammatica dell'oggetto-oggetto-verbo, perché oggetto-verbo-soggetto stava in qualche modo ossessionando il significato. – AndrewC

risposta

9

Questo è corretto. Si può ricordare ciò che accattivarsi è tutto memorizzando due delle sue identità più importanti:

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

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

Queste due identità lavorare insieme e produrre un linguaggio al curry.

+0

@ user428691 Quindi 'max 4 5' è l'abbreviazione di' (max 4) 5' e 'max 4 :: Integer -> Integer' che significa che è una funzione, proprio come hai detto tu. – AndrewC

+0

Perfetto, grazie – elf