vm-utilities.scm 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. ; Copyright (c) 1993-2007 by Richard Kelsey and Jonathan Rees. See file COPYING.
  2. (define (adjoin-bits high low k)
  3. (+ (shift-left high k) low))
  4. (define (low-bits n k)
  5. (bitwise-and n (- (shift-left 1 k) 1)))
  6. (define high-bits arithmetic-shift-right)
  7. (define unsigned-high-bits logical-shift-right)
  8. (define (digit? ch)
  9. (let ((ch (char->ascii ch)))
  10. (and (>= ch (char->ascii #\0))
  11. (<= ch (char->ascii #\9)))))
  12. (define (vector+length-fill! v length x)
  13. (do ((i 0 (+ i 1)))
  14. ((>= i length))
  15. (vector-set! v i x)))
  16. ; Apply PROC to 0 ... N-1.
  17. (define (natural-for-each proc n)
  18. (do ((i 0 (+ i 1)))
  19. ((= i n))
  20. (proc i)))
  21. (define (natural-for-each-while proc n)
  22. (do ((i 0 (+ i 1)))
  23. ((or (= i n)
  24. (not (proc i))))))
  25. ;----------------
  26. (define (error? status)
  27. (not (eq? status (enum errors no-errors))))
  28. (define (write-error-string string)
  29. (write-string string (current-error-port)))
  30. (define (write-error-integer integer)
  31. (write-integer integer (current-error-port)))
  32. (define (write-error-newline)
  33. (write-char #\newline (current-error-port)))
  34. (define (error-message string)
  35. (write-error-string string)
  36. (write-error-newline))