summaryrefslogtreecommitdiff
path: root/vikalpa.scm
diff options
context:
space:
mode:
Diffstat (limited to 'vikalpa.scm')
-rw-r--r--vikalpa.scm39
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)))