freenode/#lisp - IRC Chatlog
Search
3:09:05
no-defun-allowed
One way to implement it is to have a header object, which references a storage vector. Then when you resize the array, you copy the contents of the old storage vector to a new storage vector and swap the old one out.
3:12:20
moon-child
ldb: if you grow your allocation chunk size exponentially, then the number of times you have to copy goes O(lgn) in the number of items you add
3:12:47
ldb
Bike: https://www.researchgate.net/publication/2801681_Resizable_Arrays_in_Optimal_Time_and_Space
3:12:50
no-defun-allowed
SBCL extends a vector with vector-push-extend by 50% of its length, from memory.
3:15:34
ldb
This paper describles a improvement on the 50% expansion approch, reduces the extra memory usuage to minimal, and still has the same time complexity
3:17:27
no-defun-allowed
It looks like AREF would be slower, and I don't know of any Lisp systems that use buddy allocation.
3:20:18
ldb
I think the buddy system is for languages with manual memory management, the core data structure is sufficient to be used with GC
7:45:00
flip214
Does someone have a gist to fetch all the COPYING, LICENSE, etc. files from all the loaded QL systems?
7:45:36
flip214
The asdf only has a short license name (in different upper/lowercase versions etc.), and some licenses require the authors' names to be mentioned
8:24:47
adlai
ACTION wonders whether there is any legal precedent regarding the proper labelling of files containing that grade of toxic waste
8:25:17
phoe
legal, I think not; practical, they're called COPYING or LICENSE or sometimes the license text is spliced into the README
8:25:55
adlai
someone could claim that they only read licenses labelled "COPYING", because they only redistribute code without ever running it.
8:29:06
adlai
there were few enough installed systems that I "only" encountered a singlehandedly-digital number of (complement #'equal) names for identical licenses.
8:30:20
adlai
however, it was the kind of garbage-in-garbage-out that made me afk^hrepl for long enough to forget my paranoiae about intellectual property.
8:35:37
Nilby
About 750 of 4330 systems I have "loaded" have the liscense field blank. Some licenses have interesting names, such as "BSD or Bugroff" and "do whatever the fuck you want".
8:37:06
flip214
Nilby: asdf::primary-system-p could help you to remove all the -tests and similar systems.
8:38:15
flip214
and QL doesn't distribute a source link (incl. git hash) with the system list, right?
8:38:51
flip214
well, I guess I'll just make a heuristic that fetches the README.md, .asd, and one of LICENSE|COPYING|similar stuff
8:42:06
Nilby
Well, it's hackish and depends on my stuff, but https://plaster.tymoon.eu/view/2180#2180
8:46:02
Nilby
For this to work you need a checked out quicklisp-projects so it probably can't be in quicklisp proper and probably. I have done some work on a quicklisp tool of sorts.
8:50:35
Nilby
I think Xach has something planned, but if I ever get my thing done, we could have a project metadata extract.
8:57:08
flip214
it would also be great if everything that's needed for distributing would be available in a central QL place... so the license name, authors (if 4-clause bsd), link to license file (github or whereever), etc.
9:06:57
flip214
what is needed to get trivial-signal working on Windows? I'd like to catch ctrl-c, but the various GCC.EXE I can find just say "sorry, unimplemented: 64bit mode is not included"
9:11:50
flip214
Alfr_: mingw/cygwin already emulates so much, so I think it should be possible... it's just that grovelling fails, because I can't find a 64bit mingw gcc for windows
9:55:05
srandon111
hello all guys i wanted to start with lisp, i watched the SICP lessons and tried some racket but would like to try some lisp, which dialect do you suggest?
9:56:10
beach
srandon111: But perhaps you mean "which implementation of Common Lisp" rather than "which dialect"?
9:56:18
srandon111
common lisp is the most common option out there? is it modern or like an old abandoned language
9:56:41
beach
srandon111: The common options consist of Common Lisp, as far as this channel is concerned.
9:57:24
phoe
Common Lisp is a dialect of its own, like Scheme, Clojure, Racket, Shen, Carp, PicoLisp, and what else
9:57:39
White_Flame
common lisp basically was the most commercially used lisp variant (and absorbed all the commercial variants). others are more academic or internal/scripting
9:58:42
beach
srandon111: There is no widely accepted definition of "Lisp", so it is hard to answer your question.
10:13:06
beach
srandon111: We recommend Common Lisp. It is a modern language with features that no other language has.
10:13:29
srandon111
what i was exploring with common lisp, is checking out libraries/modules available... since i use neo4j for other projects... i saw this.. https://github.com/kraison/cl-neo4j
10:13:49
srandon111
now my thing is... where is the documentation? or should i be able to read the code? is reading code easier in lisp?
10:14:15
phoe
you might want to spend some time reading Practical Common Lisp to get used to the syntax
10:15:32
beach
srandon111: If your question is "What Lisp dialect should I choose so that I can use something like neo4j with it", then that is a very tough and very specific question.
10:20:31
edgar-rft
ah, yes, from reading the code I see that cl-neo4j uses drakma and a web interface
10:21:32
adlai
srandon111: "common lisp" describes implementations that have benefitted most from various overfunded industries, and committees, near the end of the previous century.
10:23:30
adlai
ACTION thinks of it as a live thing, consisting of large reptiles, armed amniotes, and ballistic garbage collectors, although you are free to use the term to describe a book instead
10:26:25
edgar-rft
srandon111: one of the advantages of using Common Lisp is that the language doesn't change every other year, so you can be pretty sure that your code still will run 10 or 20 years ahead, but because the language hasn't changed in the last 25 years it's sometimes a bit of work to implement newfangled things :-)
10:39:57
no-defun-allowed
You could also install a SBCL of dubious age from the package manager, then use that to bootstrap a new SBCL. Or if there's newer packages, as phoe says...
10:40:39
no-defun-allowed
What version does Debian 10 ship? Knowing Debian, you could do with a newer version.
10:42:22
phoe
roswell auto-downloads its own SBCL binaries, it doesn't depend on any systemwide Lisp.
10:42:27
Nilby
I'm confused. Are you guys talking about the Robot Operating System, or ros the Roswell commmand.
10:43:55
phoe
after installing the deb file, you should be able to just `ros init` and then `ros install sbcl`
10:49:29
edgar-rft
When the mismatch-index argument is true, it is an integer representing the first character position at which the two substrings differ, as an offset from the beginning of string1
10:52:30
edgar-rft
agree, Lisp was *much* better when strings still were handled by symbol-names :-)
10:55:53
no-defun-allowed
rogersm: It is usually a good idea to stop making sense when writing Lisp.
10:57:10
zge
Can anyone tell me what SBCL's "could not allocate SB-IMPL::TEST" notes mean? I'm getting it for functions that don't even have :test arguments.
10:58:42
no-defun-allowed
A much stupider no-defun-allowed first gave that advice two years ago, but I still stand by it. Though if they act the same, MISMATCH conveys your intent better if you want the mismatch position.
11:00:20
no-defun-allowed
Well, string/= will return false for strings of different lengths (without other start and end positions), so they do not act the same.
11:09:06
edgar-rft
phoe: The inequality functions return a mismatch-index that is true if the strings are not equal, or false otherwise (last paragraph under "Description")-> http://www.lispworks.com/documentation/HyperSpec/Body/f_stgeq_.htm#stringSLEQ
12:40:05
specbot
Initial and Final Execution: http://www.lispworks.com/reference/HyperSpec/Body/06_agb.htm
12:41:13
adlai
does the second paragraph of 6.1.7.2 require that the prologue is enclosed by the initial bindings?
12:51:42
adlai
e.g., a conforming implementation could have the initially clauses enclosed as `(:with #.(gensym) (progn ,@prologue))
12:52:17
phoe
the variables are bound to their initial values, the prologue is executed, and then iteration starts
12:53:59
adlai
ACTION can't find a requirement that the prologue be executed strictly after the bindings
12:54:36
phoe
"...which precedes all loop code except for initial settings supplied by constructs with, for, or as."
12:55:18
adlai
removing the global lispmachine lock around everything in CLHS causes quite a bit of undefined behavior, and I'm wondering whether it's sane to rely on the initial bindings always being available to the prologue.
12:56:34
specbot
Local Variable Initializations: http://www.lispworks.com/reference/HyperSpec/Body/06_abb.htm
12:58:29
phoe
also, if prologue is run with the variables unbound, what does "initial settings supplied by constructs with, for, or as" from 6.1.7.2 refer to?
12:59:35
adlai
in the end of 6.1.2.2's second paragraph, "initializations can be forced to occur in parallel", and again before one of the examples.
13:00:37
phoe
and again, this is only about the difference between LET- and LET*-style variable binding
13:00:53
phoe
it says nothing about whether the prologue is executed in scope of these bindings, or outside it
13:01:44
adlai
this is roughly equivalent to order of argument evaluation, and the issues can probably be ignored together.
13:23:50
shka_
i thought that if two slots in a single class have the same :initarg it would designate that instances will initialize both of slots with the same value if said initarg was passed
13:39:08
lotuseater
it doesn't even say anything if you give multiple same initargs in the same slot
13:39:09
Bike
having initargs initialize more than one slot is intentional. the standard explicitly mentions it in 7.1.1 and i can imagine it being useful.
13:40:01
specbot
Initialization Arguments: http://www.lispworks.com/reference/HyperSpec/Body/07_aa.htm