lui-0.0.1: src/Graphics/UI/LUI/List.hs
{-# OPTIONS_GHC -Wall -O2
#-}
-- TODO: Put this in a more generic library
module Graphics.UI.LUI.List(isSorted, nth) where
isSorted :: (Ord a) => [a] -> Bool
isSorted xs = and $ zipWith (<=) xs (tail xs)
-- Semantic editor combinator, like "first" or "second", but for
-- an index in a list
nth :: Int -> (a -> a) -> [a] -> [a]
nth _ _ [] = error "nth index out of range"
nth 0 func (x:xs) = func x:xs
nth n func (x:xs) = x:nth (n-1) func xs