Skip to content

kiss-lang/kiss

Repository files navigation

Kiss

A type-safe, compiled Lisp for Haxe programs

Build Status

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 using Haxe's FFI features.

Main features:

  • Traditional Lisp macros
  • Rust-style pattern-matching
  • 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
  • helpful compiler errors

Extra goodies:

  • string interpolation
  • Rust-style raw string literals
  • syntactic sugar for Promise-based asynchronous code
  • negative indexing
  • list comprehensions
  • immutability by default
  • destructuring assignment

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.

What does the license mean?

Licenses are confusing and GPL licenses can be intimidating. I've chosen the LGPL because I never want any big corporation to profit from my work. If you are an independent developer/studio with good intentions, I'm willing to negotiate usage of Kiss under a different license on a case-by-case basis.

Who should use Kiss?

As of now:

  • Language design enthusiasts
  • Hobbyists writing disposable code without deadlines

Hopefully someday:

  • Professional game developers who want to learn the ways of Lisp

Limitations

  • No pattern matching in macros
  • No type checking in macro definitions
  • Macros are extremely hard to debug

About

A type-safe, compiled Lisp for Haxe programs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages