; this is in terms of ((client-name . ((client-sid . (session)) ...)) ...) (define sessions '()) (define (insert-session client-name sid new-session) (let* ((clients-sessions (alist-ref client-name sessions equal?)) (clients-sessions (or clients-sessions '()))) (set! sessions (alist-update! client-name (alist-cons sid new-session clients-sessions) sessions equal?)) (pp sessions))) (define (select-session client-name sid) (let* ((clients-sessions (alist-ref client-name sessions equal?))) (if clients-sessions (alist-ref sid clients-sessions equal?) #f)))