Skip to content

LLLida/lips

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lips programming language

Rationale

There aren’t many embeddable lisps out there. One could argue that there are some projects like guile, s7 lisp, racket etc. But I want something very simple yet fast like lua. Lips tries to be both very simple and featureful language.

Why use lips:

  • small and easy to integrate codebase. The interpreter is implemented in two files: lips.h and lips.c. There are nearly 3000 lines of code in this files. I guarantee that in future interpreter won’t exceed 5000 Loc. However there’re will be some additional modules.
  • performance.
  • simplified syntax. Lisp syntax is best syntax for programming ever. Period.

Why not use lips

  • There’re probably some bugs.
  • API is unstable.
  • No libraries/packages. One should write them by themselves using FFI. I plan to write some standard modules though.
  • No support for common text editors. I plan for writing some mode for Emacs. For now if you use Emacs you can put “;; -*- mode: scheme -*-” at beginning of a file.

Roadmap

Builtin property lists aka plists

Improve tests

Decent error handling

Exceptions are implemented. Need to improve error handling inside internal functions.

User-defined types

This is a needed feature.

Builtin functions/macros

  1. arithmetic functions that work both on integers and floats(+, /, - etc.)
  2. list managing functions(car, list, caddaar etc.)
  3. general functions(===, nilp, typeof etc.)
  4. environment functions(eval, intern etc.)
  5. string functions(format, concat, capitalize etc.).

Docstrings

Syntactic sugar

(quote something) -> 'something
(lambda (a) $car (list a 7 6 5)) -> (lambda (a) (car (list a 7 6 5)))

Narrow down amount of allocations

Releases

No releases published

Packages

No packages published