iterando sobre una lista y eliminando elementos en haskell

Necesito escribir una función que tome una lista y devuelva una nueva lista. Se crea una nueva lista eliminando un elemento si hay un elemento más pequeño al final de la lista. Por ejemplo: minimum [3, 2, 5, 2, 5] debería regresar [2,2,5]

minimum (x : xs)
   | null xs
      = []
   | otherwise
      = let
         minelem (x : xs) n
            =
               if x < head(xs)
                  then drop n (x : xs) --how to go to the end of the list here? 
                  else --and here?
      in minimum (x : xs) 1

minimum _
   = []   

Es parte de una tarea. Por favor ayuda a terminar esta función.

preguntado el 22 de mayo de 12 a las 20:05

¿Se le dio esa estructura y se le pidió que la completara, o fue eso lo que se le ocurrió hasta ahora en sus intentos de resolver el problema? -

es lo que se me ocurrió. Puede cambiarlo, pero recuerde que estoy aprendiendo haskell elemental. Gracias -

La | null xs = [] significa que produce [] para todas las entradas. Probablemente. -

@Bob Esta es tu tarea. Si no aprende a escribirlo usted mismo, está perdiendo el tiempo tomando el curso. -

copiar el código de otras personas no lo hará. tienes que probar cosas. Comience con tareas más pequeñas y fáciles; por ejemplo, puede escribir una función que solo devuelva el valor mínimo de una lista, como un solo elemento, en lugar de intentar construir la lista. -

1 Respuestas

Te he dejado algunos datos para que los completes.

minimum' []       = []                     -- base case
minimum' (x : xs) = case minimum' xs of    -- recursive case
    []       -> ...
    (y : ys) -> ...                        -- clue: none of the ys are smaller than y

contestado el 22 de mayo de 12 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.