libera/#commonlisp - IRC Chatlog
Search
0:13:14
drmeister
How should I read the argument type in this: (cffi:defcfun ("libusb_init" %usb::init) :int (%usb::ctx (:pointer (:pointer %usb::context))))?
0:14:58
semz
Yeah. It's pointer to pointer to whatever %usb::context is. Although afaik cffi doesn't actually use pointer types for anything.
0:15:33
drmeister
I'm writing some code to control a USB printer that writes RFID labels. I'm using claw-usb in clasp Common Lisp.
0:16:05
semz
Erm, I mean that in (:pointer x), CFFI doesn't really care about the x. Obviously it uses pointer types themselves.
0:17:41
drmeister
If I go (let ((ctx (cffi:null-pointer))) (%usb:init ctx) ...) then it should write an address into the ctx object foreign-data object?
0:18:16
drmeister
That's how it's used in an example and it works - but when I inspect the object in ctx I don't see anything written.
0:19:53
drmeister
The code works - I get a list of [vid:pid] values for my attached usb devices. I don't understand why when I don't see anything written into ctx.
0:23:06
semz
"Sessions are created by libusb_init() and destroyed through libusb_exit(). If your application is guaranteed to only ever include a single libusb user (i.e. you), you do not have to worry about contexts: pass NULL in every function call where a context is required, and the default context will be used."
0:23:16
semz
( https://libusb.sourceforge.io/api-1.0/group__libusb__lib.html#ga4ec088aa7b79c4a9599e39bf36a72833 )
6:56:19
jmes
I have a scenario where I need to return a function like so: (case (attribute thing) (a #'fn-1) (b #'fn-2)) I'm using sly stickers to determine that (attribute thing) is evaluating to A, yet the case statement is returning nil instead of #'fn-1
6:57:09
jmes
Oddly, when I put the same code into a REPL it correctly matches the case and returns the function
7:03:33
jmes
White_Flame: Hm, I'm trying to use literal symbols to match (attribute thing) to 'a. I thought that meant 'a is always 'a
7:10:12
jmes
White_Flame: It worked, thank goodness. I struggled for too long on that... I appreciate the help
7:32:37
lisp123
whats a nice way to sum across a list of objects (e.g. they have a slot POINTS and I want to sum all POINTS in a LIST of the object)
7:39:56
lisp123
if * = list of objects with a points slot that can be accessed via TRX-POINTS, would this be an elegant way:
7:46:38
lisp123
Nearly everything works naturally - from very rare name clashing to functionality for all sorts of things
7:48:25
beach
It's the result of decades of experience with other Lisp dialects by a group of very smart and very knowledgeable people.
7:50:56
lisp123
For example I'm not sure if they fully realised the value of macros when it was first introduced in Lisp in 1963
7:51:30
lisp123
Generic Functions on the other hand seem to have been very carefully thought through (as evidenced by the papers)
8:52:06
pjb
The problem is not the symbol - package relationship. It's that it's defined as a constant variable!
8:53:54
jackdaniel
oh, I had no idea that I could shadow-import a symbol and not use the CL package /s
9:04:38
pjb
The problem with cl:t is that you cannot use it as a local variable for time: (let ((t 0)) (incf t delta-t)) #| ERROR: While compiling an anonymous function : Can't bind or assign to constant t. |#
9:04:58
pjb
This doesn't come from the fact that T is interned in CL, but from it's definition: (defconstant t 't)
9:10:33
lisp123
A constant defined by defconstant can be redefined with defconstant. However, the consequences are undefined if an attempt is made to assign a value to the symbol using another operator, or to assign it to a different value using a subsequent defconstant.
9:11:12
specbot
Some Exceptions to Constraints on the COMMON-LISP Package for Conforming Programs: http://www.lispworks.com/reference/HyperSpec/Body/11_ababa.htm
9:12:15
Nilby
it's not that you can't use t as whatever given the packages pjb shows, but that you can't make other
9:20:44
mfiano
if you want to go with Unicode, you can prepend or append a zero-width space character to the T symbol for extra confusion :)
9:36:02
mfiano
For the ultimate code obfuscating, you could add package local nicknames using increasing numbers of ZWS nicknames.
9:42:36
Nilby
i suppose it's nice to read things in your 1st language, but unicode really seems to have opened a ₱ØⱤ₮₳Ⱡ ₮Ø ⱧɆ₵₭⛧👿 for programming
9:45:07
mfiano
If you wanted to, you could do this easily without losing your mind, by using something like prettify-symbols-mode to show the parens locally correctly, along with a couple keybindings to insert what look like parens