Skip to content

Commit

Permalink
Merge pull request #1188 from primo-ppcg/if-let
Browse files Browse the repository at this point in the history
  • Loading branch information
bakpakin committed Jun 11, 2023
2 parents 0bd6e85 + 2c3ca29 commit 7272f43
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 19 deletions.
16 changes: 1 addition & 15 deletions src/boot/boot.janet
Original file line number Diff line number Diff line change
Expand Up @@ -674,21 +674,7 @@
(do
(def bl (in bindings i))
(def br (in bindings (+ 1 i)))
(def atm (idempotent? bl))
(def sym (if atm bl (gensym)))
(if atm
# Simple binding
(tuple 'do
(tuple 'def sym br)
(tuple 'if sym (aux (+ 2 i)) fal))
# Destructured binding
(tuple 'do
(tuple 'def sym br)
(tuple 'if sym
(tuple 'do
(tuple 'def bl sym)
(aux (+ 2 i)))
fal))))))
(tuple 'if (tuple 'def bl br) (aux (+ 2 i)) fal))))
(aux 0))

(defmacro when-let
Expand Down
10 changes: 6 additions & 4 deletions test/suite-boot.janet
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,12 @@
# Some higher order functions and macros
# 5e2de33
(def my-array @[1 2 3 4 5 6])
(def x (if-let [x (get my-array 5)] x))
(assert (= x 6) "if-let")
(def x (if-let [y (get @{} :key)] 10 nil))
(assert (not x) "if-let 2")
(assert (= (if-let [x (get my-array 5)] x) 6) "if-let 1")
(assert (= (if-let [y (get @{} :key)] 10 nil) nil) "if-let 2")
(assert (= (if-let [a my-array k (next a)] :t :f) :t) "if-let 3")
(assert (= (if-let [a my-array k (next a 5)] :t :f) :f) "if-let 4")
(assert (= (if-let [[a b] my-array] a) 1) "if-let 5")
(assert (= (if-let [{:a a :b b} {:a 1 :b 2}] b) 2) "if-let 6")

(assert (= 14 (sum (map inc @[1 2 3 4]))) "sum map")
(def myfun (juxt + - * /))
Expand Down

0 comments on commit 7272f43

Please sign in to comment.