dilated_dinosaur has quit [Ping timeout: 256 seconds]
dominic34 has quit [Ping timeout: 265 seconds]
gaqwas has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Changing host]
Oladon has quit [Quit: Leaving.]
andrei-n has quit [Quit: Leaving]
terpri__ has joined #lisp
FennecCode has joined #lisp
dilated_dinosaur has joined #lisp
leb has joined #lisp
terpri_ has quit [Ping timeout: 260 seconds]
dilated_dinosaur has quit [Ping timeout: 240 seconds]
<fe[nl]ix>
luis: can you prepare another cffi release by the end of the month ?
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
knuckles has quit [Ping timeout: 260 seconds]
wxie has joined #lisp
knuckles has joined #lisp
efm has quit [Ping timeout: 264 seconds]
efm has joined #lisp
wxie has quit [Ping timeout: 260 seconds]
orivej_ has joined #lisp
efm has quit [Ping timeout: 240 seconds]
oxum has joined #lisp
efm_ has joined #lisp
orivej has quit [Ping timeout: 264 seconds]
ChoHag has quit [Ping timeout: 256 seconds]
ChoHag has joined #lisp
orivej_ has quit [Ping timeout: 246 seconds]
orivej has joined #lisp
Lord_of_Life has quit [Read error: Connection reset by peer]
red-dot has joined #lisp
Lord_of_Life has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #lisp
dilated_dinosaur has joined #lisp
bitmapper has quit [Ping timeout: 265 seconds]
Zotan has quit [Remote host closed the connection]
Zotan has joined #lisp
megalography has quit [Quit: Leaving.]
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
Oladon has joined #lisp
hiroaki_ has quit [Ping timeout: 264 seconds]
shifty has joined #lisp
Theseus has quit [Ping timeout: 256 seconds]
orivej has quit [Ping timeout: 265 seconds]
orivej_ has joined #lisp
Theseus has joined #lisp
Mandus has quit [Ping timeout: 246 seconds]
nicktick has quit [Ping timeout: 265 seconds]
Mandus has joined #lisp
hiroaki has joined #lisp
oxum has quit [Ping timeout: 240 seconds]
orivej_ has quit [Ping timeout: 260 seconds]
orivej has joined #lisp
dominic34 has joined #lisp
macdavid313 has quit [Quit: macdavid313]
Kaisyu7 has quit [Quit: ERC (IRC client for Emacs 26.3)]
ebrasca has quit [Remote host closed the connection]
jesse1010 has quit [Ping timeout: 240 seconds]
zaquest has quit [Quit: Leaving]
gaqwas has quit [Ping timeout: 265 seconds]
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #lisp
leb has quit []
zaquest has joined #lisp
paule32_ has joined #lisp
EvW has quit [Ping timeout: 260 seconds]
paule32 has quit [Ping timeout: 260 seconds]
dominic34 has quit [Ping timeout: 265 seconds]
vidak` has quit [Remote host closed the connection]
akoana has left #lisp ["Leaving"]
space_otter has joined #lisp
orivej has quit [Ping timeout: 260 seconds]
oxum has joined #lisp
edgar-rft has joined #lisp
bhartrihari has left #lisp ["Disconnected: closed"]
bhartrihari has joined #lisp
macdavid313 has joined #lisp
asarch has joined #lisp
<beach>
Good morning everyone!
gekkou has joined #lisp
Kaisyu7 has joined #lisp
gekkou has quit [Client Quit]
rumbler31 has joined #lisp
dominic34 has joined #lisp
rumbler31 has quit [Ping timeout: 240 seconds]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
doublex has joined #lisp
doublex has quit [Remote host closed the connection]
terpri__ is now known as terpri
doublex has joined #lisp
gxt_ has joined #lisp
gxt has quit [Remote host closed the connection]
gravicappa has joined #lisp
dominic34 has quit [Ping timeout: 260 seconds]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
libertyprime has joined #lisp
<lukego>
I'm using a multidimensional array in Lisp for what I think is the first time. Guess I must have always used nested lists/vectors in the past.
Christ0pher has joined #lisp
<loke`>
They can be useful at time.
oxum has quit [Remote host closed the connection]
MidHotaru has joined #lisp
<lukego>
Oh I /love/ this: when you write "(loop for x from 1 to 20 do", then press return/newline, Emacs uses only a minimal amount of indentation for the next line. So you can write nested loops like that without hitting the right margin, provided you keep 'do' on the first line. That solves a pain point of looping over products of variables for me :)
dddddd has quit [Ping timeout: 258 seconds]
asarch has quit [Quit: Leaving]
jw4 has quit [Quit: tot siens]
jw4 has joined #lisp
shangul has joined #lisp
<loke`>
lukego: normally you'd do (loop for ... <newline> do (whatever)
<loke`>
(with a newline after "loop")
<loke`>
If you want a multiline "whatever", you'd perhaps do (loop <newline> for ... <newline> do <newline> (form 1) <newline> (form2)
oxum has joined #lisp
epony has quit [Remote host closed the connection]
<beach>
Then I see absolutely no reason to waste vertical space by sticking a newline in there, unless of course you are strapped for horizontal space. But that's different issue.
<loke`>
Matter of taste I guess. I don't see vertical space as something that needs to be conserved :-)
<beach>
Yes, I understood what you said, and I think it's a waste of vertical space.
<beach>
Oh wow!
<beach>
It has to do with how many lines can be simultaneously viewed in a window.
<loke`>
My Emacs has 82 visile lines of text. I'd probably care more if I was using smaller windows.
<pi____>
hi all, what is the minimum --dynamic-space-size required to build sbcl from source ? Default is 512MB for 32-bit and 1GB for 64-bit machine.
<loke`>
pi____: the build script should handle that?
<pi____>
I tried building without passing this argument, but build crashed with memory error.
Oladon has quit [Quit: Leaving.]
<loke`>
pi____: what paltform are you on?
<pi____>
I got 434MB of RAM only. :(
rumbler31 has quit [Ping timeout: 264 seconds]
<loke`>
pi____: How much swap?
<pi____>
Swap is 100 MB.
gekkou has joined #lisp
<loke`>
And what kind of computer is this?
<pi____>
ha ha
<loke`>
pi____: That's way too little. Add a few GB
<pi____>
Raspberry Pi board with 700 MHZ processor and 434 MB RAM.
red-dot has quit [Quit: Going offline, see ya! (www.adiirc.com)]
<loke`>
pi____: your problem is that you run out of virtual memory on the computer. The heap size of SBCL has nothing to do with it.
<loke`>
Try adding about 2 GB of swap and it'll work, I'm sure. It may not be very fast, but it should work.
<pi____>
@loke - I just started build with 64MB of space, but build is going on slowly for more than an hour.
narimiran has joined #lisp
<loke`>
pi____: I'm guessing it's not actually progressing.
<loke`>
It's probably died already.
rgherdt_ has joined #lisp
<pi____>
I can see logs rolling so far.
<pi____>
[162/310] src/compiler/fndb - that is line just logged to console.
<loke`>
I would fully expect the SBCL build to throw a heap exhausted error with only 64 MB
<pi____>
Is dynamice space is same as JVM max heap size ?
<loke`>
pi____: not the same, but it's conceptually similar, yes.
holycow has joined #lisp
<pi____>
How people used to program on low conf machine in 80's and 90's ? I thought lisp will do just fine on such low end machine.
<loke`>
pi____: You have to use a Lisp from that time, and use software from that time too :-)
<pi____>
Well default SBCL i installed from apt-get working just fine.
<loke`>
CLISP runs very well on such platforms for example.
<loke`>
I also compiled ECL on a LEGO Mindstorms controller, which has 32 MB of RAM if I'm not mistaken.
<pi____>
But It did not have mult threading enabled. That is why I am trying to build from source.
<loke`>
pi____: I'd just add more swap and see how it goes.
<pi____>
In fact, i was able to write simple math calculator in emacs+slime env without any issue
<pi____>
When I started hunchentoot server, the slime just hanged
<pi____>
Found comment on Stackoverflow that sbcl might not have thread support enabled
<pi____>
and it is waiting for request on socket
<pi____>
so i can't do anything in slime. I have to kill emacs and restart it.
Archenoth has quit [Read error: Connection reset by peer]
<loke`>
pi____: another solution is to compile it on a machine with more memory. You could even set up a QEMU ARM emualtor on your main workstation and compile there.
<lukego>
I'm toying with the idea of allowing 100 columns (gasp) instead of 80. YOLO amirite
<loke`>
lukego: I've used 140 colums for a long time now. It's a nice width.
<loke`>
There is exactly zero reason to use 80.
<lukego>
Glad we sorted that out..
Oladon has joined #lisp
Oladon has quit [Client Quit]
<pi____>
loke`: Right now this is the only machine I got. My macbook is at service center.
heisig has joined #lisp
bocaneri has joined #lisp
<loke`>
pi____: set up a machine on Digital Ocean or something?
gekkou has quit [Quit: WeeChat 2.9-dev]
<pi____>
loke`: the build is in progress right now, so if it fails I will try that.
no-defun-allowed has joined #lisp
seok has joined #lisp
<seok>
whats the term for when a database ensures one operation is completed before another one?
<no-defun-allowed>
Atomicity?
<no-defun-allowed>
In a database, those might be called transactions.
<seok>
atomicity is right i think
<seok>
I think there's another one they use for dbs tho
<seok>
?
<seok>
ah
<seok>
acid
<seok>
atomicity is the a of acid
<seok>
thanks
<no-defun-allowed>
Well, the unit of which changes are done is a transaction.
<seok>
yeah
simendsjo has joined #lisp
<no-defun-allowed>
What's the right way to make sure a class is a direct-superclass of a class I'm instantiating with the MOP?
<beach>
"make sure"?
bocaneri is now known as Boc
<beach>
You want to not instantiate if the condition does not hold?
<beach>
And what does it mean to "instantiate with the MOP"? MAKE-INSTANCE is standard Common Lisp.
<no-defun-allowed>
Good point, that is a vague question. I want to add a direct superclass to instances of a metaclass.
<beach>
Or you can probably just do REINITIALIZE-INSTANCE.
slyrus has joined #lisp
<no-defun-allowed>
I have tried using a :around method on INITIALIZE-INSTANCE specialised to that metaclass, and a method for CLASS-DIRECT-SUPERCLASSES, but neither appears to work correctly when I test (typep (make-instance 'a-class-with-that-metaclass) 'that-direct-superclass) with various implementations.
<beach>
What did your :AROUND method do?
<phoe>
no-defun-allowed: check if the type is a member of CLASS-DIRECT-SUBCLASSES
<phoe>
s/type/class/
<phoe>
that's how the check can be done
Christ0pher has quit [Ping timeout: 264 seconds]
<phoe>
oh, wait, that's somewhat more complex...
<beach>
no-defun-allowed: I'll let phoe help you. Otherwise, I will just add noise to the discussion.
<phoe>
beach: you are probably more awake than me, so more able to help
<no-defun-allowed>
It would (apply #'call-next-method :direct-superclasses (append direct-superclasses (list <the class I want to add>)) rest)
<beach>
And in what way did it fail?
chandler has joined #lisp
<no-defun-allowed>
When I proceeded to test (typep (make-instance 'a-class) 'the-class-I-added), I would get NIL, but that class was in the class-direct-superclasses and class-precedence-list.
<beach>
That's strange.
<no-defun-allowed>
Pardon me, that was only in some implementations. Others would return T as expected.
chandler has quit [Remote host closed the connection]
<beach>
Ouch.
<beach>
Which ones returned NIL?
<phoe>
no-defun-allowed: I assume you used CLOSER-MOP
<phoe>
because this sounds like a bug of sorts
<no-defun-allowed>
Although, after staring at it for a bit, it has been working, and I don't know what I changed. Maybe I forgot some C-c C-c's.
<no-defun-allowed>
Yeah.
<beach>
Your technique ought to work.
<no-defun-allowed>
The method for class-direct-superclasses didn't work on SBCL, and then the :around method on initialize-instance didn't work on Clozure, but now the latter works on both. Testing ECL now.
JohnMS_WORK has joined #lisp
sdumi has joined #lisp
<beach>
Yeah, I don't think your method on CLASS-DIRECT-SUPERCLASSES can work.
<no-defun-allowed>
And I take it I should define a similar method for REINITIALIZE-INSTANCE?
Oladon has joined #lisp
<phoe>
beach: wait, a method on C-D-S?
<phoe>
hm
<beach>
no-defun-allowed: Yes, probably so. You need to check that the keyword argument was given at all, and if so add your class.
<no-defun-allowed>
json-mop does another thing, which is to cons on its JSON-SERIALIZABLE class in a method for COMPUTE-CLASS-PRECEDENCE-LIST.
<beach>
Hmm. OK.
<no-defun-allowed>
That is subtly broken, because now if you have a generic function with one method specialised on the json-serializable class, and another specialised on an instance of that metaclass, the former will be selected first.
<beach>
I see, yes.
* no-defun-allowed
is waiting for Ironclad to compile on ECL, because that is a dependency of the code in question. Maybe she could have made a smaller test case in that time.
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
simendsjo has quit [Ping timeout: 240 seconds]
<no-defun-allowed>
Okay, I need to fix some other stuff apparently, but that should work. Thanks beach and phoe!
<no-defun-allowed>
There we go, it works on ECL now.
Archenoth has joined #lisp
scymtym has quit [Ping timeout: 265 seconds]
Christ0pher has joined #lisp
simendsjo has joined #lisp
wxie has joined #lisp
vaporatorius__ has joined #lisp
<beach>
Great!
vaporatorius_ has quit [Ping timeout: 256 seconds]
mrcom has quit [Ping timeout: 265 seconds]
mrcom has joined #lisp
yonkunas has quit [Quit: Connection closed for inactivity]
polaris- has joined #lisp
red-dot has joined #lisp
mangul has joined #lisp
shangul has quit [Ping timeout: 265 seconds]
wxie has quit [Ping timeout: 240 seconds]
wxie has joined #lisp
bsd4me has quit [Remote host closed the connection]
Oladon has quit [Quit: Leaving.]
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
abbe_ has joined #lisp
pi____ has quit [Ping timeout: 265 seconds]
madage has quit [Ping timeout: 240 seconds]
cg505 has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
dale has quit [Quit: My computer has gone to sleep]
bhartrihari has joined #lisp
edgar-rft has quit [Quit: Leaving]
nicktick has joined #lisp
abbe has quit [Disconnected by services]
wxie has quit [Ping timeout: 260 seconds]
devrtz_ has joined #lisp
xristos_ has joined #lisp
Oladon has joined #lisp
cg505_ has quit [*.net *.split]
devrtz has quit [*.net *.split]
null_ptr has quit [*.net *.split]
xristos has quit [*.net *.split]
null_ptr has joined #lisp
Ober has quit [Ping timeout: 264 seconds]
drdee has joined #lisp
madage has joined #lisp
shka_ has joined #lisp
Cymew has joined #lisp
akkad has joined #lisp
scymtym has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
msk has joined #lisp
libertyprime has quit [Remote host closed the connection]
msk_ has joined #lisp
msk_ has quit [Remote host closed the connection]
msk_ has joined #lisp
msk has quit [Ping timeout: 264 seconds]
msk_ has quit [Client Quit]
msk_ has joined #lisp
msk_ has quit [Client Quit]
msk has joined #lisp
varjag has joined #lisp
pve has joined #lisp
madage has quit [Ping timeout: 240 seconds]
holycow has quit [Quit: Lost terminal]
Oladon has quit [Quit: Leaving.]
madage has joined #lisp
madage has quit [Remote host closed the connection]
mangul has quit [Ping timeout: 260 seconds]
madage has joined #lisp
ljavorsk has joined #lisp
dilated_dinosaur has quit [Ping timeout: 240 seconds]
madage has quit [Ping timeout: 240 seconds]
oxum has quit [Remote host closed the connection]
dominic34 has joined #lisp
wxie has joined #lisp
dominic34 has quit [Ping timeout: 246 seconds]
gaa has joined #lisp
madage has joined #lisp
rumbler31 has joined #lisp
oxum has joined #lisp
dominic34 has joined #lisp
rumbler31 has quit [Ping timeout: 264 seconds]
FennecCode has quit [Ping timeout: 260 seconds]
dominic34 has quit [Ping timeout: 264 seconds]
rgherdt has joined #lisp
R1ck77 has joined #lisp
R1ck77 has left #lisp ["Leaving"]
wxie has quit [Ping timeout: 240 seconds]
<Gnuxie[m]>
*no-defun-allowed*: json mop doesn't use cpl
<no-defun-allowed>
I am told "Firefox does not trust this site because it uses a certificate that is not valid for dept-info.labri.u-bordeaux.fr. The certificate is only valid for dept-info.labri.fr." here.
sdumi has quit [Read error: Connection reset by peer]
<phoe>
that too
sdumi has joined #lisp
<no-defun-allowed>
When I correct the URL, I can confirm that document is not found, nor "Psychology of Learning"; but I think they are the same as the pages on metamodular.com with some formatting changes.
polaris- has quit [Remote host closed the connection]
shangul has joined #lisp
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
heisig has quit [Quit: Leaving]
userone has quit [Quit: Leaving]
vaporatorius__ has quit [Read error: Connection reset by peer]
vaporatorius__ has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
<jackdaniel>
more I use defclass more I'm convinced, that after the slot name each option should be written in a new line
orivej has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
<jackdaniel>
s/in/after/
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
EvW has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
orivej has quit [Ping timeout: 260 seconds]
orivej_ has joined #lisp
Bike has joined #lisp
bhartrihari has joined #lisp
<paule32_>
hello
paule32_ is now known as paule32
<paule32>
i have download, install, play with quicklisp, now, i would play with Qtools
<paule32>
on this, i would set the maximum width of a qline edit
dilated_dinosaur has quit [Ping timeout: 240 seconds]
pi____ has joined #lisp
<phoe>
beach: thanks!
bhartrihari has joined #lisp
dilated_dinosaur has joined #lisp
bsd4me has joined #lisp
grewal has quit [Ping timeout: 240 seconds]
grewal has joined #lisp
rgherdt has quit [Read error: Connection reset by peer]
grewal has quit [Ping timeout: 256 seconds]
FreeBirdLjj has joined #lisp
bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
bhartrihari has joined #lisp
orivej has joined #lisp
orivej has quit [Read error: Connection reset by peer]
orivej has joined #lisp
drdee has joined #lisp
dddddd has joined #lisp
lucasb has joined #lisp
rumbler31_ has joined #lisp
orivej has quit [Ping timeout: 265 seconds]
orivej has joined #lisp
ebrasca has joined #lisp
mikecheck has joined #lisp
paule32 has quit [Quit: Leaving]
scymtym_ has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
scymtym_ has quit [Read error: Connection reset by peer]
orivej has joined #lisp
danilo1 has quit [Quit: WeeChat 1.9.1]
Boc has quit [Ping timeout: 264 seconds]
scymtym has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
sdumi has quit [Ping timeout: 240 seconds]
jw4 has joined #lisp
Bit_MCP has joined #lisp
Boc has joined #lisp
X-Scale` has joined #lisp
Cymew has quit [Ping timeout: 260 seconds]
X-Scale has quit [Ping timeout: 264 seconds]
X-Scale` is now known as X-Scale
knuckles has quit [Ping timeout: 240 seconds]
nabataeus has joined #lisp
<nabataeus>
Hello friends
<beach>
Hello nabataeus.
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
<nabataeus>
I started reading "on lisp" by paul graham
<nabataeus>
I think the book is pretty cool
<beach>
Yes, but not a book for beginners.
<nabataeus>
I sure know that, I've read practical common lisp before
<beach>
Whew!
<nabataeus>
Yeah, it has introductory sections which is pretty good
<nabataeus>
A more introductory book on lisp would be "ANSI Common Lisp" right?
ggole has joined #lisp
<beach>
Yes, but Graham's coding style is not that great, and he doesn't like CLOS, so PCL is better than Ansi Common Lisp in that respect.
<nabataeus>
Oh yeah, i've found that it's a bit difficult reading his code, i get a headache everytime i see recursion haha
<nabataeus>
But lisp is not really meant to be functional at all. Is it?
<nabataeus>
Or in other words, while it has functional programming capabilities, you're not supposed to write purely functional code.
<beach>
Correct, Common Lisp is a multi-paradigm language. You will find the functional programming style mostly in macro expanders.
<beach>
... simply because they should be side-effect free, and performance is not an issue.
<beach>
For the rest of the code, modern Common Lisp uses a lot of generic functions and classes, so CLOS-style object-oriented code.
<nabataeus>
Macros should be side effect free? But i've seen macros written in a very imperative style. I suppose it's not a good practice then. ^^
<beach>
They could be written in an imperative style, but they should not have any side effects to the global environment.
<nabataeus>
Mind providing an example please?
<beach>
I said that the functional style is mostly used in macro expanders, but I didn't say that most macro expanders use the functional style.
<beach>
A macro expander that increments a global variable would be an example of a side effect.
<beach>
I am talking about the code that transforms one form to another form. Not the code that results from the expansion. The latter code can be anything of course.
<nabataeus>
I see
simendsjo has quit [Ping timeout: 256 seconds]
gravicappa has quit [Ping timeout: 240 seconds]
gaa has quit [Remote host closed the connection]
<nabataeus>
So, if I'm following you correctly, macros that transform code from one form to another form, with side effects, are considered a bad practice.
kaftejiman has quit [Remote host closed the connection]
<beach>
As long as the side effects are to lexical variables private to the macro expander itself, there is no problem. What is not great is when there are side lasting effects to the global environment, as a result of the macro expander being executed.
gravicappa has joined #lisp
<nabataeus>
Ah, this makes sense, since mutating or iterating global variables is deemed destructive to the program.
RedMallet has joined #lisp
<nabataeus>
My apologies if I'm asking dumb questions here, I'm new to programming in general. :D
<beach>
There is no problem of doing that in application code. The problem I am talking about is side effects as a result of a macro being expanded. The standard does not tell you how many times a macro expander might be invoked, so side effects would have unpredictable results.
<beach>
Imagine there is a global variable *foo* with the value 234. Then you COMPILE the following code (defun fun (x) (when (= x 2) 33)). And now *foo* has the value 456.
<beach>
... because someone write (defmacro when (condition &body body) (incf *foo* 234) `(if ,condition (progn ,@body)))
<nabataeus>
But I suppose mutating global variables in general a bad practice, and not just limited to macros.
<MrtnDk[m]>
Ahh man, I forgot the most important thing, a friendly smiley.
<nabataeus>
... so it would be still a bad practice if I mutate in a DEFUN block.
<beach>
No, like I said, mutating global variables is fine, when you need to have some state of the system being modified as a result of executing code.
<nabataeus>
Alright. Thx for the info. :D
<MrtnDk[m]>
(beach — from what exactly)?
<beach>
Noise! In particular in the middle of a serious exchange.
<MrtnDk[m]>
beach : Ahh yeah, I forgot for a second that reply doesn't work well with IRC.
FreeBirdLjj has quit [Remote host closed the connection]
<nabataeus>
Oh, I also found this which kind of made me curious -- is there a difference between LISTP and CONSP?
<nabataeus>
... other than the name, obviously. :P
<beach>
Yes, the empty list is a valid list, and the empty list is NIL.
<beach>
But NIL is a symbol so it is not a CONS.
pi____ has quit [Quit: Lost terminal]
bitmapper has joined #lisp
<beach>
Try (listp nil) and (consp nil).
<nabataeus>
(listp nil) -> T -- (consp nil) -> NIL
<beach>
Exactly!
<nabataeus>
I see, however (consp '(nil)) returns T, I guess that's because NIL is an element inside the list.
<beach>
Yes, that's a list with one element in it. So it is not the empty list.
<nabataeus>
Yeah, but isn't NIL supposed end a list or something alike?
<nabataeus>
How can you have a list with NIL.
<eta>
the CAR is NIL and the CDR is NIL
<beach>
NIL is just another object. So it can be an element of a list.
<aeth>
Because NIL in the CDR ends the list. A list with NIL has it in the CAR
<aeth>
'(1 2 3) is sugar for '(1 . (2 . (3 . NIL)))
<beach>
nabataeus: It looks like you are going to get help from others, so I will be quiet to avoid adding to the noise level.
<aeth>
'(NIL) is sugar for '(NIL . NIL)
__jrjsmrtn__ has joined #lisp
<aeth>
And, for completeness, '() is 'NIL which is NIL
<nabataeus>
aeth: I see, so lists are basically pairs within nested pairs, that end with NIL.
_jrjsmrtn has quit [Ping timeout: 240 seconds]
<aeth>
Well, not quite. Proper lists end in NIL. Improper lists do not. '(1 2 . 3) is '(1 . (2 . 3))
<aeth>
Generally, APIs that expect lists expect proper lists, though.
<aeth>
e.g. this will error: (mapcar #'1+ '(1 2 . 3))
<aeth>
Improper lists are rare, but they can exist because of the way lists work (being built up from cons pairs)
<nabataeus>
Interesting.
mrcom has quit [Quit: This computer has gone to sleep]
mrcom has joined #lisp
mrcom has quit [Client Quit]
<aeth>
Afaik, efficiently, what you do is you go through an entire list and error at the end if the CDR is neither NIL (the normal terminator) nor a cons
<aeth>
(Or you can just use things that already do this, like MAPCAR.)
<aeth>
You can see this if you introduce a side effect, e.g.: (mapcar #'print '(1 2 . 3))
<aeth>
You can check up front with alexandria:proper-list-p or checking the type alexandria:proper-list, but then that's an O(n) check because you'd have to iterate through the entire list to do so.
<nabataeus>
Yes, MAPCAR does return the error "3 is not of type LIST".
FreeBirdLjj has joined #lisp
dale_ has joined #lisp
nicktick has quit [Ping timeout: 258 seconds]
dale_ is now known as dale
<nabataeus>
So basically an improper list is a list that ends with a pair instead of NIL.
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
<aeth>
nabataeus: No, a list doesn't end with a pair. If it's a pair, then it continues. An improper list ends with anything other than a NIL.
oxum has quit [Ping timeout: 256 seconds]
<aeth>
'(1 2 3) ends with NIL and is actually the same as '(1 2 3 . nil)
yonkunas has joined #lisp
<nabataeus>
Oh... :D This makes sense.
EvW has quit [Ping timeout: 244 seconds]
nabataeus has quit [Quit: ERC (IRC client for Emacs 26.3)]
<beach>
aeth: Not true.
<beach>
aeth: Any ATOM other than NIL.
nabataeus has joined #lisp
dilated_dinosaur has quit [Ping timeout: 265 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
<jackdaniel>
I'm still trying to traverse the #1=(foo . #1#) to see what it ends with, no luck so far
<beach>
Patience!
<jackdaniel>
:)
<eta>
hang on
<eta>
does bordeaux-threads no-op RELEASE-RECURSIVE-LOCK on SBCL
<eta>
because I think it does and that's /really/ bad behaviour
edgar-rft has joined #lisp
<jackdaniel>
acquire-recursive-lock is also a no-op, you are expected to use with-recursive-lock-held
<jackdaniel>
that said, using recursive locks with condition variables in sbcl is a bad idea on its own terms, because spurious wakeup of the condition does not re-acquire the lock
<eta>
jackdaniel, yeah, okay, so this fun behaviour is the cause of all sorts of fun deadlocks
<eta>
I tried to define a WITHOUT-RECURSIVE-LOCK-HELD implemented in terms of those primitives
<eta>
....so that's been doing nothing all this time
<eta>
not using condvars though
<jackdaniel>
heh
<eta>
well, that explains this mystery deadlock that's been bugging me for a month
<jackdaniel>
(I thought that you said "hang on" and started traversing the list though)
Oladon has joined #lisp
<eta>
hah
<eta>
jackdaniel, foo foo foo foo foo...
Bit_MCP has quit [Quit: Leaving]
sdumi has joined #lisp
Christ0pher has quit [Ping timeout: 258 seconds]
Christ0pher has joined #lisp
<aeth>
beach: Sorry, I meant to put an "Otherwise," in front of my third sentence.
dilated_dinosaur has joined #lisp
<aeth>
(Since the prior one is saying that a pair in the CDR doesn't terminate the list.)
sdumi has quit [Ping timeout: 240 seconds]
rgherdt has joined #lisp
sdumi has joined #lisp
Lycurgus has joined #lisp
dilated_dinosaur has quit [Ping timeout: 240 seconds]
RedMallet has quit [Quit: WeeChat 2.6]
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #lisp
oxum has joined #lisp
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
sdumi has quit [Ping timeout: 265 seconds]
sdumi has joined #lisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
abbe_ is now known as abbe
FreeBirdLjj has quit [Remote host closed the connection]
gaqwas has joined #lisp
gaqwas has joined #lisp
orivej has joined #lisp
oxum has quit [Remote host closed the connection]
knuckles has joined #lisp
orivej has quit [Ping timeout: 265 seconds]
oxum has joined #lisp
orivej has joined #lisp
OpenZen has joined #lisp
Christ0pher has quit [Quit: leaving]
Guest95828 is now known as Fade
Christ0pher has joined #lisp
oxum has quit [Ping timeout: 260 seconds]
Christ0pher has quit [Client Quit]
Oladon has quit [Quit: Leaving.]
MidHotaru has quit [Quit: Connection closed for inactivity]
Lycurgus has quit [Remote host closed the connection]
rgherdt has quit [Quit: Leaving]
MidHotaru has joined #lisp
shangul has quit [Ping timeout: 260 seconds]
andrei-n has joined #lisp
oxum has joined #lisp
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
Oladon has joined #lisp
oxum has quit [Ping timeout: 256 seconds]
midre has quit [Ping timeout: 256 seconds]
midre has joined #lisp
rgherdt has joined #lisp
Christ0p has joined #lisp
seok has quit [Remote host closed the connection]
macdavid313 has quit [Quit: macdavid313]
dilated_dinosaur has joined #lisp
cosimone has quit [Ping timeout: 260 seconds]
Christ0p has quit [Ping timeout: 260 seconds]
Christ0p has joined #lisp
Boc has quit [Read error: Connection reset by peer]
knuckles has quit [Ping timeout: 265 seconds]
Christ0p has quit [Changing host]
Christ0p has joined #lisp
Christ0p is now known as Christ0pher
oxum has joined #lisp
knuckles has joined #lisp
JohnTalent has joined #lisp
shangul has joined #lisp
akoana has joined #lisp
mrcom has joined #lisp
shangul has quit [Ping timeout: 240 seconds]
whiteline has quit [Read error: Connection reset by peer]
whiteline has joined #lisp
Oladon has quit [Quit: Leaving.]
rippa has joined #lisp
oxum has quit [Ping timeout: 260 seconds]
orivej has quit [Quit: No Ping reply in 180 seconds.]
JohnTalent has quit [Ping timeout: 240 seconds]
orivej has joined #lisp
vaporatorius__ has quit [Quit: Leaving]
vaporatorius has joined #lisp
vaporatorius has joined #lisp
vaporatorius has quit [Changing host]
EvW has joined #lisp
drdee has quit [Ping timeout: 260 seconds]
entel has quit [Quit: Connection closed for inactivity]
ggole has quit [Quit: Leaving]
Theseus has quit [Remote host closed the connection]
Theseus has joined #lisp
Christ0pher has quit [Ping timeout: 265 seconds]
Christ0pher has joined #lisp
rumbler31_ has quit [Ping timeout: 246 seconds]
oxum has joined #lisp
Inline has joined #lisp
oxum has quit [Ping timeout: 246 seconds]
andrei-n has quit [Quit: Leaving]
Christ0pher has quit [Changing host]
Christ0pher has joined #lisp
Christ0pher has quit [Quit: leaving]
Christ0pher has joined #lisp
userone has joined #lisp
<pve>
Hi, is this the correct way (roughly) to define a function equivalent to defparameter?
<Bike>
other than the docstring, yeah, looks like it to me
<pve>
yeah minus the docstring
<pve>
thank you
<pve>
there's no built-in function, right?
<Bike>
no.
<pve>
ok great
<Bike>
though, for a runtime application like this you may not need to declare the symbol special, in which case it's just set.
<Bike>
you can use set and symbol-value for a symbol independently of whether it's special.
<pve>
hmm right
<Bike>
should only matter if you're also, like, evaluating or compiling code that uses the symbols
orivej has quit [Ping timeout: 260 seconds]
orivej_ has joined #lisp
cosimone has joined #lisp
gaqwas has quit [Remote host closed the connection]
Christ0pher has quit [Ping timeout: 264 seconds]
<pve>
yeah, I was just thinking about how to declare (or if at all) special variables in this language I'm making that doesn't have macros per se
Christ0pher has joined #lisp
<pve>
I've noticed that doing certain things without dynamic variables can get.. a little clunky
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #lisp
rumbler31_ has joined #lisp
Christ0pher has quit [Ping timeout: 258 seconds]
Christ0pher has joined #lisp
chipolux has joined #lisp
<phoe>
pve: you're implementing Smalltalk, right?
<phoe>
or did I mix things up
<pve>
phoe: yep, or a smalltalk-inspired language
<phoe>
there's no real global variables in Smalltalk, it seems; a way to emulate those is to create variables in the global dictionary named "Smalltalk"
Lord_of_Life has quit [Excess Flood]
<phoe>
so, basically, speaking Lisp, there's a single global hashtable that holds all the globvar-value mappings
Lord_of_Life has joined #lisp
<phoe>
dirty, but then again, it's Smalltalk, and global variables don't play as much of a role as global vars do in Lisp
<pve>
yep, although I have no qualms about mixing in lisp concepts if they are useful
<pve>
not a purist by any means
<phoe>
well then, global dynamic variables do make things very nice
<pve>
can I show you what I got so far?
MidHotaru has quit [Quit: Connection closed for inactivity]
JohnTalent has joined #lisp
JohnTalent has quit [Client Quit]
wsinatra has quit [Quit: WeeChat 2.8]
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
MidHotaru has joined #lisp
narimiran has quit [Quit: leaving]
knuckles has quit [Quit: WeeChat 2.8]
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #lisp
jonatack has quit [Ping timeout: 244 seconds]
<phoe>
pve: you may, though it is too late for me to comprehend programming
<jackdaniel>
fe[nl]ix: will you accept an "expected failures" features in fiveam?
<jackdaniel>
s/features/feature/
shifty has joined #lisp
<pve>
phoe: hehe it's ok, here are a couple of screenshots (because syntax highlighting):