Tenga paciencia porque soy muy nuevo en programación funcional y Haskell. Estoy intentando escribir una función en Haskell que toma una lista de enteros, imprime el encabezado de dicha lista y luego devuelve el final de la lista. La función debe ser del tipo [Entero] -> [Entero]. Para dar un poco de contexto, estoy escribiendo un intérprete y se llama a esta función cuando se busca su respectivo comando en una lista asociativa (la clave es el comando, el valor es la función).Haskell: E/S y regreso de una función
Este es el código que he escrito:
dot (x:xs) = do print x
return xs
El compilador da el siguiente mensaje de error:
forth.hs:12:1:
Couldn't match expected type `[a]' against inferred type `IO [a]'
Expected type: ([Char], [a] -> [a])
Inferred type: ([Char], [a] -> IO [a])
In the expression: (".", dot)
sospecho que la llamada a imprimir en la función de puntos es lo que está causando el tipo inferido para ser IO [a]. ¿Hay alguna forma de que pueda ignorar el tipo de impresión de devolución, ya que todo lo que necesito devolver es que la cola de la lista se pase a punto.
Gracias de antemano.
El [ 'Debug.Trace'] (http: // www El módulo .haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/Debug-Trace.html) también se puede usar para imprimir cosas. –