freenode/#lisp - IRC Chatlog
Search
7:41:12
hectorhonn
i think loop is nicer when there is some "state" to keep when progressing from one element to another. using map in that case would need an extra let clause.. just my 2c
7:50:24
sindan
yes, one nice side effect of loop (for me anyway) is that one avoids having to name variables that will do boring stuff. The code looks neater.
7:57:13
aeth
You use loop for things like conditional collect where you can't really use map like ":when foo :collect foo :into foos" because the alternative to that is remove after map
8:01:22
aeth
Similar reasons to use loop include conditional append (like above) and multiple return values (e.g. to build several lists at once)
11:46:30
jmercouris
however is there not a way to do what I want? or will I have to split apart my queries by semicolon or something...
11:50:06
jmercouris
so the only thing I can think of doing is splitting the string by semicolon and executing one query at a time..
11:50:33
jmercouris
however that seems very dumb and I feel like it should be possible to execute multiple queries...
12:08:28
jmercouris
I know that I'm doing two passes over the list and I could have done it more intelligently, I'm just thinking about stylistic changes
12:42:55
jmercouris
well at any rate, I will heed your advice since you are a more experienced developer than I
12:43:48
shka__
in that case, it may be a good idea to introduce new dynamic variable for stream to print such messages
12:44:49
jmercouris
if a user has access to these files, then the server is already fully compromised...
12:45:00
jdz
It's not very nice when somebody thinks they're just putting some SQL in some files, and suddenly program crashes.
12:46:10
jmercouris
however I still don't see how I can use cl-dbi to execute the contents of a SQL file
12:47:04
jmercouris
jdz: see this previously posted error: https://gist.github.com/jmercouris/2fb0215b5c9cc06db0400923b4a190b0
12:48:08
jmercouris
I'm not sure if this is a problem specific to the Sqlite driver and I won't have problems on postgres or mysql, however cl-dbi doesn't seem to have a "execute-queries" or something like that
12:48:09
jdz
Yes, that's an SQLite error. So you can use a real database, or have each SQL statement in a separate file.
12:51:27
jmercouris
anyways, it seems to be either a limition of the sqlite driver implemented for cl-dbi
17:04:57
beach
Oh, if such a function is called in a context where a value is needed, then NIL is used.
17:06:25
Inline
so when you don't return anything from the second branch in an if, does that not correspond to when then ?
17:08:20
beach
francogrex: Just like if you have a FUN2 that returns more than one value, and you do (defparameter parameter (fun2)) then only the first return value of fun2 is used.
17:09:31
francogrex
(multiple-value-list (r% "glm" :formula "aes ~ complaints+country+vaccine" :family "poisson" :offset (r% "as.matrix" (r% "log" (r% "subset" sub :select "doses"))) :data sub))
17:15:10
francogrex
* (multiple-value-list (r% "glm" :formula "aes ~ complaints+country+vaccine" :family "poisson" :offset (r% "as.matrix" (r% "log" (r% "subset" sub :select "doses"))) :data sub))
17:16:24
sjl_
multiple-value-list always returns a list. If your REPL isn't printing anything, something is very wrong.
17:16:25
beach
francogrex: Again, I don't know what that means. sjl_ seems to want to help you, so I'll be quiet.
17:19:06
sjl_
Right. Then I'm as confused as beach. (multiple-value-list (...)) returns nil when (...) returns zero values.
17:20:45
sjl_
I don't know what that means, but if it's a REPL it should be reading the form, eval'ing it, and printing the result (which is NIL).
17:23:55
sjl_
Try loading your project in a normal SBCL REPL straight in a shell and evaluating that form. That will help narrow things down.
17:28:50
sjl_
... can you screenshot it? There must be something fundamental that's not getting communicated here.
17:29:04
francogrex
hence my question is there another possibility than (values) that a function returns nothing?
17:29:33
sjl_
If you're running (multiple-values-list ...) at an SBCL REPL and not getting anything printed at all (or an error signaled) something is very, very wrong.
17:30:57
francogrex
* (multiple-value-list (r% "glm" :formula "a ~b+c+d" :family "poisson" :offset (r% "as.matrix" (r% "log" (r% "subset" sub :select "expo"))) :data sub))
17:33:26
sjl_
It doesn't matter what r% returns. Having (multiple-value-list ...) around it means that a list WILL be returned, unless an error is signaled and you bail out of the debugger.
17:35:07
francogrex
yes so (multiple-value-list (/ 2 0)) is that case you talk about but here it is not the same
17:35:20
sjl_
and if a list is returned, the REPL should be printing it. So if you're not hitting a debugger and selecting an ABORT restart or something, something is very strange.
17:44:23
scymtym
if the implementation's REPL establishes an ABORT restart, the behavior could be caused by code like (multiple-value-list (handler-bind ((error #'abort)) (/ 2 0)))