Come posso dare un senso alla parola "Functor" da un punto di vista semantico? [chiuso]

6

Quando si affrontano nuove parole in gergo di programmazione, prima cerco di ragionare su di esse da un punto di vista semantico ed etimologico quando possibile (cioè quando non sono acronimi oscuri). Ad esempio, è possibile ottenere l'inizio di un suggerimento su ciò che le cose come Polymorphism o anche Monad sono circa con l'aiuto di un piccolo greco / latino. Per lo meno, una volta che hai imparato il concetto, la parola stessa sembra andare d'accordo. Immagino che sia parte del perché chiamiamo nomi di cose, per rendere più fluenti rappresentazioni mentali e associazioni.

Ho trovato Functor un dado più duro da decifrare. Non tanto il significato di C ++ - un oggetto che agisce ( -or ) come una funzione ( funct - ), ma i vari significati funzionali (in ML, Haskell) sicuramente mi ha lasciato perplesso.

Dall'articolo (matematica) di Functor Wikipedia , sembra che la parola sia stata presa in prestito dalla linguistica. Penso di ottenere ciò che una "parola funzione" o "funtore" significa in quel contesto - una parola che "fa funzionare" in contrasto con una parola che "ha senso". Ma non posso davvero collegarlo alla nozione di Functor nella teoria delle categorie, per non parlare della programmazione funzionale. Ho immaginato un Functor come qualcosa che crea funzioni, o si comporta come una funzione, o abbreviazione di "costruttore funzionale", ma nessuno di questi sembra adattarsi ...

In che modo i programmatori esperti con esperienza ragionano su questo? Hanno solo bisogno di un'etichetta per mettere di fronte a un concetto e stare bene con esso? In generale, non è in parte il motivo per cui la programmazione funzionale avanzata è difficile da comprendere per i comuni mortali rispetto a, per esempio, OO - molto astratto in quanto non si può riferirlo a qualcosa di familiare?

Nota che non ho bisogno di una definizione di Functor, solo una spiegazione che mi permetta di collegarlo a qualcosa di più tangibile, se ce n'è.

    
posta guillaume31 21.08.2014 - 17:59
fonte

2 risposte

4

Nella teoria delle categorie, i medici descrivono le relazioni tra categorie descrivendo alcune o tutte le mappature da una categoria all'altra. Ci sono così tante idee filosofiche racchiuse in questo (tutto bello) è difficile dire molto che lo mette in relazione con la programmazione o con altre cose del mondo reale che non lo derubano di parte della sua intrinseca completezza, ma qui va.

Immagina un set di dati e un insieme di funzioni che potresti eseguire su quel set di dati. Ora immagina un altro set di dati (magari guardando o sentendoti molto diverso dal primo) e un insieme di funzioni che potresti eseguire su quel set di dati. Un funtore tra i due set di dati + funzione 'cose' mapperebbe il set di dati + funzione cosa 1 a set di dati + funzione cosa 2 in un modo significativo, cioè collegherebbe funzioni a funzioni in modo da preservare alcune proprietà delle funzioni tra le cose. Pertanto, i Functional esprimono relazioni tra "significati" espressi dalle funzioni in ogni "cosa".

È quasi come schemi di programmazione: il primo set di dati e la funzione "cosa" potrebbero essere "persone registrate per votare" e funzioni come "storia di votazione e probabilità di votare per funzioni / mapping di parti diverse", il secondo set di dati e la funzione " cosa 'potrebbe essere' la previsione di interazione di spin in gruppi di atomi di quark negli atomi 'e funzioni' sotto diverse influenze gravitazionali 'e' probabilità di rottura totale dei quark 'o alcune cose così strane. Un funtore mapperebbe tra un "mondo" (set di dati e funzioni su di esso) e un altro in un modo che ti permettesse di parlare di come testare / esprimere verità sui risultati funzionali in un mondo e trasferire i risultati in un altro perché sai come le funzioni e i set di dati sono correlati in modo specifico.

Le mappe funzionali relazioni tra semantica cioè i meccanismi di ordine superiore per esprimere elementi comuni tra i significati dei sistemi funzionali.

Mi spiace, è chiaro come posso esprimere i funtori teorici di categoria in un sommario del "mondo reale".

    
risposta data 21.08.2014 - 19:28
fonte
6

Per quanto ne so, sono solo parole di matematica che devi memorizzare, simili a "ipotenusa". Non fecero clic su di me finché non smisi di pensarli come un concetto astratto autonomo con nomi che sicuramente avevano senso per qualcuno e iniziarono a pensarli come se fossero stati nominati male interfacce che i tipi implementano.

Senza il bagaglio storico della teoria delle categorie, i programmatori chiamerebbero un Functor a Mappable o qualcosa del genere. Ahimè, non ci hanno chiesto, quindi siamo bloccati con i nomi che i matematici hanno inventato.

    
risposta data 21.08.2014 - 19:17
fonte

Leggi altre domande sui tag