source: project/wiki/eggref/5/shen @ 37119

Last change on this file since 37119 was 37119, checked in by svnwiki, 10 months ago

Anonymous wiki edit for IP [140.253.78.164]:

File size: 2.0 KB
Line 
1== shen
2
3A port of the Shen programming language for Chicken Scheme. 
4
5[[toc:]]
6
7=== Shen 
8
9Shen is a hosted language that comes with a macro system, prolog, optional type system based on sequent calculus and a YACC. 
10
11=== Egg Author
12
13David Ireland (djireland79 at gmail dot com)
14
15=== Shen Web site
16[[http://www.shenlanguage.org/]]
17
18=== Egg Source Code
19[[http://github.com]]
20
21
22=== Starting the REPL
23<enscript highlight="bash">
24$ chicken-shen 
25</enscript>
26
27<enscript highlight="bash">
28Shen, copyright (C) 2010-2015 Mark Tarver
29www.shenlanguage.org, Shen 21.1
30running under Scheme, implementation: Chicken
31port 0.1 ported by David Ireland
32
33
34(0-)
35</enscript>
36
37=== Embedding in Chicken
38
39
40=== Example Shen Code 
41
42==== Calling native Scheme code
43<enscript highlight="bash">
44$ chicken-shen 
45</enscript>
46
47Calling native Chicken procedures is done by prefixing 'lisp' to the procedure name. An example of calling Chicken's print is given below. 
48
49<enscript highlight="bash">
50Shen, copyright (C) 2010-2015 Mark Tarver
51www.shenlanguage.org, Shen 21.1
52running under Scheme, implementation: Chicken
53port 0.1 ported by David Ireland
54
55(0-) (lisp.print "Hello World")
56Hello World
57#<unspecified>
58
59(1-)
60</enscript>
61
62==== Basic List processing
63
64<enscript highlight="lisp">
65(define factorial
66        0 -> 1
67        X -> (* X (factorial (- X 1))))
68</enscript>
69
70<enscript highlight="lisp">
71(define total
72        [] -> 0
73        [X | Y] -> (+ X (total Y)))
74</enscript>
75
76
77<enscript highlight="lisp">
78(define triples
79        [] -> []
80        [W X Y | Z] -> [[W X Y] | (triples Z)])
81</enscript>
82
83==== YACC
84<enscript highlight="lisp">
85(defcc <binary?>
86X <binary?> := true where (element? X [0 1]);
87X := true where (element? X [0 1]);
88<e> := false;)
89</enscript>
90
91==== Prolog 
92
93<enscript highlight="lisp">
94(defprolog member
95xxX [X | _] <--;
96xxX [_ | Y] <-- (member X Y);)
97</enscript>
98
99
100=== About this egg
101
102==== License
103BSD Clause 3
104
105==== Dependencies
106srfi-1
107srfi-13
108
109==== Versions
110; [[https://gitlab.com/maxwell79/chicken-link-grammar/releases/tag/1.6|0.1]] : 
111
Note: See TracBrowser for help on using the repository browser.