ついでに Cygwin に入っていた Guile で Scheme な Loto6 も

(define(loto6a)
  (define (rec n series)
    (if (= n 48) series
      (begin
        (if (< (random (- 48 n)) (- 6 (length series)))
          (set! series (cons n series)))
        (rec (+ n 1) series))))
  (reverse (rec 0 '())))
(define (loto6b)
  (define (rec series)
    (let *1 series)
        ((memv r series) (rec series))
        (else (rec (cons r series))))))
  (rec '()))
;; 無駄に call/cc してみた
(define call/cc call-with-current-continuation)
(define (loto6c)
  (define (rec series)
    (let ((retry #f) (r 0))
      (if (= (length series) 6) series
        (begin
          (call/cc (lambda (k) (set! retry k)))
          (set! r (+ 1 (random 48)))
          (if (memv r series) (retry #f) (rec (cons r series)))))))
  (rec '()))

*1:r (+ 1 (random 48)))) (cond ((= 6 (length series