|
The S prefix indicates that the kernel is conformant to the standards laid down in
'The Book of Shen, 4th edition'. The S series was so named because the first entry, S30,
derived from version 30 of Shen Professional. Apart from a few Prolog primitives, any Shen program
written for the pre-S kernels will run under the S series.
But there are some important improvements and developments in the S series beginning with the S30
kernel which allow the S series to run programs that the pre-S series cannot.
|
1. The S series allows Shen YACC to incorporate types.
This means that you can create type secure compilers in the S series.
2. The S series includes a garbage collected Prolog
Space on the binding vector is reclaimed under backtracking. This means that Shen Prolog
under S series kernels can be run for hours and not seconds.
3. The S series perform partial applications.
Though Shen has always supported partial applications, pre-S versions pushed the responsibility
of coping with partial applications onto the native platform implementation of KLambda. Under the S Series
the kernel does all the work. This makes porting Shen much easier.
4. New compiler technology.
The YACC, sequent calculus, Prolog and Shen code compilers are all rewritten to a new approach which
is faster and smaller than the pre-S versions. The Prolog compiler runs under Common Lisp without the need
for writing optimising patches in native Lisp for speed.
5. A rigorous approach to distinguishing functions and the symbols used to name them.
Pre-S versions printed results such as 'reverse : (list A) --> (list A)' following the Lisp tradition
which allows quoted symbols to be applied as functions. Though this conflation between the name for
a function and the function itself is sometimes convenient, it is strictly not correct. The S series prints
'(fn reverse) : (list A) --> (list A)'. This distinction is not pedantry; it is integral to being able to
handle partial applications within the kernel and the type checker enforces this usage.
6. Better hashing function.
Pre-S kernels had a rather basic hashing function that would not take advantage of a large
amount of memory for storing information. The new hashing function is suitable for very large
amounts of information.
7. A structured approach to non-binary standard input and output.
Pre-S kernels assumed that standard input and output were byte streams although in many platforms
they are not. The S series uses a structured decision table for platform installation that
makes this much easier.
8. Ability to put the top level inside a package.
An 'in-package' command places the REPL inside a package allowing the user to interact with the
package program without having to type the package name.
9. Facility for low level integration of Shen into Prolog.
The S series includes a revision of Prolog primitives and an injection of some new ones. The 'is'
predicate is now conformant to ISO Prolog and there is provision for fine tuning Shen function calls from
Prolog to make them run efficiently.
10. Clearer and documented source code.
By extensive factorisation and rewriting it has been possible to cram all these improvements into
a code base that is actually smaller than the pre-S kernels. For the first time
'The Book of Shen' includes this source code within its pages as an executable specification of
the workings of the language. |
LATEST NEWS
The support page for Shen/tk - a type secure platform portable interface to TCL/tk.
______________________________
The support page for the text Programming the Logic Lab now includes readable online access to the book.
______________________________
The support page for the text Logic, Proof and Computation is established.
______________________________
THORN Theorem prover derived from HORN clause logic is available.
______________________________
Shen Education Channel starts on Youtube.
______________________________
Yggdrasil project launched - the grand unification of programming languages.
______________________________
Want to advertise on this site? Go to the contacts page. |