fork(1) download
  1. ; comma quibbling
  2.  
  3. (define (quibble . args)
  4. (cond ((null? args) "")
  5. ((null? (cdr args)) (car args))
  6. (else (let ((args (reverse args)))
  7. (let loop ((args (cddr args))
  8. (words (list (string-append (cadr args) " and " (car args)))))
  9. (if (null? args) (apply string-append words)
  10. (loop (cdr args) (cons (car args) (cons ", " words)))))))))
  11.  
  12. (display (quibble)) (newline)
  13. (display (quibble "ABC")) (newline)
  14. (display (quibble "ABC" "DEF")) (newline)
  15. (display (quibble "ABC" "DEF" "G" "H")) (newline)
Success #stdin #stdout 0.01s 42976KB
stdin
Standard input is empty
stdout
ABC
ABC and DEF
ABC, DEF, G and H