AhoCorasick-0.0.3: Aho-Corasick string matching algorithm

Text.AhoCorasick

Description

Aho-Corasick string matching algorithm

Simplest example:

```example1 = mapM_ print \$ findAll simpleSM "ushers" where
simpleSM = makeSimpleStateMachine ["he","she","his","hers"]
```
```Position {pIndex = 1, pLength = 3, pVal = "she"}
Position {pIndex = 2, pLength = 2, pVal = "he"}
Position {pIndex = 2, pLength = 4, pVal = "hers"}
```

With data:

```example2 = mapM_ print \$ findAll sm "ushers" where
sm = makeStateMachine [("he",0),("she",1),("his",2),("hers",3)]
```
```Position {pIndex = 1, pLength = 3, pVal = 1}
Position {pIndex = 2, pLength = 2, pVal = 0}
Position {pIndex = 2, pLength = 4, pVal = 3}
```

Step-by-step state machine evaluation:

```example3 = mapM_ print \$ next sm "ushers" where
sm = makeSimpleStateMachine ["he","she","his","hers"]
next _ [] = []
next sm (s:n) = let (SMStepRes match nextSM) = stateMachineStep sm s in
(s, match) : next nextSM n
```
```('u',[])
('s',[])
('h',[])
('e',[(3,"she"),(2,"he")])
('r',[])
('s',[(4,"hers")])
```

# Documentation

data (Eq keySymb, Hashable keySymb) => StateMachine keySymb val Source

Instances

 (Eq keySymb, Hashable keySymb, Show keySymb, Show val) => Show (StateMachine keySymb val)

makeStateMachine :: (Eq keySymb, Hashable keySymb) => [([keySymb], val)] -> StateMachine keySymb valSource

makeSimpleStateMachine :: (Eq keySymb, Hashable keySymb) => [[keySymb]] -> StateMachine keySymb [keySymb]Source

findAll :: (Eq keySymb, Hashable keySymb) => StateMachine keySymb val -> [keySymb] -> [Position val]Source

data Position val Source

Constructors

 Position FieldspIndex :: Int pLength :: Int pVal :: val

Instances

 Show val => Show (Position val)

stateMachineStep :: (Eq keySymb, Hashable keySymb) => StateMachine keySymb val -> keySymb -> SMStepRes keySymb valSource

data (Eq keySymb, Hashable keySymb) => SMStepRes keySymb val Source

Constructors

 SMStepRes FieldssmsrMatch :: [(KeyLength, val)] smsrNextSM :: StateMachine keySymb val

Instances

 (Eq keySymb, Hashable keySymb, Show keySymb, Show val) => Show (SMStepRes keySymb val)

resetStateMachine :: (Eq keySymb, Hashable keySymb) => StateMachine keySymb val -> StateMachine keySymb valSource