;; https://arxiv.org/html/0901.4016 ($define! ip ($λ (a b c d) (+ d (* #x100 (+ c (* #x100 (+ b (* #x100 a)))))))) ($define! proquint ($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"))) ($λ (number) ($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)))