Implementation of original Lisp as described in Paul Graham's article "The Roots of Lisp". In Typescript

Overview

Roots of Lisp

This is the implementation of original Lisp from 1960 as described in Paul Graham's article

How to use

Building

If you just want to run the project, you don't need to build it. The dist folder is already included there.

In order to build the project, you need Yarn V3.

in order to build the project, you can run yarn build or yarn build:dev for watch mode.

Running

This project uses EcmaScript Modules (ESM). They are supported by the latest LTS Node versions. In order to run the project, you can use the commands:

yarn start or npm start

or simply node dist/index.mjs

You will see the promt input>

Testing

This project uses the Node.js test runner from version 18. Build the project and run yarn test or simply node --test or even node eval.test.mjs. Once you see the result, you can hit Ctrl-C to finish testing.

What you can do with it

Original Lisp is a pretty poor language. It has only symbols, lists and functions.

You can try to check the equality of 2 symbols like this:

(eq 'a 'a)

The prompt should return you t which stands for true.

(eq 'a 'b) will return you (), empty list which stands for false.

You can find more information in the original article

Why it's cool

This repository also has a file eval.lisp, copied from Paul Graham's website.

If you run in the prompt (load-file 'eval.lisp), you will then be able to use the functions described in that file.

The most important function is eval., which is the Lisp interpreter written in itself.

You can then run, for example, (eval. '(eq 'a 'a) '()) and get the same result: t.

What it means: you run a Lisp interpreter that interprets the eval. function that can interpret any Lisp expression.

You might also like...

A TypeScript implementation of High-Performance Polynomial Root Finding for Graphics (Yuksel 2022)

Nomial Nomial is a TypeScript implementation of Cem Yuksel's extremely fast, robust, and simple root finding algorithm presented in the paper "High-Pe

Aug 3, 2022

An implementation of Saudi Arabia ZATCA's E-Invoicing requirements, processes, and standards in TypeScript.

An implementation of Saudi Arabia ZATCA's E-Invoicing requirements, processes, and standards in TypeScript.

v0.1.0 (experimental) An implementation of Saudi Arabia ZATCA's E-Invoicing requirements, processes, and standards in TypeScript. Read the documentati

Dec 27, 2022

Typescript implementation of the shopif-app-template-node

Shopify App Template - Node This is a template for building a Shopify app using Node and React. It contains the basics for building a Shopify app. Rat

Dec 21, 2022

Javascript implementation of flasher tool for Espressif chips, running in web browser using WebSerial.

Javascript implementation of esptool This repository contains a Javascript implementation of esptool, a serial flasher utility for Espressif chips. Un

Dec 22, 2022

Fast & minimal implementation of bech32, base64, base32, base16 & base58

micro-base Fast and minimal implementation of bech32, base64, base58, base32 & base16. Matches following specs: Bech32, Bech32m: BIP173, BIP350 Base16

Jan 4, 2023

An implementation for FIWARE Orion and Cygnus on AWS.

An implementation for FIWARE Orion and Cygnus on AWS.

FIWARE: Orion and Cygnus on AWS This guide will help you to deploy Fiware's Orion and Cygnus components into a serverless architecture. What does this

Sep 21, 2022

A JavaScript implementation of Michael Baker's Miner2149

miner2149-js A JavaScript implementation of Michael Baker's Miner2149. This repository is for personal use only. Not for commercial use or distributio

Jan 11, 2022

A fast simplex noise implementation in Javascript.

simplex-noise.js API Documentation simplex-noise.js is a simplex noise implementation in Javascript/TypeScript. It works in the browser and nodejs. Us

Jan 2, 2023

A javascript text differencing implementation.

jsdiff A javascript text differencing implementation. Based on the algorithm proposed in "An O(ND) Difference Algorithm and its Variations" (Myers, 19

Jan 7, 2023
Owner
Serhii Dolia
Serhii Dolia
Example blog for article about Remix.js

Welcome to Remix! Remix Docs Development From your terminal: npm run dev This starts your app in development mode, rebuilding assets on file changes.

Fernando Doglio 28 Oct 16, 2022
proxy 🦄 yxorp is your Web Proxy as a Service (SAAS) Multi-tenant, Multi-Threaded, with Cache & Article Spinner

proxy ?? yxorp is your Web Proxy as a Service (SAAS) Multi-tenant, Multi-Threaded, with Cache & Article Spinner. Batteries are included, Content Spinning and Caching Engine, all housed within a stunning web GUI. A unique high-performance, plug-and-play, multi-threaded website mirror and article spinner

4D/ҵ.com Dashboards 13 Dec 30, 2022
Minze JS framework demo for codrops article.

Minze Demo Demo of a fictive Smart Home dashboard application. Article on Codrops Demo Running The application only needs a webserver to run. Install

Sergej Samsonenko 49 Dec 31, 2022
iHover is a collection of hover effects using pure CSS, inspired by codrops article, powered by Sass.

Intro iHover is a collection of hover effects using pure CSS, inspired by this codrops article, powered by Sass. Demo: https://gudh.github.io/ihover/d

null 3.5k Jan 4, 2023
Awesome TV is the First and Original streaming entertainment network for Global Africa from United States of America (USA).

LEADBOARD APP Awesome TV is the First and Original streaming entertainment network for Global Africa from United States of America (USA). Built With H

Aime Malaika 9 Apr 4, 2022
The original SSB feed format, for ssb-db2

ssb-classic This module is a plugin for ssb-db2 which implements the classic SSB feed format. You can use this module as an ssb-db2 plugin, or you can

Secure Scuttlebutt Consortium 3 Jun 18, 2022
Halo CE (for original Xbox) Decompilation Research Project

The goal of this project is to study and re-implement the original Xbox launch title Halo: Combat Evolved. Disclaimer: This project is intended only f

null 101 Jan 3, 2023
"Jira Search Helper" is a project to search more detail view and support highlight than original jira search

Jira Search Helper What is Jira Search Helper? "Jira Search Helper" is a project to search more detail view and support highlight than original jira s

null 41 Dec 23, 2022
🐬 A simplified implementation of TypeScript's type system written in TypeScript's type system

?? HypeScript Introduction This is a simplified implementation of TypeScript's type system that's written in TypeScript's type annotations. This means

Ronen Amiel 1.8k Dec 20, 2022
Charm implementation in JavaScript (TypeScript)

charm.js A tiny, self-contained cryptography library, implementing authenticated encryption and keyed hashing. Any number of hashing and authenticated

Frank Denis 12 Nov 2, 2022