2009-09-23 34 views
6

Sto cercando di creare un elenco in Oz utilizzando il seguente codice:Come posso creare una lista in Oz?

local Loop10 Xs in 
    proc {Loop10 I} 
     Xs={List.append Xs I} 
     if I == 10 then skip 
     else 
    {Browse I} 
    {Loop10 I+1} 
     end 
     {Browse Xs} 
    end 
{Loop10 0} 
end 

Il Mozart compiler mostra che il codice viene accettato, ma nessuna finestra Sfoglia si apre. Tutto quello che sto cercando di fare è creare una lista in Oz.

Cosa c'è che non va nel codice?

risposta

7

Non sono sicuro che questo è ciò che si vuole, ma per creare una lista di tutti i numeri interi compresi tra X e Y (compreso) si potrebbe fare:

local 
    fun {Loop From To} 
     if From > To 
     then nil 
     else From | {Loop From+1 To} 
     end 
    end 
in 
    {Browse {Loop 0 10}} % Displays: [0,1,2,3,4,5,6,7,8,9,10] 
end 
+0

Grazie. In realtà mi sono imbattuto nello stesso metodo me stesso. Sebbene per restituire un elenco corretto, il secondo argomento di Loop deve essere To | nil in modo che l'elenco venga sempre terminato con un nullo. grazie. –

+0

Oh, hai ragione. È riparato ora. – sepp2k

+1

A mio parere, è più sicuro e più logico fare "se Da yakoudbz

3

anche il motivo per cui non si ottiene qualsiasi browser finestra è perché il filo di valutazione sospendere a causa di questa linea:

Xs={List.append Xs I} 

Come è stato detto in precedenza una variabile può essere assegnato solo una volta, ma c'è qualcos'altro che non va in questa linea. Si tenta di aggiungere Xs a I ma Xs non è ancora disponibile. Il thread sospende quindi fino a quando un valore è stato assegnato a Xs.

Inserisci questo modo interattivo:

declare Xs in 
{Browse {List.append Xs [2 3 4]}} 

Come vedete non succede nulla, nessun browser si apre. Ora inserite questo:

Xs= [1] 

Dal Xs è vincolato si sblocca la prima valutazione "filo" e il browser pop-up.

P.S. Scusate la risposta in ritardo, mi sono appena interessato a Oz: P

+0

Questo ha funzionato quando ho sostituito 'List.append' con' Append' – Anand

Problemi correlati