"Returns the first element of a sequence"
@inline
+first :: [a] -> a
first l = l!0
"Returns the last element of a sequence"
@inline
+last :: [a] -> a
last l = l!(length l-1)
instance IndexedSequence [] where
"""
index :: [(a,b)] -> a -> Maybe b
+ """
+ Given a list of elements, the function produces its characteristic function.
+ """
+ indexSet :: [a] -> a -> Boolean
+
"""
Given a list of values and a function computing a key for each value, the function produces a function that finds a value
effeciently for the given key.
transpose [[1,2,3],[4,5,6]] == [[1,4],[2,5],[3,6]]
transpose [[1,2],[3,4,5]] == [[1,3],[2,4],[5]]
"""
+transpose :: [[a]] -> [[a]]
transpose xss = [[xs!i | xs <- xss, i < length xs]
| i <- [0..maximum [length xs | xs <- xss]-1]]