freenode/lisp - IRC Chatlog
Search
8:19:25
adlai
Demosthenex: no matter where i get my news, i have never encountered the journalist lispy enough to try slipping nestted parentheses by the copyeditor
8:23:32
beach
What part do you think might be a bug, and do you think it might be a bug in CCL or something else?
8:31:05
shka_
https://european-lisp-symposium.org/static/2018/heisig.pdf obviously, there ELS presentation
8:34:40
Shinmera
no-defun-allowed: what's your guess on this one? https://github.com/Shinmera/talks/blob/master/els2018-glsl-oop/presentation/static.pdf
8:37:32
no-defun-allowed
and the teacher used the google drive pdf viewer which is all blurry and horrible cause she didn't download it either she just zoomed in the browser
8:38:17
Shinmera
Or in action here https://www.youtube.com/watch?v=od6WI7JIJcQ&list=PLkDl6Irujx9PL5LfhvvkkeMiCiDij8jzM&index=5
8:38:24
no-defun-allowed
i only could tell beamer cause a. duh this is #lisp and b. i recognise the font
8:45:21
no-defun-allowed
(tldr: watched a security conference, saw neat presentation on wpa cracking with fpga, wondered why no one sells these things to skiddies and or pentesters)
8:48:57
Shinmera
I'm still looking into that. I'm meeting with some googlers this Friday to see what we want to do. I'll try contacting the ETH secretary based on what we decide there
8:51:16
francogrex
is there a reason why when I load clsql package, SBCL 1.4.2, recompile most of the already compiled file every time!? for example all files in clsql/uffi/ and clsql/db-oracle/ compiling (IN-PACKAGE #:CLSQL-UFFI)... etc. I though when nothing is changed it just loads the already compile files?
8:53:08
no-defun-allowed
schema is usually used for documents of some kind and i think that's a more appropriate word though
9:15:03
heisig
Ah, I see people demanding more documentation for Petalisp. Well, I am working on it... but I am not willing to document an API that is still under development. Give me a few more weeks.
9:50:05
ggole
(nested-funcall 7 #'list nil) would be cleaner imho, but then you need to write nested-funcall
9:52:55
shka_
heisig: so people could either customize their input to include greek letters, or use pretty lambda in emacs or just stick to plain old ascii
10:07:15
heisig
shka_: Thank you! I hope I get the native code generator working again before the next Quicklisp release. At the moment, Petalisp is extremely slow.
10:14:18
heisig
Yes, but the dependency chain is: 1. Fast single threaded code 2. fast multi-threaded code 3. MPI parallel code 4. A GPU backend.
10:21:42
jackdaniel
many thesis include metaphore of oracle which always returns correct results in no time (as a means of comparison)
10:22:43
dim
I've seen references of “God's algorithm” in some papers too, and used that to show pgloader as the next best thing ;-)
10:23:13
dim
how fast can you sort this huge vector? well if you're God, it's already sorted before you need it that way, right?
10:24:04
dim
in the case of pgloader it was like if you're God then your database is already running with PostgreSQL, no wonder, the next best thing is ./pgloader mysql://localhost/dbname pgsql://localhost/dbname and be done with it already; so that's what pgloader does
10:24:26
dim
was fun, the approach worked very well in the presentation: people did have a laugh and then though about it
10:29:57
razzy
heisig: i very much liked code shattered to graph-structure you are using. forget the name
10:34:51
heisig
razzy: Treating lazy arrays as data flow graph nodes? That works well. It gets somewhat funny once you start supporting functions with multiple return values. That is what I'm working on right now.
10:43:27
heisig
razzy: Well, you get one array of all first values, one array of all second values and so on. But when several of the multiple value arrays are used in the same computation, you want to merge them back to a single call to the multiple valued function. I hope this makes sense.
10:44:35
russellw
suppose you are calling a function with a list, on which you want to apply destructuring. You can take it as a parameter, then use destructuring-bind. But is there a way to make the destructuring happen right there in the function call? A destructuring-defun, so to speak?
10:47:14
heisig
russellw: That would be a different calling convention, so no. But you can have a look at TRIVIA:DEFUN-MATCH.
10:48:55
russellw
also to concatenate several strings, this can be done with (concatenate 'string a b c). But suppose a and b are strings but c is a list of strings, what's the best way?
11:12:07
russellw
to print a list of items comma-separated, (format nil "~{~a~^,~}" '(1 2 3)) can be used. but suppose instead of a hardcoded comma, the separator itself must be a parameter. Can format do this?
11:18:30
heisig
russellw: Since you can call arbitrary functions from a format string via ~/NAME/, the answer to "can format do this?" is always yes. The question is whether it will be aesthetically pleasing. The easiest way for you is probably to use another format call to produce the format string with a separator of choice..
11:20:05
russellw
heisig, I see what you mean. Or maybe instead of overloading format that badly, there might be a reasonably elegant idiom for just doing it with LOOP
11:24:00
|3b|
(with-output-to-string (s) (loop for (i . more) on list do (format s "~a~:[~;~a~]" i more separator))) ?
11:24:58
|3b|
though might be better to just use do (format s "~a" i) when more do (format s "~a" separator)
11:26:09
|3b|
latter is more obvious, and not really enough else happening in the format string to require combining them
11:30:04
|3b|
(i . more) in LOOP destructuring is like (i &rest more) in normal destructuring, and ON binds all of remainder of list each time, so each step gets the car of current part of list in I, and cdr in MORE
11:31:46
|3b|
(well, . also works like that in 'normal' destructuring, but i'd hope not to see it in anything but code golf or really old code :)
12:13:31
frodef
in sbcl/slime, is there any way to inject something that will look like a stack-frame without having an actual function?
12:17:03
frodef
sure. Just thought there might be explicit support, seems like a worthwhile mechanism to me.
12:19:10
pfdietz
So you could implement with-stack-info as a macro that produces a flet with a notinline declaration.
12:20:22
Shinmera
I do something like this in dissect to identify stack caps. https://github.com/Shinmera/dissect/blob/master/interface.lisp#L15-L20
12:40:38
heisig
Ah, not the CL:LOOP. Yes, there is plenty of data flow graph optimization and - most importantly - normalization, so that I can cache and reuse compiled code.
13:24:48
heisig
Two red flags about Skip: "Skip achieved [efficient memoization-based caching] via a static type system ..." and "Skip is no longer under active development at Facebook".
15:19:27
dim
yeah, I think I saw one the other day, something that's at least 30 years old and seemed to have a modern offering to it, but I can't remember any name, it was tweeted by Rainer Joswig
15:43:36
gendl
Xach: any chance of getting the planet Lisp link to google calendar of Lisp meetings working again?
15:47:11
gendl
heisig: check out Gendl.org for an actively maintained, dynamically-typed, Lisp-based system which sounds something like Skip (plus more, also minus a bunch of stuff too I’m sure).
16:05:10
Blackbeard
I need to kill the wallpapers timers because if you decide to change your timer the other would still run
16:19:44
trittweiler
Blackbeard, the longer the name of the equivalence function, the broader its concept of equivalence is. EQ just compares by memory address, EQL additionally compares numbers and character by identity (their memory address might be different, thing of boxed numbers), equal also compares lists and arrays (including strings), case sensitively, and equalp is like equal but compares case insensitively. There are a few more details, but that's essentially i
16:21:29
trittweiler
equalp also compares structures and hash-tables element-wise, though again case insensitively
16:28:17
Shinmera
Blackbeard: a similar explanation is in PCL, so your wish had been granted before you even had it
16:28:47
trittweiler
Yeah was just going to paste http://www.gigamonkeys.com/book/syntax-and-semantics.html search for EQ
16:42:48
pjb
shka_: it's random. It's just because equal and equalp are called recursively, and in the case of strings, equal is case sensitive and equalp is case insensitve.
16:44:42
pjb
Common Lisp is a hybrid programming language. It's the oldest and also the most modern. It's the lowest level programming language, but also the highest level programming language thanks to the macros.
16:45:14
pjb
It's a big ball of mud, but also the cleanest programming language (since thanks to meta-programming, you can clean it as aseptically as you wish).
16:47:20
pjb
Not only it's an elephant, but an alien elephant at that (you don't even recognize the parts you touch). And while it's an elephant, it's small compared to other programming languages (java, c++, r7rs, etc).
16:48:09
pjb
It has fun with you: program parameters shall be defined with defvar, global variables shall be defined with defparameter!
16:48:54
wiselord
hi! help me plz, i use ccl on windows. (ql:quickload 'cl+ssl) return error: libssl32.dll or ssley32.dll unable to load, i realized what i need to install openssl, but where do i put files "ssley32.dll" and "ssleay32.dll"?
16:54:54
jasom
wiselord: you can write it wherever you want. You can also copy the DLLs into the same directory as CCL, but that's kind of an ugly solution.
16:57:18
pjb
wiselord: possibly. But since you're using Common Lisp, and may use another CL implementation, I would advise to use a ~/rc/common.lisp file and load it from all the rc files.
16:58:12
pjb
(don't use my rc files, you'd be puzzled; but writing your own you may follow the model).
17:24:41
jkordani
cffi uses the operating system's dll load mechanism. If any dlls loaded in this way *also* depend on other dlls, the os will attempt to find them using %path
17:25:50
jkordani
B.dll, and you put the path to a.dll in cffi:*foreign-library-directories*, loading will still fail because B.dll will also need to be resolved.
17:27:26
jkordani
you can get around this by "cffi loading" dependencies first, as the os machinery will then be able to find the libraries in question, or install them all to a location in %path
17:28:05
jkordani
on 64 bit windows, sysWOW64 is where 32 bit libs go, and system32 is where 64 bit libs go
17:40:52
jackdaniel
dlopen is posix function for opening dynamic libraries (to find functions in them for instance)
17:43:50
jkordani
and specifically wiselord's set of libs, there's a 3rd library that one of those two reference that isn't called out for by the cffi call in cl+sll
17:44:43
jkordani
since I was shipping a binary I just found all three and made explicit cffi load library calls to all 3 in the proper order and put the dlls in the local directory
18:32:53
russellw
what's the most efficient and cleanest way to write a newline as a literal string (or as close as it is possible to get to that)? #\newline is the character form, but what's the appropriate string form?
18:42:35
pjb
trafaret1: you, I don't know. But Paul Graham made millions with CL, writing a program in clisp, and selling it to Yahoo!.
18:43:17
pjb
trafaret1: so at least, it's possible, and since lisp is fun, you may be able to do it having fun. With C++, you'd be about to do it, but in hellish tortures.