Qual è la differenza tra un combinatore e il concatenamento di funzioni?

6

Quindi, da quello che ho letto sui combinatori, non riesco a capire come sono diversi dal semplice concatenamento delle chiamate di funzione. So che mi manca qualcosa ma non sto cercando di capire cosa mi manca. Voglio dire che g (f (x)) (dove f e g sono funzioni) è effettivamente un combinatore se gli dessi un nome diverso?

    
posta Onorio Catenacci 09.05.2013 - 04:35
fonte

1 risposta

5

Il concatenamento delle funzioni è noto come composizione delle funzioni nel mondo funzionale.

Un combinatore tuttavia è una cosa completamente diversa, l'operatore di composizione è semplicemente un combinatore.

Ho scritto un blog nel tentativo di spiegare i combinatori qui potrebbe essere d'aiuto.

In esso cerco di spiegare un combinatore è semplicemente una funzione che segue alcune regole nel caso generale, ma nel caso comune "combinator" è usato per riferirsi a una funzione che astrae un po 'di funzionalità comune che è molto di base in forma.

in calcolo combinatore SKI ci sono 3 combinatori: Kxy = x Sxyz = xz (yz) Ix = x

Questi sono combinatori perché agiscono solo in base ai loro termini e sono generalizzati a non preoccuparsi di quali siano i loro termini.

Questo sembra inutile ma comprendo che posso essere definito in termini di S e K: SKKx = Kx (Kx) = x che è equivalente a Ix che = x, il vantaggio per i combinatori è che sono completamente generalizzati a qualsiasi termine tu li passi e quindi vivono a un'astrazione di livello superiore rispetto ad altre cose.

Il combinatore di composizione è il combinatore B del sistema combinatore B, C, K, W

Ora per rendere i combinatori utili, tuttavia, devi capire quando vale la pena creare funzioni completamente generalizzate come questa. Gli parser sono l'esempio perfetto e più comune, perché un parser come concetto deve gestire un numero estremamente elevato di possibili input, quindi la capacità di generalizzare la gestione dei loro input è molto utile.

    
risposta data 09.05.2013 - 18:27
fonte

Leggi altre domande sui tag