; i'm embarrassed
(define (take n xs)
(let loop ((n n) (xs xs) (ys '()))
(if (or (zero? n) (null? xs))
(reverse ys)
(loop (- n 1) (cdr xs)
(cons (car xs) ys)))))
(define (drop n xs)
(let loop ((n n) (xs xs))
(if (or (zero? n) (null? xs)) xs
(loop (- n 1) (cdr xs)))))
(define (digits n . args)
(let ((b (if (null? args) 10 (car args))))
(let loop ((n n) (d '()))
(if (zero? n) d
(loop (quotient n b)
(cons (modulo n b) d))))))
(define (dollar x)
(define (commas n)
(let ((xs (reverse (map number->string (digits n)))))
(let loop ((xs (drop 3 xs)) (zs (reverse (take 3 xs))))
(if (null? xs) (apply string-append zs)
(loop (drop 3 xs) (append (reverse (take 3 xs)) (list ",") zs))))))
(define (zero n)
(if (zero? n) "00"
(if (< n 10) (string-append "0" (number->string n))
(number->string n))))
(let* ((n (inexact->exact (round (* x 100))))
(dollars (quotient n 100))
(cents (modulo n 100)))
(string-append "$" (commas dollars) "." (zero cents))))
(display (dollar 1234567.9999)) (newline)
OyBpJ20gZW1iYXJyYXNzZWQKCihkZWZpbmUgKHRha2UgbiB4cykKICAobGV0IGxvb3AgKChuIG4pICh4cyB4cykgKHlzICcoKSkpCiAgICAoaWYgKG9yICh6ZXJvPyBuKSAobnVsbD8geHMpKQogICAgICAgIChyZXZlcnNlIHlzKQogICAgICAgIChsb29wICgtIG4gMSkgKGNkciB4cykKICAgICAgICAgICAgICAoY29ucyAoY2FyIHhzKSB5cykpKSkpCiAKKGRlZmluZSAoZHJvcCBuIHhzKQogIChsZXQgbG9vcCAoKG4gbikgKHhzIHhzKSkKICAgIChpZiAob3IgKHplcm8/IG4pIChudWxsPyB4cykpIHhzCiAgICAgIChsb29wICgtIG4gMSkgKGNkciB4cykpKSkpCiAKKGRlZmluZSAoZGlnaXRzIG4gLiBhcmdzKQogIChsZXQgKChiIChpZiAobnVsbD8gYXJncykgMTAgKGNhciBhcmdzKSkpKQogICAgKGxldCBsb29wICgobiBuKSAoZCAnKCkpKQogICAgICAoaWYgKHplcm8/IG4pIGQKICAgICAgICAgIChsb29wIChxdW90aWVudCBuIGIpCiAgICAgICAgICAgICAgICAoY29ucyAobW9kdWxvIG4gYikgZCkpKSkpKQoKKGRlZmluZSAoZG9sbGFyIHgpCiAgKGRlZmluZSAoY29tbWFzIG4pCiAgICAobGV0ICgoeHMgKHJldmVyc2UgKG1hcCBudW1iZXItPnN0cmluZyAoZGlnaXRzIG4pKSkpKQogICAgICAobGV0IGxvb3AgKCh4cyAoZHJvcCAzIHhzKSkgKHpzIChyZXZlcnNlICh0YWtlIDMgeHMpKSkpCiAgICAgICAgKGlmIChudWxsPyB4cykgKGFwcGx5IHN0cmluZy1hcHBlbmQgenMpCiAgICAgICAgICAobG9vcCAoZHJvcCAzIHhzKSAoYXBwZW5kIChyZXZlcnNlICh0YWtlIDMgeHMpKSAobGlzdCAiLCIpIHpzKSkpKSkpCiAgKGRlZmluZSAoemVybyBuKQogICAgKGlmICh6ZXJvPyBuKSAiMDAiCiAgICAgIChpZiAoPCBuIDEwKSAoc3RyaW5nLWFwcGVuZCAiMCIgKG51bWJlci0+c3RyaW5nIG4pKQogICAgICAgIChudW1iZXItPnN0cmluZyBuKSkpKQogIChsZXQqICgobiAoaW5leGFjdC0+ZXhhY3QgKHJvdW5kICgqIHggMTAwKSkpKQogICAgICAgICAoZG9sbGFycyAocXVvdGllbnQgbiAxMDApKQogICAgICAgICAoY2VudHMgKG1vZHVsbyBuIDEwMCkpKQogICAgKHN0cmluZy1hcHBlbmQgIiQiIChjb21tYXMgZG9sbGFycykgIi4iICh6ZXJvIGNlbnRzKSkpKQoKKGRpc3BsYXkgKGRvbGxhciAxMjM0NTY3Ljk5OTkpKSAobmV3bGluZSk=