2011-10-03 5 views
5

tener un problema con la codificación con miranda sólo soy un novato en la programación funcional así le da una palmada duro si ive agradable en una buena error fácil de lo que aprendoMiranda error no puede unificar [[Char]] con [Char] en la línea 12

de todos modos tengo un error en la línea 12 con un problema con unifyin char con char mi idea es verificar que algo se deletree bien al filtrarlo con el diccionario que sería tanto una lista de palabras como otra lista de un archivo agregado juntos

esta es mi línea 12

= [filter (= typed) ((read file) ++ dictionary)] 

y este es el resto de mi programa hasta ahora

filename == [char] 
word == [ char ] 
dictionary :: [ word ] 



spell:: filename -> filename -> [ char ] 
look:: word -> filename ->[[[ char ]]] 


look typed file 
= [filter (= typed) ((read file) ++ dictionary)] 

dictionary = 
["aardvark","bell","camp","dictionary","editor","file","ground", 
"grounds","help","intelligent","joint","kettle","light","memory", 
"nettle","orange","quite","research","standard","terminal", 
"umbrella","violin","water","xenon","yellow","zoo","aaa","abb", 
"acc","add","aee"] 

manera puede alguien señalar dónde i'v salido mal?

+2

+1 por usar Miranda, esto es genial. – Ingo

Respuesta

4

Nunca he usado Miranda, pero al haber usado Haskell, parece que el problema es que estás intentando agregar una cadena y una lista de cadenas; Sin embargo, supongo que ++ necesita dos listas del mismo tipo (como en Haskell):

(++) :: [a] -> [a] -> [a] 

Pero read file es de tipo [char], y el diccionario es de tipo [[char]].

Tratar de sustituir estos en la firma tipo para ++ hace que el error de tipo:

(++) :: [char] -> [[char]] -> ?? -- type error!! 

Tal vez desea dividir (read file) en palabras antes de añadirla a dictionary. Entonces estaría agregando [[char]] a [[char]], que funcionará perfectamente.

Nota No sé nada sobre Miranda: esta respuesta se basa en mirar su código, el mensaje de error que dio y mi experiencia con Haskell (donde he hecho montones de errores similares).

+0

gracias lo intentaré ver si funciona – user23012