Safe Haskell | None |
---|---|
Language | Haskell98 |
JSString standard functions, to make them a more viable alternative to the horribly inefficient standard Strings.
Many functions have linear time complexity due to JavaScript engines not implementing slicing, etc. in constant time.
All functions are supported on both client and server, with the exception
of match
, matches
, regex
and replace
, which are wrappers on top of
JavaScript's native regular expressions and thus only supported on the
client.
- empty :: JSString
- singleton :: Char -> JSString
- pack :: [Char] -> JSString
- cons :: Char -> JSString -> JSString
- snoc :: JSString -> Char -> JSString
- append :: JSString -> JSString -> JSString
- replicate :: Int -> Char -> JSString
- unpack :: JSString -> [Char]
- head :: JSString -> Char
- last :: JSString -> Char
- tail :: JSString -> JSString
- drop :: Int -> JSString -> JSString
- take :: Int -> JSString -> JSString
- init :: JSString -> JSString
- splitAt :: Int -> JSString -> (JSString, JSString)
- null :: JSString -> Bool
- length :: JSString -> Int
- any :: (Char -> Bool) -> JSString -> Bool
- all :: (Char -> Bool) -> JSString -> Bool
- map :: (Char -> Char) -> JSString -> JSString
- reverse :: JSString -> JSString
- intercalate :: JSString -> [JSString] -> JSString
- foldl' :: (ToAny a, FromAny a) => (a -> Char -> a) -> a -> JSString -> a
- foldr :: (ToAny a, FromAny a) => (Char -> a -> a) -> a -> JSString -> a
- concat :: [JSString] -> JSString
- concatMap :: (Char -> JSString) -> JSString -> JSString
- data RegEx
- match :: RegEx -> JSString -> [JSString]
- matches :: JSString -> RegEx -> Bool
- regex :: JSString -> JSString -> RegEx
- replace :: JSString -> RegEx -> JSString -> JSString
Documentation
Building JSStrings
replicate :: Int -> Char -> JSString Source
O(n) Create a JSString containing n
instances of a single character.
Deconstructing JSStrings
tail :: JSString -> JSString Source
O(n) All elements but the first of a JSString. Returns an empty JSString if the given JSString is empty.
init :: JSString -> JSString Source
O(n) All elements but the last of a JSString. Returns an empty JSString if the given JSString is empty.
Examining JSStrings
any :: (Char -> Bool) -> JSString -> Bool Source
O(n) Determines whether any character in the string satisfies the given predicate.
all :: (Char -> Bool) -> JSString -> Bool Source
O(n) Determines whether all characters in the string satisfy the given predicate.
Modifying JSStrings
intercalate :: JSString -> [JSString] -> JSString Source
O(n) Join a list of JSStrings, with a specified separator. Equivalent to
join
.
foldl' :: (ToAny a, FromAny a) => (a -> Char -> a) -> a -> JSString -> a Source
O(n) Left fold over a JSString.
foldr :: (ToAny a, FromAny a) => (Char -> a -> a) -> a -> JSString -> a Source
O(n) Right fold over a JSString.
concatMap :: (Char -> JSString) -> JSString -> JSString Source
O(n) Map a function over a JSString, then concatenate the results.
Note that this function is actually faster than map
in most cases.
Regular expressions (client-side only)
match :: RegEx -> JSString -> [JSString] Source
O(n) Find all strings corresponding to the given regular expression.
matches :: JSString -> RegEx -> Bool Source
O(n) Determines whether the given JSString matches the given regular expression or not.
O(n) Compile a regular expression and an (optionally empty) list of flags
into a RegEx
which can be used to match, replace, etc. on JSStrings.
The regular expression and flags are passed verbatim to the browser's RegEx constructor, meaning that the syntax is the same as when using regular expressions in raw JavaScript.