libera/commonlisp - IRC Chatlog
Search
11:11:53
jackdaniel
that depends what's the goal of the book - if it is entertainment then it surely achieved its goal; the fact that it made common lisp more approachable is just a side benefit
12:08:56
luis
It's understandable that a book like Land of Lisp isn't very rigorous wrt terminology.
12:09:46
luis
it's certainly arguable that using some sort of simplified terminology is desirable even
12:21:05
beach
And, sure, it is "understandable" since the author probably does not have the training that (say) engineers do.
12:31:06
jackdaniel
understandable often beats technically correct. for example "symbols in cl are case-insensitive" (the very first remak) - technically wrong, in practice correct and conveys the essence (being technically correct would make much longer description that would only leave the not-trained reader confused)
12:32:06
rotateq
The book gave me a good intro back then, but it didn't take long since I started using other sources and got more confident piece by piece.
12:33:33
rotateq
Yeah, never have seen it myself, but can be useful when reading other things or writing a special DSL.
12:34:20
mfiano
Indeed. If such an introductory book started off with the first chapter of CLR, it would dissuade them from continuing quite quickly.
12:40:14
dbotton
Ladies and gentlemen: the story you are about to hear is true. Only the terms have been changed to protect the innocent.
12:42:05
Nilby
i'm biased from all the times i was grievously injured by a wumpus, and mocked by how much i look the caricature of the old lisper
12:43:28
dbotton
The audience was of lol was always hobbyists that would go on if got excited to something more
12:57:01
semz
"by default, the symbols you enter are converted to upper case first" would be just as understandable without being incorrect imo
12:57:53
semz
going into full detail on read-case and print-case at the start is silly obviously since they're barely ever used, but this is a case where the pedagogical lie seems kind of pointless to begin with
12:57:54
jackdaniel
that would not be technically correct. 'by default reader upcases the symbol name before interning the symbol'
12:58:38
jackdaniel
then, what is interning? why does it upcase the symbol name? what is a difference between a symbol and its name? yada yada ,)
12:58:39
luis
semz: you don't want to play the "technically correct" game with a lisp implementor :D
12:58:44
semz
sure but that'd be just as understandable since you can't really talk about symbols without interning
12:59:49
jackdaniel
(unless we assume the thesis we argue about, that all description must be technically correct)
13:00:55
semz
well i'd expect an intro to symbols to mention what makes them special. I'd have to check if land of lol talks about interning but surely?
13:01:18
luis
Anyway, I've never read Land of Lisp so I don't know whether the technical incorrectness pays off
13:01:42
jackdaniel
when I was learning common lisp I've first picked "gentle introduction", I fell asleep in the middle of the first chapter explaining what makes symbols special ,)
13:02:04
flip214
ACTION is reminded of physical models... the more exact, the harder to understand and predict
13:02:10
jackdaniel
then I've started reading ANSI CL (by Graham) and that was a very good introduction book; later I've read PCL that was also excellent
13:02:21
semz
Take in mind that I'm slightly biased - I see plenty of "pedagogical lies" in bad math books which backfire spectacularly
13:03:10
flip214
semz: OTOH, you can't start with the _total_ complexity anywhere - think of CS starting with field-effect transistors and their nonlinearity?
13:03:34
flip214
so there has to be a kind of abstraction level from which you can go up (and, later on, down as well)
13:04:48
luis
I've heard other people enjoyed the Gentle Introduction to Symbolic Computation book, though. lichteblau for instance.
13:06:50
beach
I am baffled by the number of people who argue in favor of incorrect and ambiguous terminology, even though it would be quite possible to use correct terminology while keeping things simple.
13:07:52
beach
Guest74: No, you can do what you want, but I would like to make sure that those who do read books get quality information.
13:08:51
jackdaniel
I'm surpised that lax terminology is enough to dub a book 'horrible' to the extend of being unpublishable - especially a book that was very well received among novice hobby programmers
13:09:24
rotateq
Good that there aren't so much like sand in the sea, plus good ones and timeless, like PAIP or the Keene book.
13:09:24
beach
jackdaniel: It is not "lax". It is wrong, and ambiguous for no reason that laziness on the part of the author.
13:09:39
Guest74
I'm not sure any introduction I had to anything, that wasn't boring to tears, was actually factual.
13:10:55
jackdaniel
I stick to my comment about the first "wrongness" pointed out in the book (and I still argue that a technically correct explanation would be harder to a non-trained reader)
13:13:04
Guest74
I wonder how much of life is that feeling of enjoyment when you've learned the inaccuracies of your introductions to subjects.
13:14:27
Guest74
Anyways, I'd probably argue in favour of a 'incorrect' introductory text that gets people interested to explore than a dry book that dissuades someone from learning by trying to stick every single piece of correct knowledge into a person before they start doing things.
13:14:56
Guest74
I mean, who are we to argue what works for one person or another. There are different teachers, and there are different students.
13:17:34
Nilby
i'm somehow still suprised when people think it's their duty, or even possible, to make sure everyone shares their opinion of quality
13:17:36
AadVersteden[m]1
Sholud anyone have intricate knowledge of cl-ppcre: are equivalent solutions expected to yield vastly different speeds or would it be expected that the compiler merges it all? Eg: `([ab])` versus `(a|b)`
13:18:12
Guest74
Though In my youth when I was autistic I very much understood insisting everything must be done in the manner I believed to be correct. Several decades of interacting with normal intelligence humans has very much dissuaded me from that naive notion.
13:18:24
AadVersteden[m]1
I can benchmark this, but my benchmarks would mostly go towards a specific case and I'm curious to know if the whole difference is moot.
13:18:34
jackdaniel
AadVersteden[m]1: recently no-defun-allowed wrote a library that beats cl-ppcre by a big margin
13:18:52
Bike
i believe ppcre will not attempt to convert a|b into a character range, so yeah, it could be slower
13:21:12
AadVersteden[m]1
mfiano: I'm on Matrix here, joining this channel. I like it but I'm not sure if I can merge both names. Not sure what I look like on IRC now
13:21:19
semz
Guest74: There are different notions of quality sure, but "it's all relative so who knows" is just cheap sophistry
13:21:32
Bike
though i think that's only in the weird cases that would be hard generally when building an NFA
13:23:11
madnificent
mfiano: That looks quite horrid :/ Might keep using it if people here don't mind.
13:23:12
semz
then I'm not sure what your point was with "who are we to argue what works for one person or another. There are different teachers, and there are different students"
13:23:53
madnificent
Bike: The approach used in one-more-re-nightmare might create less context-switches. Inlining things helps the compiler.
13:26:11
Guest74
semz: how can you judge the correctness of something without knowing everything involved? This does not necessarily imply everything is relative. It does imply we do not know what is relative and what isn't. Relative would be a person that needs correct information insisting that correct information always be given.
13:26:43
jackdaniel
semz: what a professional would find not acceptable could suit perfectly an amateur, likewise what a professional would find as an acceptable minimum would be too hard for an amateur; from a hindsight many concepts seem clear and should be described as true to the core as possible, but that's only a knowledge bias
13:27:41
madnificent
Given the structure of the SPARQL EBNF, I guess this approach could be faster here too. Thanks!
13:28:20
rotateq
And who understands something can explain it well too, so also a kid might get it confidently after some time. Or do you see it differently?
13:29:27
madnificent
rotateq: I'm not sure you can lump all people under that umbrella. I know people that are perfectly able to use technologies in depth with a good understanding of them, but that wouldn't explain them well to people not in the know.
13:29:45
Guest74
When I teach I usually try and insert some non-detrimental errors. It gives those students who enjoy pouncing on incorrect information something to live for.
13:30:35
madnificent
Not sure if this is the only thing but: Being good at explaining things _also_ requires to know what context the listener starts from. Some people clearly don't have a clue about the rest of the world XD
13:32:27
mason
So, I think it's safe to assume that LoL has higher-quality and more extensive cartoons than any other book out there.
13:33:00
rotateq
madnificent: That even more. :) Not often easy here. And no, I'm also near to physics and concrete math, the Feynman view is good.
13:33:00
mason
I just re-read the critique, and I'm not sure I'd catch on "command" versus "function" myself. Adaptive processing.
13:34:19
jackdaniel
mason: 'function' is a specified term in the ansi standard, while 'command' is a common word
13:34:34
semz
Guest74: I'm not sure what you're trying to say with that tbh, it sounds exactly like what I was criticising except shifted up one level on the meta scale. Although I get jackdaniel's point and don't disagree (in the abstract; obv. disagree how it applies here but then we talked about that already), so if that was the point I guess we don't disagree too much.
13:34:52
jackdaniel
I'm not sure whether it is put like "bla bla `command` doobie dooh", but if it is not, then I'd treat it as an English word
13:35:36
mason
jackdaniel: The specific examples of use are here: http://metamodular.com/Books/land-of-lisp.html
13:36:32
jackdaniel
mason: I'm talking about typeface used for particular words. i.e in documentation you may CAPTIALIZE forms, or `backtick` them to signify that they are a formal term
13:36:43
Guest74
page number? Though you really need the context. If he's talking about a game command, that has nothing to do with lisp
13:37:13
mason
Guest74: I think one of the complaints is that he uses the term in a relaxed manner, describing different things.
13:37:26
jackdaniel
either way, I don't have anything to add from my side; I'm just sorry that Simoneee got scared and probably will discourage people from joining this channel in the future
13:37:38
Guest74
I'd have to actually read the book, but I seem to recall it's about issuing game commands and little to do with lisp.
13:39:01
madnificent
Anyone know of things that visualize Common Lisp code? For instance, something that generates class diagrams or which functions/methods call which other functions/methods.
13:40:16
madnificent
I recently found something like it for Elixir. Because I didn't know too much about Elixir when I got started I noticed a bunch of things that looked like a bad interface. So I guess such tools have value after all. Was curious to run something similar on some of my Lisp code.
13:41:05
rotateq
madnificent: You could look for the clouseau inspector or there's one McCLIM example "draggable graph" which shows a class tree. (in default from NUMBER as the root)
13:44:04
jackdaniel
n.b in the "Show" menu there are predefined commands (ha!) that display hierarchies like this one
13:44:58
jackdaniel
with mcclim you can use also output-only backends, like svg or png, disregarding of the platform
13:46:35
rotateq
Ah cool, so the main backend for McCLIM is xserver. Try (ql:quickload :mcclim) in your implementation.
13:48:52
Guest74
the name of a function." It seems they're using 'command' as in what you want to command the computer to do. sorry about kicking the horse again.
13:51:23
beach
Is one of you talking about the listener and the other about Clouseau? Just checking.
13:55:17
masinter__
not the code, the name "command" and the idea that when you type in, it isn't REPL it's read / interpret / print loop where interpret looks at the first typed on the line and sees if it matches a "command" name
13:56:29
masinter__
and before, the "grapher" function that took a list representation of a graph and gave you an interactive display layed out
13:56:35
beach
masinter__: We just implemented the CLIM II specification. It is entirely possible that it was inspired by Interlisp.
13:59:13
masinter__
sure, interlisp took it from Tenex OS from PDP-10s; i'm not sure multix had a command loop
14:00:07
jackdaniel
CLIM presentation system was inspired by https://dspace.mit.edu/bitstream/handle/1721.1/41161/AI_WP_219.pdf and this document seems to use the term command
14:00:27
jackdaniel
the working paper is from 1981 so it is possible that it got inspired by interlisp indeed
14:05:36
Nilby
lisp people have a long history of copying stuff. the tree graphing on lispworks looks similar, as well as symbolics and interlisp
14:06:42
Guest74
they kinda all look the same. biggest difference being those with and without curves.
14:09:51
Guest74
So I've got a dilemma with type-1 fonts in how do I store the glyph data? It's rather elegant the way you can call subroutines to draw specific parts of a font, and makes manipulating those parts easier. But it's not a very practical format.
14:10:58
Guest74
Do I convert every glyph and subroutine into a cl-vectors path so it's easy for anyone to deal with as nobody seemed to suggest any other formats?
14:15:08
madnificent
jackdaniel: do you know by accident if one-more-re-nightmare (what a negative name -_-) is known to work with multi-byte characters? I mean this as a generic question on how stable this solution is expected to be with respect to edge cases.
14:15:10
Guest74
They also have easier to apply hinting that what you'd have to write to hint a ttf or otf.
14:15:57
jackdaniel
madnificent: I have no idea, I have not used it myself; I've just remembered reading about it
14:17:05
Nilby
with postscript, it's typical to turn everything display lists that are just vectors (i.e. curves are rendered to vectors), which can then be rendered as trapazoids meshes. for modern graphics drivers, it would probably end up as triangle strips
14:18:01
madnificent
jackdaniel: okay, hope I can make some time for it. I really like the approach to the problem. I'm using this for LL(1) parsing based on a FSA myself.... assuming I remember my code.
14:18:24
Guest74
The plan is to have that conversion possible at the path level. While this is more about construction of the paths. i.e. do I construct the path or leave the commands to construct the path and reconstruct it on demand.
14:19:26
Guest74
or, have the user deal with constructing the paths. Which is a hard question since I'm the only user right now.
14:20:42
Guest74
Though I guess if someone writes a vector library that runs on the gpu they could probably want the simple postscript.
14:21:18
Nilby
of course it depends on what you're doing with it. unless your making a font editor, usually the goal is to get to rendering quickly, and perhaps to stick in a font cache
14:23:14
Nilby
ah, well then you probably want to keep in the abstract way that calls out to letter forms, since that's a big thing about the way it's designed
14:26:34
Nilby
it's very educational to examine all the details, and the differences in the font design. some fonts, despite how they look, are internally designed like crap, other very elgantly
14:26:42
Guest74
Thankfully I managed to find a postscript name to unicode list buried in archive.org.
14:27:50
Guest74
elegance is what I see in the type-1 fonts, or it's just because it's probably how I would define it.
14:29:55
Guest74
you wouldn't think it using google, but that's because most of the information has been removed.
14:33:12
Guest74
I guess the overhead to generate the path will be immaterial to the rendering when doing text layout in a vector program, and if you're not using font atlases for fonts what are you doing??
14:37:09
Guest74
I guess I'll keep the data raw...ish, just decoded. It'll probably make for a better font inspector when you can visually tell which parts of the glyph are common subroutines.
14:40:00
Nilby
Guest74: it's very expensive to create japanese outline font. but yeah, they were too paranoid because it turned out you could program the printer to upload the raw font data to anything
14:41:25
masinter__
different licensing terms -- in the US, there's an exception for raster fonts in the copyright law, but not in Japan
14:42:36
Guest74
lol, didn't know that. The early days of encryption and protection always seemed to be circumvented by something trivial.
14:43:50
Guest74
I think I'll add a segment browser as well. It's probably education to see the parts that make up a font.
14:47:28
Guest74
I don't know why, but this Agora font has things like "donot.bleach" "dryclean.petroleumsolventonly"
14:50:39
Guest74
I'm guessing the real reason they killed type-1 is because the glyph index is only 8 bits and you had to look everything up by ps names.
14:52:16
masinter__
there were two standards: ISO 10646 unicode for character codes and names, and iso 10036 for glyphs
14:54:04
Guest74
So I'm just storing glyphs like this then. (66 696 :HSBW 476 360 :RMOVE-TO 39 :CALLSUBR -279 -67 :RMOVE-TO 40 :CALLSUBR 419 :VMOVETO 41 :CALLSUBR :ENDCHAR) which seems very unwelcoming.
14:58:54
masinter__
https://www.researchgate.net/profile/Larry_Masinter/publication/237527690_Extensions_to_Common_LISP_to_Support_International_Character_Sets/links/0c960535d33199f90d000000/Extensions-to-Common-LISP-to-Support-International-Character-Sets.pdf?origin=publication_list
15:07:04
Nilby
masinter__: that turned out to be an ahead of it's time proposal, since we can still use most of it now. i'm happy the extended-char got in there, but i'm sad that most implementations still don't use it. an impressive body of work
15:08:51
masinter__
medley uses the Xerox XCCS internally, but we've added Unicode UTF-8 support as an external-format
15:12:01
masinter__
guest174; it was before most people didn't have raster displays so "neutered" => "before"
15:14:47
Guest74
I really wonder where Xach is. He's the only person I know who has dealt with path building and I'm wondering about how to deal with construction of multiple paths.
15:15:56
Guest74
Right now I just keep track of one path, you close it, you get it, or can see it at any time with vg:show-path.
15:18:37
Guest74
but with fonts, you're usually dealing with multiple paths. Do I keep a stack? Do I allow access to the stack or just what's at the top? If I start a new path without having closed the previous path, do I implicitly close it? Do I allow further additions to it when the path above it has been popped?
16:51:14
contrapunctus
Is there a tool which warns you about symbols you have imported into a package, but never used?
16:52:00
mfiano
SBCL's deterministic profiler will list all unused symbols of the packages you ask to be profiled.