3. History

TBoS p 27-32, p 494-500 SD

Shen owes its origins to work done in the 90s by Mark Tarver on applying high performance automated reasoning techniques to the problem of type checking programs. The first version of the work SEQUEL (SEQUEnt processing Language) premiered at the 1993 International Joint Conference on Artificial Intelligence under the title 'A Language for Implementing Arbitrary Logics'. Subsequently the language went through a cycle of development before emerging in 2005 as Qi. As with SEQUEL, Qi was written in Common Lisp. Qi was presented in 2008 under the title Lisp for the C21 Century and at the European Conference on Lisp in 2009. In the latter address Tarver suggested that Qi could be implemented with an instruction set much smaller than the 118 Common Lisp system functions used to implement the language. The resulting language could be ported over a much wider range of platforms than Common Lisp.

In 2010 Vasil Diadov and other sponsors put up the capital to make this experiment happen. The result was the Shen kernel; delivered in 2011 and implemented in 43 (later 46) primitive functions under Common Lisp that defined a miniature Lisp called KL. KL was defined in what became the first standard for the new language; Shendoc 1.7. The latest standard is Shendoc 30.

Following the introduction of Shen in 2011, the language was rapidly ported to Scheme, Python, Clojure, Javascript, the JVM, Haskell and Emacs Lisp. The first book on Shen was published in 2012 and went through two revisions issuing in The Book of Shen 4th edition in January 2015. This text is generally known as TBoS. The Shen kernel also went open source in February 2015.

In September 2015, another group of investors supported Tarver in forking the kernel to form the basis of a more extensive system with commercial applications. This version, Shen Professional (SP), added concurrency, graphics, better compilation, web connection and extended libraries to an upgraded kernel. Shen thus runs on the freemium model; with the kernel being OS and the enhanced SP available by subscription from 2017 onwards.

In 2021 the SP kernel was returned to open source forming the basis for the S series of kernels on which this manual is based.

1. Introduction

2. License

3. History

4. The Core Language

4.1 Base Types
4.1.1 Symbols
4.1.2 Strings
4.1.3 Numbers
4.2 Function Applications
4.3 The Top Level
4.4 Arithmetic

4.6 Sequences

4.6.1 Lists
4.6.2 Tuples
4.6.3 Vectors

4.7 lambda and let
4.8 Global Assignments
4.9 Higher Order Functions
4.10 Lazy Evaluation
4.11 I/O
4.12 Loading Files
4.13 Streams
4.14 Exceptions
4.15 Hashing
4.16 Property Lists
4.17 Eval

5 Defining Functions

5.1 Partial Functions
5.2 List Handling Functions
5.3 String Handling Functions
5.4 Tuple Handling Functions
5.5 Vector Handling Functions
5.6 Guards
5.7 Backtracking
5.8 Writing in Kλ
5.9 Macros

6. Packages

7. Shen-YACC

7.1 Recognisor Generator
7.2 Semantic Actions

8. Shen Prolog

8.1 Sample Programs

9. Types

9.1 Types and Constructors
9.2 Functions and Types
9.3 Synonyms

10 Sequent Calculus

10.1 Recursive Types

10.2 Exotic Types

10.2.1 Dependent Types
10.2.2 Negative Types
10.2.3 Subtypes
10.2.4 The Type of All Sets

11 Glossary of Functions

12 The Syntax of Shen

Built by Shen Technology (c) Mark Tarver, September 2021