home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 1992 August / info-mac-1992.iso / Language (lang) / Lazy-Scheme / Examples / MultipleValues < prev    next >
Encoding:
Text File  |  1992-03-05  |  695 b   |  32 lines  |  [TEXT/Help]

  1. {A multiple value implementation relying on conses Beurk…}
  2.  
  3.  
  4.  
  5.  
  6. (define (mret | l) l)
  7.  
  8. (define (retfrom v | l)
  9.   (retfrom2 v l))
  10.  
  11. (define (retfrom2 v l)
  12.    (cond (null? l) ()
  13.          (cons ((0 l) (0 v))(retfrom2 (-1 v) (-1 l)))))
  14.  
  15. {
  16. (define (count a b l nca ncb)
  17.   (cond (null? l) (cons nca ncb)
  18.         (eq? a (0 l)) (count a b (-1 l) (1+ nca) ncb)
  19.         (eq? b (0 l)) (count a b (-1 l) nca (1+ ncb))
  20.         (count a b (-1 l) nca ncb)))
  21.  
  22. (define (count2 a b l)
  23.   (cond (null? l) (mret 0 0)
  24.         (eq? a (0 l)) (retfrom (count2 a b (-1 l)) 1+ I)
  25.         (eq? b (0 l)) (retfrom (count2 a b (-1 l)) I 1+)
  26.         (count2 a b (-1 l))))
  27.        
  28.  
  29. (count2 'a 'b '(a a b b a a b b d d a b) )
  30.  
  31.   }
  32.