(define-module (hnh util uuid) :use-module (ice-9 format) :export (uuid uuid-v4)) (define %seed (random-state-from-platform)) (define (uuid-v4) (define version 4) (define variant #b10) (format #f "~8'0x-~4'0x-~4'0x-~4'0x-~12'0x" (random (ash 1 (* 4 8)) %seed) (random (ash 1 (* 4 4)) %seed) (logior (ash version (* 4 3)) (random (1- (ash 1 (* 4 3))) %seed)) (logior (ash variant (+ 2 (* 4 3))) (random (ash 1 (+ 2 (* 4 3))) %seed)) (random (ash 1 (* 4 12)) %seed))) (define uuid uuid-v4)