'valori' vs 'lista' per restituire più valori dal modulo Lisp

4

Qual è la differenza tra l'utilizzo di (values …) rispetto a (list …) (o letteralmente '(one two three …) ) per restituire più valori da un lambda (o altro progn implicito)? Crea qualche colla speciale a multiple-value-bind ? Superficialmente, non vedo differenze e sono curioso di sapere se si tratta semplicemente di una convenzione per valori di ritorno multipli.

    
posta RubyTuesdayDONO 05.01.2015 - 20:01
fonte

1 risposta

7

Questa domanda ha già avuto risposta su SO: funzione valori in Common Lisp .

In breve, più valori è una funzione per restituire molti oggetti senza allocare memoria aggiuntiva. Per esempio. floor deve restituire due valori: il quoziente e il resto. Può restituire un list (o un pair ) oppure può restituire due valori . Nel primo caso dovrà allocare una cella contro ogni chiamata, in il secondo non lo farà.

Questo significa che più valori hanno alcune limitazioni (non si possono restituire più di 20 valori portably ).

    
risposta data 05.01.2015 - 21:02
fonte

Leggi altre domande sui tag