diff --git a/src/Interpreter.hs b/src/Interpreter.hs index a76ef1080..1989dabdd 100644 --- a/src/Interpreter.hs +++ b/src/Interpreter.hs @@ -5,6 +5,7 @@ import Control.Monad.Free import Control.Comonad.Cofree import Operation import Diff +import Syntax constructAndRun :: Term a Info -> Term a Info -> Maybe (Diff a) constructAndRun a b = @@ -14,6 +15,8 @@ constructAndRun a b = run :: Algorithm a (Diff a) -> Maybe (Diff a) run (Pure diff) = Just diff run (Free (Recursive a b f)) = recur a b where + recur (_ :< Indexed a') (_ :< Indexed b') | length a' == length b' = + run $ f $ Pure Patch { old = Just a, new = Just b } recur _ _ = run $ f $ Pure Patch { old = Just a, new = Just b } interpret :: Term a Info -> Term a Info -> Diff a