diff options
Diffstat (limited to 'edit-lens/src/Control/Lens')
-rw-r--r-- | edit-lens/src/Control/Lens/Edit.lhs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/edit-lens/src/Control/Lens/Edit.lhs b/edit-lens/src/Control/Lens/Edit.lhs index 0a679cb..096b53d 100644 --- a/edit-lens/src/Control/Lens/Edit.lhs +++ b/edit-lens/src/Control/Lens/Edit.lhs | |||
@@ -44,7 +44,7 @@ Für Moduln $M$ und $N$ besteht eine symmetrische edit-lens zwischen $M$ und $N$ | |||
44 | 44 | ||
45 | Wir schreiben auch nur \emph{edit-lens} für den symmetrischen Fall\footnote{Für den asymmetrischen Fall siehe \cite{johnson2016unifying}}. | 45 | Wir schreiben auch nur \emph{edit-lens} für den symmetrischen Fall\footnote{Für den asymmetrischen Fall siehe \cite{johnson2016unifying}}. |
46 | 46 | ||
47 | In Haskell erwähnen wir die Konsistenzrelation nicht in der Erwartung, dass $\Rrightarrow$ und $\Lleftarrow$ nur auf konsistente Zustände angewandt werden (und somit auch entweder einen konsistenten Zustand erzeugen oder nichtt definiert sind): | 47 | In Haskell erwähnen wir die Konsistenzrelation nicht in der Erwartung, dass $\Rrightarrow$ und $\Lleftarrow$ nur auf konsistente Zustände angewandt werden (und somit auch entweder einen konsistenten Zustand erzeugen oder nicht definiert sind): |
48 | 48 | ||
49 | \begin{code} | 49 | \begin{code} |
50 | data EditLens c m n where | 50 | data EditLens c m n where |
@@ -59,6 +59,9 @@ class (Module m, Module n) => HasEditLens l m n | l -> m, l -> n where | |||
59 | propL :: l -> StateMonoidHom (Complement l) n m | 59 | propL :: l -> StateMonoidHom (Complement l) n m |
60 | -- ^ Map edits of 'n' to changes of 'm', maintaining some state from 'Complement l' | 60 | -- ^ Map edits of 'n' to changes of 'm', maintaining some state from 'Complement l' |
61 | 61 | ||
62 | editLens :: l -> EditLens (Complement l) m n | ||
63 | editLens l = EditLens (ground l) (propR l) (propL l) | ||
64 | |||
62 | -- | Inspect the components of an edit lens (e.g. 'EditLens') | 65 | -- | Inspect the components of an edit lens (e.g. 'EditLens') |
63 | instance (Module m, Module n) => HasEditLens (EditLens c m n) m n where | 66 | instance (Module m, Module n) => HasEditLens (EditLens c m n) m n where |
64 | type Complement (EditLens c m n) = c | 67 | type Complement (EditLens c m n) = c |