freenode/#lisp - IRC Chatlog
Search
17:41:38
makomo
what would be the difference between: (1) an accessor, (2) a place and (3) a generalized reference? i suppose (2) == (3) but (1) is the name of the operator within *some* of the places (some places might not use an accessor). is this right?
17:43:36
Bike
according to the glossary, an accessor is an operator that performs an access, and an access is to read or write a place.
17:47:00
Inline
otherwise there are read-only acessors, in which case you don't call them acessors or so
17:50:29
makomo
so places == generalized references, but accessors are a thing of their own and could be used within places
17:51:30
Inline
maybe i should have said, it's an operator, defined in the context of a slot (but the slot can name it's acessors name, so it's independent of it) and it can fiddle with anything it's designed to
17:53:26
Inline
if the accessors name happens to be referencing a function (i.e. pointing to it) then it will be a function, otherwise it can be anything
17:59:26
makomo
Inline: an accessor doesn't necessarily have anything to do with slots. DEFCLASS has the option of defining accessor for your slots for you, but all it does is define a function of the same name that sets the object's slot
18:01:38
makomo
also, in the context of DEFCLASS, they're not plain functions but generic functions/methods
21:00:55
edgar-rft
dtornabene, maybe because nobody can tell what time it is in outer space right now
22:05:26
dxtr
So is there a complete list of all the quicklisp packages with the description of each package?
22:06:25
dxtr
The reason I'm asking is because I want to code something but I can't really come up with anything fun to do so I was hoping to get some inspiration from that list :)
22:37:25
pillton
dxtr: I got as far as (map nil (lambda (s) (print (ql-dist:short-description s))) (ql:provided-systems (ql-dist:find-dist "quicklisp"))).
22:38:22
pillton
dxtr: I don't think long descriptions are part of the quicklisp distribution metadata.
22:41:18
mfiano
I would urge you to a) work on something in Lisp, rather than some foreign bindings, and b) work on something that would benefit the Lisp ecosystem -- if it's duplicated work, it should be for good reason, but there are lots of areas untouched still that would benefit all.
22:42:36
mfiano
So looking at a list of existing Lisp software may or may not be a good idea. It'd be a good idea if it's to check what is not already available.
22:55:45
Beep-Lord
pillton, it's pretty much all I do. I wrote a library to help me change functionality of foreign libraries on the fly because I do it a lot it seems.
22:59:59
pillton
I understand the issues surrounding debugging. The binary packaging can be fixed. People don't complain about having to ship resources like images, video, 3D meshes and the like.
23:02:28
aeth
Compiling CL that works on both Linux and Windows is a completely different thing than compiling C than works on both Linux and Windows.
23:03:14
aeth
For one, you can use SBCL on both Linux and Windows. You'd generally use an entirely different C compiler on Linux than on Windows afaik.
23:12:30
mfiano
Side topic: If I were to develop a large project with many tens or even hundreds of files offering a wide variety of functionality, that has already been decided not to be split up into several systems for internal reasons, my first instinct would be to split it up logically into multiple packages. I've never developed such monolithic applications apart a few game engines where package exports and the like soon
23:12:32
mfiano
became a problem. I'm wondering if anyone has developed very large systems using a different packaging scheme. My primary concern is preventing myself and other the other developers from maintaining an internal use API with exports, and a user API in parallel, because I dislike accessing un-exported symbols cross-package with ::. Thoughts?
23:16:31
pillton
aeth: UIOP is a common lisp system designed to address incompatibilities across common lisp implementations. The same approach could be used to solve the C issues you mentioned.
23:20:59
pillton
What is the likelihood of finding people willing and capable of implementing things like eigen decomposition, singular value decomposition, image codecs and video codecs in CL?
23:26:50
pfdietz
If you use ::, you are exposing the entire inside of a package to your use. The maintainer of that package either can't change anything, or can break what you're depending on. Exported symbols, on the other hand, are the public interface that can be held steady.
23:34:27
White_Flame
I use in on rare occasion where 1 package that I control needs to do some deep-dive into another packaget that I also control, for some lower level stuff that I really don't want public
23:44:34
pillton
aeth: The fundamental principles of Microsoft's Component Object Model are sufficient.
23:46:45
aeth
Let's say that there's a function and the function is defun'd under a top-level let to get variables that persist across calls to that function. How would this interact with threads?
23:47:09
aeth
The function would always be called in the same thread, but not the thread where it was defined.
23:48:34
pillton
I doubt there would be a lexical environment per thread if that is what you are asking.
23:49:22
aeth
Would there be a performance issue with such a closure being accessible to all threads? The potential to be out of sync?
23:59:06
pillton
There was a blog post about this subject years and years ago. Something about lock free communication between threads. I think it was by Christophe Rhodes or Paul Khuong but I cannot find it.
1:58:38
didi
How would you compare the memory usage of different data structures? For example, between a list, a vector, and a hash-table, all of them with 10 k elements.
2:05:01
didi
I don't want to make a general statement. Just compare these things inside my own program.
2:06:58
mfiano
Youre going to have a hard time. At best you can use ROOM to get an approximation at any point in time, garbage collection aside.
2:07:17
Jachy
A portable hack might be to load up the data in one data structure and call (room), exit, rerun with the other data structure...
2:26:39
montxero
Quick question... I have some functions in funcs.lisp and I want to use them in a differnt file other_funcs.lisp. How do I achieve that
2:29:26
montxero
for something as simple as importing a couple of sorting functions, surely one doesnt have to worry about asdf, quicklisp and the like
2:32:49
Jachy
didi: Your Q also reminded me of this blog post that I read not too long ago, SBCL's memory profiler is pretty cool.. http://unthought.net/2016/12/22-lisp-memory-woes-but-not/
2:37:49
aeth
didi: It also depends on what you're storing. If you're storing (unsigned-byte 8)s or single-floats or bits, etc., you could use :element-type in make-array
2:39:22
didi
Like I said, I don't want to make any general statement. Just compare my program memory usage by using different data structures.
2:50:17
Jachy
(TBRSS was an rss reader and I think you could sign up to have it archive things for you similar to Pinboard, but there's a lot of open source lisp code the author released around it.)
2:52:39
mfiano
slyrus_: Do note that com.informatigo is released under the terms of the GNU AGPL, and may not be compatible with a great deal of other Lisp software.
2:53:38
slyrus_
ok, thanks mfiano and Jachy. looking to replace pjb's html generator with something else.
2:54:40
mfiano
It was by far the most pleasant to work with to me after trying more than a handful over the last few years
2:58:56
didi
Uh, I didn't know SBCL could profile memory allocation. This is great. Thank you, Jachy, for the article.
3:02:54
Jachy
Has anyone tried making a Clojure <-> ABCL bridge? They're just two jars.. :) But then you could use Hiccup.
4:00:03
beach
mfiano: I developed Cluffer that way, i.e. using several packages and an internal protocol.
4:00:46
montxero
Thanks <mfiano> and others. It turns out I what I needed to do was to compile the functions in my current instance of slime/sbcl.
4:01:23
montxero
mfiano: following your advise, I will not use load for individual functions. Thanks
4:04:28
mfiano
beach: Yeah it does seem the way to go, and what has worked well for very large projects of mine in the past. I guess what I was getting at is it's going to be a considerable amount of time before I have a protocol which is stable enough, even for internal use, and it's easier to develop with a single package during early development, where early at this scale is several months at least.
4:04:50
mfiano
It's just too much meta-programming (and not the fun kind!) and too early when I should be sketching out a PoC