Shen-C is a C port of the Shen programming language.
Shen is a portable functional programming language developed by Mark Tarver that offers
- Pattern matching
- Lambda calculus consistency
- Macros for defining domain specific languages
- Optional lazy evaluation
- Optional static type checking based on Sequent calculus
- An integrated fully functional Prolog
- An inbuilt compiler-compiler, Shen-YACC
Shen-C is implemented as an interpreter, mainly tested on macOS (Apple Silicon) using Clang.
Besides macOS (Apple Silicon), Ubuntu 20.04 LTS (x86_64/AArch64) is a minor supported OS.
The iOS version of Shen-C is available on the App Store, which is a full featured Shen REPL with a customized keyboard for both iPhone and iPad.
Other ports of Shen by the Shen-C author includes
- Shen-JVM
- Shen for Android, which is a full featured Shen REPL with a customized keyboard for Android on Google Play
- Download a release build from releases
- Unarchive a release build
tar xvf shen-c-{VERSION}-{OS}-{ARCH}.tar.gz
- Run Shen-C REPL from a release build
Run the shell script under the build directory.
cd shen-c-{VERSION}-{OS}-{ARCH}
./shen-c
- Quit Shen-C REPL
Pass an exit status
(exit 1)
- Install the required softwares
For macOS install Boehm GC by Homebrew or from sources
brew install libgc
For Linux (Ubuntu)
Install make
sudo apt install make
Install Clang
sudo apt install clang
Install Boehm GC
sudo apt install libgc-dev
-
Change directory to the project root
-
Build Shen-C
To build a non-release build
make
A binary file named shen-c
will be created under the bin
directory.
To build a release build
make release
A release build will be created under the release
directory.
There are several ways to run a non-release build.
- Run the shell script under the project root.
./shen-c
- Run Shen-C REPL by using the make command
make repl
or if rlwrap is installed
make rrepl
- Run Shen-C REPL from a compiled binary
Set the SHEN_C_HOME
environment variable to the project root for a Unix shell
export SHEN_C_HOME=/path/to/shen-c
and then
alias shen-c='$SHEN_C_HOME/bin/shen-c'
or if rlwrap is installed
alias shen-c='rlwrap $SHEN_C_HOME/bin/shen-c'
and finally
shen-c
- Official website of Shen
- The Shen OS Kernel Manual
- The Official Shen Standard
- Shen Community Wiki
- The Book of Shen: third edition
Copyright (c) 2010-2022, Mark Tarver
Shen is released under the BSD License.
Copyright (c) 2022, Tatsuya Tsuda Shen-C is released under the MIT License.