<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>