LambdaLite: A functional, relational Lisp database in 250 lines of Common Lisp
github.com
github.com
[1] http://en.wikipedia.org/wiki/ACID
[2] http://en.wikipedia.org/wiki/Relational_database#Constraints
This seems to imply a deep constraint that an attribute name MUST always be validated and handled the same way. A pretty serious limitation, IMO...
Also, if you're using a SQL client that makes "Parameterization of 'BOB' into a variable lack elegance", I'd recommend getting a better SQL client. Placeholders are SQL Interface 101 stuff.
Generally SQL parameterization interfaces (in mainstream languages) involve syntax like:
execute("SELECT * FROM FOO WHERE BAR = ?bar AND BAZ = ?baz", {'bar': bar, 'baz': baz})
At best you have something cleaner in languages with string interpolation, but the use of string interpolation itself is debatable.
I stand by the claim that those approaches lack elegance, but if it's really "SQL Interface 101" to do it better, please share some examples. I'd be curious to see them.EDIT: Ironically for a "functional" language, this strikes me as more of a LINQ-type library that provides a query across an in-memory structure.
The syntax for this query language is beautiful. Really exceptional. Lisp has such an excellent way of representing deterministic programming that no other language has really been able to match.
I know this doesn't scale right now, but I don't see any reason why it couldn't at some point. The query syntax is much more digestible than SQL.
(select :/name, :/salary from :employees where :/division = division)
I don't think these additional parentheneses add enough value to justify people learning another reinvention of sql.It should be possible to make it accept regular sql syntax, just with added /column for table columns and referencing variables from inside.
Anyway, nice work.
You make the two sound mutually exclusive.