OK, è stata una lunga giornata e il mio cervello potrebbe non funzionare a livello Haskell, ma non riesco proprio a capire un esempio di "Learn You a Haskell".Applicazione funzione in Haskell
La sezione si chiama Applicazione Funzione con $, e non v'è esempio di come può essere definita $
:
($) :: (a -> b) -> a -> b
f $ x = f x
Finora tutto è chiaro. Capisco tutti gli esempi nella sezione, tranne che per l'ultimo:
ghci> map ($ 3) [(4+), (10*), (^2), sqrt]
[7.0,30.0,9.0,1.7320508075688772]
Qui map ($ 3)
tutta elenco delle funzioni e ottenere il risultato di applicazione di dette funzioni a 3
. Ma come è possibile?
Dal primo frammento di codice è chiaro che il primo argomento è una funzione, possiamo anche scrivere:
*Main> ($) sqrt 4
2.0
Ora ($ 3)
è un'applicazione parziale della funzione $
, ma 3
va sulla posizione di funzione! Quindi 3
dovrebbe essere una funzione o cosa?
C'è un altro mistero: che diamine è (4+)
? So che (+4)
è un'applicazione parziale della funzione +
, quindi (4+)
dovrebbe essere l'applicazione parziale della funzione 4
? Senza senso. Che tipo di trucco funziona qui?
possibile duplicato di [Applicazione parziale con funzioni Infix] (http://stackoverflow.com/questions/10131300/partial-application-with-infix-functions) – Lambdageek