Sono principalmente un ragazzo pratico ma trovo questo interessante.Comprendere la sequenza nella programmazione funzionale
Ho pensato al sequenziamento monadico e ci sono alcune cose che ho bisogno di chiarire. Quindi, a rischio di sembrare stupido qui è:
Il membro monadica legano
bind :: m b -> (b -> m c) -> m c
può sequenziare "azioni" dando accesso esplicito ai valori intermedi.
Come funziona questo mi danno più che il membro categorica (.)
:
(.) :: cat b c -> cat a b -> cat a c
Con questo posso sequenziare e accedi ai valori intermedi. Dopo tutto (f . g) x = f(g (x))
.
Perché è necessario il bind
per il sequenziamento se è possibile eseguire la sequenza con (.)
?
La versione monadica di '' 'è (> =>) :: Monade m => (.) (A -> mb) -> (b -> mc) -> (a -> mc) ', composizione di Kleisli. –
Questo ti dà * meno * in realtà. 'C (a, b) = a -> m b' forma una categoria con' bind' come composizione e 'return' come identità, la * Kleisli category * di' m'. –
Inoltre non è del tutto vero che in 'f (g x)' il 'g x' deve prima accadere. Questo sarebbe vero solo sotto una semantica rigorosa. Ma, così com'è, potrebbe essere prima, mentre o non del tutto. – Ingo