content: module SelfDestruct.Ideal (machine, registerNames, inspect, view) where
  import Botworld
  import Botworld.Debug
  
  machine :: Memory
  machine = [R {limit = 1024, contents = Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons Nil (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons Nil (Cons Nil (Cons (Cons Nil Nil) Nil)))) Nil))) (Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons Nil (Cons Nil (Cons Nil (Cons (Cons Nil Nil) Nil)))) Nil))) Nil)},R {limit = 0, contents = Nil},R {limit = 64, contents = Cons Nil (Cons Nil (Cons (Cons Nil Nil) Nil))},R {limit = 0, contents = Nil},R {limit = 7, contents = Cons (Cons Nil (Cons Nil (Cons (Cons Nil Nil) Nil))) (Cons (Cons Nil Nil) Nil)},R {limit = 33, contents = Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons Nil (Cons (Cons Nil Nil) Nil)) (Cons (Cons Nil (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil))) Nil))) (Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons Nil (Cons (Cons Nil Nil) Nil))) Nil))) Nil)},R {limit = 37, contents = Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons Nil (Cons Nil (Cons (Cons Nil Nil) Nil))) (Cons Nil (Cons (Cons Nil Nil) Nil))))) (Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil))) Nil))) Nil)},R {limit = 33, contents = Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons Nil (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) Nil))) (Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil))) Nil))) Nil)},R {limit = 34, contents = Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons Nil (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons Nil (Cons Nil (Cons (Cons Nil Nil) Nil)))) Nil))) (Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons Nil (Cons Nil (Cons Nil (Cons (Cons Nil Nil) Nil)))) Nil))) Nil)},R {limit = 38, contents = Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons Nil (Cons (Cons Nil Nil) (Cons Nil (Cons (Cons Nil Nil) Nil)))) (Cons Nil (Cons (Cons Nil Nil) Nil))))) (Cons (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons (Cons Nil Nil) Nil)) (Cons (Cons (Cons Nil Nil) (Cons Nil (Cons (Cons Nil Nil) Nil))) Nil))) Nil)},R {limit = 5, contents = Cons (Cons Nil (Cons Nil (Cons (Cons Nil Nil) Nil))) Nil}]
  
  registerNames :: [String]
  registerNames = ["PRG","INP","OUT","NIL","COM","LPRECOM","PRECOM","LNIL","LPREP","PREP","ATTACK"]
  
  inspect :: Memory -> [String]
  inspect = inspectMemory registerNames
  
  view :: Robot -> IO ()
  view = putStrLn . unlines . inspect . memory
  