Qual è il modo corretto di utilizzare la monade "ap" in Haskell? Voglio fare qualcosa di simile a questo:Haskell Quine: "ap" Monad
main = (putStr . ap (++) show) "main = (putStr . ap (++) show) "
ma ottengo l'errore "Non soggetto: 'ap'."
L'utilizzo di "import Control.Monad" non fa nulla. E ho provato dando
"ap :: Monad m => m (a -> b) -> m a -> m b"
tanto sono "La firma tipo per` ap' manca un accompagnamento vincolante"
E in alternativa, se vogliamo evitare le importazioni, invece di importare entrambi i moduli possiamo semplicemente usare '(\ fgx -> fx (gx))' (il combinatore S, che '(<*>)' e 'ap' sono tipo versioni generiche di classe). –
Grazie mille! – GossJ
@sacundim: chi ridefinire una funzione di libreria standard solo per "evitare le importazioni"? Voglio dire, avrai bisogno di importare comunque per qualsiasi programma non banale –