Unfoldl
Posted on December 14, 2017
Tags: Haskell
{-# LANGUAGE LambdaCase #-}
module Unfoldl where
import GHC.Base (build)
import Data.Tuple (swap)
unfoldl :: (b -> Maybe (a, b)) -> b -> [a]
=
unfoldl f b
build->
(\c n let r a = maybe a (uncurry (r . (`c` a))) . f
in r n b)
-- | >>> toDigs 10 123
-- [1,2,3]
toDigs :: (Integral a, Num a) => a -> a -> [a]
=
toDigs base case
unfoldl (\0 -> Nothing
-> Just (swap (n `quotRem` base))) n