use typeclass maybe

This commit is contained in:
Mark Canlas 2022-09-26 21:55:35 -04:00
parent 943a466ac1
commit e7432eb5aa

View File

@ -6,18 +6,24 @@ package object syntax:
new PartiallyAppliedWrite(reg, x)
class PartiallyAppliedWrite[A: Loadable, B <: Address](reg: WriteAddress[B], x: A):
def apply[C: Register]: String =
def apply[C: Load: Store: Register]: String =
val literal =
summon[Loadable[A]].show(x)
val register =
summon[Register[C]].self
val loadInstruction =
Load[C].init // TODO load action needs to interact with encoder
val storeInstruction =
Store[C].to // TODO store action needs to interact with encoder
val first =
s"LD$register $literal"
s"$loadInstruction $literal"
val second =
s"ST$register ${reg.addr.n.toString}"
s"$storeInstruction ${reg.addr.n.toString}"
val desc =
s"${reg.addr.alias} = $literal, via $register"