[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Multiple values for R4RS.



Let me take a stab at "quotient-and-maybe-remainder":

    (define quotient-and-maybe-remainder
       (lambda (n1 n2)
          (call/cc
             (lambda (k)
                (if (accepts? k 2)
                    (let ([q (quotient n1 n2)])
                       (let ([r (- n1 (* q n2))])
                          (k q r)))
                    (k (quotient n1 n2)))))))
    
Unless I'm missing something and there is a different way to do this, I
guess I'm not too excited about "accepts?".

The predicate "accepts?" seems a little like the (rejected) predicate
"continuation?".  A procedure may not complain "up front" about a given
number of arguments, but may complain at some later time.  Or it may
accept any number of arguments, but ignore all but the first few.  I
don't see how "accepts?" can be generally useful if it breaks down in
these cases.

   (define kons
      (lambda l
         (apply cons l)))

   (accepts? cons 3) => #f
   (accepts? kons 3) => #t

Kent