Spaces:
Sleeping
Sleeping
(define-module (lang elisp primitives features) | |
#:use-module (lang elisp internals fset) | |
#:use-module (lang elisp internals load) | |
#:use-module (lang elisp internals null) | |
#:use-module (ice-9 optargs)) | |
(define-public features '()) | |
(fset 'provide | |
(lambda (feature) | |
(or (memq feature features) | |
(set! features (cons feature features))))) | |
(fset 'featurep | |
(lambda (feature) | |
(->nil (memq feature features)))) | |
(fset 'require | |
(lambda* (feature #:optional file-name noerror) | |
(or (memq feature features) | |
(load (or file-name | |
(symbol->string feature)) | |
noerror | |
#f | |
#f | |
#t)))) | |