Mi dispiace di non aver trovato un modo per esprimere la domanda più chiaramente nel titolo, ma in sostanza, è questo: quasi tutti i linguaggi funzionali hanno costrutti che consentono di elaborare un elenco variabile di argomenti attraverso la ricorsione della coda , come in questo pseudocodice Erlang-ish che riassume un elenco di numeri:Qualunque linguaggio funzionale supporta la divisione e la conquista in modo nativo?
sumup(0,A) -> A.
sumup(N,A) -> sumup(N) + A.
Tuttavia, uno dei grandi appelli di linguaggi funzionali per me è il loro parallelismo intrinseco. E anche se un problema come riassumere un elenco di numeri è ovviamente abbastanza parallelizzabile, e quasi certamente sarà gestito in modo più efficiente da divide et impera, non sono a conoscenza delle caratteristiche linguistiche che rendono questo un modo naturale di programmare. Infatti, a meno che il linguaggio non abbia caratteristiche che permettano di leggere il numero di argomenti basati su una funzione e di recuperare argomenti basati su indice, non vedo come uno possa fare. Qualche linguaggio funzionale ha caratteristiche per incoraggiare la programmazione dividi e conquista?
Non completamente sicuro di cosa intendi per "dividi". Se, per "dividere", intendi la capacità di partizionare una raccolta per il calcolo ricorsivo (ad esempio unire l'ordinamento), allora qualsiasi FPL può farlo. Anche se mi chiedo, se per "dividi" intendi il partizionamento in distinti percorsi di esecuzione (ad esempio, discussioni). – Alan
Beh, non solo la possibilità di partizionare una raccolta per il calcolo ricorsivo, ma di farlo in modo più efficace della semplice ricorsione a coda. – afeldspar