Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Scheme > Functional letr...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 1 of 1 Topic 4587 of 4716
Post > Topic >>

Functional letrec

by Vend <vend82@[EMAIL PROTECTED] > Jul 5, 2008 at 04:58 AM

Here is my try:

(define-macro (my-letrec bindings . expr-list)
  (define (gen-sym-list n acc)
    (if (zero? n)
        acc
        (gen-sym-list (- n 1) (cons (gensym) acc))))

  (if (not (list? bindings))
      (error "Bad bindings: " bindings))
  (let* ((num-bindings (length bindings))
         (proc-sym-list (gen-sym-list num-bindings '()))
         (var-list (map (lambda (var-bind) (car var-bind)) bindings))
         (z-list
          (map
           (lambda (proc-sym)
             `(lambda arg (apply (,proc-sym ,@[EMAIL PROTECTED]
) arg)))
           proc-sym-list))
         (y-list
          (map
           (lambda (var-bind)
             (let ((var (car var-bind)) (bind (cadr var-bind)))
               `(lambda ,proc-sym-list
                  ((lambda ,var-list ,bind)
                   ,@[EMAIL PROTECTED]
))))
           bindings))
         (y-sym-list (gen-sym-list num-bindings '())))
    `(let ,(map
            (lambda (y-sym y)
              `(,y-sym ,y))
            y-sym-list y-list)
       (let ,(map
              (lambda (var y-sym)
                `(,var (,y-sym ,@[EMAIL PROTECTED]
)))
              var-list y-sym-list)
         ,@[EMAIL PROTECTED]
))))
 




 1 Posts in Topic:
Functional letrec
Vend <vend82@[EMAIL PR  2008-07-05 04:58:55 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Sep 6 15:37:58 CDT 2008.