1. 20

  2. 3

    Reminds me a little bit of newLISP.

    1. 2

      Cool! At a glance, it looks a little like PicoLisp, but with more syntactic niceties and less database baked in.

      1. 4

        Except PicoLisp uses dynamic scope :) Good thing Janet uses lexical scope.


        I spent awhile looking at PicoLisp because I like these all-in-one systems. But they seemed to make a lot of compromises I couldn’t stomach in the name of simplicity, such as dynamic scope. I think he also says the interpreter will segfault under certain conditions and that’s not a bug, although I didn’t try it myself.

        1. 4

          I personally agree that dynamic scope is crazy-pants, but the Common Lisp world seems to generally regard it as desirable, and they have their reasons. I’m definitely not up to rehashing the Lisp-1 vs Lisp-2 thing here, but just to be fair I’d like to point out that the justifications given for the choice of dynamic scope in the FAQ you linked are about performance and expressiveness, not simplicity.

          Again, I have no dog in that old fight, and I’m quite happy to see a new language in this space.

          1. 3

            Dynamic scope is kinda good to have as an option. Where you see it go terribly wrong is when it’s the only option, or to a less extreme degree when it’s the default option.

            1. 1

              i’ve always felt that dynamic scope was the reason lush never took off - i cannot think of any other reasons, because it looked really beautiful otherwise. (i never used it myself; it was already moribund by the time i discovered it, and yes, i was also personally reluctant to use a language with dynamic scoping)

            2. 2

              Probably the most common case of segfaults is when you try to invoke a null symbol, which more or less attempts to execute code starting at 0x00 (I’ve tried it a little).

              PicoLisp did look quite interesting to me, but it makes a number of choices I wasn’t very excited about in the long term. Its concurrency system is built around fork/exec, which isn’t terrible if you’re on Unix, but makes porting PicoLisp to Windows very much a non-goal for the developers, at least from what I’ve seen. It also gives up floating point numbers, forcing you to set a fixed width fractional offset to do math.

              That being said, it packs a lot of tools in a small box.

              1. 1

                Picolisp have fibers, checkout rings: https://bitbucket.org/mihailp/tankfeeder/src/default/rings/?at=default

                And dynamic binding is feature not illness.