diff options
| author | Jakob L. Kreuze | 2023-05-03 10:50:04 -0400 |
|---|---|---|
| committer | Jakob L. Kreuze | 2023-05-03 10:50:04 -0400 |
| commit | df39a265c2e3f98f49c50aeb6ec20c11a40a9186 (patch) | |
| tree | b0cffb14c26bea3c7dbb0dfc58b522d96563d896 | |
| parent | 62440c0d5b99ee925045158d22a69f51607ab601 (diff) | |
Support compilation of set literals
| -rw-r--r-- | compiler/lean.scm | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/lean.scm b/compiler/lean.scm index 6cd52b7..064683b 100644 --- a/compiler/lean.scm +++ b/compiler/lean.scm @@ -15,6 +15,7 @@ ;;; <http://www.gnu.org/licenses/>. (define-module (compiler lean) + #:use-module ((rnrs base) #:select (assert)) #:use-module (compiler types) #:use-module (compiler utilities) ; for subscript-digits #:use-module (ice-9 match) @@ -254,6 +255,12 @@ (match x (($ <constant> value) (compile value)))) +(define-method (compile (x <set-literal>)) + (match x + (($ <set-literal> elems) + (assert (equal? elems (delete-duplicates! elems))) + (format #f "(Rego.Any.set [~a])" (string-join (map compile elems) ", "))))) + ;; TODO: Remove me. (define-method (compile (x <reference>)) (define recur |