que - syntax haskell
Haskell: error de anĂ¡lisis en el patrĂ³n (2)
¿A quién le gusta decirme qué está mal con este código (sintácticamente)?
-- merge two sorted lists
mergeX [] b res = b ++ res
mergeX a [] res = a ++ res
mergeX a:as b:bs res
| a > b = mergeX as b:bs a:res
| otherwise = mergeX a:as bs b:res
Interprete:
Error de parse en el patrón: mergeX
Necesita poner patrones de constructor (o como se llamen) en parantheses.
mergeX (a:as) (b:bs) res
Necesitas un paréntesis
mergeX [] b res = b ++ res
mergeX a [] res = a ++ res
mergeX (a:as) (b:bs) res
| a > b = mergeX as (b:bs) (a:res)
| otherwise = mergeX (a:as) bs (b:res)
La razón es porque :
tiene una prioridad menor que la aplicación de función, por lo que mergeX a:as b:bs res
se analizará como:
(mergeX a):(as b):(bs res)
que es un error