Fix if-let, add when-let

This commit is contained in:
2025-01-30 08:51:07 -06:00
parent 4c685b1171
commit 75224b9100
2 changed files with 28 additions and 12 deletions

19
d-.scm
View File

@@ -7,6 +7,7 @@
as~>
if-not
if-let
when-let
for
partial
argmin
@@ -39,14 +40,20 @@
(let [(as v)]
(as~> as (fn args ...) more ...))]))
(define-syntax-rule (if-not pred body ...)
(if (not pred) body ...))
(define-syntax-rule (if-not pred true-arm false-arm)
(if (not pred) true-arm false-arm))
(define-syntax-rule (if-let ([ident test]) expr ...)
(define-syntax-rule (if-let ([ident test]) true-arm false-arm)
(let ([t test])
(if t
(let ([ident t])
true-arm)
false-arm)))
(define-syntax-rule (when-let ([ident test]) expr ...)
(let ([ident test])
(if ident
(begin expr ...)
#f)))
(when ident
expr ...)))
(define-syntax for
(syntax-rules ()