[stack] A variant of XY and F written in C++

Chris Double <[email protected]>
Newsgroups gmane.comp.lang.concatenative
Message-ID <[email protected]>
I wanted to play around with Stevan Apter's F programming language:

http://nsl.com/k/f/f.htm

But I don't have a K interpreter. F is very similar to XY so I started
hacking my JavaScript version of XY to do it. But then I wanted to run
it on a low spec portable device with very little memory so I ended up
writing a little C++ interpreter. It's very simple. Doesn't do any
optimisations and manages the stack and queue as described by Stevan's
programming documents. I've placed the source on github:

http://github.com/doublec/cf/tree/master

I'm not really intending it to be a 'programming language', just an
easy body of code to hack around ideas with. Hopefully it's useful for
others to play around with too. It's implemented in one C++ file for
simplicity:

http://tinyurl.com/c4bmj6

This is the prelude which contains some examples - based on Stevan's F prelude:

http://tinyurl.com/crd4ku

There are a couple of differences to F. The main one being I stuck
with the system from False where symbols don't evaluate to their
value. Instead you use ';' to get the value and '!' to execute it.
This means you need to use 'set' to set the value of a symbol:

  [[1 =][][dup;!1 - fac;!*]cond;!] fac set
  1000 fac;! .
   ...a very long number...

I use libgmp to get big numbers. The above factorial runs surprisingly
fast. Given that 'cond' is not a primitive and is implemented in the
prelude this results in lots of queue pushing and popping.

The README at http://github.com/doublec/cf/tree/master describes how
to build, run it, the various primitives, etc.

Chris.
-- 
http://www.bluishcoder.co.nz
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.