2011-11-10 13 views
7

En el lisp común, podemos usar la función remove.¿Cuál es la forma estándar de eliminar elementos de una lista en OCaml?

Parece que no existe tal método en OCaml?

+0

Exactamente cómo debe hacerse la eliminación? ¿Simplemente quieres ['filtrar'] (http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html) la lista? (['remove'] (http://www.lispworks.com/documentation/HyperSpec/Body/f%5Frm%5Frm.htm), al menos en el sentido Common Lisp es una bestia muy, muy aterradora ... comience/rangos finales, recuentos, claves y predicados, ¡oh!) –

Respuesta

14

Las listas en OCaml son inmutables. Entonces no puedes eliminar cosas de ellos. Normalmente crea otra lista que no tiene las cosas que no desea. Para esto, usaría List.filter.

Si absolutamente tiene que tener listas mutables, puede hacerlo. En Batteries hay algo llamado Dllist que podría ser como lo que quiere. (Es una lista doblemente vinculada, sin embargo, a diferencia de una lista Lisp).

Una de las mejores cosas de OCaml, en mi opinión, es que el subconjunto funcional puro es realmente bastante efectivo. Nunca necesité usar listas mutables en mis propios proyectos.

+0

Ya veo. debería usar List.filter. –

+0

Hola Jeffrey, ¿qué ocurre si quiero almacenar algunos elementos en una estructura de datos y no es adecuado escribir directamente una función recursiva para hacer eso? – computereasy

+0

Respuesta corta: ¡siempre es adecuado! :-) Respuesta más larga: puedes usar estructuras mutables si tienes una buena razón. Tendrá que hacer esto como una pregunta más específica y separada para obtener una mejor respuesta. –

Cuestiones relacionadas