$
mezzi "Funzione di applicazione".
> :t ($)
($) :: (a -> b) -> a -> b
$
può essere utilizzato per fornire un parametro di una funzione. In questo caso lo si utilizza per applicare "password" a ciascuna funzione i "requisiti" hanno e hanno tipo di:
-- because $ is infix, left and right param are the 1st and 2nd respectively
-- partial apply with the right param will still need the left one (a->b)
:t ($ "a")
($ "a") :: ([Char] -> b) -> b --where "b" is a bool in this case
sembra familiare?
:t (\f -> f "a")
(\f -> f "a") :: ([Char] -> b) -> b
$ password
e (\f -> f password)
hanno lo stesso tipo e comportamento: prendere una funzione e applicare sopra a
.
Quando si deve applicare una funzione su un elenco, basta mettere la funzione da sola. Ma in questo caso è necessario applicare le funzioni da un elenco a "password". Se si omette lo $
, ad esempio, tenterà di eseguire "password (any isLower)", che non ha alcun senso.
Ma è possibile farlo utilizzando un lambda come all (\f -> f password) ...
per applicare ciascuna funzione a password
oppure è possibile farlo con $
.
fonte
2015-05-11 08:58:45
Ti aiuta se ti dico che '$ password' è lo stesso di' (\ f -> f password) '? Forse puoi lavorare fuori da lì. –
@JoachimBreitner è una bella scorciatoia! – dsign