Maintainer | Dom De Re |
---|---|
Safe Haskell | None |
Refer to the GeoJSON Spec http://geojson.org/geojson-spec.html#linestring
A LinearString is a List with at least 2 elements
- data LineString a
- data ListToLineStringError
- fromLineString :: LineString a -> [a]
- fromList :: Validate v => [a] -> v ListToLineStringError (LineString a)
- makeLineString :: a -> a -> [a] -> LineString a
- lineStringHead :: LineString a -> a
- lineStringLast :: LineString a -> a
- lineStringLength :: LineString a -> Int
Type
data LineString a Source
a LineString has at least 2 elements
Functor LineString | |
Foldable LineString | This instance of Foldable will run through the entire ring, closing the loop by also passing the initial element in again at the end. (\xs -> (foldr (:) [] xs) == (fromLineString xs)) (xs :: LineString Int) (\xs -> (lineStringHead xs) == (foldr'' (\a -> const a) 0 xs)) (xs :: LineString Int) |
Traversable LineString | |
Eq a => Eq (LineString a) | |
Show a => Show (LineString a) | |
ToJSON a => ToJSON (LineString a) | |
(FromJSON a, Show a) => FromJSON (LineString a) |
data ListToLineStringError Source
When converting a List to a LineString, here is a list of things that can go wrong:
- The list was empty * The list only had one element
Functions
fromLineString :: LineString a -> [a]Source
This function converts it into a list and appends the given element to the end.
(xs -> safeLast (fromLineString xs) == Just (lineStringHead xs)) (xs :: LineString Int)
(xs -> length (fromLineString xs) >= 4) (xs :: LineString Int)
fromList :: Validate v => [a] -> v ListToLineStringError (LineString a)Source
creates a LineString out of a list of elements, if there are enough elements (needs at least 2) elements
>>>
fromList [] :: Validation ListToLineStringError (LineString Int)
Failure List Empty
>>>
fromList [0] :: Validation ListToLineStringError (LineString Int)
Failure Singleton List
>>>
fromList [0, 1] :: Validation ListToLineStringError (LineString Int)
Success [0,1]
>>>
fromList [0, 1, 2] :: Validation ListToLineStringError (LineString Int)
Success [0,1,2]
>>>
fromList [0, 1, 2, 4, 5, 0] :: Validation ListToLineStringError (LineString Int)
Success [0,1,2,4,5,0]
:: a | The first element |
-> a | The second element |
-> [a] | The rest of the optional elements |
-> LineString a |
Creates a LineString
makeLineString x y zs
creates a LineString
homomorphic to the list [x, y] ++ zs
lineStringHead :: LineString a -> aSource
returns the element at the head of the string
lineStringLast :: LineString a -> aSource
returns the last element in the string
lineStringLength :: LineString a -> IntSource
returns the number of elements in the list, including the replicated element at the end of the list.
(xs -> lineStringLength xs == (length (fromLineString xs))) (xs :: LineString Int)