blob: 254c33c7ce9a2181d10f213d037104dca8c321f6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
(define-module (hnh module-introspection)
:use-module (srfi srfi-1)
:use-module (hnh util)
:export (unique-symbols
find-module-declaration
module-declaration?
get-forms
))
(define (unique-symbols tree)
(uniq
(sort* (filter symbol? (flatten tree))
string<? symbol->string)))
(define (module-declaration? form)
(cond ((null? form) #f)
((not (pair? form)) #f)
(else (eq? 'define-module (car form)))))
(define (find-module-declaration forms)
(and=> (find module-declaration? forms)
cadr))
(define (get-forms port)
(let loop ((done '()))
(let ((form (read port)))
(if (eof-object? form)
done
(loop (cons form done))))))
|