componibilità, applicata alle funzioni, significa che le funzioni sono più piccole e ben definita, così facile da integrare in altre funzioni (ho visto questa idea nel libro "la gioia di clojure")
il concetto può applicarsi ad altre cose che dovrebbero essere composte in qualcos'altro.
lo scopo di componibilità è riutilizzo. per esempio, una funzione ben-build (componibili) è più facile da riutilizzare
macro non sono così ben componibili perché non si può passare come parametri
blocco sono stronzate, perché è possibile dare loro davvero dei nomi (definirli bene) o riutilizzarli. basta fare loro inplace
linguaggi imperativi non sono così componibile perché (alcuni di loro, almeno) non hanno chiusure. se vuoi passare la funzionalità come parametro, sei fregato. devi costruire un oggetto e passare quello; diniego qui: questa ultima idea io non sono del tutto convinto è vero, quindi, la ricerca di più prima di prendere per scontato
un'altra idea su linguaggi imperativi è che essi non compongono bene perché esse implicano stato (da wikipedia knowledgebase :) "Programmazione imperativa - descrive il calcolo in termini di istruzioni che modificano lo stato di un programma").
stato non compongono bene perché sebbene in un input sia stato assegnato un "qualcosa" specifico, quel "qualcosa" genera un output in base al suo stato. stato interno diverso, comportamento diverso. e così puoi dire addio a ciò che ti aspetti che accada.
con stato, si dipende molto dalla conoscenza dello stato corrente di un oggetto ... se si desidera prevederne il comportamento. più roba per mantenere nella parte posteriore della vostra mente, meno componibile (ricordate ben definito o "piccolo e semplice", come in "facile da usare"??)
ps: il pensiero di apprendimento clojure , eh? investigando ...? buon per te !: P
possibile duplicato di [Che cosa significa compositività nel contesto della programmazione funzionale?] (Http://stackoverflow.com/questions/2887013/what-does-composability-mean-in-context-of-functional- programmazione) – missingfaktor