mirror of
https://github.com/mcanlas/6502-opcodes.git
synced 2024-06-16 23:29:30 +00:00
drop stateful register
This commit is contained in:
parent
c1a6ed0714
commit
17f6b1fe20
|
@ -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))
|
|
@ -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] =
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
package com.htmlism.firepower.core
|
||||
|
||||
trait StatefulRegister[A: Reg, F <: MutationStatus]
|
Loading…
Reference in New Issue
Block a user