From ca7f09e2ac5909596551b6ad9e0093abf6b7b58b Mon Sep 17 00:00:00 2001 From: James Eversole Date: Mon, 20 Jan 2025 16:05:06 -0600 Subject: [PATCH] Eliminate redundant eager calls of elimLambda --- src/Eval.hs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Eval.hs b/src/Eval.hs index ca84779..e8d1e77 100644 --- a/src/Eval.hs +++ b/src/Eval.hs @@ -56,18 +56,15 @@ elimLambda = go go (SLambda (v:vs) body) | null vs = toSKI v (elimLambda body) | otherwise = elimLambda (SLambda [v] (SLambda vs body)) - go (SApp f g ) = SApp (elimLambda f) (elimLambda g) - go (TStem t ) = TStem (elimLambda t) - go (TFork l r ) = TFork (elimLambda l) (elimLambda r) - go (SList x ) = SList (map elimLambda x) + go (SApp f g) = SApp (elimLambda f) (elimLambda g) go x = x toSKI x (SVar y) - | x == y = _I - | otherwise = SApp _K (SVar y) + | x == y = _I + | otherwise = SApp _K (SVar y) toSKI x t@(SApp n u) - | not (isFree x t) = SApp _K (SApp (elimLambda n) (elimLambda u)) - | otherwise = SApp (SApp _S (toSKI x (elimLambda n))) (toSKI x (elimLambda u)) + | not (isFree x t) = SApp _K t + | otherwise = SApp (SApp _S (toSKI x n)) (toSKI x u) toSKI x t | not (isFree x t) = SApp _K t | otherwise = SApp (SApp _S (toSKI x t)) TLeaf