1. 26

  2. 4

    Nice, an odd beast implemented in Forth. Lots of interesting stuff in that site, I loved the Acme clone at http://www.call-with-current-continuation.org/ma/ma.html

    1. 1

      The Gopher version linked on that page is a nice touch.

    2. 3

      Funny… I have that book! I’ve skimmed through it a few times, and my impression of the language is that it’s very similar to Erlang, but with more Prolog.

      I figured the language was dead, but I’ll see if I can get this running.

      1. 3

        It should be straightforward to build, running multiple communicating nodes can be a bit of a hassle, though. I recommend giving the “strand” rc(1) script in strand-utils-1.tar.gz a try, as it makes this much easier. Any questions and suggestions are more than welcome!

        1. 1

          Back in the 90s when I first saw Erlang, I always thought it had some “surface similarity” with Prolog.

          1. 2

            The early versions of Erlang were indeed implemented on top of Prolog, and Joe Armstrong talked about his fascination with Prolog in more recent years as well. As I remember it, he said they gradually removed all backtracking/indeterminism until they realized they weren’t really doing Prolog programming anymore. Some of the syntax that looks very idiosyncratic in Erlang is carried over from Prolog.

            Robert Virding (another co-creator of Erland) has created a “Prolog for Erlang”[0].

            Term unification in Erlang and Elixir come straight from Prolog, a lot more restricted without backtracking but still very nice! And Joe described Elixir’s beloved pipe operator like this:

            This is the recessive monadic gene of Prolog. The gene was dominant in Prolog, recessive in Erlang (son-of-prolog) but re-emerged in Elixir (son-of-son-of-prolog).

            (He’s referring to DCGs in Prolog.)

            [0] https://github.com/rvirding/erlog [1] https://joearms.github.io/published/2013-05-31-a-week-with-elixir.html

        2. 1

          I’m going to download this and look at it, but the 32 thread POWER9 under my desk is salivating at this. What are the system dependent portions I would need to write to port it to Power ISA?

          1. 2

            Look at forth/k-x86_64.s. You’d need to write those primitives for POWER9 and cross-build the boot image from a supported system.

            1. 2

              As jacareda said - the assembly language kernel some information about system calls in sys.f are needed. In fact, I have most of the stuff ported (but completely untested). Please contact me, if you are still interested.

            2. 1

              To those still interested: a new release (version 2) is now available, with quite a number of bug fixes and improvements. Many thanks to @jacereda for fixing several problems on Darwin!

              Stories with similar links:

              1. Strand Programming Language via kai3x5 9 months ago | 11 points | 7 comments