diff options
Diffstat (limited to 'vikalpa.scm')
-rw-r--r-- | vikalpa.scm | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/vikalpa.scm b/vikalpa.scm index 1c29e7e..5f7b16d 100644 --- a/vikalpa.scm +++ b/vikalpa.scm @@ -988,14 +988,21 @@ (syntax-rules () ((_ name (var ...) expr) (let ((f (let ((expression (convert-to-expression 'expr))) - (make (if (member 'name (expression-functions expression)) - <function> - <trivial-total-function>) - #:name 'name - #:variables '(var ...) - #:conditions '() - #:expression expression - #:code (code 'expr))))) + (if (member 'name (expression-functions expression)) + (make <function> + #:name 'name + #:variables '(var ...) + #:conditions '() + #:expression expression + #:code (code 'expr)) + (make <total-function> + #:name 'name + #:variables '(var ...) + #:conditions '() + #:expression expression + #:code (code 'expr) + #:claim ''#t + #:proof '()))))) (current-system (add-definition f (current-system))) (validate f) f)))) @@ -1461,12 +1468,18 @@ (get-variables d) (get-expression d))) -(define/guard (system-apropos (sys system?) (str string?)) +(define* (system-apropos sys + str + #:key all?) (filter-map (lambda (d) - (if (string-match (string-append ".*" - (regexp-quote str) - ".*") - (symbol->string (get-name d))) + (if (and (or all? + (not (string-match "^%" + (symbol->string + (get-name d))))) + (string-match (string-append ".*" + (regexp-quote str) + ".*") + (symbol->string (get-name d)))) (list (get-name d) (show d)) #f)) (get-definitions sys))) |