omarbassam88 / lisp-spectrum

Exploring the Lisp Family of languages
https://lisp-spectrum.org/
22 stars 1 forks source link
clojure common-lisp gambit guile lisp scheme

+title: The Lisp Spectrum

+author: Omar Bassam

+date: [2024-08-07 Wed]

+startup: nonum

This project aims to explore the extensive spectrum of the Lisp family of languages. Lisp is renowned for its high flexibility and great control, offering programmers a powerful toolset. However, the abundance of available options can be overwhelming, leading to choice fatigue. Therefore, this project seeks to compile essential information about the major Lisp dialects, detailing their unique features, tools, and learning resources. The project tries to provide beginner friendly guide for Lisp in general and for each dialect as well. It should be understandable and useful to the reader whether they are new to programming, with or without experience in a lisp dialect.

The Lisps we will be exploring:

+begin_src lisp

(+ 1 2 3 4) (list 1 2 (list 3 4)) (defun foo (a b c d) (+ a b c d))

+end_src

REPL The REPL is a major selling point for Lisp, allowing for interactive, incremental program development. This feature has influenced many modern languages to offer similar interactive experiences. Code as data Lisp code has the same structure as lists, enabling the creation of macros with list-processing functions. This facilitates the development of Domain-Specific Languages (DSLs).

We will also look into the first time setup for every lisp.

** Resources The availability of learning resources is crucial for any programming language. We will try to gather the most helpful resources for every lisp including:

** REPL Ease and speed of interacting with the REPL, including the possibility of connecting to a remote REPL.

** Editor Integration While Emacs is the de facto standard for working with Lisps, some have their own IDEs (e.g., Dr. Racket for Racket) or support through plugins in other editors. We will explore available editor options for each Lisp.

** Package and Project management

** Standard Library and Ecosystem We will discuss the built-in libraries for each Lisp and their usability. Additionally, we will explore the ecosystem for each Lisp, including where to find and download packages.

** Performance This is very subjective as every lisp compiles to a different target(s). So, it's hard to decide whether the comparison of performance is between the lisp implementations or the target platforms.

** Interoperability with target platform(s) Most lisps offer a way of interoperability with their target platform(s) or with other platforms as well. This can differ from one lisp to another, so this won't be a comparison but rather exploring the different options.