From 0dba8d33eb7eb27c426f8680b76d74e5216c1c1c Mon Sep 17 00:00:00 2001 From: Lukasz Czajka Date: Tue, 13 Sep 2022 14:40:04 +0200 Subject: [PATCH] fix recursors and evaluator --- src/Juvix/Compiler/Core/Evaluator.hs | 6 ++++-- src/Juvix/Compiler/Core/Extra/Base.hs | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Juvix/Compiler/Core/Evaluator.hs b/src/Juvix/Compiler/Core/Evaluator.hs index ddcbb1c0eb..0faf9e2552 100644 --- a/src/Juvix/Compiler/Core/Evaluator.hs +++ b/src/Juvix/Compiler/Core/Evaluator.hs @@ -110,8 +110,10 @@ eval !ctx !env0 = convertRuntimeNodes . eval' env0 evalError "the number of patterns doesn't match the number of arguments" (substEnv env n) patmatch :: [Node] -> Node -> Pattern -> Maybe [Node] - patmatch acc _ PatWildcard {} = Just acc - patmatch acc v PatBinder {} = Just (v : acc) + patmatch acc _ PatWildcard {} = + Just acc + patmatch acc v (PatBinder PatternBinder {..}) = + patmatch (v : acc) v _patternBinderPattern patmatch acc (NCtr (Constr _ tag args)) (PatConstr PatternConstr {..}) | tag == _patternConstrTag = matchPatterns acc args _patternConstrArgs diff --git a/src/Juvix/Compiler/Core/Extra/Base.hs b/src/Juvix/Compiler/Core/Extra/Base.hs index d040683f31..19ebbfe50a 100644 --- a/src/Juvix/Compiler/Core/Extra/Base.hs +++ b/src/Juvix/Compiler/Core/Extra/Base.hs @@ -174,7 +174,7 @@ getBinderPatternInfos = go [] PatConstr (PatternConstr {..}) -> foldl' go acc _patternConstrArgs PatBinder (PatternBinder {..}) -> - _patternBinderInfo : acc + go (_patternBinderInfo : acc) _patternBinderPattern PatWildcard {} -> acc @@ -186,7 +186,7 @@ getPatternInfos = go [] PatConstr (PatternConstr {..}) -> foldl' go (_patternConstrInfo : acc) _patternConstrArgs PatBinder (PatternBinder {..}) -> - _patternBinderInfo : acc + go (_patternBinderInfo : acc) _patternBinderPattern PatWildcard (PatternWildcard {..}) -> _patternWildcardInfo : acc