Subject: [stack] A new concatenative language -- FACTOR



Hi all,

For the last 7 months, I have been developing a concatenative language
called FACTOR. It is hosted on the Java virtual machine, supporting both
compiled and interpreted execution.

Download it from http://slava.kicks-ass.org/slava/Factor.jar. It
requires Java 2 version 1.4 or later to run. The JAR file includes
source and binaries, under a BSD-style license. Enter 'help' in the
interpreter to get an idea of some useful commands.

Right now, the available documentation is sparse:

http://slava.kicks-ass.org/slava/ftut.html
http://slava.kicks-ass.org/slava/fcom.html

(It is used for scripting in a game I'm working on, which will be
released later. The game uses Java OpenGL bindings is about 40 KLOC of
Java and 10 KLOC of factor code at the moment. But that is not the
subject of the e-mail.)

The main features of Factor are:

- Lisp-like cons cells are a central part of the language
- Control structures are Joy-like combinators; 'code quotations' are
passed on the stack
- Explicit access to the return stack, as in Forth
- Shuffle definitions: ~<< swap a b -- b a >>~ etc.
- Stack effect inference for simple, conditional and recursive forms
- Continuations!
- Compiler for (some) forms (basically those whose stack effect can be
inferred) targetting JVM bytecode; everything else is interpreted
- Big number, ratio, integer, float arithmetic with automatic coercions
- Dynamically-scoped nested 'namespaces' for holding variables
- Reasonably small and elegant core
- (Somewhat incomplete but already comprehensive) test suite
- Full reflective inspection of interpreter state
- 3 front-ends:
- http server
- text mode console
!!! GUI with hyperlinked inspection of source and variables, etc

This language owes a lot to Joy and Lisp, and to a lesser extent, Forth.
I'd like to thank the inventor of Joy especially for leading me to see
the elegance and simplicity of concatenative languages.

I'd love to write a bit more but it is getting late. If anybody gets a
chance to play around with this, I'd appreciate some feedback.
--
Slava Pestov


------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/saFolB/TM
---------------------------------------------------------------------~->


Yahoo! Groups Links

<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/concatenative/

<*> To unsubscribe from this group, send an email to:
[email protected]

<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/







Programming list archiving by: Enterprise Git Hosting