Prelude function suggestions

ariep at xs4all.nl ariep at xs4all.nl
Tue Jul 27 18:44:09 EDT 2004


> {- | Compositional power of a function,
>      i.e. apply the function n times to a value. -}
> nest :: Int -> (a -> a) -> a -> a
> nest 0 f x = x
> nest n f x = f (nest (n-1) f x)

nest n f x = iterate f x !! n

That might render 'nest' somewhat superfluous.

> {- | Split the list at the occurrences of a separator into sub-list.
>      This is a generalization of 'words'. -}
> chop :: (a -> Bool) -> [a] -> [[a]]
> chop p s =
>    let (l, s') = break p s
>    in  l : case s' of
>            [] -> []
>            (_:rest) -> chop p rest

I like 'chop'. It belongs in Data.List, I'd say.

> {- | Returns 'Just' if the precondition is fulfilled. -}
> toMaybe :: Bool -> a -> Maybe a
> toMaybe False _ = Nothing
> toMaybe True  x = Just x

Could you give an example to show what makes 'toMaybe' a particularly
useful function?


More information about the Libraries mailing list