<div dir="ltr"><div>Given the following code:</div><div><br></div><div>module Log where<br>import Control.Applicative<br><br>data MessageType = Info<br>                 | Warning<br>                 | Error Int<br><br>type TimeStamp = Int<br><br>data LogMessage = LogMessage MessageType TimeStamp String<br>                | Unknown String</div><div><br></div><div>I want to create a log parser like this:</div><div><br></div><div>module LogAnalysis where<br>import Log<br><br>parseMessage :: String -> LogMessage<br>parseMessage xs<br>  | length(words(xs)) < 3 = Unknown xs<br>  | notElem(head(words(xs)) ["I", "E", "W"]) = Unknown xs<br>  | otherwise = LogMessage Info 3 head(words(xs))</div><div><br></div><div>But GHC gives me "• Couldn't match type ‘[a0] -> a0’ with ‘[Char]’<br>      Expected type: String<br>        Actual type: [a0] -> a0"</div><div><br></div><div>So it thinks I am giving it the <b>function</b> head, when I would like to give it the output.</div><div><br></div><div>How do I fix this?</div><div><br></div><div>Thanks in advance,<br></div></div>