freenode/lisp - IRC Chatlog
Search
5:11:32
fiddlerwoaroof
It doesn't distinguish between operator and arugment positions and it's annoying in a couple ways, but its main advantage is that it works by querying your lisp system to determine what symbols are available
5:12:33
fiddlerwoaroof
cool, I shared it somewhere at one point and was surprised by the people who didn't know about it
5:13:45
fiddlerwoaroof
I'd really like a better completion system, but it seems to me that any particular strategy for completions is going to have annoying edge cases
5:14:34
ChoHag
It should be unthinkable that the system doesn't somehow make slime users aware that slime-company is available, at least.
5:15:13
fiddlerwoaroof
I have all sorts of handy utilities on my laptop that no one can use because I haven't advertised them :)
5:18:23
fiddlerwoaroof
The other difficulty with completion is that sometimes text-based completion is better
5:18:59
fiddlerwoaroof
If I have three symbols with somewhat conventional names, after I type foo-a, foo-<TAB> completing foo-a makes it easier to input foo-b
5:19:54
fiddlerwoaroof
even though the completion is actually wrong, it's more useful than showing me either nothing (because I'm in a let and foo-a is a parallel binding) or some random symbol.
5:22:20
fiddlerwoaroof
One thing I'd like is the ability to write code into the buffer with #1# and #1= and then tell emacs to "expand" the reader macros
5:23:02
fiddlerwoaroof
It wouldn't be safe because it'd break identity, but it'd be pretty useful in some situations.
5:23:30
moon-child
I'm inclined to say that if you need to duplicate enough code that that would be useful, you're probably doing something wrong anyway
5:24:52
fiddlerwoaroof
Also, there's a bunch of places where that sort of editing shortcut would just be nice
6:14:07
jlarocco
In the Slime REPL, when I run (ql:quickload :my-package) where my-package has a syntax error, or some other failure, is there a shortcut or function to jump to the source code location causing the problem?
6:20:54
jlarocco
If I compile the file with C-c C-k, I can use next-error and previous-error to jump to the location that caused the problem, but that doesn't seem to work using (ql:quickload) from Slime
6:55:13
no-defun-allowed
Re-reading the Early History of Smalltalk, this statement could be read as in favour of generic functions and/or method combination: "And we soon discovered that "prototypes" were more hospitable than classes, and that multiple inheritance would be well served if there were classes for methods that knew generally what they were supposed to be about (inspired by Pat Winston's 2nd order models)."
7:17:31
pillton
I don't understand how "functions" coupled with state got so far. I am referring to the syntax for application and their declaration/definition.
7:21:12
Lycurgus
pillton that reminds me of when I once asked my mother if they had electricity when she was a child
7:24:45
Lycurgus
in fact before haskell, and erlang (outside switches), when strict FP meant ML, it (strict FP) was considered a useless academic toy
7:29:32
Lycurgus
it also makes it sound like langs with full referential transparency were now the norm which is hardly the case
7:52:06
phoe
jlarocco: compile with debug 3, then the backtrace will have a green-colored frame that shows the form beind compiled
9:47:04
pjb
moon-child: structural editors feel like straight jacket. I like the flexibility of emacs, allowing you to work at the character level as well as structurally thru things like paredit. It's a nice compromise IMO.
9:53:30
beach
But yes, now that we can parse the buffer contents incrementally, using the Common Lisp reader, I don't think there is any need for such restrictions.
10:33:38
pjb
if you have automatic editing to do, why not. But otherwise, consider something like sedit.
10:35:25
pjb
paredit approaches it, while leaving the character basis. We could implement a sedit in emacs, purely structural.
12:51:08
nij
Hello! I found that a script "dictionary" I wrote hasn't been working for a while.. but failed to see why's that the case: https://bpa.st/UILA
12:55:18
beach
You don't exactly give the output that would tell us why. But one hint is that ASDF by default converts warnings to errors that will prevent the compilation from finishing properly. You may want to change that default.
12:57:14
nij
Err. whatelse output should I provide? This is the debugging message after I run (ql:quickload :dictionary)
12:58:30
beach
Try putting this in your .sbclrc: (setf asdf:*compile-file-failure-behaviour* :ignore)
13:50:04
beach
phoe: Are you the one in charge of the streaming for ELS? If so, what is the deadline for uploading the talk?
14:01:36
Josh_2
Was wondering if someone could show me an example in real code where they have used it to get a performance increase
14:02:17
lotuseater
Josh_2: this is something which I still don't get ^^ got to know this after reading the Google Common Lisp style guide
14:04:40
Bike
i mean, honestly, there's not much to it. if you make an object and you know it won't escape you can declare it dynamic-extent to hint to the compiler to stack allocate
14:05:01
pjb
the use of the guard cons cell lets you avoid a special case when you have to insert at the before the first element of the list. However, this cons cell is a temporary cons cell that won't be needed once the function returns.
14:05:12
lotuseater
had the thought it could be useful if you loop many times and create each time new data in a DO clause
14:05:24
pjb
Josh_2: therefore it can be declared dynamic-extend and the implementation could allocate it on the stack instead of the heap.
14:06:26
pjb
It's dangerous to write dynamic-extend declarations, because in maintenance, the status of the object could change! It's better to let the compiler determine it itself, without error.
14:08:23
Nilby
I would only use a dynamic-extent declaration where it was demonstrated to make speed critical code faster.
15:24:40
Bike
hm, dunno. it's a bit of an involved question. for a closure the code will be sort of separate from the closure vector, for example
15:25:42
phoe
beach: I am in charge of streaming; I don't know if we have an established deadline, heisig will know that as the programme chair
15:27:32
Bike
i guess you'd do sb-kernel:fun-code-header, and then look at the... there's a "code-size" and a "text-size". couldn't tell you what they are.
15:31:31
nnni
Bike: I am compiling some data into closures. I want to see the differences b/w (data+runtime functions) and closures implementations.
15:32:27
Bike
well, again, closures aren't stored as one thing. if you have multiple closures of the same function, in basically any implementation they'll all share the same code
15:35:26
Bike
generally speaking closures are represented with a simple vector. there will be an entry for each thing closed over.
15:35:58
Nilby
Perhaps a more portable and comprehensive way is to look at (room) differences under controled conditions, e.g. making sure gc is done.
15:36:22
Bike
i don't think i'm explaining this well, sorry. What I mean is that the code - the executable code I mean - is stored separately from the closure data. That's what I meant by the size of the closure versus the size of the function.
15:39:04
Bike
well it sounds like you're not actually interested in the executable size, since that's a fixed cost, unlike the actual closed over data, which every closure instance will have its own copy of
15:39:42
Bike
i'd say the basic guide here is that you can expect (let ((a x) (b y)) (lambda (n) (if n a b))) and (vector a b) to take up rougly the same amount of space, plus the closure has the fixed space of the code
17:07:30
phoe
During this year's ELS, we will be selling prints and hosting an auction of the original of The Y Combinator Codex, a 42cm x 240cm calligraphy piece.
17:07:37
phoe
All proceeds from the auction and print sales made during the two days of ELS (sans printing and shipping costs) will be split evenly and donated to the following organizations, earmarked as money for promotion and development of the respective Lisp languages and their implementations:
17:07:46
phoe
Free Software Foundation (elisp), Clojurists Together (clojure), Common Lisp Foundation (cl), Software Freedom Conservancy (Racket), and ACM SIGPLAN (earmarked as scholarships for the ICFP Scheme Workshop).
17:07:52
phoe
There's photos: https://www.reddit.com/r/LispMemes/comments/l5f4n9/the_y_combinator_codex_but_its_actually/ and a small-res scan: https://cdn.discordapp.com/attachments/532344856731975690/836296248528732170/y-combinator-codex-micro.jpg