From 10ea23ca7155cada4b77d230d8d7222f5ffae94e Mon Sep 17 00:00:00 2001 From: Kamil Adam Date: Tue, 7 May 2024 20:07:44 +0200 Subject: [PATCH] Use extension --- .../core/adt/calculus/Combinator.scala | 22 +++++++++++-------- .../catculator/core/adt/calculus/Sign.scala | 10 ++++----- .../catculator/core/adt/tree/BinaryTree.scala | 3 +-- .../calculators/CombinatorCalculator.scala | 2 +- .../core/reducer/SugarReducer.scala | 7 +++--- 5 files changed, 24 insertions(+), 20 deletions(-) diff --git a/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/calculus/Combinator.scala b/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/calculus/Combinator.scala index 9ef5f0f..6e6d656 100644 --- a/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/calculus/Combinator.scala +++ b/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/calculus/Combinator.scala @@ -12,14 +12,18 @@ object Combinator { type CombinatorT = Tree[Combinator] type CombinatorBT = BinaryTree[Combinator] - def generateT(tree: CombinatorT): String = tree match { - case Tree.Leaf(a) => generateC(a) - case Tree.Node(a) => s"(${a.map(generateT).toList.mkString(" ")})" - } - def generateBT(tree: CombinatorBT): String = tree match { - case BinaryTree.Leaf(a) => generateC(a) - case BinaryTree.Node(a, b) => s"`${generateBT(a)} ${generateBT(b)}" - } + extension (self: CombinatorT) + def generateT: String = self match { + case Tree.Leaf(a) => a.generateC + case Tree.Node(a) => s"(${a.map(_.generateT).toList.mkString(" ")})" + } - def generateC(c: Combinator): String = c.toString + extension (self: CombinatorBT) + def generateBT: String = self match { + case BinaryTree.Leaf(a) => a.generateC + case BinaryTree.Node(a, b) => s"`${a.generateBT} ${b.generateBT}" + } + + extension (self: Combinator) + def generateC: String = self.toString } diff --git a/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/calculus/Sign.scala b/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/calculus/Sign.scala index 915631e..a6968ba 100644 --- a/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/calculus/Sign.scala +++ b/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/calculus/Sign.scala @@ -5,9 +5,9 @@ enum Sign: case Minus object Sign { - - def generate(s: Sign): String = s match { - case Plus => "+" - case Minus => "-" - } + extension (self: Sign) + def generate: String = self match { + case Plus => "+" + case Minus => "-" + } } diff --git a/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/tree/BinaryTree.scala b/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/tree/BinaryTree.scala index c8f8f78..fc527ba 100644 --- a/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/tree/BinaryTree.scala +++ b/catculator-core/src/main/scala/pl/writeonly/catculator/core/adt/tree/BinaryTree.scala @@ -4,5 +4,4 @@ enum BinaryTree[+A]: case Leaf(leaf: A) case Node(first: BinaryTree[A], follow: BinaryTree[A]) -object BinaryTree { -} +object BinaryTree {} diff --git a/catculator-core/src/main/scala/pl/writeonly/catculator/core/calculators/CombinatorCalculator.scala b/catculator-core/src/main/scala/pl/writeonly/catculator/core/calculators/CombinatorCalculator.scala index 38125e8..37a252d 100644 --- a/catculator-core/src/main/scala/pl/writeonly/catculator/core/calculators/CombinatorCalculator.scala +++ b/catculator-core/src/main/scala/pl/writeonly/catculator/core/calculators/CombinatorCalculator.scala @@ -6,7 +6,7 @@ import pl.writeonly.catculator.core.adt.tree.BinaryTree.Node object CombinatorCalculator { - def calculate(c: CombinatorBT) = c match { + def calculate(c: CombinatorBT): Unit = c match { case Node(f, x) => case Leaf(a) => } diff --git a/catculator-core/src/main/scala/pl/writeonly/catculator/core/reducer/SugarReducer.scala b/catculator-core/src/main/scala/pl/writeonly/catculator/core/reducer/SugarReducer.scala index 390d2d2..7f2bf9d 100644 --- a/catculator-core/src/main/scala/pl/writeonly/catculator/core/reducer/SugarReducer.scala +++ b/catculator-core/src/main/scala/pl/writeonly/catculator/core/reducer/SugarReducer.scala @@ -41,9 +41,10 @@ class SugarReducer(config: LambdaConfig) { private def reduceApps(l: NonEmptyList[Lambda]): Lambda = foldNonEmpty(l)(App.apply) - def reduceLets(ps: NonEmptyList[(String, Lambda)], body: Lambda) = MultiApp( - NonEmptyList(MultiAbs(ps.map(_._1).toList, body), ps.map(_._2).toList), - ) + def reduceLets(ps: NonEmptyList[(String, Lambda)], body: Lambda): Lambda = + MultiApp( + NonEmptyList(MultiAbs(ps.map(_._1).toList, body), ps.map(_._2).toList), + ) private def reduceNilList(xs: List[Lambda]): Lambda = xs .foldRight(config.nilVariable)(config.wrapAppVireoApp)