Re[2]: Lark - A surface syntax for Common Lisp
"Gerry Weaver (as gerryw at compvia dot com)" <[email protected]>
| Newsgroups | gmane.lisp.lispworks.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Adam, It was originally written to be a user facing rule engine language. A lua kind of thing for Lisp. However, I found myself enjoying it enough that I wanted to use it for other stuff, so I've been expanding it for general use . It can basically be used in any way you would use Lisp. You can call any Lisp function and use it interpreted or compiled. Everything just ends up in Lisp anyway. You just load the package and start writing Lark. Thanks, Gerry ------ Original Message ------ From "Adam Weaver (as adam at cleversure dot com dot au)" <[email protected]<mailto:[email protected]>> To "[email protected]" <[email protected]<mailto:[email protected]>> Date 2/14/2026 6:04:51 PM Subject RE: Lark - A surface syntax for Common Lisp From: [email protected]<mailto:[email protected]> <[email protected]<mailto:[email protected]>> On Behalf Of Gerry Weaver (as gerryw at compvia dot com) Hello All, I've been working on this thing for a while. I'm getting close to the point where I'm going to call it good for now. I'm mainly working on the stdlib stuff (ie; http server, http client, websockets, etc.). It isn't meant to replace Lisp. It is intended to be an ergonomic extension. Hi Gerry, this is rather interesting indeed! What prompted this? Is this an extension language for something else? Or is it for standalone use? Is it an interpreted lang, or is it intended only to be compiled? Inquiring Minds Want To Know. let x = 42 -- lexical binding (let) let* y = x + 1 -- sequential binding (let*) let name = "Lark" -- strings let pi = 3.14159 -- floats let ratio = 2/3 -- rationals let hex = 0xFF -- hex literals let nothing = nil -- nil let yes = true -- boolean true (t) let no = false -- boolean false (nil) let ch = #\A -- character literal let kw = :hello -- keyword symbol -- Assignment (mutation) x := 100 -- setf Aha, you punted on using '=' for SETF 😊 I wrote a BASIC dialect for an internal extension language for my app. https://github.com/adamweaver/lw-basic It probably has bit-rotted a little bit, but I had no end of trouble in the parsing phase by using '=' for both SETF and EQUAL, like the BASICs of my childhood did. Re compilation, are you compiling to LISP and then using a native lisp compiler to turn into executable code? Or are you using a VM? Or something else entirely? For my BASIC dialect I decided to go meta-nerdy and compile the BASIC to a custom FORTH and interpret the FORTH code instead. Performance was much better than my first attempt (recursive descent interpretation of a sort of lispy lang). /Let Over Lambda/ convinced me that that could be a viable option. I'm interested in other solutions, because the solution I landed on was a bit metacircular ☹ Adam _______________________________________________ Lisp Hug - the mailing list for LispWorks users [email protected]<mailto:[email protected]> http://www.lispworks.com/support/lisp-hug.html