2020-11-12 14:14:39 -07:00
2020-11-12 15:25:13 -07:00

Kiss

A type-safe, compiled Lisp for Haxe programs

What is Kiss?

Kiss is a work in progress. (See: Who should use Kiss?)

Kiss aims to be:

  • A statically typed Lisp
  • that runs correctly almost anywhere,
  • is usable at any stage of its development,
  • doesn't break downstream code when it updates,
  • and doesn't require full-time maintenance

Main features:

  • Traditional Lisp macros
  • Reader macros
  • Plug-and-play with every pure-Haxe library on Haxelib
  • Smooth FFI with any non-Haxe library you can find or write Haxe bindings for

Extra goodies:

  • string interpolation
  • raw string literals

How does it work?

Kiss

  • reads Kiss code from .kiss files
  • converts the Kiss expressions into Haxe macro expressions
  • provides a builder macro which adds your Kiss functions to your Haxe classes before compiling

By compiling into Haxe expressions, Kiss leverages all of the cross-target, cross-platform, type-safety, and null-safety features of the Haxe language.

Why?

I've been working on a Haxe-based interpreted Lisp called Hiss since December 2019. I had to rewrite Hiss from scratch at least once. I've learned so much from writing Hiss, but it has majorly slowed down the productivity of Hiss-based projects because it is so complex, fast-changing, and prone to runtime errors. Kiss is like a Kompiled hISS, and a reminder to Keep It Simple, Stupid.

Who should use Kiss?

As of November 2020:

  • No one. So far there is only the most basic proof-of-concept in a branch of the Hiss repository.

At the next milestone:

  • Hobbyists writing disposable code without deadlines.
Description
Experimental Kiss support for VSCode
Readme LGPL-2.1 58 MiB
Languages
Haxe 91.7%
Shell 8.3%