From dc1cdc6c11be05cb21e5b68b6f0d147165867864 Mon Sep 17 00:00:00 2001 From: Munyoki Kilyungi Date: Mon, 27 Mar 2023 22:49:49 +0300 Subject: Add new special form for representing blank nodes * dump.scm (blank-node): New macro. Signed-off-by: Munyoki Kilyungi --- dump.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/dump.scm b/dump.scm index b05af85..1f0a262 100755 --- a/dump.scm +++ b/dump.scm @@ -192,6 +192,28 @@ ALIST field-name) forms." (string-append dump-table "_" (remove-namespace (symbol->string predicate))))))) +(define-syntax blank-node + (syntax-rules () + "Allow having set and multiset within the context of a blank-node" + [(_ (op predicate object) ...) + (let [(node (string-join + (filter-map (match-lambda + ((pred . obj) + (match obj + ((and (? string? obj) + (? string-null? obj)) + #f) + ((? symbol? obj) + (format #f "~a ~a" pred (symbol->string obj))) + (_ + (format #f "~a ~s" pred obj))))) + (map-alist '() + (op predicate object) ...)) + " ; "))] + (if (string-null? node) + "" + (format #f "[ ~a ]" node)))])) + (define-syntax syntax-let (syntax-rules () "Like match-let, but for syntax. -- cgit v1.2.3