by Calvin Rose
Functional and imperative Lisp-like language and bytecode interpreter.

Janet is a functional and imperative programming language and bytecode interpreter. It is a modern lisp, but lists are replaced by other data structures with better utility and performance (arrays, tables, structs, tuples). The language also supports bridging to native code written in C, meta-programming with macros, and bytecode assembly.

There is a repl for trying out the language, as well as the ability to run script files. This client program is separate from the core runtime, so janet could be embedded into other programs.

Janet makes a good system scripting language, or a language to embed in other programs. Think Lua or Guile.

(defn sum3
  "Solve the 3SUM problem in O(n^2) time."
  (def tab @{})
  (def solutions @{})
  (def len (length s))
  (for k 0 len
    (put tab (s k) k))
  (for i 0 len
    (for j 0 len
      (def k (get tab (- 0 (s i) (s j))))
      (when (and k (not= k i) (not= k j) (not= i j))
        (put solutions {i true j true k true} true))))
  (map keys (keys solutions)))

(def arr @[2 4 1 3 8 7 -3 -1 12 -5 -8])
(print "3sum of " (string/pretty arr) ":")
(print (string/pretty (sum3 arr)))
Information updated 05/04/20
View Comments