<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">I am relatively new to Haskell, having spent the last half a decade or so developing in Ruby. I am attempting to (for the sake of exercise) implement a split function from the ground up in Haskell, and for the life of me I can not figure out why it doesn't work. Without further ado:</span><div style="font-family:arial,sans-serif;font-size:13px">
<br></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px"><div>    module MyAwesomeModule where</div><div><br></div><div>    import qualified Data.Text as T</div>
<div><br></div><div>    outputSplit :: String -> [String] -> IO ()</div><div>    outputSplit s tokens = print $ splitRecursive tokens s</div><div><br></div><div>    splitRecursive :: [String] -> String -> [String]</div>
<div>    splitRecursive tokens s = splitOneOf tokens s</div><div><br></div><div>    splitOneOf :: [String] -> String -> [String]</div><div>    splitOneOf [] s = []</div><div>    splitOneOf (t:tokens) s =  map (splitOneOf tokens)(map (T.unpack) (T.splitOn (T.pack t) (T.pack s))) ++ (splitOneOf tokens s)</div>
</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">which errors out with:</div>
<div style="font-family:arial,sans-serif;font-size:13px"><div>   Couldn't match type `[Char]' with `Char'</div><div>    Expected type: String -> String</div><div>      Actual type: String -> [String]</div>
<div>    In the return type of a call of `splitOneOf'</div><div>    In the first argument of `map', namely `(splitOneOf tokens)'</div><div>    In the first argument of `(++)', namely</div><div>      `map</div>
<div>         (splitOneOf tokens)</div><div>         (map (T.unpack) (T.splitOn (T.pack t) (T.pack s)))'</div><div>Failed, modules loaded: none.</div></div><div style="font-family:arial,sans-serif;font-size:13px"><br>
</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">If anyone has any ideas, that would be awesome! And yes, I'm aware of Data.List.Split, like I said, trying to roll my own....</div>
</div>