summaryrefslogtreecommitdiff
path: root/edit-lens/src/Control/Edit
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2019-06-07 09:08:42 +0200
committerGregor Kleen <gkleen@yggdrasil.li>2019-06-07 09:08:42 +0200
commita29cce747f3717e32231c9a92b40be12832037b6 (patch)
tree70f399682dec8657719eae4358e87cdc24bbf42f /edit-lens/src/Control/Edit
parent9a02751c1e588a5bbb83bb7e543c26486d3079d5 (diff)
downloadincremental-dfsts-a29cce747f3717e32231c9a92b40be12832037b6.tar
incremental-dfsts-a29cce747f3717e32231c9a92b40be12832037b6.tar.gz
incremental-dfsts-a29cce747f3717e32231c9a92b40be12832037b6.tar.bz2
incremental-dfsts-a29cce747f3717e32231c9a92b40be12832037b6.tar.xz
incremental-dfsts-a29cce747f3717e32231c9a92b40be12832037b6.zip
Finish for submission
Diffstat (limited to 'edit-lens/src/Control/Edit')
-rw-r--r--edit-lens/src/Control/Edit/String.lhs4
-rw-r--r--edit-lens/src/Control/Edit/String/Affected.lhs2
2 files changed, 3 insertions, 3 deletions
diff --git a/edit-lens/src/Control/Edit/String.lhs b/edit-lens/src/Control/Edit/String.lhs
index c1411cf..f0ca588 100644
--- a/edit-lens/src/Control/Edit/String.lhs
+++ b/edit-lens/src/Control/Edit/String.lhs
@@ -24,7 +24,7 @@ import Data.Monoid
24\end{comment} 24\end{comment}
25 25
26\begin{defn}[Atomare edits of strings] 26\begin{defn}[Atomare edits of strings]
27Wir betrachten, zur Einfachheit, ein minimiales Set von Edits auf Strings\footnote{Wie in der Konstruktion zum Longest Common Subsequence Problem}, bestehend nur aus Einfügung eines einzelnen Zeichens $\sigma$ an einer bestimmten Position $\iota_n(\sigma)$ und löschen des Zeichens an einer einzelnen Position $\rho_n$: 27Wir betrachten zur Einfachheit ein minimiales Set von Edits auf Strings\footnote{Wie in der Konstruktion zum Longest Common Subsequence Problem} bestehend nur aus Einfügung eines einzelnen Zeichens $\sigma$ an einer bestimmten Position $\iota_n(\sigma)$ und löschen des Zeichens an einer einzelnen Position $\rho_n$:
28 28
29\begin{code} 29\begin{code}
30data StringEdit pos char = Insert { _sePos :: pos, _seInsertion :: char } 30data StringEdit pos char = Insert { _sePos :: pos, _seInsertion :: char }
@@ -38,7 +38,7 @@ data StringEdit pos char = Insert { _sePos :: pos, _seInsertion :: char }
38makeLenses ''StringEdit 38makeLenses ''StringEdit
39\end{code} 39\end{code}
40 40
41Atomare edits werden, als Liste, zu edits komponiert. 41Atomare edits werden als Liste zu edits komponiert.
42Wir führen einen speziellen edit ein, der nicht-Anwendbarkeit der edits repräsentiert: 42Wir führen einen speziellen edit ein, der nicht-Anwendbarkeit der edits repräsentiert:
43\begin{code} 43\begin{code}
44data StringEdits pos char = StringEdits (Seq (StringEdit pos char)) 44data StringEdits pos char = StringEdits (Seq (StringEdit pos char))
diff --git a/edit-lens/src/Control/Edit/String/Affected.lhs b/edit-lens/src/Control/Edit/String/Affected.lhs
index 851267b..15f73af 100644
--- a/edit-lens/src/Control/Edit/String/Affected.lhs
+++ b/edit-lens/src/Control/Edit/String/Affected.lhs
@@ -29,7 +29,7 @@ import Data.Maybe (fromMaybe, maybeToList, listToMaybe, catMaybes, isNothing, is
29\end{comment} 29\end{comment}
30 30
31Um eine obere Schranke an das von einer Serie von edits betroffene Intervall zu bestimmen ordnen wir zunächst jeder von mindestens einem atomaren edit betroffenen Position $n$ im Eingabe-Wort einen $\text{offset}_n = \text{\# deletions} - \text{\# inserts}$ zu. 31Um eine obere Schranke an das von einer Serie von edits betroffene Intervall zu bestimmen ordnen wir zunächst jeder von mindestens einem atomaren edit betroffenen Position $n$ im Eingabe-Wort einen $\text{offset}_n = \text{\# deletions} - \text{\# inserts}$ zu.
32Das gesuchte Intervall ist nun $(\text{minK}, \text{maxK})$, mit $\text{minK}$ der Position im Eingabe-Wort mit niedrigstem $\text{offset}$ und $\text{maxK}$ die Position im Eingabe-Wort mit höchstem $\text{offset}$, $\text{maxK}^\prime$, modifiziert um das Maximum aus $\{ 0 \} \cup \{ \text{maxK}_n \colon n \in \{ 0 \ldots \text{maxK}^\prime \} \}$ wobei $\text{maxK}_n = -1 \cdot (n + \text{offset}_n)$ an Position $n$ ist. 32Das gesuchte Intervall ist nun $(\text{minK}, \text{maxK})$, mit $\text{minK}$ der Position im Eingabe-Wort mit niedrigstem $\text{offset}$ und $\text{maxK}$ die Position im Eingabe-Wort mit höchstem $\text{offset}$ $\text{maxK}^\prime$ modifiziert um das Maximum aus $\{ 0 \} \cup \{ \text{maxK}_n \colon n \in \{ 0 \ldots \text{maxK}^\prime \} \}$ wobei $\text{maxK}_n = -1 \cdot (n + \text{offset}_n)$ an Position $n$ ist.
33 33
34\begin{code} 34\begin{code}
35affected :: forall char. StringEdits Natural char -> Maybe (Interval Natural) 35affected :: forall char. StringEdits Natural char -> Maybe (Interval Natural)