Skip to content

Commit 4149682

Browse files
committed
Reduce the number of generated brackets
1 parent 57df2c0 commit 4149682

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

src/Generator.hs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,28 @@ import Transformer (NamelessTerm (NamelessVariable, NamelessApplication, Nameles
44

55
generateTerm :: Term -> String
66
generateTerm (Variable var) = [var]
7-
generateTerm (Application lhs rhs) = concatMap (\term -> case term of
8-
var@(Variable _) -> generateTerm var
9-
_ -> '(':generateTerm term ++ [')']) [lhs, rhs]
7+
generateTerm (Application lhs rhs) =
8+
let generatedLhs = case lhs of
9+
var@(Variable _) -> generateTerm var
10+
application@(Application _ _) -> generateTerm application
11+
abstraction@(Abstraction _ _ ) -> '(':generateTerm abstraction ++ [')']
12+
generatedRhs = case rhs of
13+
var@(Variable _) -> generateTerm var
14+
application@(Application _ _) -> '(':generateTerm application ++ [')']
15+
abstraction@(Abstraction _ _) -> '(':generateTerm abstraction ++ [')']
16+
in generatedLhs ++ generatedRhs
1017
generateTerm (Abstraction argument body) = 'λ':argument:'.':generateTerm body
1118

1219
generateNamelessTerm :: NamelessTerm -> String
1320
generateNamelessTerm (NamelessVariable var) = show var
14-
generateNamelessTerm (NamelessApplication lhs rhs) = concatMap (\term -> case term of
15-
var@(NamelessVariable _) -> generateNamelessTerm var
16-
_ -> '(':generateNamelessTerm term ++ [')']) [lhs, rhs]
21+
generateNamelessTerm (NamelessApplication lhs rhs) =
22+
let generatedLhs = case lhs of
23+
var@(NamelessVariable _) -> generateNamelessTerm var
24+
application@(NamelessApplication _ _) -> generateNamelessTerm application
25+
abstraction@(NamelessAbstraction _ ) -> '(':generateNamelessTerm abstraction ++ [')']
26+
generatedRhs = case rhs of
27+
var@(NamelessVariable _) -> generateNamelessTerm var
28+
application@(NamelessApplication _ _) -> '(':generateNamelessTerm application ++ [')']
29+
abstraction@(NamelessAbstraction _) -> '(':generateNamelessTerm abstraction ++ [')']
30+
in generatedLhs ++ generatedRhs
1731
generateNamelessTerm (NamelessAbstraction body) = 'λ':generateNamelessTerm body

0 commit comments

Comments
 (0)