Select a certain subset of the CL standard, throw in some utility libraries (alexandria, cl-ppcre, something for date manipulation come to mind), document it all in a structured manner and offer a downloadable core image.

skypher wrote:A small pet idea of mine for lowering the entry barrier to CL:

Select a certain subset of the CL standard, throw in some utility libraries (alexandria, cl-ppcre, something for date manipulation come to mind), document it all in a structured manner and offer a downloadable core image.

What do you think? Would anyone be interested in collaboration?

I think that this would be quite useful. Having a structured documentation (I really like http://docs.python.org/library/index.html) really helps.It would also be good to have a «meta-packages» of selected sets of existing libraries combined with good documentation. I do not think that a core image is really necessary.

skypher wrote:A small pet idea of mine for lowering the entry barrier to CL:

I think that the entry barrier is not the overwhelmingly large language standard, and even if it was, this would be better addressed by a tutorial that doesn't throw every detail at once at the learner.

I think that the problem is rather exemplified by the code in this question. People who come from imperative languages have to understand a completely different program flow from what they are used to. They will try to declare variables, but they do not understand how scope and extent work. They try to apply their sequential thinking, but the program flow goes orthogonal to how they expect it. The person who asked that question above claimed to have read the first 10 chapters of Practical Common Lisp, and yet he violated at least one principle from each of those chapters (disclaimer: I might be exaggerating here). I think that it's great that he posted this question, and that he will come over this barrier. The problem is recognizing where the barrier is, instead of just throwing Lisp away as "useless" because it doesn't work as you expected.

I think that I would design a tutorial in such a way that let*, do*, setf, and the extended loop are explained as late as possible. Even defvar and defparameter are not needed for the first steps. The very first step would have to be "forget everything that you believe to know about programming". The first looping construct would be recursion. Do anything to keep them from falling back into the BASIC mind.

skypher wrote:A small pet idea of mine for lowering the entry barrier to CL:

Select a certain subset of the CL standard, throw in some utility libraries (alexandria, cl-ppcre, something for date manipulation come to mind), document it all in a structured manner and offer a downloadable core image.

What do you think? Would anyone be interested in collaboration?

I guess the first task would be to draw up one list of the libraries you'd like to include and another list of the features you'd like to drop in your subset and see how many of the libraries would still work. I fear it could be an infuriating exercise!

Perhaps there are other approaches you could consider, like building a smaller Lisp atop CL?

skypher wrote:A small pet idea of mine for lowering the entry barrier to CL:

Select a certain subset of the CL standard, throw in some utility libraries (alexandria, cl-ppcre, something for date manipulation come to mind), document it all in a structured manner and offer a downloadable core image.

What do you think? Would anyone be interested in collaboration?

Why a subset of CL? If it is solely for the purpose of having less functions to wade through, then why are you adding all of those functions in the libraries?