diff --git a/scratchpad/src/main/scala/com/htmlism/scratchpad/AsmProgram.scala b/scratchpad/src/main/scala/com/htmlism/scratchpad/AsmProgram.scala index cda7d5f..90344a8 100644 --- a/scratchpad/src/main/scala/com/htmlism/scratchpad/AsmProgram.scala +++ b/scratchpad/src/main/scala/com/htmlism/scratchpad/AsmProgram.scala @@ -7,8 +7,8 @@ case class AsmProgram[A: Reg, MA <: MutationStatus, Z: Semigroup](a: StatefulReg def map(f: StatefulRegister[A, MA] => Z): AsmProgram[A, MA, Z] = AsmProgram(a, z |+| f(a)) - def widen[B: Reg]: AsmProgram2[A, MA, B, Unknown, Z] = - AsmProgram2(a, ??? : StatefulRegister[B, Unknown], z) + def widen[B: Reg]: AsmProgram2[A, MA, B, Ignores, Z] = + AsmProgram2(a, ??? : StatefulRegister[B, Ignores], z) case class AsmProgram2[A: Reg, MA <: MutationStatus, B: Reg, MB <: MutationStatus, Z: Semigroup]( a: StatefulRegister[A, MA], @@ -18,8 +18,8 @@ case class AsmProgram2[A: Reg, MA <: MutationStatus, B: Reg, MB <: MutationStatu def map(f: (StatefulRegister[A, MA], StatefulRegister[B, MB]) => Z): AsmProgram2[A, MA, B, MB, Z] = AsmProgram2(a, b, z |+| f(a, b)) - def widen[C: Reg]: AsmProgram3[A, MA, B, MB, C, Unknown, Z] = - AsmProgram3(a, b, ??? : StatefulRegister[C, Unknown], z) + def widen[C: Reg]: AsmProgram3[A, MA, B, MB, C, Ignores, Z] = + AsmProgram3(a, b, ??? : StatefulRegister[C, Ignores], z) case class AsmProgram3[ A: Reg, diff --git a/scratchpad/src/main/scala/com/htmlism/scratchpad/Generator.scala b/scratchpad/src/main/scala/com/htmlism/scratchpad/Generator.scala index 263f9b2..2921baa 100644 --- a/scratchpad/src/main/scala/com/htmlism/scratchpad/Generator.scala +++ b/scratchpad/src/main/scala/com/htmlism/scratchpad/Generator.scala @@ -62,8 +62,8 @@ object Generator extends App: ) println(s" AsmProgram$classNum($arguments, z |+| that.z)") println() - println(s" def widen[$newLetter : Reg]: AsmProgram$nPlus[$typeParametersShort, $newLetter, Unknown, Z] =") - println(s" AsmProgram$nPlus($arguments, ??? : StatefulRegister[$newLetter, Unknown], z)") + println(s" def widen[$newLetter : Reg]: AsmProgram$nPlus[$typeParametersShort, $newLetter, Ignores, Z] =") + println(s" AsmProgram$nPlus($arguments, ??? : StatefulRegister[$newLetter, Ignores], z)") println() println(s" def name(s: String): SubRoutine$classNum[$typeParametersShort, Z] =") println(s" SubRoutine$classNum(s, this)") diff --git a/scratchpad/src/main/scala/com/htmlism/scratchpad/MutationStatus.scala b/scratchpad/src/main/scala/com/htmlism/scratchpad/MutationStatus.scala index 92e34c2..56f0f61 100644 --- a/scratchpad/src/main/scala/com/htmlism/scratchpad/MutationStatus.scala +++ b/scratchpad/src/main/scala/com/htmlism/scratchpad/MutationStatus.scala @@ -2,5 +2,6 @@ package com.htmlism.scratchpad sealed trait MutationStatus -trait Unknown extends MutationStatus -trait Known extends MutationStatus +class Modifies() extends MutationStatus + +case class Ignores() extends Modifies diff --git a/scratchpad/src/main/scala/com/htmlism/scratchpad/ScratchPad.scala b/scratchpad/src/main/scala/com/htmlism/scratchpad/ScratchPad.scala index eeca38b..5570fbb 100644 --- a/scratchpad/src/main/scala/com/htmlism/scratchpad/ScratchPad.scala +++ b/scratchpad/src/main/scala/com/htmlism/scratchpad/ScratchPad.scala @@ -33,18 +33,18 @@ object ScratchPad: trait ReadWrite[A] extends Read[A] with Write[A] lazy val startA = - ??? : StatefulRegister[Accumulator, Unknown] + ??? : StatefulRegister[Accumulator, Ignores] lazy val startX = - ??? : StatefulRegister[RegisterX, Unknown] + ??? : StatefulRegister[RegisterX, Ignores] lazy val startY = - ??? : StatefulRegister[RegisterY, Unknown] + ??? : StatefulRegister[RegisterY, Ignores] - (AsmProgram(startA, ""): AsmProgram[Accumulator, Unknown, String]) + (AsmProgram(startA, ""): AsmProgram[Accumulator, Ignores, String]) (AsmProgram(startA, "") - .widen[RegisterX]: AsmProgram2[Accumulator, Unknown, RegisterX, Unknown, String]) + .widen[RegisterX]: AsmProgram2[Accumulator, Ignores, RegisterX, Ignores, String]) // // case class Subroutine2[A, B](name: String, f: (Lease[A], Lease[B]) => State2[A, B]) {