Shen Education


 

 

The Shen Education Channel

You can learn about Shen on the Shen Computer Science Education Channel on Youtube which opened in June 2022. A repository for all the code in these video is kept here.

Fast Help

Look at Shen in 15 minutes for a quick learning guide and then reference the OS Shen Manual in the side bar. Go to our newsgroup if you get stuck.

Books

The Book of Shen gives the complete introduction to the language. You can also read this text online.

If your logic needs a brush-up, get Logic, Proof and Computation to learn the logical theory behind Shen and how sequent calculus works.

The Standard Library

The Standard Library is now documented online and can be read here.

Articles

Coding a Lisp Interpreter in Shen by Mark Tarver
a practical case study of working with Shen to code a type secure Lisp interpreter.

Shen Tutorial: Sequent Calculus by Neal Alexander
a Prolog based study on Shen's interpretation of sequent calculus.

Kicking the Tyres of Shen Prolog by Chris Double
gives a pretty thorough examination of Shen Prolog.

Defining Types in Shen by Chris Double
an introduction on how to define types in Shen

Presentations

Shen: a sufficiently advanced Lisp by Aditya Siram

Clever, Classless and Free by Hakan Raberg

Shen Trick Shots by Aditya Siram

Programming in Shen: Sequent Calculus and Metaprogramming by Mark Tarver

This last video is a good introduction to defining types in sequent calculus in Shen.

Shendoc

The Shendoc webpage is useful as a language standard for those porting Shen. It is a developer's guide rather than a resource for learning Shen.

Shen Online

There is an old interactive Javascript page of the Shen REPL.

OS Wiki

There is an OS wiki. Contact Bruno Deferrari through the News Group if you want to contribute.

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.5 Comments

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