freenode/#lisp - IRC Chatlog
Search
22:55:22
Demosthenex
dim: and i saw that. i even considered using a virtual copy from my views into tables, but i thought i'd do it in lisp first instead of leaning on the DB
22:59:14
Demosthenex
dim: in the case of numbers, i still had to type cast text to int for comparison constantly, and that was slow.
0:11:33
AeroNotix
Is there anything in commonqt like the C++/python tools that will convert the .ui files into proper clos classes?
0:13:56
AeroNotix
seems like: https://en.wikipedia.org/wiki/List_of_language_bindings_for_Qt_4 the answer is no
0:14:46
AeroNotix
haha omg, seems like I made a vague attempt at this years ago though: https://github.com/AeroNotix/cluic
6:01:34
Shinmera
AeroNotix: When I was more active doing Qtools stuff I thought about doing that, but then I remembered that I hated UI designers with a raging passion so I dropped it.
6:02:39
smokeink
question for the web experts: https://github.com/fukamachi/myway/blob/master/src/mapper.lisp if there is an "add-route" function, shouldn't there also be a "del-route" counterpart?
6:05:04
smokeink
so I went along trying to patch one in.. but I was surprised to find that for some reason the authors chose to use collectors instead of lists. And you can't delete stuff from collectors
6:08:04
Shinmera
Not to be a downer, but fukamachi code often has decisions I don't quite understand.
6:10:46
smokeink
it happens to many of us.. no prob, I'll just fork his proj and hack the guts out of it until it works as I want it to. Just wanted to make sure it's not me who's missing something obvious.
6:12:39
Shinmera
No, seriously though, even if you don't use Radiance, I assume there's other libraries that provide routing for Clack
6:18:44
jackdaniel
smokeink: collectors manage a simple list. removing thing from such collector is no more than a list operation. if you want to pop from it you'll have a little harder time though
6:20:39
jackdaniel
something like (rplaca (col) (cadr (col)) (rplacd (col) (cddr (col))) ; need to be tested™
6:23:54
smokeink
Shinmera: okay. Radiance is good when one wants a full-stack solution . Ningle is minimal, I tried it after tried a few other more complex alternatives and after Someone had told me that he just uses hunchentoot + his own macros, so I wanted to try such an approach. This approach suits me and is quite cool, you can implement on top of ningle's routing just what you need , and you don't clutter the app with stuff that you might never use, (or in the case
6:23:54
smokeink
of RESTAS , stuff which don't really work as you would want and are hard to be modified)
6:29:21
Shinmera
Well the thing with Radiance is that it isn't a full stack if you don't need it to be.
6:30:51
Shinmera
But you are right in the sense that the advantages it offers are likely not going to benefit every kind of project.
7:48:37
flip214
when I have a GF, can I write a compiler macro that calls that function to evaluate the result for some constant inputs?
7:50:24
Shinmera
Calling a function you're writing a compiler macro for is infinitely recursive. You can't do that.
7:52:27
Shinmera
After all, if you did that the function would sometimes act like a macro, sometimes like a function, depending on whether the compiler macro is expanded or not.
7:54:44
Shinmera
flip214: I frankly don't know what you're misunderstanding about compiler macros, nor what you're trying to do, so
7:56:10
flip214
for (CONSTANTP what) I'd like to just insert either (PRINC "string" stream) resp. "string" (if (NULL stream)).
7:56:25
Shinmera
(define-compiler-macro (&whole whole &environment env what &optional stream) (if (constantp what env) `(load-time-value ,whole) whole))
7:56:29
flip214
so I thought I can write a compiler macro that just inserts either of these two in call sites.
7:56:58
Shinmera
constantp does not do what you think it does either. the `what` is a quoted form, not a value necessarily.
7:57:14
Shinmera
In compiler macros you pretty much always need to emit l-t-v forms if you want to constant-fold.
7:57:46
Shinmera
Also my above snippet is not quite right yet, you need to check the stream too, of course.
7:57:59
flip214
and L-T-V requires me to have all the methods in another file (ASDF-required) or to use an EVAL-WHEN to have them available at load-time of the compiler-macro, right?
7:58:32
Shinmera
load-time loads methods sequentially so if all methods happen before a call to your function you're fine.
8:58:00
remix2000
Hello, What’s the difference between passing a lambda prefixed with #' or without that prefix to a function?
9:01:33
smokeink
remix2000: https://letoverlambda.com/index.cl/guest/chap2.html "There are few good reasons to prefix your lambda forms with #' thanks to the lambda macro."
9:09:34
edgar-rft
What Doug Hoyte wants to point out is that ((lambda (x) (+ 1 x)) 2) works but (#'(lambda (x) (+ 1 x)) 2) signals an error.
9:13:52
remix2000
Ok, thanks :) For me it looks more obvious without that prefix. I was only curious whether it’s permitted by ANSI standard or is there some performance overhead.
9:30:53
Shinmera
XachX: Any news on when the next QL release cycle hits? I have quite a few things piled up now.
10:04:47
no-defun-allowed
if you do it you tend to mash different components together which often is a pain in the ass to look at later
10:06:04
smokeink
is there a portable way to catch simple-parse-error exceptions thrown by (parse-integer)? When I catch sb-int:simple-parse-error inside handler-case it says style warning Undefined function:; SB-INT:SIMPLE-PARSE-ERROR , but it seems to work just fine
10:08:15
White_Flame
smokeink: you probably have parens where you shouldn't, making an expression look like a function call
10:08:58
Shinmera
While you're at it you might also want to set the default-bindings to something like `((*standard-output* . ,*standard-output*) (*error-output* . ,*error-output*) (*trace-output* . ,*trace-output*) (*query-io* . ,*query-io*) ... etc)
10:09:53
Colleen
smokeink: Clhs: function parse-integer http://www.lispworks.com/documentation/HyperSpec/Body/f_parse_.htm
10:11:50
no-defun-allowed
my code scans a list for nodes it doesn't have and forks off to probe new ones