freenode/#lisp - IRC Chatlog
Search
17:57:18
Bike
the reason it's not getting the initarg is, iirc, that slot definition machinery gathers initargs from the direct slotds and applies inheritance rules, and it doesn't know about :tick so it just ignores it? something like that
18:02:28
Bike
i don't think there's any way to customize the evaluation like you want. the defclass macro always quotes extended options. I believe.
18:05:42
Bike
it would be tricky to extend the protocol, since you'd presumably want to use the direct slotd class to customize the macro behavior, but the class isn't known yet
18:08:10
lxsameer
hey folks, CL has more rules when it comes to quasiquotation, what does ",." resolves ?
18:09:11
Bike
«Anywhere ``,@'' may be used, the syntax ``,.'' may be used instead to indicate that it is permissible to operate destructively on the list structure produced by the form following the ``,.'' (in effect, to use nconc instead of append). »
18:14:41
Bike
sjl: you could define your own defclass replacement macro of course. i know that's not convenient, but ensure-class is pretty easy to use
18:38:02
sjl
Bike: yeah, that's what I figured. just wanted to make sure I wasn't missing something. thanks.
19:38:49
mseddon
Stupid question- anyone know if I can license some of the fonts from Genera? or is symbolics just a giant dead holding company now?
19:41:13
mseddon
although it seems very much quite a dead situation now, looks more like a guy in his basement selling boards for people who have to maintain old machines.
19:43:12
mseddon
well. that depends on who has them. there are naturally no copyright notices in the bdfs
19:44:18
mseddon
I suppose a bunch of them I may be able to yoink from the CADR, since MIT actually respond to emails
19:48:34
mseddon
meh. it may be easier and better to do it right and commission them from a font designer to be honest. It'd stand up better anyway.
19:50:46
mseddon
it's kinda easier these days now that we have high dpi screens and you don't need decent 72dpi font hinting
19:51:40
mseddon
yeah the fonts themselves are useless. They look cute and evoke a particular style, but even Cyrillic is not well supported imo
19:54:08
Lycurgus
i found garnet worked fine but it's not usable for anything new because it looks so stone age
19:57:33
mseddon
hehe, yeah. but for example garnet (which I recall from the Amiga days) was a great retro font.
22:08:52
arichiardi[m]
Hi there! I was wondering if anybody know whether CL bindings for LUKS functions (libcryptsetup)? No problem if not, just making sure I am not missing any :D
23:51:34
lotuseater
hehe I tried and it word: #1=(loop :for i :in '#1# :when (keywordp i) :collect i)
23:54:06
thmprover
Is there some way to check if a CL project name has been taken, or is currently in use? I have a horrible pun I want to use, but I don't want to steal it if someone else already has it.
23:57:01
lotuseater
yes! and writing LOOP words as real keywords is not only good for syntax highlighting but also something like DESTRUCTURING-BIND
23:58:34
lotuseater
thmprover: but for catching bigger area in the Venn diagram of names github would also be useful
23:59:06
no-defun-allowed
There aren't any other software projects called Netfarm, but there is an Italian open source consultancy named Netfarm.
0:00:06
no-defun-allowed
Prior to that, there was also GNU Nettle (a C cryptography library). So it's not just Lisp projects, and it's not just software projects either.
0:02:01
lotuseater
i wonder how difficult it is to realize good and safe cryptostuff in CL. someone told me two years ago the best is in deterministic aka direct assembly
0:05:08
no-defun-allowed
Ironclad makes an attempt to be constant-time IIRC, for example there is an equality operator that computes error |= x[n] ^ y[n], but it's really up to how the implementation handles things.
0:06:17
thmprover
My experiment with declarative theorem provers will henceforth occupy the CL-AIM project.
0:06:47
thmprover
CL-AIM will test my claim about the irrelevance of the choice for the foundations of mathematics.
0:08:16
lotuseater
thmprover: oh sounds interesting. i want to understand more how to work with ACL2, Coq and recently i read L∃∀N should also be good
0:09:26
thmprover
ACL2 looks fascinating. I have a love/hate relation with Coq, but my interest is in doing mathematics with theorem provers, not verifying software.
0:10:41
no-defun-allowed
ACL2 is very different. It does the theorem proving process automatically, but you usually need to steer it with lemmas, and it only does first order logic (no higher order functions).
0:11:20
lotuseater
yeah and my knowledge of category theory, dependent types is not deep enough yet. but Haskell drills me to widen it. but that's another story. and I know ACL2 is another approach than Coq
0:12:15
thmprover
Automath is a good way to learn dependent types, but it's quirky...it's not even in the lambda cube.
0:13:43
thmprover
no-defun-allowed: I thought that "wandering" aspect to ACL2 was particularly unique and intriguing.
0:14:29
thmprover
Wait, hypothetical question: CL is a lisp-2, so there are separate namespaces for functions and values, right?
0:15:36
no-defun-allowed
Yes, usually you would use a hash-table, and some accessor functions like FIND-THEOREM, (SETF FIND-THEOREM), ... to use the namespace.
0:19:10
thmprover
no-defun-allowed: that was my first instinct, too, but it is a "poor man's namespace" rather than a first-class namespace.
0:19:45
no-defun-allowed
I don't think there are first-class namespaces in Common Lisp. And if you implicitly FIND-THEOREM on some things, you wouldn't be able to tell the difference.
0:20:01
no-defun-allowed
eg (make-instance 'some-class ...) == (make-instance (find-class 'some-class) ...)
0:21:12
thmprover
Yeah, I was just curious if first-class namespaces were allowed. It seems like quite a niche thing, so completely understandable CL would not have it.
0:22:11
no-defun-allowed
And all the CL namespaces are just sets of accessors (occasionally with an environment object).
0:30:04
Bike
having an actual namespace would be most useful for when you want lexical bindings. not sure that's the case for theorems, though.
0:32:52
thmprover
I will have to study symbol-macrolet, I have a peripheral awareness of it, but haven't looked at it.
0:33:29
Bike
well, basically you can have your binding macro expand into (symbol-macrolet ((some-magic-symbol bindings)) ...), and then use (macroexpand-1 'some-magic-symbol env) to get the bindings.
0:36:23
thmprover
But you couldn't re-bind, say, 'let' (or some other builtin function) temporarily using symbol-macrolet?
0:37:09
Bike
let is a special operator, not a function. and symbol-macrolet deals with variables rather than operators. you can use macrolet to shadow operators.
0:44:30
Bike
oh, and you said CL was a lisp-2, but there are actually some more namespaces too, like the one for types and classes. doesn't come up immediately in the evaluation semantics though.
3:30:22
loke[m]
Imagine a list of "graphical objects" (because that's what they are in Climaxima), and there is a generic function called SAVE-STATE that, when called with a graphical object as an argument returns its configuration as a specially formatted list (a Maxima list actually, but that doesn't matter).
3:31:02
loke[m]
The caller has a list of these objects, and it collects the class name and the output of SAVE-STATE for each object.
3:32:59
loke[m]
Now, I need to write a LOAD-STATE that does the opposite. One way of doing that would be to take the class name, and call MAKE-INSTANCE on it with the values previously returned from SAVE-STATE as argument.
3:33:25
loke[m]
Another would be to have a big ECASE that knows about the object types and dispatch to the correct initialiser.
3:36:00
loke[m]
Bike: But that would add the requirement that whatever is returned from SAVE-STATE is in a form valid as argument to MAKE-INSTANCE. And it may be that some special internal state needs to be initialised that isn't visible from MAKE-INSTANCE. I'd like my solution to be as flexible as possible.
3:36:16
loke[m]
Another idea I had was to use ALLOCATE-INSTANCE and then call a generic function with this instance.
3:37:05
Bike
what make-instance does is call allocate-instance and then call initialize-instance on the result. initialize-instance can be customized with whatever keyword parameters for providing whatever state.
5:25:05
loke[m]
Bascially, you have: SBCL - Most common use. It's really high performance, everything is well supported on it and it has great error messages. ABCL - If you need to integrate with the JVM. ECL - If you are looking at integrating with C code, or if you are running on things like embedded platforms.
5:26:12
srandon111
thanks loke[m] you gave me a great overview about the different implementations, that's really what i needed!
5:26:15
loke[m]
zacts: Well, hasn't had a release in 10 years, and most software don't work on it anymore. It's supposedly still being developed but I wouldn't bother until they actually decide to release something.
5:26:35
zacts
loke[m]: ok, thanks. the reason I ask is I think it's what that land of lisp book uses.
5:27:14
loke[m]
The benefit CLISP had was that it was easy to port to new platforms. However, these days I think ECL fits that role much better.
5:27:50
loke[m]
Then of course there is Lispworks and Allegro. But those are commercial products and unless you're a commercial project there isn't much reason to look at them.
5:28:33
no-defun-allowed
Except for the networking code, you can run all the code in Land of Lisp in any Common Lisp implementation.
5:29:13
loke[m]
Did I miss anything? There is GCL. That one still exists and gets fixes once in a while. These days the only thing it's used for that I know of is some distributions still build Maxima using it.
5:29:53
no-defun-allowed
I am sure someone has ported it already, but a fun extension might be to look up the usocket documentation and have a go at porting the networking code to use usocket. From memory, the CLISP and usocket interfaces are very similar.
5:30:22
loke[m]
zacts: Yes, it can. Most JVM languages use some Java-compatible way of exposing API's.
5:31:00
no-defun-allowed
I'm also sure that interfacing Kotlin and Scala is basically the same as interfacing Java.
5:32:12
loke[m]
But ABCL has a huge benefit if you want to integrate will any of the billions of Java libraries.
5:32:39
srandon111
loke[m], i was searching for something similar to python scapy ... beware NOT scrapy, but scapy, which is a packet crafter
5:32:58
loke[m]
With SBCL I've had to turn to IOLIB quite a few times. IOLIB is OK, but its requirement on libfixposix is very annoying.
5:33:50
no-defun-allowed
Searching "common lisp packet crafting" comes up with https://github.com/mets634/packet-crafting/ which was added to Quicklisp recently.
5:34:32
loke[m]
srandon111: You might want to look at the BINARY-TYPES package, which is the first one I found while searching.
5:34:58
no-defun-allowed
srandon111: Quicklisp is some software you can use to retrieve Common Lisp libraries over the internet.
5:38:07
loke[m]
srandon111: Of course not. Sending packets is a different thing. You open a connection and WRITE them. These are different things, and handled by different libraries of course.
5:39:03
no-defun-allowed
"packet crafter" suggests that we are trying to fiddle with packets, and not normal network programming which doesn't explicate packets.
5:39:36
srandon111
no-defun-allowed, i see but i've seen generally that packet crafters generally also have functions to send/receive packets
5:40:05
srandon111
plokami... wow, this is the thing i was searching i think... now i only have to understand how to idgest lisp docs
5:45:49
srandon111
also RISC-V 64 architecture is not supported with DragonFlyBSD, well SBCL does not seem really cross-platform as i thought
5:46:25
loke[m]
srandon111: Well, the platform is very low-level, which is why it can be so efficient.
5:46:29
no-defun-allowed
I think you are the only person in #lisp that uses dragonflyBSD on PPC64le.
5:47:11
srandon111
no-defun-allowed, wow really? why? what you don't like about dragonflyBSD on PPC64le ?
5:47:44
moon-child
I don't think anyone dislikes that combination specifically; just, both components are somewhat obscure
5:48:20
no-defun-allowed
Now that you mention it, I don't really like Unix at all, but otherwise I think that most people don't use PowerPC machines, most people don't use BSD, and out of the BSD family, most people don't use dragonflyBSD [citation needed].
5:48:39
loke[m]
srandon111: I can't speak for others, but for me it's a combination of no access to the hardware, and that my BSD machines run FreeBSD which works fine for my use cases.
5:49:39
no-defun-allowed
"An operating system is a collection of things that don't fit inside a language; there shouldn't be one."
5:49:48
loke[m]
Various Linuxes. I try to run Qubes OS as much as I can, but I tend to need GPU support which means I'm on Fedora/Arch.
5:50:23
srandon111
no-defun-allowed, sorry what do you mean? i mean if you don't like UNIX what are you using? TempleOS or windows?
5:51:24
srandon111
loke[m], what's the meaning ? i mean if you run freebsd or MAC you still run some kind of UNIX
5:51:56
no-defun-allowed
No, I also put up with a Linux machine. Dammit, two of them. And the two Android phones on my desk, which sometimes count and sometimes don't.
5:52:01
loke[m]
srandon111: Unix isn't good. It's pretty awful really, but out of the systems one can practically run these days, there isn't anything better.
5:53:22
loke[m]
I don't fully agree with all of beach's opinions, but I'm mostly aligned, so I would recommend you read his paper on this topic.
5:53:28
no-defun-allowed
Ideally, I would have something closer to Genera, then closer to Mezzano or CLOSOS, but (supposing I can accept the slowdown) with some form of network transparency.
5:53:47
no-defun-allowed
I have network transparent and replicatable objects of some form in Common Lisp, now I just need CLOSOS.
5:54:45
srandon111
loke[m], no-defun-allowed you guys talk bad about UNIX just because I think you didn't have a real UNIX experience, that is DragonFlyBSD on a PPC64le!