blob: 684552432026e04e353aacaa72848e80090b0ebf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
(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)
|