freenode/#lisp - IRC Chatlog
Search
20:47:43
aeth
pjb: well the lisp community is the only community I know of in Freenode not to use -'s in channel names
20:48:22
aeth
I know it's because - is something like a namespace in Freenode and they're all (afaik) independent, but it's still kind of funny
22:07:05
aeth
I wonder if a normally AOT Lisp could JIT FFI to increase CFFI performance. Apparently JIT CFFI function calls have lower overhead than equivalent C function calls. https://news.ycombinator.com/item?id=17171252
22:39:45
ZigPaw
but the difference is probably insignificant (like few cycles). If you need to gain so few cycles, you are probably better off inlining the function (and it might be done by JIT I think). But I'm not an expert.
23:27:17
LdBeth
oleo (IRC): there is a ncurses IDE largely based on climacs, https://github.com/cxxxr/lem
23:29:18
p_l
(tl;dr one level of indirection less due to not using relocation/PLT and instead dynamically loading addresses into known space)
23:42:16
aeth
It would be interesting to benchmark. SBCL was not included in any of these benchmarks for some reason even though that's what everyone's interested in.
4:52:28
pillton
CFFI works from ECL. CFFI allows you to load a shared object library and invoke functions inside it.
4:56:20
pillton
black_13: I have used CFFI on windows to invoke foreign functions. The only thing that I haven't done is tried cffi:load-foreign-library on windows.
5:00:48
pillton
The user manual is there. Start here https://common-lisp.net/project/cffi/manual/html_node/defcfun.html#defcfun
5:36:34
duncan_bayne
Possibly stupid question: is there an idiomatic way of accessing data in lists that are neither alists nor plists? Specifically, in the form: '(("Name" ("first" "Duncan" "last" "Bayne")) ("Phone" ("area" "01" "number" "123456")))
5:42:18
White_Flame
you can generally use FIND for custom cases, but many of these functions have :key or :test style optional parameters to configure what you want
5:45:50
White_Flame
the Alexandria library has WHEN-LET* which allows you to cascade multiple forms, continuing if each step yields non-NIL
5:46:20
duncan_bayne
White_Flame: thanks - that was the sanity-check I needed, I'm new to CL and was afraid I was missing something. Happy to roll my own here
5:47:32
White_Flame
yes, for ("Name" ("first" "Duncan" "last" "Bayne")), the CAR is "Name" and the CDR is (("first" "Duncan" "last" "Bayne"))
5:48:10
White_Flame
also, to be more idiomatic, you should probably use symbols, like (:first "Duncan" :last "Bayne") or something
5:51:11
duncan_bayne
Right I'll head off to #clnoobs, because my attempts to use a-list functions on that structure have so far been failures
5:55:53
duncan_bayne
beach: Sorry, didn't mean to be ignoring you, have been looking into your example
5:56:10
pillton
Maybe lisp is like coffee baristas. You need to find the really old and grumpy baristas to get a good coffee.
5:57:18
jackdaniel
black_13: like any other foreign function. I'd use cffi, but ffi interfaces are documented too (ECL's FFI has an API defined in UFFI)
6:06:18
duncan_bayne
beach: Yep, (assoc "Phone" the-list :test #'string-equal) => ("Phone" ("area" "01" "number" "123456"))
6:09:26
duncan_bayne
White_Flame: yes; this list is being returned by a library that is deserializing it from JSON
6:10:20
White_Flame
the library might also have transforms that it can apply to object keys, where you could intern the strings into symbols, preferrably changing their case to Lisp default
6:12:17
duncan_bayne
flip214: yes, because the assoc example provided by beach returns a list of strings, which doesn't play nice with getf
6:22:53
duncan_bayne
Yeah, that's what I mean; getf is no help with the data structure returned by the library, because (eq "foo" "foo") => NIL
7:16:42
flip214
If I have a JAR file created via ABCL, is there already something to decompile that back to CL sources?
7:29:33
White_Flame
unless the source code is literally included, reversing the process is not really programmatically reliable
7:30:53
flip214
I also have a few __loader__._ files -- these include the function names and docstrings in many (SYSTEM:FSET ...) calls
7:31:22
easye
flip214: How'd you create the JAR? If via ASDF-JAR there should still be Lisp source along with the fasls.
7:34:33
knobo
Could I get some feedback on my first package using cffi, please? https://github.com/knobo/cl-sysinfo
7:48:02
shka
usually, i would suggest to signal error instead of returning nil in scenarios like this
7:49:03
shka
if you remove redundant functions, you will be left with just one function to document :-)
7:51:19
knobo
shka: unless I also keep the decode-loads funtion. But maybe I should not decode the loads.
8:10:22
knobo
Maybe I could define a variable that keeps a c-sysinfo struc, and reuse it in the function call.