Data.CharSet

charset-0.3.7.1: Fast unicode character sets based on complemented PATRICIA tries

Copyright | (c) Edward Kmett 2010-2011
License | BSD3
Maintainer | ekmett@gmail.com
Stability | experimental
Portability | portable
Safe Haskell | Trustworthy
Language | Haskell98

Data.CharSet

Contents

- Set type
- Operators
- Query
- Construction
- Combine
- Filter
- Map
- Fold
- Conversion
  - List
  - Ordered list
  - IntMaps
  - Array

Description

Fast set membership tests for `Char` values

Stored as a (possibly negated) IntMap and a fast set used for the head byte.

The set of valid (possibly negated) head bytes is stored unboxed as a 32-byte bytestring-based lookup table.

Designed to be imported qualified:

    import Data.CharSet (CharSet)
    import qualified Data.CharSet as CharSet

Synopsis

- data CharSet = CharSet !Bool !ByteSet !IntSet
- (\\) :: CharSet -> CharSet -> CharSet
- null :: CharSet -> Bool
- size :: CharSet -> Int
- member :: Char -> CharSet -> Bool
- notMember :: Char -> CharSet -> Bool
- overlaps :: CharSet -> CharSet -> Bool
- isSubsetOf :: CharSet -> CharSet -> Bool
- isComplemented :: CharSet -> Bool
- build :: (Char -> Bool) -> CharSet
- empty :: CharSet
- singleton :: Char -> CharSet
- full :: CharSet
- insert :: Char -> CharSet -> CharSet
- delete :: Char -> CharSet -> CharSet
- complement :: CharSet -> CharSet
- range :: Char -> Char -> CharSet
- union :: CharSet -> CharSet -> CharSet
- intersection :: CharSet -> CharSet -> CharSet
- difference :: CharSet -> CharSet -> CharSet
- filter :: (Char -> Bool) -> CharSet -> CharSet
- partition :: (Char -> Bool) -> CharSet -> (CharSet, CharSet)
- map :: (Char -> Char) -> CharSet -> CharSet
- fold :: (Char -> b -> b) -> b -> CharSet -> b
- toList :: CharSet -> String
- fromList :: String -> CharSet
- toAscList :: CharSet -> String
- fromAscList :: String -> CharSet
- fromDistinctAscList :: String -> CharSet
- fromCharSet :: CharSet -> (Bool, IntSet)
- toCharSet :: IntSet -> CharSet
- toArray :: CharSet -> UArray Char Bool

# Set type

data CharSet

Constructors

CharSet !Bool !ByteSet !IntSet |

Instances

Bounded CharSet |
Eq CharSet |
Data CharSet |
Ord CharSet |
Read CharSet |
Show CharSet |
Monoid CharSet |
Semigroup CharSet |

# Operators

(\\) :: CharSet -> CharSet -> CharSet

# Query

null :: CharSet -> Bool

O(n) worst case

size :: CharSet -> Int

O(n)

member :: Char -> CharSet -> Bool

notMember :: Char -> CharSet -> Bool

overlaps :: CharSet -> CharSet -> Bool

isSubsetOf :: CharSet -> CharSet -> Bool

isComplemented :: CharSet -> Bool

# Construction

build :: (Char -> Bool) -> CharSet

empty :: CharSet

singleton :: Char -> CharSet

full :: CharSet

insert :: Char -> CharSet -> CharSet

delete :: Char -> CharSet -> CharSet

complement :: CharSet -> CharSet

range :: Char -> Char -> CharSet

# Combine

union :: CharSet -> CharSet -> CharSet

intersection :: CharSet -> CharSet -> CharSet

difference :: CharSet -> CharSet -> CharSet

# Filter

filter :: (Char -> Bool) -> CharSet -> CharSet

partition :: (Char -> Bool) -> CharSet -> (CharSet, CharSet)

# Map

map :: (Char -> Char) -> CharSet -> CharSet

# Fold

fold :: (Char -> b -> b) -> b -> CharSet -> b

# Conversion

## List

toList :: CharSet -> String

fromList :: String -> CharSet

## Ordered list

toAscList :: CharSet -> String

fromAscList :: String -> CharSet

fromDistinctAscList :: String -> CharSet

## IntMaps

fromCharSet :: CharSet -> (Bool, IntSet)

toCharSet :: IntSet -> CharSet

## Array

toArray :: CharSet -> UArray Char Bool