freenode/#lisp - IRC Chatlog
Search
8:27:16
engblom
edgar-rft: "Gentle introduction..." seems to be very verbose: much text is used to explain trivial things
8:28:52
edgar-rft
engblom: I like to say that it's "Programming explained for Babies". If you have worked with other progranming languages before "Practical Common Lisp" is better
8:31:29
beach
I guess "Gentle" was written before a top-level SETQ/SETF of undefined variables was undefined behavior.
8:32:14
Nilby
I first resolved to figure out what the words lambda cddar rplaca meant, so I could cheat at a game.
8:33:15
edgar-rft
beach: I learned from Touretzky why a symbol can name a function and a variable at the same time and when it's used as what. Touretzky was the only book with a picture of all symbol slots (symbol-value, symbol-function, symbol-plist, docstring etc.) That picture helped me much when I was still new with Lisp.
8:34:33
beach
edgar-rft: That's what I suspected. Interestingly, that's often the wrong way of thinking about it. Certainly the SYMBOL-VALUE is wrong.
8:37:04
beach
I would have much preferred that the chapter "Environment" in the standard would be about the global environment, and I would have preferred that SYMBOL-FUNCTION and FDEFINITION were specified there.
8:41:34
Nilby
It's weird, I think global environments were a thing that everyone knew, at the time of the spec, were necessary in practice for big things like Emacs or an OS, and that every big implementaion had, but that they didn't want to burden small implementations with.
8:41:52
beach
The code in Touretzky seems to have consistent indentation. That's a plus. Many books get that wrong.
8:43:04
beach
The fact that it is "spread out" in a typical Common Lisp implementation doesn't make it less real.
8:45:48
beach
Yes, especially when the standard seems to encourage the reader to think about it that way.
8:46:56
beach
SYMBOL-FUNCTION is in the Symbols chapter. FDEFINITION is in the Data and Control Flow chapter.
8:48:58
Nilby
I like the idea of an Environment chapter, especially if they were first class, but then what would the existing chapter be called?
8:50:04
beach
Good question. I need to think about that. Also, since it is a matter only of presentation, this issue could be fixed without altering the language. Maybe some future version of WSCL.
9:05:11
beach
I also like Touretzky's CONS diagrams. Those are pretty close to the what I use myself to explain lists to newbies.
11:07:25
kevingal
beach: are you reading Land of Lisp out of some masochistic pleasure, or do you keep running into it in the wild?
11:08:21
beach
I am reading it because it is part of my job to keep me informed about the literature, so that I can then give advice to potential students of Common Lisp.
11:10:29
kevingal
Fair enough! I've always thought that it makes sense to read books you don't like so that you can appreciate the ones that are more to your taste.
11:11:20
beach
luni: Right, my employer would not fire me if I omitted this book from my reading list.
11:12:14
kevingal
Re: Practical Common Lisp, I wouldn't recommend it as a learning resource. It describes features in excruciating detail and doesn't have exercises. Maybe it doesn't suit my style of learning.
11:13:07
kevingal
I like using it as a reference. Or when I vaguely understand a feature and want a full review.
11:13:45
beach
flip214: You are definitely right. Hence my explanation for my reason for reading it.
11:14:47
flip214
well, curiosity is _always_ a valid reason, so I didn't think you'd need to explain anything
11:15:27
beach
edgar-rft: Sure. I meant, whenever I read text books in order to learn something, I never do the exercises. It saves a lot of time. :)
11:15:37
jackdaniel
books are overrated, the true lisper explores their innate deposit of wisdom and complain when the programming language does not match their intuition! :)
11:16:33
jackdaniel
(or asks on #lisp how to solve this particular topic being the beginner material)
11:16:39
edgar-rft
I also don't do the exercises, for exactly the same reasons, what is probably the reason why I never learn anything at all
11:17:39
ldbeth
unless it is sold to students, a good book should always includes answers to exersices
11:19:47
jackdaniel
in the amop book, excercises are marked as easy, demanding, hard and open problems afair
11:21:58
kevingal
I can't be sure that I've learned anything unless there's a way to test my knowledge. I'm actually doing exercises from a textbook as we speak, haha.
11:24:24
kevingal
Then again, maybe the fact that I do the exercises is the reason that I don't finish many books.
11:24:29
jackdaniel
you may find (for free) two chapters of this book as a reference of said protocol here http://metamodular.com/CLOS-MOP/
11:25:19
joga
hey... I just realized I borrowed amop to friend years ago and it's still there, thanks for mentioning it
11:26:26
jackdaniel
is anyone aware of a library that offers a security model for common lisp? (i.e for various users)
11:31:01
jackdaniel
I'm not interested in LM, I'm interested in common lisp library (or, eventually, specification for such security model)
11:33:57
ldbeth
Sounds like you need something a object-oriented access control thing, guess I haven't totally forget it then. http://www.object-oriented-security.org
11:37:38
jackdaniel
thanks, I'm loosely aware what is the capability based security model; what I don't know is whether someone attempted to use it in common lisp
11:38:38
jackdaniel
the site you have mentioned mentions passing "messages" between objects, in Common Lisp enforcing the capability would be probably baked into the generic function
14:25:45
mfiano
Gripe of the day: It's annoying so many CL queue libraries are named with stack semantics (push/pop)
14:41:07
mfiano
Even lparallel uses push/pop. phoe is one of the only people that I can respect with enqueue/dequeue, though I think I suggested that while he was developing it :)
14:51:29
mfiano
Speaking of lparallel, there are quite a few issues, and no developer activity since 2016. Should we sharp that thing?
14:51:49
phoe
push/pop, enqueue/dequeue, insert/remove, add/delete, stuff/pull, suggest/enquire... synonyms suck
14:54:25
splittist
ACTION wonders if the fact his function is 120 lines long is affecting its debuggability...
14:55:09
_death
it's true that push/pop are better associated with push-down lists (stacks).. but it's not exclusive, you can push/pop on either end.. for example C++'s deque (double-ended queue) has (push|pop)-(front|back)
15:05:19
splittist
phoe: yes. But not worth it just yet. It's trying to match identical subtrees using queues and hashtables and all manner of state. The real issue is that I don't quite understand it, yet (:
15:40:53
aggin
how would I use FORMAT to print out the index of the current element I'm iterating through in ~{
15:48:07
aggin
btw I was wondering how the ~/ directive worked in FORMAT, I couldn't find any example of it
15:53:11
_death
kevingal: not too long ago I took an hour to hack some define-equality-test operator, that you can use to define a case-sensitive euqalp https://gist.github.com/death/6a441602bd6acebda067dd900e56e256
15:55:16
kevingal_
I'm guessing the equalp thing is something to do with symbols being case-insensitive.
15:56:57
_death
kevingal: this is more about the reader's behavior, as defined by the readtable's case
15:57:45
specbot
Examples of Effect of Readtable Case on the Lisp Reader: http://www.lispworks.com/reference/HyperSpec/Body/23_aba.htm
16:02:01
_death
the equality operators defined for you by CL are somewhat arbitrary.. the clhs also mentions this
16:08:15
aggin
is there a way to collect in LOOP if a predicate is true or do I have to do it outside of it with REMOVE-IF
16:09:45
kevingal_
Case-insensitivity somehow seems more arbitrary than case-sensitivity :D I guess I can't complain, since the language also allows you to fix it with a whiz-bang macro.
16:13:55
_death
kevingal: when I started learning Lisp I worried about it, but over the years I came to prefer :upcase.. when I need to interoperate with some case-sensitive system doing the case translation myself or using strings or escaping seems to work well, it seems to discourages camelCase etc. in Lisp code, and in the repl when I have some char capitalized by mistake, I need not worry ;)
16:15:36
_death
it's also useful on irc discussions, where you can write FOO to hint that you're talking about the symbol, instead of, say, elisp convention of using `foo'
16:18:25
_death
and sometimes for quick experiments I just write stuff in uppercase for the nostalgia value ;)
16:25:24
kevingal_
death: makes sense! My surprise is more at the default behaviour of equalp. Not an issue once you're aware of it. By the way, what's SCREAMER?
16:26:27
_death
kevingal: it's an oldie but goodie library for nondeterministic and constraint programming in Lisp
16:31:02
Lycurgus
right that was what I was looking for, trynna connect the dots between old thing I'd vaguely heard of and a lisp program that shouts
16:46:28
Nilby
That it does something different with extended-char, which also means I want fancy extended-char, with attributes and things.
18:49:00
pfdietz
equalp is not just case insensitive on strings, but also on characters. Also, it doesn't care about array-element-type. (equalp "a" #(#\A)) ==> true
18:56:38
gendl
Hi, trying to start Slime with sbcl 2.1.2 (as installed by brew on an Intel Mac), set slime-lisp-implementation to ("sbcl") as well as full path to exe, as well as tried with :env ("SBCL_HOME=....") but...
18:58:04
gendl
wait... nevermind... just noticed I'm using a quite outdated Slime... trying with newest Quicklisp version..