2011-11-10 18 views
7

Nella modalità comune, è possibile utilizzare la funzione remove.Qual è il modo standard per rimuovere un elemento da un elenco in OCaml?

Sembra che non ci sia un tale metodo in OCaml?

+0

Esattamente come deve essere eseguita la rimozione? Vuoi semplicemente ['filter'] (http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html) l'elenco? (['remove'] (http://www.lispworks.com/documentation/HyperSpec/Body/f%5Frm%5Frm.htm), almeno nel senso comune di Lisp è una bestia molto, molto spaventosa ... inizio/end range, counts, keys e predicates, oh my!) –

risposta

14

Gli elenchi in OCaml sono immutabili. Quindi non puoi rimuovere le cose da loro. Normalmente crei un'altra lista che non ha le cose che non vuoi. Per questo, useresti List.filter.

Se è necessario disporre di elenchi modificabili, è possibile. In Batterie c'è qualcosa chiamato Dllist che potrebbe essere come quello che vuoi. (È una lista doppiamente collegata, tuttavia, a differenza di una lista Lisp).

Una delle grandi cose di OCaml, secondo me, è che il puro sottoinsieme funzionale è davvero molto efficace. Non ho mai avuto bisogno di usare liste mutabili nei miei progetti.

+0

Vedo. dovrei usare List.filter. –

+0

Ciao Jeffrey, cosa succede se voglio memorizzare alcuni elementi in una struttura dati, e non è adatto scrivere direttamente una funzione ricorsiva per farlo? – computereasy

+0

Risposta breve: è sempre adatto! :-) Risposta più lunga: puoi usare strutture mutevoli se hai una buona ragione. Dovrai chiederlo come una domanda più specifica e separata per ottenere una risposta migliore. –

Problemi correlati