(use srfi-1) (define (non-nested-keys alist #!optional fields keep?) (let ((keys (remove null? (map (lambda (curr-key) (if (not (list? (alist-ref curr-key alist))) curr-key '())) (map car alist))))) (if (null? fields) keys (if keep? (lset-intersection eq? fields keys) (lset-difference eq? keys fields)))))