utils.rkt 527 B

123456789101112131415161718192021222324
  1. #lang racket/base
  2. (provide get-lines
  3. enumerate
  4. repeat)
  5. (define (repeat n e)
  6. (let loop ((i 0) (ret '()))
  7. (if (>= i n)
  8. ret
  9. (loop (+ 1 i) (cons e ret)))))
  10. (define (get-lines fp)
  11. (let loop ((lines '()))
  12. (define l (read-line fp))
  13. (if (eof-object? l)
  14. (reverse lines)
  15. (loop (cons l lines)))))
  16. (define (enumerate lst)
  17. (let loop ((i 1) (ret '()) (remain lst))
  18. (if (null? remain)
  19. (reverse ret)
  20. (loop (+ 1 i) (cons (list (car remain) i) ret) (cdr remain)))))