;; https://arxiv.org/html/0901.4016 ($define! $define! ($vau (definee . rest) env ($if (symbol? definee) (eval (cons* $set! env definee rest) env) ($let (((name . arguments) definee)) (eval (list $set! env name (cons* $λ arguments rest)) env))))) ($define! (ip a b c d) (+ d (* #x100 (+ c (* #x100 (+ b (* #x100 a))))))) ($define! (proquint number) ($let* ((fn ($λ (chars) ($let ((modulus (string-length chars))) ($λ (k) ($λ (in out) ($let (((quo idx) (truncate/ in modulus))) (k quo (cons (string-ref chars idx) out)))))))) (consonant (fn "bdfghjklmnprstvz")) (vowel (fn "aiou"))) ($let loop ((number number) (out ())) ($let* ((do-rest ($λ (in out) ($if (zero? in) (list->string out) (loop in (cons #\- out))))) (do-word (consonant (vowel (consonant (vowel (consonant do-rest))))))) (do-word number out))))) (list (proquint (ip 127 0 0 1)) (proquint (ip 63 84 220 193)) (proquint (ip 63 118 7 35)))