1
0
mirror of https://github.com/janet-lang/janet synced 2024-11-29 03:19:54 +00:00

Merge branch 'master' into ev

This commit is contained in:
Calvin Rose 2020-07-06 17:22:38 -05:00
commit 51cf6465ff
3 changed files with 23 additions and 11 deletions

View File

@ -2,6 +2,7 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## Unreleased - ??? ## Unreleased - ???
- Add `any?` predicate to core.
- Add `jpm list-pkgs` subcommand to see which package aliases are in the listing. - Add `jpm list-pkgs` subcommand to see which package aliases are in the listing.
- Add `jpm list-installed` subcommand to see which packages are installed. - Add `jpm list-installed` subcommand to see which packages are installed.
- Add `math/int-min`, `math/int-max`, `math/int32-min`, and `math/int32-max` for getting integer limits. - Add `math/int-min`, `math/int-max`, `math/int32-min`, and `math/int32-max` for getting integer limits.

View File

@ -1202,6 +1202,15 @@
(if x nil (set res x))) (if x nil (set res x)))
res) res)
(defn any?
"Returns the first truthy valye in ind, otherwise nil.
falsey value."
[ind]
(var res nil)
(loop [x :in ind :until res]
(if x (set res x)))
res)
(defn reverse! (defn reverse!
"Reverses the order of the elements in a given array or buffer and returns it "Reverses the order of the elements in a given array or buffer and returns it
mutated." mutated."
@ -2825,11 +2834,11 @@
(when (and (not *compile-only*) (or *should-repl* *no-file*)) (when (and (not *compile-only*) (or *should-repl* *no-file*))
(if-not *quiet* (if-not *quiet*
(print "Janet " janet/version "-" janet/build " Copyright (C) 2017-2020 Calvin Rose")) (print "Janet " janet/version "-" janet/build " " (os/which) "/" (os/arch)))
(flush) (flush)
(defn getprompt [p] (defn getprompt [p]
(def [line] (parser/where p)) (def [line] (parser/where p))
(string "janet:" line ":" (parser/state p :delimiters) "> ")) (string "repl:" line ":" (parser/state p :delimiters) "> "))
(defn getstdin [prompt buf _] (defn getstdin [prompt buf _]
(file/write stdout prompt) (file/write stdout prompt)
(file/flush stdout) (file/flush stdout)

View File

@ -386,17 +386,14 @@
(assert (compare= 3 n3 (table/setproto @{:v 3} mynum)) "compare= poly") (assert (compare= 3 n3 (table/setproto @{:v 3} mynum)) "compare= poly")
(assert (deep= (sorted @[4 5 n3 2] compare<) @[2 n3 4 5]) "polymorphic sort")) (assert (deep= (sorted @[4 5 n3 2] compare<) @[2 n3 4 5]) "polymorphic sort"))
(let [ (let [MAX_INT_64_STRING "9223372036854775807"
MAX_INT_64_STRING "9223372036854775807"
MAX_UINT_64_STRING "18446744073709551615" MAX_UINT_64_STRING "18446744073709551615"
MAX_INT_IN_DBL_STRING "9007199254740991" MAX_INT_IN_DBL_STRING "9007199254740991"
NAN (math/log -1) NAN (math/log -1)
INF (/ 1 0) INF (/ 1 0)
MINUS_INF (/ -1 0) MINUS_INF (/ -1 0)
compare-poly-tests compare-poly-tests
[ [[(int/s64 3) (int/u64 3) 0]
[(int/s64 3) (int/u64 3) 0]
[(int/s64 -3) (int/u64 3) -1] [(int/s64 -3) (int/u64 3) -1]
[(int/s64 3) (int/u64 2) 1] [(int/s64 3) (int/u64 2) 1]
[(int/s64 3) 3 0] [(int/s64 3) 4 -1] [(int/s64 3) -9 1] [(int/s64 3) 3 0] [(int/s64 3) 4 -1] [(int/s64 3) -9 1]
@ -409,11 +406,16 @@
[(+ 1 (int/u64 MAX_INT_IN_DBL_STRING)) (scan-number MAX_INT_IN_DBL_STRING) 1] [(+ 1 (int/u64 MAX_INT_IN_DBL_STRING)) (scan-number MAX_INT_IN_DBL_STRING) 1]
[(int/s64 0) INF -1] [(int/u64 0) INF -1] [(int/s64 0) INF -1] [(int/u64 0) INF -1]
[MINUS_INF (int/u64 0) -1] [MINUS_INF (int/s64 0) -1] [MINUS_INF (int/u64 0) -1] [MINUS_INF (int/s64 0) -1]
[(int/s64 1) NAN 0] [NAN (int/u64 1) 0] [(int/s64 1) NAN 0] [NAN (int/u64 1) 0]]]
]]
(each [x y c] compare-poly-tests (each [x y c] compare-poly-tests
(assert (= c (compare x y)) (string/format "compare polymorphic %q %q %d" x y c))) (assert (= c (compare x y)) (string/format "compare polymorphic %q %q %d" x y c))))
)
(assert (= nil (any? [])) "any? 1")
(assert (= nil (any? [false nil])) "any? 2")
(assert (= nil (any? [nil false])) "any? 3")
(assert (= 1 (any? [1])) "any? 4")
(assert (nan? (any? [nil math/nan nil])) "any? 5")
(assert (= true (any? [nil nil false nil nil true nil nil nil nil false :a nil])) "any? 6")
(end-suite) (end-suite)