On Saturday 03 July 2010 3:57:34 pm Thomas Hartman wrote: > When I load up Control.Applicative in ghci and try, eg > > many [1,2] or many (Just 1) or some [1,2] or some (Just 1) > > this never returns. > > What are the practical uses of these combinators, or for using the > Alternative class in general?
import Control.Applicative import Control.Monad import Control.Monad.State type M = StateT [Int] [] pluck :: M Int pluck = do l <- get case l of [] -> empty x:xs -> put xs *> pure x {- *Main> runStateT (many pluck) [1..4] [([1,2,3,4],[]),([1,2,3],[4]),([1,2],[3,4]),([1],[2,3,4]),([],[1,2,3,4])] -} -- Dan _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe