Salve a tutti,
l'altro giorno sulla lezione dei parser mi sono letteralmente perso, forse anche per via delle slide della lezione molto stringate. Sapreste darmi qualche link o qualche dritta su cosa sono e come utilizzare i parser in Haskell ?

Certamente so cos'è a grossi linee un parser, ma semplicemente non riesco a capire cosa sono e a cosa servono queste funzioni parser in Haskell.

Ad esempio questo codice, sarebbe l'equivalente di un typdef del C? come lo dovrei interpretare?

codice:
type Parser a = String -> [(a,String)]

Questa funzione qui, sopratutto il tipo, come va interpretata? Cioè qui "Parser" sembra più una funzione che un tipo. Ma allora Type a cosa serve? e la prima riga di qui sotto cosa fignifica? Oppure vuol significare di sostituire Char al posto di a nel tipo Parser? (e quindi sono una specie di java generics?)

codice:
item :: Parser Char
item  = \inp -> case inp of
                  []  -> []
                  (x:xs) -> [(x,xs)]
Addirittura alla fine le combina le due scrivendo

codice:
Parser item "abc"
So di avere le idee un pò confuse ed il problema è proprio questo.

Vi ringrazio in anticipo,
Neptune.