I have a few questions about procedures on SICP section 4.4.4.2., paragraph "filters":
(define (lisp-value call frame-stream)
_ (stream-flatmap
_ _ (lambda (frame)
_ _ _ (if (execute
_ _ _ _ _ (instantiate
_ _ _ _ _ call
_ _ _ _ _ frame
_ _ _ _ _ (lambda (v f)
_ _ _ _ _ _ (error "Unknown pat var: LISP-VALUE" v))))
_ _ _ _ (singleton-stream frame)
_ _ _ _ the-empty-stream))
_ _ frame-stream))
- What does
call
stand for? (is it a predicate?) - I was also puzzled by
lambda (v f)
, but I think I know what it stands for now: the lambda function is anunbound variable handler
that will ignore its second input - please correct me if I'm wrong.
(define (execute exp)
_ (apply (eval (predicate exp) user-initial-environment)
_ _ _ _ _ (args exp)))
- Is
apply
equivalent toreportcall
in Snap! ? - what is
eval
equivalent to in Snap! ? - what is the user-initial-environment?
where does(args exp)
come in?
Another question, about sect. 4.4.4.7: what would symbol?
translate to in Snap! ?