drop stateful register

This commit is contained in:
Mark Canlas 2022-12-08 16:33:28 -05:00
parent c1a6ed0714
commit 17f6b1fe20
3 changed files with 0 additions and 58 deletions

View File

@ -1,36 +0,0 @@
package com.htmlism.firepower.core
import cats.Semigroup
import cats.syntax.all._
case class AsmProgram[A: Reg, MA <: MutationStatus, Z: Semigroup](a: StatefulRegister[A, MA], z: Z):
def map(f: StatefulRegister[A, MA] => Z): AsmProgram[A, MA, Z] =
AsmProgram(a, z |+| f(a))
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],
b: StatefulRegister[B, MB],
z: Z
):
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, Ignores, Z] =
AsmProgram3(a, b, ??? : StatefulRegister[C, Ignores], z)
case class AsmProgram3[
A: Reg,
MA <: MutationStatus,
B: Reg,
MB <: MutationStatus,
C: Reg,
MC <: MutationStatus,
Z: Semigroup
](a: StatefulRegister[A, MA], b: StatefulRegister[B, MB], c: StatefulRegister[C, MC], z: Z):
def map(
f: (StatefulRegister[A, MA], StatefulRegister[B, MB], StatefulRegister[C, MC]) => Z
): AsmProgram3[A, MA, B, MB, C, MC, Z] =
AsmProgram3(a, b, c, z |+| f(a, b, c))

View File

@ -11,25 +11,6 @@ object ScratchPad:
def use[B](f: Reg[A] => B): B =
f(a)
reg[Accumulator].use { a =>
AsmProgram(startA, "")
.widen[RegisterX]
}
lazy val startA =
??? : StatefulRegister[Accumulator, Ignores]
lazy val startX =
??? : StatefulRegister[RegisterX, Ignores]
lazy val startY =
??? : StatefulRegister[RegisterY, Ignores]
(AsmProgram(startA, ""): AsmProgram[Accumulator, Ignores, String])
(AsmProgram(startA, "")
.widen[RegisterX]: AsmProgram2[Accumulator, Ignores, RegisterX, Ignores, String])
//
// case class Subroutine2[A, B](name: String, f: (Lease[A], Lease[B]) => State2[A, B]) {
// def jump(a: Lease[A], b: Lease[B]): State[A] =

View File

@ -1,3 +0,0 @@
package com.htmlism.firepower.core
trait StatefulRegister[A: Reg, F <: MutationStatus]