"Introduction to Caml" dicePerché preferire la conversione in tuple in OCaml?
nota, in Caml è meglio usare definizioni di funzioni al curry per le funzioni a più argomenti, non tuple.
quando si confrontano le convenzioni di chiamata 'a -> 'b -> 'c
con 'a * 'b -> 'c
.
Quando si lavora con SML/NJ mi sono abituato usando tipi tuple sia per l'input e l'output: ('a * 'b) -> ('c * 'd)
così usando tuple esprimere più ingressi sembra simmetrica con il modo esprimo uscite multiple.
Perché è consigliabile il currying per le dichiarazioni di funzione OCaml rispetto agli argomenti di tupla? È solo la maggiore flessibilità che deriva dal permettere la valutazione curry/parziale, o c'è qualche altro vantaggio che deriva dai dettagli di implementazione del compilatore OCaml?
La scelta di eseguire la maggior parte delle funzioni in modalità Caml-light e versioni successive è spiegata nel rapporto "L'esperimento ZINC: un'implementazione economica del linguaggio ML". Una cosa che ricordo è che con lo schema di valutazione appropriato (descritto nel report), una funzione al curry non richiede allocazione per essere chiamata. http://caml.inria.fr/pub/papers/xleroy-zinc.ps.gz –
@PascalCuoq, mentre una tupla deve essere allocata, decompressa e poi GCed? –
Sì, se la funzione deve essere chiamata anche con tuple preesistenti ('ft'), non c'è modo di aggirare il fatto che una tuple temporanea di breve durata' (x, y) 'deve essere allocata per applicare' f' a quando ciò che si ha è solo 'x' e' y'. –