You are looking at historical revision 37143 of this page. It may differ significantly from its current revision.
shen
A port of the Shen programming language for Chicken Scheme.
Shen
Shen is a hosted language that comes with a macro system, prolog, optional type system based on sequent calculus and a YACC.
Egg Author
David Ireland (djireland79 at gmail dot com)
Shen Web site
Shen Documentation
The best source of information of programming in Shen is in The Book of Shen.
Egg Source Code
Starting the REPL
$ chicken-shen
Shen, copyright (C) 2010-2015 Mark Tarver www.shenlanguage.org, Shen 21.1 running under Scheme, implementation: Chicken port 0.1 ported by David Ireland (0-)
Embedding in Chicken
Example Shen Code
Calling native Scheme code
$ chicken-shen
Calling native Chicken procedures is done by prefixing 'lisp' to the procedure name. An example of calling Chicken's print is given below.
Shen, copyright (C) 2010-2015 Mark Tarver www.shenlanguage.org, Shen 21.1 running under Scheme, implementation: Chicken port 0.1 ported by David Ireland (0-) (lisp.print "Hello World") Hello World #<unspecified> (1-)
Basic List processing
(define factorial
0 -> 1
X -> (* X (factorial (- X 1))))
(define total
[] -> 0
[X | Y] -> (+ X (total Y)))
(define triples
[] -> []
[W X Y | Z] -> [[W X Y] | (triples Z)])
YACC
(defcc <binary?>
X <binary?> := true where (element? X [0 1]);
X := true where (element? X [0 1]);
<e> := false;)
Prolog
(defprolog member
xxX [X | _] <--;
xxX [_ | Y] <-- (member X Y);)
About this egg
License
BSD Clause 3
Dependencies
srfi-1 srfi-13