[Haskell-cafe] Head and tail matching question

Olivier Boudry olivier.boudry at gmail.com
Mon Jun 11 11:26:42 EDT 2007


Hi all,

I'm trying to write a untab function that would split a string on tabs
and return a list. Code is here.

import Data.List (break, unfoldr)
import Data.Char (String)

untab :: String -> [String]
untab s = unfoldr untab' s

untab' :: String -> Maybe (String, String)
untab' s | s == "" = Nothing
         | otherwise = Just (h, ts)
         where (h, t:ts) = break (== '\t') s

This code raises an exception when handling the last portion of the
string. Break returns a ("something", "") and t:ts cannot match on "".

I was wondering if there way a clean way of handling this last case
without adding tons of code. Some kind of "idiomatic expression" ;-)

Thanks,

Olivier.


More information about the Haskell-Cafe mailing list