1. Introduction

Note: In what follows we include with each section heading, a list of references including links. TBoS means The Book of Shen 4th edition, SD is Shendoc 30.

Shen is a functional programming language developed by Mark Tarver and introduced in September 2011. It has been implemented in many languages including Common Lisp, Emacs Lisp, Scheme, Python, Haskell, Ruby, Clojure, Java, Javascript, and the JVM. It is notable for its extreme portability based on its reduced Kl instruction set and the power of its type system. Unlike languages in the Hindley-Milner category, Shen incorporates a Turing-equivalent notation based on sequent calculus that compiles down into a dialect of Prolog. Shen Prolog is part of the system and was used to implement the type system.

In addition Shen contains its own compiler-compiler, Shen-YACC, which was used to build the reader and compiler for the language. Shen includes most of the features common to modern functional programming languages such as pattern-matching, currying, partial applications, guards and (optional) static type checking.

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