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'è.