
27 Jun
2007
27 Jun
'07
3:35 p.m.
J. Garrett Morris wrote:
More generally, that's unfoldr:
Prelude> :t Data.List.unfoldr Data.List.unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
unfoldr represents the end of the unfold explicitly (using Nothing) instead of implicitly (using the empty list).
Duh... of course it does. :-S Silly thing is, I use unfoldr all the time - for converting integers to bits. *sigh* Of course, that solves the problem of just wanting to chop the input into chunks. It works less well if you want to do complicated recursive stuff. But IIRC the Parsec library supports parsing of arbitrary tokens (although presumably they have to be in Eq?) so maybe I should revise that...