libera/#commonlisp - IRC Chatlog
Search
14:16:29
pjb
rotateq: emacs lisp being to program emacs is not a reason why emacs couldn't include a full fleshed Common Lisp; ancien lisp machines contained several different lisps. and there is a Common Lisp implementation in emacs lisp that worked before (ironicallyh) lexical binding was introduced to emacs lisp (emacs-cl); lexical
14:17:13
pjb
this could be revived, or another CL implementation could be ported to emacs lisp; perhaps sicl? Or we could also integrate ecl as an emacs lisp plugin, now that they exist.
14:18:53
beach
pve: For the SICL reader, we do the same thing as yitzi with the Gray streams. We have Eclector configured to create concrete syntax trees, and that's what the first pass of the compiler accepts.
14:20:07
beach
pve: And for the purpose of bootstrapping, we may have to configure Eclector so that it does not intern symbols in the host package system.
14:23:12
yitzi
clasp does essentially the same thing and as a result writing REPL that preserved source references for Jupyter was very easy compared to the other implementations. Looking forward to SICL!
14:24:10
beach
You are already using parts of if, since Eclector is definitely a SICL-related project.
14:24:46
beach
I mean, it started life as the SICL reader, and was then extracted and greatly improved by scymtym.
14:27:53
yitzi
beach: Well, that is true. And trust me, that is a big deal because there is a lot of tasks in common-lisp-jupyter that would be very difficult without eclector.
14:29:17
beach
pve: For example, in SICL, the source information is a quadruple: start line, start column, end line, end column.
14:30:20
beach
Eclector queries the stream for source information. By default the FILE-POSITION is used, but with a Gray stream, the client can choose the format.
14:31:27
beach
Client code defines a Gray stream class, and method on the relevant Eclector method that queries for source information, specialized to that Gray stream class.
14:33:01
yitzi
pve: Eclector's source query is from the `eclector.base:source-position` method. You can see use of it here if you want. https://github.com/yitzchak/common-lisp-jupyter/blob/c5531f60da0ec288a187a55ba699e38548233819/src/cl-jupyter/utils.lisp#L224
14:33:21
beach
pve: https://github.com/robert-strandh/SICL/blob/master/Code/Source-tracking/stream.lisp
14:34:42
beach
Actually, SICL is even more special. It reads the entire file contents into memory first, and then characters are read from the memory representation.
14:35:31
beach
It does this so that the source code of the compilation unit is associated with the compiled code, in the form of a vector of strings.
14:36:09
beach
That way, the file can go away, and we still have source location in the backtrace inspector.
14:36:54
beach
Unlike SBCL, where the directory belonging to Krystof can not be found on my machine.
15:35:54
scymtym
that's strange. references to SBCL sources are stored with logical pathnames. i thought there was no mapping to physical pathnames unless SB-EXT:SET-SBCL-SOURCE-LOCATION is called
15:36:41
beach
I am sure I have seen this pathname reference, but I can't remember the situation now.
15:47:23
lukego
pve: oh wow, is that example the whole implementation? I assumed the eclector extension was in another file but maybe that's it there near the top?
15:52:14
pve
lukego: yeah, the implementation is in another castle, but I think I could package the examples up into something easily loadable (and useable)
15:54:13
pve
lukego: the slots-and-accessors-test example depends on the eclector-access system (which in turn depends on eclector) and also the files symbol-patterns.lisp and slots-and-accessors.lisp in the examples dir
21:33:32
lisp123
rotateq: Yes, I got that working. My brain hurted trying to install CMUCL so I gave up
21:37:10
lisp123
rotateq: Perhaps. Next up is LispWorks if I can save up enough money to try it out (outside of the Personal Edition), and perhaps AllegroCL too
21:38:24
lisp123
My goal is to have them all nicely installed, then switch between each in Emacs with (setq inferior-lisp-program ....)
21:40:21
rotateq
even wanting to be aware of the things *one* of the main implementations provide is immense
21:46:19
rotateq
you have luck if your customer is getting what you tell him why you choose the thing itself in contrast to most competitors, trusts you and says "OK". so you don't have to tell him even more "oh and because of this and that better this implementation"
21:48:18
rotateq
right, because they don't have an overview, so trust is of much worthness (you could tell them basically anything)
21:50:38
rotateq
yes the payment will include that you do it to your best believing (justified by clear facts and some metrics). and thinking in the long run
21:53:15
rotateq
that kind of freedom often goes hand in hand with confidence, and confidence is grown by experience and experience is grown by practice