kernel.hoon 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /+ *wrapper
  2. =>
  3. |%
  4. +$ versioned-state
  5. $% test-state
  6. ==
  7. +$ test-state [%0 val=@]
  8. ++ moat (keep test-state)
  9. +$ cause ?(%inc %inc-exit)
  10. ::
  11. +$ effect
  12. $% [%state test-state]
  13. [%exit id=@]
  14. ==
  15. --
  16. ::
  17. %- (moat |)
  18. ^- fort:moat
  19. |_ k=test-state
  20. ::
  21. :: +load: upgrade from previous state
  22. ::
  23. ++ load
  24. |= old=test-state
  25. ~& "test-app: load"
  26. ?~ ((soft versioned-state) old)
  27. ~& "test-app: +load old state does not nest under versioned-state"
  28. !!
  29. old
  30. ::
  31. :: +peek: external inspect
  32. ::
  33. ++ peek
  34. |= arg=*
  35. ^- (unit (unit *))
  36. =/ pax ((soft path) arg)
  37. ?~ pax ~|(invalid-peek+pax !!)
  38. ~& > "peeked at {<u.pax>}"
  39. ?+ u.pax ~|(invalid-peek+pax !!)
  40. ::
  41. [%state ~]
  42. ``k
  43. ==
  44. ::
  45. :: +poke: external apply
  46. ::
  47. ++ poke
  48. |= [=wire eny=@ our=@ux now=@da dat=*]
  49. ^- [(list effect) test-state]
  50. ~& >> "poke: {<wire>}"
  51. =/ sof-cau=(unit cause) ((soft cause) dat)
  52. ?~ sof-cau
  53. ~& "cause incorrectly formatted!"
  54. ~& dat
  55. !!
  56. ?+ `@tas`u.sof-cau !!
  57. %inc
  58. =. val.k +(val.k)
  59. :_ k
  60. =- ~& effect+-
  61. -
  62. ~[[%state k]]
  63. ::
  64. %inc-exit
  65. =. val.k +(val.k)
  66. :_ k
  67. =- ~& effect+-
  68. -
  69. ~[[%exit 0] [%state k]]
  70. ==
  71. --