| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Bio.Sequence.Functions.Marking
Synopsis
- getMarking :: (ContainsMarking s, MonadError Text m, Complementary (Element s)) => s -> Marking s -> m (NonEmpty [Element s])
- unsafeGetMarking :: (ContainsMarking s, Complementary (Element s)) => s -> Marking s -> NonEmpty [Element s]
- toMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s', MonadError Text m) => s -> [(mk, Range)] -> m s'
- unsafeToMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s') => s -> [(mk, Range)] -> s'
- addMarkings :: (ContainsMarking s, Marking s ~ mk, MonadError Text m) => s -> [(mk, Range)] -> m s
- unsafeAddMarkings :: (ContainsMarking s, Marking s ~ mk) => s -> [(mk, Range)] -> s
- listMarkings :: ContainsMarking s => s -> [Marking s]
Documentation
getMarking :: (ContainsMarking s, MonadError Text m, Complementary (Element s)) => s -> Marking s -> m (NonEmpty [Element s]) Source #
Function that retrieves all elements in IsSequence s that are covered by given Marking' s.
Returns NonEmpty list, because if Marking is present in s, then list of
all Markings for s can't be empty. If given 'Marking is not found in s, an
error will be thrown.
sequ = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4)), ("Letter B", (2, 3))] mempty
getMarking sequ "Letter A" == ['a', 'a'] :| [['a']]unsafeGetMarking :: (ContainsMarking s, Complementary (Element s)) => s -> Marking s -> NonEmpty [Element s] Source #
toMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s', MonadError Text m) => s -> [(mk, Range)] -> m s' Source #
Converts IsBareSequence s to IsMarkedSequence s' that is marked using provided list
of Markings. If at least one of ranges in given list of Markings is out of
bounds, an error will be thrown.
sequBare = Sequence ['a', 'a', 'b', 'a'] mempty mempty :: BareSequence Char
toMarked sequ [("Letter A", (0, 2)), ("Letter A", (3, 4))] :: MarkedSequence String CharunsafeToMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s') => s -> [(mk, Range)] -> s' Source #
addMarkings :: (ContainsMarking s, Marking s ~ mk, MonadError Text m) => s -> [(mk, Range)] -> m s Source #
Adds new Markings to given IsSequence s. Type of new Markings must
match type of Markings that s is already marked with. If at least one of ranges
in given list of Markings is out of bounds, an error will be thrown.
sequ = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4)), ("Letter B", (2, 3))] mempty
sequ' = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4))] mempty
addMarkings sequ' [("Letter B", (2, 3))] == sequunsafeAddMarkings :: (ContainsMarking s, Marking s ~ mk) => s -> [(mk, Range)] -> s Source #
listMarkings :: ContainsMarking s => s -> [Marking s] Source #
Retrieves all Markings from given sequence that ContainsMarking.
Result is list of Markings without dublicates.
sequ = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4)), ("Letter B", (2, 3))] mempty
listMarkings sequ == ["Letter A", "Letter B"]