home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / gofer230.zip / Progs / Gofer / Demos / Lamvar / trace < prev   
Text File  |  1994-06-23  |  1KB  |  22 lines

  1. -----------------------------------------------------------------------------
  2. -- trace :: String -> a -> a    Print the string and return the given value
  3. --
  4. -- This file brings in just enough of the lambda var primitives to implement
  5. -- a version of the impure hbc debugging function `trace'.  Note that, this
  6. -- can only be used in conjunction with a version of the Gofer interpreter
  7. -- that has been compiled to include these primitives.  See the file
  8. -- lambdaVr for more details.
  9. -----------------------------------------------------------------------------
  10.  
  11. primitive primLvPure   "primLvPure"     :: Proc a -> a
  12. primitive primLvReturn "primLvReturn"   :: a -> Proc a
  13. primitive primLvBind   "primLvBind"     :: Proc a -> (a -> Proc b) -> Proc b
  14. primitive primLvPutch  "primLvPutchar"  :: Char -> Proc ()
  15.  
  16. trace    :: String -> a -> a
  17. trace s a = primLvPure (f s)
  18.             where f []     = primLvReturn a
  19.                   f (x:xs) = primLvBind (primLvPutch x) (\_ -> f xs)
  20.  
  21. -- End of trace --------------------------------------------------------------
  22.