Prelude function suggestions

Henning Thielemann iakd0 at clusterf.urz.uni-halle.de
Mon Jul 26 06:34:36 EDT 2004


There are some functions that I regularly use which are so general that I
wonder if they should be in the Prelude. Maybe I have overlooked them or
some generalizations of them. Here are the ones that I most frequently
use:

{- | 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)

{- | 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

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





More information about the Libraries mailing list