AOC/common.scm

28 lines
784 B
Scheme

;; Shitty print for convenience
(define (print . args)
(display (apply string-append args))
(newline))
;; Chicken command-line-arguments for no reason at all
(define (command-line-arguments)
(cdr (command-line)))
;; Guile string-split
(define (string-split str delim?)
(let ((in (open-input-string str)))
(let loop ((acc '())
(out (open-output-string)))
(let ((c (read-char in)))
(cond
((eof-object? c)
(reverse (cons (get-output-string out) acc)))
((delim? c)
(loop (cons (get-output-string out) acc)
(open-output-string)))
(else
(write-char c out)
(loop acc out)))))))
;; Reverse for-each, for convenience
(define (xfor-each1 lst fn)
(for-each fn lst))