mirror of
https://github.com/mcanlas/6502-opcodes.git
synced 2025-02-11 02:30:45 +00:00
ignores
This commit is contained in:
parent
e8e7491597
commit
adba954ccc
@ -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,
|
||||
|
@ -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)")
|
||||
|
@ -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
|
||||
|
@ -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]) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user