ho notato come stavo giocando intorno con Haskell oggi che è possibile fare qualcosa di simile
($ 4) (> 3)
che produce True
. Che cosa sta succedendo qui? Sarebbe bello avere intuito.
La mia ipotesi? Sembra che l'($ 4)
sia un'applicazione di funzione incompleta, ma dove sono confuso è che $
è un operatore infisso, quindi non dovrebbe sembrare (4 $)
? Questo non è compilato, quindi chiaramente no, il che mi porta a credere che non capisco veramente cosa sta succedendo. Il termine (>3)
ha senso per me, perché se si fornisce qualcosa come (\x -> x 4) (>3)
, si finisce con lo stesso risultato.
Le risposte sono eccellenti, ma mi piacerebbe aggiungere che '(\' op \ 'e)' è zucchero sintattico per '(\ x -> x \' op \ 'e)' e '(e \' op \ ')' per '(\ x -> e \' op \ 'x)', dove '\' op \ '' è operatore (normale come '+', '-' etc, o funzione in apici inversi). – Vitus
leggi '(f $)' come "_call the_ function f"; leggi '($ 4)' come "_call with_ 4 come argomento". "Chiama con 4" "è maggiore di 3?" è "4 è maggiore di 3?". '($ 4) (> 3) == (> 3) 4 == 4> 3 == (4>) 3'. –