commander-trashdin / clng Goto Github PK
View Code? Open in Web Editor NEWCommon Lisp next generation (discussion)
License: MIT License
Common Lisp next generation (discussion)
License: MIT License
I am not criticising any specific part of your document [yet!]; at this stage, I wish only to ask if you've reviewed the new GitHub "discussions" feature, before specifying how you wish Issues and PRs to be used in this discussion.
Overall I commend your effort; it is too easy to punt aside structure for conversations, and simply use IRC (or Slack and its ilk); however, there are multiple different technologies for structured discussion, and I wonder what your rationale was for this choice.
Sup. This is long, sorry. First I'd like to mention my appreciation that your ideas here are more uh... how do I put this... usually when I've seen ideas for standard extension they haven't been very coherent, and seem to be more interested in following the pack of other languages than seriously considering what problems Lisp actually has. So, nice.
Secondly, I'm going to mention previous/alternate versions of several things you mention in the README, that don't seem to be mentioned. I don't know if you know of them or not, but I think they are useful cross references.
Anyway:
eval
access to environment. This is an idea I very much support in principle but it would require some major changes. Environment objects in the standard are basically "compile-time", and do not really include things like the actual values of variable bindings. Actual runtime environments would be their own beasts. The most interesting system with really usable runtime environments is, I think, Kernel and I have a few partially baked ideas relating to a language with real runtime environment introspection and usage.(define (funcall1 op arg) (op arg))
, (funcall1 a-fexpr x)
will result in the fexpr receiving the symbol arg
, from the definition of funcall
, as an argument. Fourth, I haven't seen many uses for them that wouldn't be covered just by using a macro. Kernel, mentioned above, is the most extensive modern system with fexprs I know of.defstruct
that I'll elaborate on in my repo. The short version is that I would like to have structs that can be stored unboxed in arrays, or ideally, usable to implement your own arrays efficiently, with something like C's flexible array members.proper-list = (or null (cons t proper-list))
. We could also define a type for circular lists: circular-list = (cons t circular-list)
. This seems reasonably intuitive, but what is (subtypep 'circular-list nil)
? With the (sorta) obvious definition of subtypep
on recursive types, we would go, okay, let's assume it is, and then it's a subtype if (cons t circular-list)
is a subtype of nil
; this is a subtype if the cdr of the cons is a subtype of nil; we are asking whether (subtypep 'circular-list nil)
is true while determining whether (subtypep 'circular-list nil)
is, so by assumption it is, and so circular lists don't exist. Sort of the issue here is that familiar recursive types in Haskell and so on are isorecursive, while in Lisp equirecursive types seem more obvious. https://en.wikipedia.org/wiki/Recursive_data_type#Theory[]
and {}
for user use, while ~
is reserved to implementors. I will also mention that the reader implementation Eclector includes more hooks for the reader that could be incorporated into an extension, e.g. here.There are a lot of generic half-baked ones. It also may include the discussion of what can be added/changed about lambda-lists structure โ such as pattern matching.
https://github.com/s-expressionists/Ecclesia includes such utilities as a library.
UltraSpec is strictly related to ANSI CL, its extensions, and libraries, and therefore will very likely not deal with any future CL revision until it gains considerable traction.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.