Re: [Haskell-cafe] Re: Displaying steps in my interpreter

2008-01-11 Thread Victor Nazarov
On Jan 10, 2008 8:39 PM, apfelmus [EMAIL PROTECTED] wrote: Victor Nazarov wrote: Yes, there is: you can use a zipper http://en.wikibooks.org/wiki/Haskell/Zippers Here's how: data Branch v = AppL (Term v) | AppR (Term v) | Lamb v type Context

[Haskell-cafe] Re: Displaying steps in my interpreter

2008-01-11 Thread apfelmus
Victor Nazarov wrote: import Control.Monad.Writer -- use a difference list or something for better performance type Trace v = [Zipper v] whnf :: Term v - Writer (Trace v) (Term v) whnf t = whnf' ([],t) where whnf' (AppL e':cxt, Lam x e) = tell (cxt, App (Lam x e)