2018-01-17T00:00:12Z terpri quit (Ping timeout: 256 seconds) 2018-01-17T00:00:15Z pjb: jasom: I don't know it that's bugs. It may be a regretable misfeature, but the specification doesn't presuppose you can manipulate all native paths. 2018-01-17T00:00:19Z jasom: pjb: it's a testament to how bad submodules are that a POS like repo is better 2018-01-17T00:00:29Z pjb: yes. 2018-01-17T00:00:47Z jasom: pjb: there are bugs other than non-conformance to the specification 2018-01-17T00:01:08Z jasom: e.g. if the sbcl sockets library broke in some way, that would still be a bug. 2018-01-17T00:02:06Z jasom: rpg: I sped git-svn up by a factor of 1000 before writing my own tool 2018-01-17T00:02:17Z smurfrobot quit (Remote host closed the connection) 2018-01-17T00:02:58Z jasom: git-svn shells out to a command that does a lot of work just to see if a branch exists. In an inner-loop. 2018-01-17T00:03:21Z ikki quit (Ping timeout: 256 seconds) 2018-01-17T00:03:54Z jasom: it also uses an O(N*M) algorithm where N is the number of commits and M is the number of branches. We have ~100k branches in our repository 2018-01-17T00:04:58Z rpg: jasom: maybe I'll try it again some time. It does seem like there ought to be some way to drag less of the history if all one wants to do is to hack on an airplane. I know that it's more than that, and maybe what I need is just automated support for the cheap trick of taking your working copy and jamming it into a temporary git repo. 2018-01-17T00:06:22Z pilfink quit (Quit: ERC (IRC client for Emacs 25.3.1)) 2018-01-17T00:06:23Z pjb: On an airplane, don't hack; watch Airplane or Zero Hour. 2018-01-17T00:06:44Z pjb: If you're a frequent flyer, I've got a playlist… 2018-01-17T00:06:47Z jasom: rpg: I don't know if the change ever made it upstream. I sent a "I'm not using this tool anymore, so can't really work on a patch, but here's my change that sped it up by a huge amount" to the list and never checked to see what became of it. 2018-01-17T00:07:48Z jasom: pjb: my dad says that movie doesn't work hard on defense and never really tries, except during the playoffs. 2018-01-17T00:09:00Z FreeBirdLjj joined #lisp 2018-01-17T00:09:01Z smurfrobot joined #lisp 2018-01-17T00:14:16Z terpri joined #lisp 2018-01-17T00:16:23Z Devon quit (Ping timeout: 256 seconds) 2018-01-17T00:19:10Z smurfrobot quit (Remote host closed the connection) 2018-01-17T00:19:29Z Kaisyu joined #lisp 2018-01-17T00:19:33Z p_l: pjb: I'm tempted to watch Mayday. Or bring manuals/emergency checklists for the plane I'm flying 2018-01-17T00:19:47Z sjl quit (Ping timeout: 256 seconds) 2018-01-17T00:20:20Z ikki joined #lisp 2018-01-17T00:22:37Z FreeBirdLjj quit (Ping timeout: 256 seconds) 2018-01-17T00:27:11Z fikka quit (Ping timeout: 248 seconds) 2018-01-17T00:29:18Z FreeBirdLjj joined #lisp 2018-01-17T00:30:02Z Tobbi quit (Quit: Leaving) 2018-01-17T00:30:44Z _whitelogger quit (Remote host closed the connection) 2018-01-17T00:32:25Z Tobbi joined #lisp 2018-01-17T00:32:28Z fikka joined #lisp 2018-01-17T00:38:05Z FreeBirdLjj quit (Ping timeout: 240 seconds) 2018-01-17T00:38:12Z dieggsy joined #lisp 2018-01-17T00:41:17Z _whitelogger joined #lisp 2018-01-17T00:42:59Z FreeBirdLjj joined #lisp 2018-01-17T00:50:42Z Oladon joined #lisp 2018-01-17T00:54:57Z dieggsy quit (Quit: ERC (IRC client for Emacs 27.0.50)) 2018-01-17T00:55:05Z JonSmith quit (Remote host closed the connection) 2018-01-17T00:56:30Z FreeBirdLjj quit (Ping timeout: 260 seconds) 2018-01-17T00:56:33Z sjl joined #lisp 2018-01-17T00:59:02Z orivej quit (Ping timeout: 276 seconds) 2018-01-17T01:00:43Z JonSmith joined #lisp 2018-01-17T01:01:30Z zooey quit (Ping timeout: 272 seconds) 2018-01-17T01:03:06Z pjb quit (Ping timeout: 256 seconds) 2018-01-17T01:04:20Z fikka quit (Ping timeout: 255 seconds) 2018-01-17T01:05:03Z JonSmith quit (Ping timeout: 248 seconds) 2018-01-17T01:05:33Z zooey joined #lisp 2018-01-17T01:05:55Z FreeBirdLjj joined #lisp 2018-01-17T01:06:35Z pragmaticmonkey joined #lisp 2018-01-17T01:06:50Z pragmaticmonkey: So now that I have learned lisp, how do I find a lisp job? 2018-01-17T01:09:16Z Xach: pragmaticmonkey: make cool stuff for many years and the job offers will just roll in 2018-01-17T01:09:32Z pragmaticmonkey: Any shortcuts? 2018-01-17T01:10:14Z Xach: There is no royal road to awesomeness 2018-01-17T01:10:23Z fikka joined #lisp 2018-01-17T01:10:23Z FreeBirdLjj quit (Ping timeout: 248 seconds) 2018-01-17T01:12:01Z pragmaticmonkey: Xach: I have bills to pay. 2018-01-17T01:14:45Z aeth: pragmaticmonkey: Lisp is good for many things, but finding a job is not one of those things. 2018-01-17T01:14:59Z aeth: Unless you want to make your own job 2018-01-17T01:15:42Z aeth: If you can find a Lisp job, though, you'll probably get paid more. 2018-01-17T01:16:20Z FreeBirdLjj joined #lisp 2018-01-17T01:17:40Z pragmaticmonkey: I want to find a lisp job to get a lisp job, you get it? 2018-01-17T01:18:16Z FreeBirdLjj quit (Remote host closed the connection) 2018-01-17T01:18:31Z osune: https://lispjobs.wordpress.com/ ? 2018-01-17T01:18:34Z FreeBirdLjj joined #lisp 2018-01-17T01:19:43Z malice: Is there a way to invoke a method without going through the generic function? 2018-01-17T01:19:51Z malice: And is this behavior defined? 2018-01-17T01:20:46Z Xach: malice: no. 2018-01-17T01:21:08Z Xach: malice: what prompts the question? 2018-01-17T01:21:15Z vertigo quit (Remote host closed the connection) 2018-01-17T01:21:52Z malice: Xach: I am explaining methods in CL and when reading Keene I noticed that she mentions that you have to invoke method through the generic function. 2018-01-17T01:22:25Z malice: I was curious whether it was always the case, or if you could, by some other mechanisms, retrieve a method object and then invoke it on some arguments, bypassing the generic function, though perhaps doing the same work as it would. 2018-01-17T01:24:08Z EvW1 quit (Ping timeout: 255 seconds) 2018-01-17T01:24:49Z Bike: in an implementation with mop you can get the method function. but calling methods like that is not normal or anything, and pretty hairy to do. 2018-01-17T01:24:56Z sjl: is there a less awful way of handling the if-exists argument here? http://paste.stevelosh.com/5a5ea5a9e5abd80008d72afb 2018-01-17T01:25:33Z jasom: malice: if you know you are going to do it ahead of time, you can implement the method with a vanilla function and then inline the function into the method 2018-01-17T01:25:42Z sjl: I want to pass along the if-exists to the with-open-file, but passing nil and not passing it are two different things 2018-01-17T01:26:19Z sjl: and I can't hack around it with (apply ... (if if-exists-given `(:if-exists ,if-exists) nil) because w-o-f is a macro 2018-01-17T01:26:34Z Bike: i don't think so, sjl 2018-01-17T01:26:51Z osune quit (Remote host closed the connection) 2018-01-17T01:27:01Z sjl: Bike: that's what I was afraid of... I mean, this *works*, it's just super ugly. 2018-01-17T01:27:13Z Bike: yeah, i've done similar things. i wish i had a better solution 2018-01-17T01:27:38Z sjl considers writing a macro for it 2018-01-17T01:27:45Z sjl: probably not worth it 2018-01-17T01:28:52Z smasta joined #lisp 2018-01-17T01:28:54Z jasom: you could open-code the wtih-open-file using unwind-protect, or you could manually calculate the default value 2018-01-17T01:29:44Z sjl: jasom: w-o-f is a bit more than just an open and unwind-protect, I think. 2018-01-17T01:29:58Z pjb` joined #lisp 2018-01-17T01:30:03Z sjl: If you're writing a new file and get an error, it tries to clean up the partially-written file for you 2018-01-17T01:30:30Z dddddd quit (Remote host closed the connection) 2018-01-17T01:30:42Z sjl: I mean, I can reimplement that too... but I think I can live with the ugly if that's the solution 2018-01-17T01:30:59Z jasom: manually calculating the default-value isn't too hard though 2018-01-17T01:32:29Z nirved quit (Quit: Leaving) 2018-01-17T01:32:57Z jasom: you can even do it in the lambda-list 2018-01-17T01:33:15Z jasom: since the init-form is evaluated with all of the parameters to the left already bound 2018-01-17T01:33:29Z earl-ducaine quit (Remote host closed the connection) 2018-01-17T01:35:46Z jasom: something like (defun write-foo-to-file path data &key (if-exists (if (eql (pathname-version (pathname path)) :newest) :new-version :error) 2018-01-17T01:36:01Z jasom: though perhaps factoring out that to a function would be good 2018-01-17T01:36:32Z khisanth_ quit (Ping timeout: 256 seconds) 2018-01-17T01:36:37Z damke_ joined #lisp 2018-01-17T01:38:45Z damke quit (Ping timeout: 264 seconds) 2018-01-17T01:40:01Z Tobbi quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-01-17T01:40:46Z warweasle joined #lisp 2018-01-17T01:42:03Z smurfrobot joined #lisp 2018-01-17T01:45:17Z smurfrobot quit (Remote host closed the connection) 2018-01-17T01:46:05Z Xal quit (Ping timeout: 260 seconds) 2018-01-17T01:46:07Z fikka quit (Ping timeout: 248 seconds) 2018-01-17T01:47:01Z holycow joined #lisp 2018-01-17T01:48:28Z Xal joined #lisp 2018-01-17T01:49:07Z mood quit (Ping timeout: 256 seconds) 2018-01-17T01:49:33Z mood joined #lisp 2018-01-17T01:49:46Z sjl: yuck http://paste.stevelosh.com/5a5eab9fe5abd80008d72afc 2018-01-17T01:49:55Z sjl: I feel dirty for writing this. 2018-01-17T01:50:09Z shrdlu68 joined #lisp 2018-01-17T01:50:55Z khisanth_ joined #lisp 2018-01-17T01:52:38Z Xach: Because of the IF indentation? 2018-01-17T01:52:47Z Xach: I guess people can indent how they like? 2018-01-17T01:52:51Z fikka joined #lisp 2018-01-17T01:54:35Z sjl: that last if is a macroexpansion that didn't get prettyindented 2018-01-17T01:55:01Z JonSmith joined #lisp 2018-01-17T01:55:18Z Xach: I tease. I really do think you can indent how you like. The last IF is the only style I like. 2018-01-17T01:55:37Z sjl: indenting if like a function (args all aligned)? 2018-01-17T01:55:44Z Xach: Yes. 2018-01-17T01:56:22Z sjl: I feel like I rarely see that style. 2018-01-17T01:56:24Z jonh joined #lisp 2018-01-17T01:57:30Z Xach: sjl: Really? I have never seen your style before. The only similar variant I've seen is the dedented ELSE clause, but that seems to be from people with lisps that have an implicit progn in else. 2018-01-17T01:57:41Z FreeBirdLjj quit (Remote host closed the connection) 2018-01-17T01:58:16Z FreeBirdLjj joined #lisp 2018-01-17T01:59:39Z fittestbits joined #lisp 2018-01-17T01:59:41Z JonSmith quit (Ping timeout: 255 seconds) 2018-01-17T02:00:02Z Xach: I would guess every pretty-printer does it the "right" way. 2018-01-17T02:00:15Z Xach: implementation pretty-printer, that is. not every possible pretty printer. 2018-01-17T02:02:39Z FreeBirdLjj quit (Ping timeout: 248 seconds) 2018-01-17T02:02:52Z Xach: sjl: Now I'm really curious - where have you seen the two-space style in the wild? 2018-01-17T02:03:29Z pjb` quit (Ping timeout: 256 seconds) 2018-01-17T02:04:12Z Xach guesses clojure? 2018-01-17T02:04:47Z ebzzry joined #lisp 2018-01-17T02:06:18Z rme: I do it because that's the style CCL's code uses. 2018-01-17T02:08:30Z Xach: rme: two-space IF indentation? 2018-01-17T02:08:39Z rme: yes 2018-01-17T02:08:53Z sjl: Clojure definitely does it 2018-01-17T02:08:59Z Xach: rme: but the ccl pretty-printer default is different, eh? 2018-01-17T02:09:07Z sjl: Most of my books apparently do the extra spaces too, which I never noticed. 2018-01-17T02:09:18Z sjl: Except Let Over Lambda, which does body-spacing 2018-01-17T02:09:56Z rme: Xach: that could be 2018-01-17T02:11:09Z rme: I've had (put 'if 'common-lisp-indent-function 1) in my .emacs for a long time 2018-01-17T02:12:04Z Xach: Interesting 2018-01-17T02:13:53Z eschatologist quit (Ping timeout: 276 seconds) 2018-01-17T02:16:22Z z3t0 joined #lisp 2018-01-17T02:17:13Z eschatologist joined #lisp 2018-01-17T02:18:35Z papachan quit (Ping timeout: 255 seconds) 2018-01-17T02:25:11Z erikc quit 2018-01-17T02:29:58Z pjb` joined #lisp 2018-01-17T02:32:36Z z3t0 quit (Remote host closed the connection) 2018-01-17T02:33:02Z z3t0 joined #lisp 2018-01-17T02:33:27Z z3t0 quit (Remote host closed the connection) 2018-01-17T02:33:33Z z3t0 joined #lisp 2018-01-17T02:37:49Z jsn` joined #lisp 2018-01-17T02:42:13Z zooey quit (Ping timeout: 272 seconds) 2018-01-17T02:43:00Z warweasle quit (Quit: rcirc on GNU Emacs 24.4.1) 2018-01-17T02:43:12Z dieggsy joined #lisp 2018-01-17T02:45:40Z z3t0 quit (Ping timeout: 256 seconds) 2018-01-17T02:45:42Z zooey joined #lisp 2018-01-17T02:50:06Z stylewarning: wait, what's the proposed alternative? 2018-01-17T02:50:18Z stylewarning: IF with the args aligned sounds right (: 2018-01-17T02:52:33Z d4ryus1 joined #lisp 2018-01-17T02:53:36Z fikka quit (Ping timeout: 256 seconds) 2018-01-17T02:55:45Z Oladon quit (Quit: Leaving.) 2018-01-17T02:55:52Z d4ryus quit (Ping timeout: 256 seconds) 2018-01-17T02:56:32Z fikka joined #lisp 2018-01-17T02:59:11Z loke: The pasted code by sjl looks horrible, IMHO... 2018-01-17T02:59:24Z loke: I have also never seen it before (except for Clojure) 2018-01-17T02:59:36Z z3t0 joined #lisp 2018-01-17T02:59:37Z stylewarning: oh yeah his `(if ...) code is no bueno 2018-01-17T02:59:51Z stylewarning: I simply cannot believe sjl doesn't follow the same style as I do! 2018-01-17T03:00:09Z loke: I'm just happy that most people follow the style I use. 2018-01-17T03:00:38Z rpg quit (Quit: Textual IRC Client: www.textualapp.com) 2018-01-17T03:02:05Z damke joined #lisp 2018-01-17T03:02:59Z pjb` quit (Ping timeout: 256 seconds) 2018-01-17T03:03:57Z damke_ quit (Ping timeout: 264 seconds) 2018-01-17T03:05:44Z dieggsy quit (Ping timeout: 265 seconds) 2018-01-17T03:08:13Z epony quit (Quit: QUIT) 2018-01-17T03:08:24Z pragmaticmonkey quit (Quit: Page closed) 2018-01-17T03:10:55Z shifty quit (Ping timeout: 256 seconds) 2018-01-17T03:12:56Z smasta quit (Ping timeout: 276 seconds) 2018-01-17T03:20:19Z ckonstanski joined #lisp 2018-01-17T03:22:07Z holycow quit (Quit: Lost terminal) 2018-01-17T03:22:09Z beach: Good morning everyone! 2018-01-17T03:24:17Z loke: Hello beach! 2018-01-17T03:24:27Z vydd quit (Ping timeout: 240 seconds) 2018-01-17T03:26:41Z jmercouris joined #lisp 2018-01-17T03:28:28Z sz0 quit (Quit: Connection closed for inactivity) 2018-01-17T03:29:57Z pjb` joined #lisp 2018-01-17T03:31:45Z smurfrobot joined #lisp 2018-01-17T03:33:16Z z3t0 quit (Remote host closed the connection) 2018-01-17T03:33:35Z mhd joined #lisp 2018-01-17T03:33:46Z z3t0 joined #lisp 2018-01-17T03:34:43Z thijso quit (Ping timeout: 256 seconds) 2018-01-17T03:35:49Z jmercouris: So within next, there is a concept of *active-buffer*, what it is, is just like a defparameter that points to the object of type buffer that is the currently active buffer 2018-01-17T03:36:05Z guaqua quit (Ping timeout: 240 seconds) 2018-01-17T03:36:06Z jmercouris: the active buffer can be activated by opening the minibuffer, switching the buffer in focus etc 2018-01-17T03:36:26Z smurfrobot quit (Ping timeout: 255 seconds) 2018-01-17T03:36:38Z jmercouris: I was thinking, this is a problem, because if we are to oen day support multiple panes, there will be multiple buffers on screen, and the user may click on a different buffer, and not just switch buffers via the keyboard 2018-01-17T03:36:40Z Oladon joined #lisp 2018-01-17T03:37:03Z jmercouris: so the issue is, now we have a *active-buffer* that is pointing to something ONLY settable by keyboard, whereas the user may click on a different buffer, therefore making the *active-buffer* incorrect 2018-01-17T03:37:45Z jmercouris: I was therefore thinking any functions that wish to operate upon the active-buffer should actually invoke some function get-active-buffer, which will query the UI to determine which is actually the currently selected buffer 2018-01-17T03:37:55Z jmercouris: is there something I am not seeing here? or does my reasoning make sense 2018-01-17T03:38:36Z z3t0 quit (Ping timeout: 265 seconds) 2018-01-17T03:41:41Z beach: Usually, user gestures are relative to a [let's call it a] window. The window contains a buffer, and that buffer is the one that is meant for gestures emitted to that window. 2018-01-17T03:42:45Z beach: While I am at it, some terminology: There is no such thing as "a defparameter". There is such a thing as "a defparameter FORM", resulting in the creation of a "special variable". 2018-01-17T03:43:20Z guaqua joined #lisp 2018-01-17T03:44:57Z jmercouris: okay, yeah, definitely, but a window may contain several buffers 2018-01-17T03:45:11Z jmercouris: okay, let's just use standard emacs terminology for a second 2018-01-17T03:45:15Z jmercouris: a frame contains several windows 2018-01-17T03:45:31Z jmercouris: and I need to know which window is selected, so I should query the interface before some operation 2018-01-17T03:45:36Z jmercouris: does that make sense? 2018-01-17T03:45:52Z jmercouris: ignore my first "okay, yeah, definitely, but a window may contain several buffers" 2018-01-17T03:45:57Z jmercouris: as a window can only contain one visible buffer 2018-01-17T03:46:03Z beach: Sure, if you have to have such a thing as a "selected window". 2018-01-17T03:46:24Z jmercouris: I don't see how it could be avoided 2018-01-17T03:46:35Z jmercouris: unless all actions specify a window each time 2018-01-17T03:46:44Z jmercouris: like "scroll-down" and then the user must select a window 2018-01-17T03:46:45Z beach: Fair enough. 2018-01-17T03:46:57Z jmercouris: which may not be a bad idea actually 2018-01-17T03:47:06Z jmercouris: and then the currently selected window is just the last selected window 2018-01-17T03:47:11Z jmercouris: unless they type in a prefix command or something 2018-01-17T03:47:11Z beach: I personally "select" my windows by moving the mouse into one. But I guess that is a kind of selection. 2018-01-17T03:47:39Z jmercouris: heres another thing 2018-01-17T03:47:52Z jmercouris: what if the user performs some action right, some long running action or they open the minibuffer and then do something else 2018-01-17T03:48:05Z jmercouris: what if they change the buffer within the window originally operated on 2018-01-17T03:48:09Z beach: I don't know how your GUI layer works, but usually, the selection is an OS-wide thing, and gestures get delivered with an explicit window attached. 2018-01-17T03:48:12Z jmercouris: should the function affect the new buffer, or the old one 2018-01-17T03:48:52Z jmercouris: in normal OS terminology, yes, I will get the window as part of my signal 2018-01-17T03:48:59Z jmercouris: for both GTK and Cocoa 2018-01-17T03:51:22Z sjl: stylewarning: you merged my commit to cl-charms that has that indent style, must not be THAT horrible https://github.com/HiTECNOLOGYs/cl-charms/commit/e41103ac6b47c2464209f03141cc3d54426dc3a8 2018-01-17T03:52:56Z stylewarning: sjl: wow im terrible 2018-01-17T03:53:17Z smasta joined #lisp 2018-01-17T03:54:05Z stylewarning: sjl: I should have done more diligence on your unmatching IF-style! 2018-01-17T03:54:15Z ckonstanski quit (Remote host closed the connection) 2018-01-17T03:54:34Z sjl: I'm pretty sure I took it from Clojure. The extra spaces look so wasteful now. 2018-01-17T03:56:01Z sjl: I don't think I've looked at the CCL codebase much at all so I can't have gotten it from there 2018-01-17T03:56:26Z nika joined #lisp 2018-01-17T03:56:51Z JonSmith joined #lisp 2018-01-17T03:57:57Z smasta quit (Ping timeout: 256 seconds) 2018-01-17T04:00:24Z Arcaelyx joined #lisp 2018-01-17T04:01:28Z cess11_ quit (Remote host closed the connection) 2018-01-17T04:01:41Z fikka quit (Ping timeout: 276 seconds) 2018-01-17T04:02:00Z JonSmith quit (Ping timeout: 260 seconds) 2018-01-17T04:02:44Z pjb` quit (Ping timeout: 256 seconds) 2018-01-17T04:05:12Z hvxgr quit (Remote host closed the connection) 2018-01-17T04:08:16Z fikka joined #lisp 2018-01-17T04:15:51Z beach: sjl: I think your indent style for IF is more consistent with others. 2018-01-17T04:16:19Z beach: There is no particular reason to indent the `then' and `else' forms of and IF more than two spaces. 2018-01-17T04:16:48Z sjl: It's more consistent with [ec](type)?case -- the value you're checking comes on the first line, then all the possible branches come indented 2 spaces each below. 2018-01-17T04:17:00Z beach: By "more consistent with others", I mean with other special forms and macros. 2018-01-17T04:17:09Z borei quit (Ping timeout: 264 seconds) 2018-01-17T04:17:11Z beach: Exactly. 2018-01-17T04:17:26Z beach: I am thinking of making "your" style the default for Second Climacs. 2018-01-17T04:17:31Z guaqua quit (Ping timeout: 268 seconds) 2018-01-17T04:17:38Z guaqua joined #lisp 2018-01-17T04:18:38Z sjl: Yeah, indenting the branches at the same level as the test makes it look less like a control structure and more like an ordinary function to me. 2018-01-17T04:18:54Z beach: I totally agree. 2018-01-17T04:18:55Z aeth: At least in my Emacs configuration, indentation of 2 spaces implies it's a &body afaik 2018-01-17T04:20:41Z ckonstanski joined #lisp 2018-01-17T04:22:01Z sjl: &body implies two spaces, but not the other way around, e.g. CASE and friends. 2018-01-17T04:22:45Z sjl: well, I suppose CASE can be defined with &body in the lambda list if you want 2018-01-17T04:24:32Z stylewarning: I want the indentation that (DEFMACRO IF (P X Y) ...) provides 2018-01-17T04:24:52Z sjl: so a non-conforming IF? ;) 2018-01-17T04:25:01Z sjl: (defmacro if (p x &optional y) ...) 2018-01-17T04:25:16Z beach: Heh. 2018-01-17T04:26:13Z jsn` left #lisp 2018-01-17T04:27:47Z mitc0185 joined #lisp 2018-01-17T04:32:14Z sonologico quit (Ping timeout: 255 seconds) 2018-01-17T04:32:17Z pjb` joined #lisp 2018-01-17T04:33:30Z mitc0185 quit (Ping timeout: 260 seconds) 2018-01-17T04:33:43Z jarwin joined #lisp 2018-01-17T04:33:43Z jarwin is now known as Jarwin 2018-01-17T04:34:06Z smasta joined #lisp 2018-01-17T04:35:35Z pjb` quit (Remote host closed the connection) 2018-01-17T04:37:45Z pjb` joined #lisp 2018-01-17T04:40:41Z fikka quit (Ping timeout: 276 seconds) 2018-01-17T04:42:26Z fiddlerwoaroof_: Is fare still around? 2018-01-17T04:43:01Z fiddlerwoaroof_: I'm trying to figure out what the "right" way to mark an ASDF operation as done is, if you're skipping it 2018-01-17T04:43:11Z ikki quit (Ping timeout: 248 seconds) 2018-01-17T04:44:02Z fikka joined #lisp 2018-01-17T04:44:21Z malice quit (Remote host closed the connection) 2018-01-17T04:45:49Z EvW joined #lisp 2018-01-17T04:47:54Z fiddlerwoaroof_: I have a suspicion that ASDF::MARK-OPERATION-DONE should be exported 2018-01-17T04:48:01Z stylewarning: sjl I guess I’ve programmed into my brain that the code is wrong if IF doesn’t have two branches 2018-01-17T04:48:35Z sjl: I feel like they should have either gone all the way and let it have 0 branches, or force it to have 2. 2018-01-17T04:48:51Z sjl: allowing 1 is just weird 2018-01-17T04:48:56Z dtornabene joined #lisp 2018-01-17T04:49:31Z stylewarning: I think it should just be 2 2018-01-17T04:49:38Z stylewarning: COND fills the other niche uses 2018-01-17T04:50:32Z oleo quit (Ping timeout: 276 seconds) 2018-01-17T04:52:08Z fiddlerwoaroof_: sjl: I think emacs forces your if-style by default 2018-01-17T04:52:24Z fiddlerwoaroof_: At least, I use it because that's how emacs formats my code 2018-01-17T04:52:43Z sonologico joined #lisp 2018-01-17T04:57:18Z fiddlerwoaroof_: Hmm, I figured out my mark-operation-done issue 2018-01-17T04:57:50Z fiddlerwoaroof_: And, Xach, I have a fix that makes LINEDIT compile again, does Nikodemus Sivola still maintain his libraries? 2018-01-17T04:58:35Z quazimodo quit (Ping timeout: 256 seconds) 2018-01-17T04:59:09Z schoppenhauer quit (Ping timeout: 264 seconds) 2018-01-17T05:00:46Z schoppenhauer joined #lisp 2018-01-17T05:01:05Z |3b| quit (Remote host closed the connection) 2018-01-17T05:03:18Z oleo joined #lisp 2018-01-17T05:04:42Z sjl__ joined #lisp 2018-01-17T05:06:35Z z3t0 joined #lisp 2018-01-17T05:08:37Z beach: fiddlerwoaroof_: Emacs indents the `then' part by 4 positions, and the `else' part (which can have more than one form in it) by 2 positions. 2018-01-17T05:09:02Z beach: fiddlerwoaroof_: And that is different from what sjl suggests. 2018-01-17T05:09:08Z sjl__ quit (Ping timeout: 255 seconds) 2018-01-17T05:10:57Z z3t0 quit (Ping timeout: 240 seconds) 2018-01-17T05:11:13Z fiddlerwoaroof_: It does that in emacs-lisp mode, but not (for me) when slime is loaded and it's in common-lisp mode 2018-01-17T05:11:21Z Bike quit (Quit: Lost terminal) 2018-01-17T05:11:37Z beach: Then you are not using slime-indentation. 2018-01-17T05:11:50Z beach: ... which is a must in order to get LOOP clauses indented correctly. 2018-01-17T05:12:24Z beach: If you are using slime-indentation, then both the `then' and the `else' parts are indented 4 positions. 2018-01-17T05:14:46Z jmercouris: How to get slime to word wrap macro expansions? 2018-01-17T05:15:18Z fiddlerwoaroof_: beach: yeah, I have 4-space indents for both branches when editing .lisp files 2018-01-17T05:15:36Z beach: fiddlerwoaroof_: And that is not what sjl suggests. 2018-01-17T05:15:47Z shaftoe: fiddlerwoaroof_: looking at linedit pull requests, seems like some have been around for a while 2018-01-17T05:16:34Z fiddlerwoaroof_: Yeah, I just realized I was looking at the printed output, not the source 2018-01-17T05:17:03Z fiddlerwoaroof_: Hmm, the bug is in madeira-port, actually 2018-01-17T05:17:25Z fiddlerwoaroof_: (e.g. the problem that's causing it to fail quicklisp in the latest sbcl) 2018-01-17T05:17:59Z fiddlerwoaroof_: Maybe I can takeover that project? Fare has a fix that I'm planning to merge with my fix 2018-01-17T05:18:08Z fikka quit (Ping timeout: 255 seconds) 2018-01-17T05:19:02Z EvW quit (Ping timeout: 255 seconds) 2018-01-17T05:19:15Z oleo quit (Quit: Leaving) 2018-01-17T05:19:51Z shaftoe: do you have a fork of it? 2018-01-17T05:20:54Z fiddlerwoaroof_: I'm about to 2018-01-17T05:21:39Z z3t0 joined #lisp 2018-01-17T05:23:23Z mhd quit (Quit: Textual IRC Client: www.textualapp.com) 2018-01-17T05:23:23Z mhd quit (Quit: Textual IRC Client: www.textualapp.com) 2018-01-17T05:23:54Z fikka joined #lisp 2018-01-17T05:26:00Z z3t0 quit (Ping timeout: 260 seconds) 2018-01-17T05:26:16Z asarch quit (Quit: Leaving) 2018-01-17T05:26:21Z smasta quit (Ping timeout: 256 seconds) 2018-01-17T05:30:40Z wigust joined #lisp 2018-01-17T05:35:04Z pjb` quit (Remote host closed the connection) 2018-01-17T05:35:12Z z3t0 joined #lisp 2018-01-17T05:37:09Z smasta joined #lisp 2018-01-17T05:38:32Z Jarwin quit (Ping timeout: 276 seconds) 2018-01-17T05:39:57Z z3t0 quit (Ping timeout: 256 seconds) 2018-01-17T05:41:00Z Oladon quit (Quit: Leaving.) 2018-01-17T05:41:59Z smasta quit (Ping timeout: 255 seconds) 2018-01-17T05:42:04Z z3t0 joined #lisp 2018-01-17T05:43:32Z jmercouris: I would like to make a defcommand macro, the only ideas I have to go off of are ones suggested to me from stumpwm, and the other which I can see in lispkit: https://github.com/AeroNotix/lispkit/blob/master/commands.lisp#L29 2018-01-17T05:43:59Z pjb` joined #lisp 2018-01-17T05:43:59Z pjb` quit (Remote host closed the connection) 2018-01-17T05:44:21Z jmercouris: I was further thinking of prefixing all commands with some sort of namespace like next-command, so that I can provide some sort of m-x completion by being able to query the symbols in a package 2018-01-17T05:45:13Z jmercouris: or should I stike with the make-instance objects as shown in the example 2018-01-17T05:45:22Z jmercouris: make-instance command object 2018-01-17T05:46:14Z jmercouris: man, this is such an elegant design actually 2018-01-17T05:46:29Z z3t0 quit (Ping timeout: 255 seconds) 2018-01-17T05:48:16Z jmercouris: at least parts of it 2018-01-17T05:48:22Z jmercouris: the keymap could use some work 2018-01-17T05:48:33Z jmercouris: prefix keys have to be manually set 2018-01-17T05:51:54Z dtornabene quit (Remote host closed the connection) 2018-01-17T05:52:08Z dtornabene joined #lisp 2018-01-17T05:58:15Z chenbin joined #lisp 2018-01-17T05:59:05Z beach: More inspiration: https://github.com/robert-strandh/Second-Climacs/blob/master/Command/command.lisp 2018-01-17T06:00:19Z beach: With this technique, the types of the arguments are kept with the function, so that arguments can be acquired according to the types when the command is invoked interactively. 2018-01-17T06:00:23Z damke_ joined #lisp 2018-01-17T06:00:23Z smurfrobot joined #lisp 2018-01-17T06:02:07Z z3t0 joined #lisp 2018-01-17T06:03:00Z jmercouris: beach: I don't really understand your code 2018-01-17T06:03:21Z damke quit (Ping timeout: 264 seconds) 2018-01-17T06:03:27Z jmercouris: can you explainw hat you mean by the types of the argumenst are kept? 2018-01-17T06:03:43Z jmercouris: if one has an argument, doesn't one always know its type? 2018-01-17T06:04:13Z beach: It has to do with invoking the command like this M-x my-command. 2018-01-17T06:04:20Z beach: Then you have to prompt for the arguments. 2018-01-17T06:04:34Z jmercouris: Oh I see 2018-01-17T06:04:41Z jmercouris: my commands themselves prompt for the arguments 2018-01-17T06:04:44Z beach: The loop that prompts for the arguments takes a "type" for each argument. 2018-01-17T06:05:01Z beach: jmercouris: Then you will have a huge amount of duplicated code. 2018-01-17T06:05:03Z jmercouris: within the body of my commands I have something like (with-result*) 2018-01-17T06:05:25Z beach: jmercouris: Plus, then you can't easily just call the command as a function. 2018-01-17T06:05:40Z jmercouris: I didn't explain it really well 2018-01-17T06:05:43Z jmercouris: let me show an example one sec 2018-01-17T06:05:50Z smurfrobot quit (Ping timeout: 276 seconds) 2018-01-17T06:06:57Z z3t0 quit (Ping timeout: 256 seconds) 2018-01-17T06:07:17Z jmercouris: beach: https://gist.github.com/5e0879d8014eb6d810cfc293a466cd0b 2018-01-17T06:07:36Z jmercouris: so as you can see, bookmark-url can be called with arguments as it doesn't need to accept args 2018-01-17T06:07:45Z jmercouris: those are handled by the with-result 2018-01-17T06:08:09Z jmercouris: that's where you can specify all sorts of things like, completion function to call, any setup etc 2018-01-17T06:08:41Z beach: Good for you. 2018-01-17T06:08:55Z mishoo_ joined #lisp 2018-01-17T06:08:56Z jmercouris: do you really think this approach is bad? 2018-01-17T06:09:35Z shifty joined #lisp 2018-01-17T06:09:47Z beach: Hard to say. I am inspired by the presentation-type system of CLIM II, which I think is excellent in terms of the modularity that it provides. 2018-01-17T06:10:03Z beach: You should do what you want. I just gave you another source of inspiration. 2018-01-17T06:10:50Z jmercouris: That's exactly the problem, there are no hard/fast rules in good design 2018-01-17T06:11:03Z jmercouris: something I may do now, I may regret a year from now for completely unforseen circumstances 2018-01-17T06:11:11Z beach: Oh, and it is a bad idea to use #'bookmark-url in define-key. It is much better to use 'bookmark-url in case you want to redefine the function later. 2018-01-17T06:11:17Z jmercouris: I guess there is no way to prevent large scale refactoring, no matter how clever I might try to be 2018-01-17T06:11:31Z beach: Oh, there is, but you have rejected that solution before. 2018-01-17T06:11:31Z jmercouris: yeah I should get rid of those hashes indeed 2018-01-17T06:11:46Z jmercouris: what do you mean? 2018-01-17T06:12:01Z aeth: definitely get rid of them 2018-01-17T06:12:29Z beach: jmercouris: I recommended you use CLIM, because a lot of the things you are doing already exist in better versions of CLIM. But you rejected that solution. 2018-01-17T06:12:40Z jmercouris: Ah, well, it is not possible for me to use it 2018-01-17T06:12:44Z chenbin: https://pastebin.com/raw/3gAPvJQr ,please help sbcl on windows . I make sure the SBCL_HOME environment variable isn't set. 2018-01-17T06:12:58Z jmercouris: believe me, I would rather not be writing code for several platforms and reinventing GUI paradigms 2018-01-17T06:13:14Z beach: jmercouris: If, instead of re-inventing the wheel, you would work on a backend for McCLIM that would work for you, then everyone would benefit, and it would be less work for you in the end. 2018-01-17T06:13:36Z borei joined #lisp 2018-01-17T06:13:38Z chenbin: or what's the best and convinent cl on windows 2018-01-17T06:13:39Z beach: jmercouris: But, I am not going to insist. We have been through this. 2018-01-17T06:14:00Z jmercouris: Even so, I don't see how it would be possible to take an existing webkit port and use it in a different context 2018-01-17T06:14:05Z jmercouris: I would also literally have to make my own webkit port 2018-01-17T06:14:17Z jmercouris: which isn't exactly a trivial task... 2018-01-17T06:14:18Z beach: I said I would drop it. 2018-01-17T06:14:37Z beach: I am just sad that you are re-inventing the flat tire, as we say. 2018-01-17T06:14:40Z jmercouris: Fair enough, I just want to make it clear, it is not because I don't want to, nor do I not see the advantages 2018-01-17T06:14:56Z jmercouris: it's just simply not feasible for me, I am just a single developer 2018-01-17T06:15:58Z pierpa quit (Quit: Page closed) 2018-01-17T06:17:09Z fiddlerwoaroof_: jmercouris/beach: I'd really like to finish a usable Mac McClim backend 2018-01-17T06:17:20Z beach: That would be great! 2018-01-17T06:17:33Z fiddlerwoaroof_: Especially, if I can bridge Lisp/ObjC in a portable way using CFFI 2018-01-17T06:17:51Z jmercouris: fiddlerwoaroof_: I have a feeling that project may be more complicated than you imagine 2018-01-17T06:18:06Z jmercouris: the CFFI one at least, the xc-runtime is not trivial from what I gather 2018-01-17T06:18:09Z beach: jmercouris: I think you are wrong about that. You are not alone. There are plenty of people here and in #clim to help you. And if everyone has your attitude, then nothing will ever be shared. 2018-01-17T06:18:13Z fiddlerwoaroof_: Possibly 2018-01-17T06:18:48Z fiddlerwoaroof_: I have a demo app that loads a nib using only lisp code + a tiny bit of objc 2018-01-17T06:18:51Z jmercouris: beach: I wasn't talking about the port of mcclim, that wouldn't be too bad, I mean the objc-cffi project he is working on 2018-01-17T06:19:11Z pjb` joined #lisp 2018-01-17T06:19:12Z jmercouris: fiddlerwoaroof_: I saw that, quite impressive 2018-01-17T06:19:19Z beach: jmercouris: I was talking to you when you said that you are just a single developer. 2018-01-17T06:19:22Z jmercouris: I mean, I didn't run the application or anything, but I just saw 2018-01-17T06:19:38Z fiddlerwoaroof_: But, my goal is to implement just what I need to put mcclim on top of it 2018-01-17T06:20:09Z jmercouris: why do you need to implement any cffi at all? are there not c bindings for the carbon framework? 2018-01-17T06:20:13Z jmercouris: or only objective c? 2018-01-17T06:20:24Z fiddlerwoaroof_: carbon is deprecated 2018-01-17T06:20:28Z beach: jmercouris: I see this very often here. People work on their own little thing, because they want it done as fast as possible. By doing that, they re-invent things that exist, and the invent things that could have been shared if done right, thereby cutting down the global development effort. 2018-01-17T06:20:31Z fiddlerwoaroof_: cocoa is objective-c only 2018-01-17T06:21:07Z fiddlerwoaroof_: (and Swift, I guess, these days) 2018-01-17T06:21:08Z jmercouris: fiddlerwoaroof_: I thought there were still carbon compatibility layers in place 2018-01-17T06:21:23Z fiddlerwoaroof_: Yeah, but I don't think those support 64bit apps 2018-01-17T06:21:56Z aeth: So when is Apple going to rewrite everything but with Swift? 2018-01-17T06:22:00Z jmercouris: beach: Well, I think my project is a little unique :D I have also contributed a little bit to other projects, particularly to eql 2018-01-17T06:22:05Z fiddlerwoaroof_: Swift is built on the objective-c runtime 2018-01-17T06:22:09Z jmercouris: aeth: They are reusing the runtime 2018-01-17T06:22:13Z LocaMocha joined #lisp 2018-01-17T06:22:15Z beach: jmercouris: Yes, of course. 2018-01-17T06:22:18Z jmercouris: so I dont think they'll just up and drop objective-c support 2018-01-17T06:22:22Z fiddlerwoaroof_: Anyways, objective-c's runtime is a closer fit to lisp than swift is 2018-01-17T06:22:28Z fiddlerwoaroof_: s/swift/carbon/ 2018-01-17T06:23:04Z fiddlerwoaroof_: ... if only Apple had embraced Dylan 2018-01-17T06:23:11Z jmercouris: fiddlerwoaroof_: Have you spoken with rme? 2018-01-17T06:23:19Z jmercouris: he has quite a bit of expertise on this exact topic 2018-01-17T06:23:35Z jmercouris: maybe he'd be willing to give you some advice that could save you hundreds of hours 2018-01-17T06:24:29Z jackdaniel: I feel the urge to chip in in this discussion, but I have nothing interesting to say ;-) 2018-01-17T06:24:31Z chenbin quit (Ping timeout: 256 seconds) 2018-01-17T06:24:32Z jackdaniel: good morning o/ 2018-01-17T06:24:39Z beach: Hello jackdaniel. 2018-01-17T06:24:46Z jmercouris: fiddlerwoaroof_: why exactly do you need objective-c anyway? 2018-01-17T06:25:03Z jmercouris: fiddlerwoaroof_: what obj-c APIs do you wish to call? 2018-01-17T06:25:18Z dtornabene quit (Quit: Leaving) 2018-01-17T06:25:32Z pjb` quit (Ping timeout: 256 seconds) 2018-01-17T06:25:45Z fiddlerwoaroof_: Wrapping obj-c lets you use all the apple apis as a first-class citizen 2018-01-17T06:26:16Z jmercouris: fiddlerwoaroof_: here's a different question, why don't you just want to use CCL? 2018-01-17T06:26:34Z fiddlerwoaroof_: Because why do something in an implementation-dependent way if it can be done portably? 2018-01-17T06:26:59Z jmercouris: it may not be able to be done portably without great compromise or complexity 2018-01-17T06:27:17Z fiddlerwoaroof_: Maybe, but my code works in both LispWorks and CCL 2018-01-17T06:27:43Z fiddlerwoaroof_: I'm interested, at least, in seeing how far I can get before abandoning this path. 2018-01-17T06:28:10Z z3t0 joined #lisp 2018-01-17T06:28:28Z jmercouris: I believe you'll get it to work 2018-01-17T06:28:32Z jmercouris: I just don't think it'll be easy 2018-01-17T06:28:41Z jmercouris: why is the backend for MacOS named beagle? 2018-01-17T06:29:01Z fiddlerwoaroof_: Darwin's ship, I believe 2018-01-17T06:29:17Z fiddlerwoaroof_: darwin == the osx kernel 2018-01-17T06:29:20Z jackdaniel: avoiding an effort because "things won't be easy" isn't a very sound argument 2018-01-17T06:29:34Z jmercouris: jackdaniel: I'll offer a different argument then 2018-01-17T06:29:43Z jmercouris: "Another way may be easier, and less error prone" 2018-01-17T06:30:01Z jackdaniel: you forgot to add, that this another way doesn't met original requirement (of portability) 2018-01-17T06:30:04Z marusich joined #lisp 2018-01-17T06:30:11Z jmercouris: I'm not sure why this is a requirement at all 2018-01-17T06:30:28Z jmercouris: if all CL implementations meet the spec, why choose one over CCL? 2018-01-17T06:30:42Z jmercouris: are the SBCL extensions really so unbelievably powerful to merit this effort? 2018-01-17T06:31:00Z jackdaniel: it simply is (as far as I understand fiddlerwoaroof_), fact that you don't care about portability is fine by me, but doesn't make a compelling argument to discourage others 2018-01-17T06:31:29Z beach: jmercouris: Because this is freenode, and it is about free software that is preferable to share as much as possible. 2018-01-17T06:31:31Z jmercouris: let's not muddy the waters, you haven't actually provided an argument for portability other than "You don't care about portability, but others do" 2018-01-17T06:32:12Z jmercouris: beach: Freedom of choice is an argument I can understand 2018-01-17T06:32:14Z jackdaniel: jmercouris: actually I didn't want to judge requirements which others put in front of themself. I've just pointed out, that your "easy" solution doesn't meet them 2018-01-17T06:32:28Z pjb` joined #lisp 2018-01-17T06:32:35Z z3t0 quit (Ping timeout: 240 seconds) 2018-01-17T06:32:47Z jackdaniel: and missing goals you put before yourself because something *may not* be easy is not very sound approach to solve problems 2018-01-17T06:32:50Z jmercouris: jackdaniel: thats true, I misunderstood you, sorry for that 2018-01-17T06:32:58Z jackdaniel: programming is hard, so I will be a gardener 2018-01-17T06:33:08Z jmercouris: jackdaniel: I often dream about that actually 2018-01-17T06:33:14Z jmercouris: just cutting trees or something 2018-01-17T06:33:24Z jmercouris: but I feel like I would be so mind numbingly bored so quickly 2018-01-17T06:33:31Z jmercouris: maybe I could last a week 2018-01-17T06:34:12Z jackdaniel: good for you, still that misses the point. some people do hard stuff because they find it interesting (to them), not because they underestimate the effort involved 2018-01-17T06:34:39Z jmercouris: I don't remember saying "people do things that are hard because they underestimate the effort involved" 2018-01-17T06:34:42Z jackdaniel: fwiw gardening is hard too if you think about it (given non-trivial gardens) 2018-01-17T06:34:57Z jackdaniel: well, you said: drop the effort because it *may be* not easy ;-) 2018-01-17T06:35:02Z jackdaniel: and here it is, I've chipped in ;-) 2018-01-17T06:35:53Z beach: jackdaniel: Well put. 2018-01-17T06:36:07Z Karl_Dscc joined #lisp 2018-01-17T06:37:35Z jmercouris: jackdaniel: It was a suggestion 2018-01-17T06:37:56Z jmercouris: I did not say nor imply that people do things because they underestimate 2018-01-17T06:38:37Z jmercouris: at any rate, whether x or y, doesn't matter, we have different opinions on the value of portability and the "WHY" but, as long as we are doing our own thing, is okay 2018-01-17T06:39:51Z beach: People are free to do what they want of course, but I find it sad to see that so many people do their "own thing" instead of trying to collaborate to decrease the global effort. 2018-01-17T06:40:15Z aeth: jmercouris: At the moment, it's best to try to get something to run on at least SBCL, CCL, and ECL. Why? Well, one reason is that all of the people who wrote code that only works on CLISP 10 years ago are in a bad position in 2018 even if CLISP was a reasonable choice in 2008. You never know which implementation(s) you want to use in 10 years. 2018-01-17T06:40:22Z jmercouris: this is a tragedy of the open source world, things like quicklisp help, but still 2018-01-17T06:40:53Z beach: jmercouris: And you think Quicklisp came about because Xach was doing his "own thing"? 2018-01-17T06:41:00Z jmercouris: I mean, kind of yeah 2018-01-17T06:41:06Z jmercouris: he is most definitely a quicklisp dictator 2018-01-17T06:41:15Z jmercouris: benevolent, but still a dictator 2018-01-17T06:41:57Z makomo quit (Ping timeout: 240 seconds) 2018-01-17T06:43:14Z jackdaniel: actually not 2018-01-17T06:43:22Z beach: jmercouris: I am afraid you missed my point entirely. Not that it matters. 2018-01-17T06:43:24Z jackdaniel: infrastructure is build to make other repositories working 2018-01-17T06:43:40Z jackdaniel: for instance (in closed project) we use a separate quicklisp distribution 2018-01-17T06:43:40Z jmercouris: jackdaniel: Do you have access to the quicklisp servers? 2018-01-17T06:43:49Z quazimodo joined #lisp 2018-01-17T06:43:52Z jackdaniel: I have means to provide my own servers 2018-01-17T06:43:58Z jmercouris: are you able to approve projects and submit them to the official servers? 2018-01-17T06:44:05Z jackdaniel: and code is written the way which make it easy 2018-01-17T06:44:11Z jmercouris: do you know of anyone other than Xach that can do this? 2018-01-17T06:44:34Z jackdaniel: as I said, Xach servers are Xach thing, but Quicklisp works with any servers 2018-01-17T06:44:42Z jmercouris: yes, it is a great project for this reason 2018-01-17T06:44:46Z aeth: jmercouris: Quicklisp will scale when Quicklisp needs to scale 2018-01-17T06:45:00Z jmercouris: but for 99% of users, they are ql:quickload some project and hitting the quicklisp servers 2018-01-17T06:45:04Z aeth: Xach is smart. Don't try to scale until you need to scale. 2018-01-17T06:45:17Z jmercouris: Does that make him a non-dictator? 2018-01-17T06:45:24Z jackdaniel: fact that people trust quicklisp servers is a matter of authority not dictatorship 2018-01-17T06:45:24Z aeth: Quicklisp avoids about 90% of the problems that the JS world faces because it goes through Xach 2018-01-17T06:45:30Z aeth: Human oversight is great 2018-01-17T06:45:38Z jmercouris: I'm not seeing the line between authority and dictatorship 2018-01-17T06:45:41Z aeth: Try to avoid human oversight and you get messes, like YouTube and Facebook 2018-01-17T06:46:02Z jmercouris: if it was a community effort, you'd still have oversight, but something closer to an oligarchy perhaps 2018-01-17T06:46:03Z loke: And twitter... 2018-01-17T06:46:14Z jackdaniel: of course it makes him a non-dictator :-) if beach suggests, that some code doesn't follow well-estabilished practice I'll think twice before I stick to this code passage 2018-01-17T06:46:18Z jmercouris: beach: Do you mean because he collaborated with Fare? 2018-01-17T06:46:22Z jackdaniel: if this suggestion comes from random person, I put less thought in it 2018-01-17T06:46:27Z jackdaniel: that is what authority is 2018-01-17T06:46:46Z jmercouris: That is what respect and credibility is 2018-01-17T06:46:47Z jackdaniel: dictatorship is when your manager tells you to change the code 2018-01-17T06:46:47Z borei quit (Ping timeout: 276 seconds) 2018-01-17T06:46:48Z jmercouris: that is not what authority is 2018-01-17T06:46:57Z fouric: (quick minor question, not to distract from ongoing conversation: any suggestions as to where i can find information on hotpatching running CL programs? specifically, I know how to do it in Emacs+SLIME (because that's trivial), i'm more interested in learning how to do things like have the patched program "know" that a function was updated and then run code that updates the associated data structures, too...) 2018-01-17T06:47:06Z beach: jmercouris: I wasn't talking about access to servers at all. You completely missed the point. I'll drop it now. It's a futile discussion. 2018-01-17T06:47:07Z smurfrobot joined #lisp 2018-01-17T06:47:17Z jmercouris: beach: Maybe another day 2018-01-17T06:47:26Z beach: Not likely. 2018-01-17T06:47:27Z fouric: (where would i go about learning about that? i found *two* stack overflow posts, neither of which either have the information i'm looking for nor have links that point to the same) 2018-01-17T06:47:35Z jmercouris: beach: Let's stay optimistic :D 2018-01-17T06:47:47Z aeth: jmercouris: Quicklisp would be a dictatorship if it came bundled with all implementations and was the only way to do things in that implementation imo. If Quicklisp was bad, people would use some other thing. 2018-01-17T06:48:26Z jackdaniel: hm, apparently word "authoritiy" is a false friend in English. In polish "autorytet" means "respect and credibility" (among other things) 2018-01-17T06:48:27Z jmercouris: aeth: I am not saying quicklisp is bad, nor that xach is a bad dictator, but it is a dictator project 2018-01-17T06:48:47Z jackdaniel: my point stands though, and I agree that discussion is futile 2018-01-17T06:48:48Z jmercouris: jackdaniel: It happens :P 2018-01-17T06:48:58Z jmercouris: you gusy are so quick to be pessimistic 2018-01-17T06:49:50Z z3t0 joined #lisp 2018-01-17T06:49:56Z jmercouris: at any rate, we can solve the worlds problems tomorrow, perhaps we can settle tabs vs spaces as well :D 2018-01-17T06:50:02Z jmercouris: goodnight everyone 2018-01-17T06:50:18Z jackdaniel: actually it's not a sign of pessimism but a sign of the fact that people value their time and don't want to spend it on something futile 2018-01-17T06:50:59Z igemnace joined #lisp 2018-01-17T06:51:43Z smurfrobot quit (Ping timeout: 248 seconds) 2018-01-17T06:54:26Z z3t0 quit (Ping timeout: 255 seconds) 2018-01-17T06:54:45Z jmercouris quit (Ping timeout: 256 seconds) 2018-01-17T06:55:02Z jackdaniel: after reading into it word "authority" has three estabilished meanings where two of them match polish word 2018-01-17T06:55:06Z flamebeard joined #lisp 2018-01-17T06:55:53Z jackdaniel: and none matches "dictatorship" 2018-01-17T06:57:47Z aeth: jackdaniel: jmercouris might have been referencing Python's BFDL. https://en.wikipedia.org/wiki/Benevolent_dictator_for_life 2018-01-17T06:58:40Z jackdaniel: I know, but it doesn't match well with Quicklisp architecture and the context of discussion 2018-01-17T07:00:44Z jmercouris joined #lisp 2018-01-17T07:01:49Z hexfive quit (Quit: WeeChat 1.9.1) 2018-01-17T07:03:25Z fikka quit (Ping timeout: 260 seconds) 2018-01-17T07:04:20Z z3t0 joined #lisp 2018-01-17T07:05:06Z chenbin joined #lisp 2018-01-17T07:05:09Z milanj quit (Quit: This computer has gone to sleep) 2018-01-17T07:05:19Z jmercouris quit (Ping timeout: 256 seconds) 2018-01-17T07:05:50Z borei joined #lisp 2018-01-17T07:07:36Z chenbin: hi , how to avoid refresh the name list of channel on Emacs ERC? thank 2018-01-17T07:09:15Z z3t0 quit (Ping timeout: 260 seconds) 2018-01-17T07:09:44Z pjb` quit (Ping timeout: 256 seconds) 2018-01-17T07:09:46Z fiddlerwoaroof_: chenbin: that's probably a question for #emacs 2018-01-17T07:10:13Z fikka joined #lisp 2018-01-17T07:11:33Z aeth: As far as what's best for the Lisp community, I think what drives people to languages are popular applications, engines, frameworks, libraries, etc. But you cannot control what becomes popular. So I don't think divided efforts are necessarily wasted efforts. Just make lots of very different things that are programmable in Lisp imo. 2018-01-17T07:13:33Z Karl_Dscc quit (Remote host closed the connection) 2018-01-17T07:17:13Z igemnace quit (Ping timeout: 256 seconds) 2018-01-17T07:17:54Z DeadTrickster joined #lisp 2018-01-17T07:19:08Z pjb` joined #lisp 2018-01-17T07:19:13Z z3t0 joined #lisp 2018-01-17T07:22:56Z alexmlw joined #lisp 2018-01-17T07:23:10Z vydd joined #lisp 2018-01-17T07:23:45Z z3t0 quit (Ping timeout: 264 seconds) 2018-01-17T07:24:12Z smasta joined #lisp 2018-01-17T07:24:13Z pjb` quit (Ping timeout: 256 seconds) 2018-01-17T07:26:59Z pjb` joined #lisp 2018-01-17T07:29:02Z smasta quit (Ping timeout: 276 seconds) 2018-01-17T07:29:39Z dec0n joined #lisp 2018-01-17T07:30:27Z eivarv joined #lisp 2018-01-17T07:30:40Z JenElizabeth joined #lisp 2018-01-17T07:31:44Z mishoo_ quit (Ping timeout: 248 seconds) 2018-01-17T07:31:50Z pjb` quit (Ping timeout: 256 seconds) 2018-01-17T07:33:08Z vlatkoB joined #lisp 2018-01-17T07:33:39Z Lord_Nightmare quit (Ping timeout: 256 seconds) 2018-01-17T07:35:14Z vydd quit (Ping timeout: 256 seconds) 2018-01-17T07:38:29Z Lord_Nightmare joined #lisp 2018-01-17T07:38:46Z pjb` joined #lisp 2018-01-17T07:39:31Z smurfrobot joined #lisp 2018-01-17T07:41:53Z eivarv quit (Quit: Sleep) 2018-01-17T07:43:33Z safe quit (Read error: Connection reset by peer) 2018-01-17T07:43:39Z pjb` quit (Remote host closed the connection) 2018-01-17T07:43:50Z pjb` joined #lisp 2018-01-17T07:44:23Z smurfrobot quit (Ping timeout: 255 seconds) 2018-01-17T07:47:01Z sonologico quit (Quit: WeeChat 1.9.1) 2018-01-17T07:47:44Z pjb` quit (Remote host closed the connection) 2018-01-17T07:49:15Z murii joined #lisp 2018-01-17T07:50:39Z pjb` joined #lisp 2018-01-17T07:54:10Z pjb` quit (Remote host closed the connection) 2018-01-17T07:54:49Z mishoo joined #lisp 2018-01-17T07:57:27Z pjb` joined #lisp 2018-01-17T07:58:06Z m00natic joined #lisp 2018-01-17T07:59:31Z varjag joined #lisp 2018-01-17T08:04:42Z pjb` quit (Ping timeout: 256 seconds) 2018-01-17T08:09:31Z smurfrobot joined #lisp 2018-01-17T08:11:15Z pjb` joined #lisp 2018-01-17T08:13:57Z smurfrobot quit (Ping timeout: 240 seconds) 2018-01-17T08:17:32Z Cymew joined #lisp 2018-01-17T08:18:03Z fikka quit (Ping timeout: 256 seconds) 2018-01-17T08:18:32Z smasta joined #lisp 2018-01-17T08:19:02Z pjb` quit (Ping timeout: 255 seconds) 2018-01-17T08:23:05Z smasta quit (Ping timeout: 255 seconds) 2018-01-17T08:26:08Z fikka joined #lisp 2018-01-17T08:27:45Z schweers joined #lisp 2018-01-17T08:30:38Z chenbin quit (Read error: No route to host) 2018-01-17T08:31:39Z lnostdal quit (Ping timeout: 256 seconds) 2018-01-17T08:35:03Z pjb` joined #lisp 2018-01-17T08:40:34Z pjb` quit (Remote host closed the connection) 2018-01-17T08:40:43Z sjl__ joined #lisp 2018-01-17T08:44:57Z sjl__ quit (Ping timeout: 240 seconds) 2018-01-17T08:46:04Z loke quit (Ping timeout: 256 seconds) 2018-01-17T08:47:17Z pjb` joined #lisp 2018-01-17T08:47:52Z MetaYan quit (Remote host closed the connection) 2018-01-17T08:48:08Z MetaYan joined #lisp 2018-01-17T08:48:57Z damke_ quit (Ping timeout: 264 seconds) 2018-01-17T08:49:14Z shka joined #lisp 2018-01-17T08:50:03Z damke_ joined #lisp 2018-01-17T08:54:23Z pjb`` joined #lisp 2018-01-17T08:54:53Z pjb` quit (Remote host closed the connection) 2018-01-17T08:57:30Z orivej joined #lisp 2018-01-17T08:58:27Z vydd joined #lisp 2018-01-17T08:58:27Z vydd quit (Changing host) 2018-01-17T08:58:27Z vydd joined #lisp 2018-01-17T08:59:25Z pjb`` quit (Ping timeout: 256 seconds) 2018-01-17T09:01:03Z damke joined #lisp 2018-01-17T09:03:03Z igemnace joined #lisp 2018-01-17T09:03:21Z damke_ quit (Ping timeout: 264 seconds) 2018-01-17T09:03:57Z sigjuice: fiddlerwoaroof_ looks like madeira-port can be made unnecessary for linedit quite easily. https://github.com/LispLima/linedit/commit/c07816b8f29f6a54a13616d6bc71b46715618c42 2018-01-17T09:05:02Z hhdave joined #lisp 2018-01-17T09:07:05Z randomstrangerb quit (Ping timeout: 260 seconds) 2018-01-17T09:08:05Z hhdave_ joined #lisp 2018-01-17T09:08:21Z randomstrangerb joined #lisp 2018-01-17T09:08:29Z damke_ joined #lisp 2018-01-17T09:08:29Z igemnace quit (Ping timeout: 276 seconds) 2018-01-17T09:09:27Z dilated_dinosaur quit (Ping timeout: 240 seconds) 2018-01-17T09:09:43Z pjb`` joined #lisp 2018-01-17T09:09:47Z hhdave quit (Ping timeout: 276 seconds) 2018-01-17T09:09:47Z hhdave_ is now known as hhdave 2018-01-17T09:11:09Z damke quit (Ping timeout: 264 seconds) 2018-01-17T09:11:56Z beach: Question about error reporting in the compiler: A Cleavir-based compiler is meant to be used in several situations, to implement COMPILE, EVAL, and COMPILE-FILE, of course, but also for things like processing top-level forms in an editor so as to give more information to the user. 2018-01-17T09:12:05Z beach: Now, it seems to me that each such use of the compiler requires a different way of reporting errors. The file compiler might just give a warning, whereas EVAL might signal an error for the same situation. An editor much handle the signal and turn it into some kind of highlight of the buffer. 2018-01-17T09:12:11Z beach: So, it seems that the core of the compiler should not attempt to determine what the application is. As a result, I am thinking that the core of the compiler should always signal an error and propose one or more restarts. Each individual application can selectively convert the error to a warning and/or invoke a restart. 2018-01-17T09:12:12Z beach: Does this thinking seem reasonable, or am I completely off here? 2018-01-17T09:13:31Z jdz: Sounds like exactly what condition system is there for (to me at least). 2018-01-17T09:13:51Z beach: It can certainly deal with those situations, yes. 2018-01-17T09:16:41Z Shinmera: Sounds reasonable to me. 2018-01-17T09:17:05Z beach: Thanks to both of you. If anything else comes to mind, let me know. 2018-01-17T09:17:19Z Shinmera: The only question I have is about the condition types 2018-01-17T09:17:48Z Shinmera: Since, depending on context, each one could be an error, warning, or note. 2018-01-17T09:18:04Z beach: I am suggesting using errors everywhere. 2018-01-17T09:18:12Z beach: ... in the core compiler. 2018-01-17T09:18:23Z beach: Then each "application" can convert to something else. 2018-01-17T09:18:27Z Shinmera: Hrm. 2018-01-17T09:19:39Z Shinmera: I'm wondering whether it would be useful to automatically create subclasses for each variant of error, and then allow the context to change-class the condition to the appropriate subclass. (Yes I know this forces conditions to be classes) 2018-01-17T09:19:42Z beach: Cleavir is also meant to be implementation customizable, so the core can't even make a decision between error, warning, style warning, etc. in all cases, because different implementations might want something different. 2018-01-17T09:20:16Z beach: I definitely want a different subclass for each situation. 2018-01-17T09:20:45Z beach: But the typical use case is to handle and re-signal a different condition type. 2018-01-17T09:21:10Z Shinmera: Right, but that involves recreating the condition and transfering all data over 2018-01-17T09:21:14Z beach: I do need different types for each situation so that client code can selectively handle. 2018-01-17T09:21:15Z Shinmera: And losing identity. 2018-01-17T09:21:24Z beach: It does. 2018-01-17T09:22:18Z Shinmera: If you could just change-class to the appropriate variant, that would preserve identity and circumvent having to transfer the data 2018-01-17T09:22:27Z dilated_dinosaur joined #lisp 2018-01-17T09:23:31Z beach: It would. But it would only be moderately useful. Conditions are signaled in exceptional situations, so there is no performance problem with the transfer. Perhaps you see the use for preserving the identity, but I don't immediately see it. 2018-01-17T09:23:52Z Shinmera: The data transfer bit makes me iffy because it means a change in cleavir's condition definition means you need to update everywhere you transfer this data. 2018-01-17T09:24:19Z Shinmera: You would also have to replicate the data slots in your own code, etc. 2018-01-17T09:24:35Z beach: Yes, I see. 2018-01-17T09:28:07Z epony joined #lisp 2018-01-17T09:29:20Z epony quit (Max SendQ exceeded) 2018-01-17T09:30:28Z epony joined #lisp 2018-01-17T09:37:53Z JenElizabeth quit (Remote host closed the connection) 2018-01-17T09:41:36Z pjb`` quit (Remote host closed the connection) 2018-01-17T09:43:27Z pjb`` joined #lisp 2018-01-17T09:48:24Z pjb`` quit (Ping timeout: 256 seconds) 2018-01-17T09:50:57Z z3t0 joined #lisp 2018-01-17T09:52:33Z TMA: if the conditions are part of the interface (API) then a change to the conditions is a change to the API that the client has to deal with as it is the case with other API changes 2018-01-17T09:53:20Z Shinmera: You can always make an excuse to force the user to update their code. 2018-01-17T09:53:28Z Shinmera: The point is to minimise the cases where that has to happen. 2018-01-17T09:54:17Z TMA: that boils down to 'do not change the API' in this case 2018-01-17T09:55:24Z Shinmera: If you implement it the way I illustrated, the amount of changes that need to be made is far less than if you forced transfering. 2018-01-17T09:55:27Z z3t0 quit (Ping timeout: 268 seconds) 2018-01-17T09:55:48Z Shinmera: In many cases I expect there won't be any changes that need to be made 2018-01-17T09:56:02Z Shinmera: Whereas with transfering there's a guaranteed minimum amount of changes. 2018-01-17T09:56:11Z TMA: which can be easily done with one more level of indirection -- the changeable part would be in some other object that would be held in a nonspecific DATA slot -- with the transfer you can transfer the whole data object unchanged 2018-01-17T09:57:07Z Shinmera: Why add indirection when you can solve it without 2018-01-17T09:57:10Z phoe: How can I declare variable types in LOOP? 2018-01-17T09:57:23Z pjb`` joined #lisp 2018-01-17T09:57:25Z phoe: (loop for x (unsigned-byte 8) = ...) doesn't work. 2018-01-17T09:57:35Z Shinmera: phoe: (loop with foo of-type bar for bla of-type thing = ..) 2018-01-17T09:57:40Z phoe: Shinmera: thanks. 2018-01-17T09:58:05Z JonSmith joined #lisp 2018-01-17T10:02:09Z damke_ quit (Ping timeout: 264 seconds) 2018-01-17T10:02:45Z JonSmith quit (Ping timeout: 264 seconds) 2018-01-17T10:02:53Z pjb`` quit (Ping timeout: 256 seconds) 2018-01-17T10:07:13Z z3t0 joined #lisp 2018-01-17T10:08:47Z igemnace joined #lisp 2018-01-17T10:09:36Z pjb`` joined #lisp 2018-01-17T10:09:38Z pjb`` quit (Remote host closed the connection) 2018-01-17T10:11:26Z pjb`` joined #lisp 2018-01-17T10:11:50Z z3t0 quit (Ping timeout: 260 seconds) 2018-01-17T10:19:04Z angavrilov joined #lisp 2018-01-17T10:19:15Z pjb`` quit (Remote host closed the connection) 2018-01-17T10:20:18Z milanj joined #lisp 2018-01-17T10:23:02Z damke_ joined #lisp 2018-01-17T10:23:05Z z3t0 joined #lisp 2018-01-17T10:24:11Z pjb`` joined #lisp 2018-01-17T10:25:17Z Arcaelyx quit (Ping timeout: 276 seconds) 2018-01-17T10:25:20Z smurfrobot joined #lisp 2018-01-17T10:26:39Z Arcaelyx joined #lisp 2018-01-17T10:27:27Z z3t0 quit (Ping timeout: 240 seconds) 2018-01-17T10:30:20Z smurfrobot quit (Ping timeout: 256 seconds) 2018-01-17T10:32:30Z damke joined #lisp 2018-01-17T10:32:36Z pjb`` quit (Ping timeout: 256 seconds) 2018-01-17T10:32:57Z lnostdal joined #lisp 2018-01-17T10:34:13Z mingus joined #lisp 2018-01-17T10:35:09Z damke_ quit (Ping timeout: 264 seconds) 2018-01-17T10:36:35Z blacknc joined #lisp 2018-01-17T10:41:26Z pjb``` joined #lisp 2018-01-17T10:41:37Z redeemed joined #lisp 2018-01-17T10:42:58Z lnostdal quit (Ping timeout: 265 seconds) 2018-01-17T10:43:00Z z3t0 joined #lisp 2018-01-17T10:44:55Z pjb``` quit (Remote host closed the connection) 2018-01-17T10:47:56Z z3t0 quit (Ping timeout: 276 seconds) 2018-01-17T10:48:13Z randomstrangerb quit (Ping timeout: 256 seconds) 2018-01-17T10:48:29Z pjb``` joined #lisp 2018-01-17T10:49:29Z randomstrangerb joined #lisp 2018-01-17T10:52:28Z pjb``` quit (Remote host closed the connection) 2018-01-17T10:53:53Z pjb``` joined #lisp 2018-01-17T10:53:53Z heurist quit (Ping timeout: 256 seconds) 2018-01-17T10:54:07Z heurist joined #lisp 2018-01-17T10:56:23Z nika quit 2018-01-17T10:56:25Z z3t0 joined #lisp 2018-01-17T10:57:27Z makomo joined #lisp 2018-01-17T10:57:30Z lnostdal joined #lisp 2018-01-17T11:00:17Z pjb``` quit (Ping timeout: 276 seconds) 2018-01-17T11:00:37Z damke_ joined #lisp 2018-01-17T11:01:03Z z3t0 quit (Ping timeout: 256 seconds) 2018-01-17T11:01:26Z mingus quit (Ping timeout: 268 seconds) 2018-01-17T11:02:45Z damke quit (Ping timeout: 264 seconds) 2018-01-17T11:10:11Z phoe: Is there some variant of SUBSEQ that does not copy the data but creates displaced arrays instead? 2018-01-17T11:11:25Z pjb``` joined #lisp 2018-01-17T11:11:50Z z3t0 joined #lisp 2018-01-17T11:12:00Z varjag: make-array? :) 2018-01-17T11:12:35Z phoe: varjag: I think so, yes, but I'm looking for a shortcut. 2018-01-17T11:12:48Z phoe: something like (dsubseq array 10 20) 2018-01-17T11:13:38Z phoe: like, something that shares interface with CL:SUBSEQ. 2018-01-17T11:14:11Z nirved joined #lisp 2018-01-17T11:15:02Z papachan joined #lisp 2018-01-17T11:15:36Z phoe: ...guess like I'll need to write my own, then. 2018-01-17T11:16:14Z z3t0 quit (Ping timeout: 256 seconds) 2018-01-17T11:19:33Z pjb``` quit (Remote host closed the connection) 2018-01-17T11:19:37Z d4ryus1 is now known as d4ryus 2018-01-17T11:21:34Z damke joined #lisp 2018-01-17T11:23:26Z wxie joined #lisp 2018-01-17T11:23:45Z damke_ quit (Ping timeout: 264 seconds) 2018-01-17T11:26:35Z igemnace quit (Ping timeout: 240 seconds) 2018-01-17T11:27:06Z pjb``` joined #lisp 2018-01-17T11:27:56Z z3t0 joined #lisp 2018-01-17T11:32:20Z z3t0 quit (Ping timeout: 260 seconds) 2018-01-17T11:32:25Z pjb``` quit (Ping timeout: 256 seconds) 2018-01-17T11:34:29Z gabot quit (Ping timeout: 256 seconds) 2018-01-17T11:35:00Z gabot joined #lisp 2018-01-17T11:37:01Z pjb``` joined #lisp 2018-01-17T11:39:36Z pjb``` quit (Remote host closed the connection) 2018-01-17T11:41:37Z shka: hello 2018-01-17T11:41:53Z shka: is there slime extension for quicklisp? 2018-01-17T11:42:17Z shka: quickloading project with emacs shorcut and so one 2018-01-17T11:43:24Z pjb``` joined #lisp 2018-01-17T11:43:47Z schweers quit (Read error: Connection reset by peer) 2018-01-17T11:44:03Z schweers joined #lisp 2018-01-17T11:48:13Z pjb``` is now known as pjb 2018-01-17T11:51:40Z m00natic quit (Remote host closed the connection) 2018-01-17T11:51:52Z z3t0 joined #lisp 2018-01-17T11:52:10Z m00natic joined #lisp 2018-01-17T11:53:41Z groovy2shoes quit (Ping timeout: 276 seconds) 2018-01-17T11:55:24Z Xach: shka: not that i know of 2018-01-17T11:56:35Z z3t0 quit (Ping timeout: 256 seconds) 2018-01-17T11:56:36Z schweers: Is there an easy, portable way to find out the values of C “constants” like O_TMPFILE? 2018-01-17T11:56:55Z schweers: apart from going all the way and using a groveller or similar 2018-01-17T11:58:23Z Shinmera: Scrape the header files. 2018-01-17T11:58:48Z schweers: for instance with cffi-grovel? 2018-01-17T11:59:11Z shka: Shinmera: hello! 2018-01-17T11:59:28Z shka: i have a question regarding landing-page 2018-01-17T12:00:02Z shka: i should set it in the session, like this? (setf (session:field 'landing-page) (uri-to-url "dzienniczek/entry" :representation :external)) 2018-01-17T12:00:16Z shka: that's for auth, btw 2018-01-17T12:00:18Z Shinmera: schweers: In general unless you're writing a C compiler entirely there is no way other than just running the C compiler on a sample program. 2018-01-17T12:00:54Z Shinmera: So the "portable" way is to emit a C program that prints the constant, call a C compiler, and run the resulting executable. 2018-01-17T12:01:03Z schweers: That would have been my guess, I wanted to know if there is an easier way. 2018-01-17T12:01:07Z Shinmera: Which I believe is what the groveller does, but I don't know. Never used it. 2018-01-17T12:01:22Z Shinmera: shka: Sure, that works. 2018-01-17T12:01:27Z schweers: Neither have I 2018-01-17T12:03:53Z shka: schweers: thanks for info 2018-01-17T12:04:03Z schweers: shka: huh? 2018-01-17T12:04:20Z shka: that was obviously tab-fail 2018-01-17T12:12:54Z z3t0 joined #lisp 2018-01-17T12:16:52Z sjl__ joined #lisp 2018-01-17T12:16:57Z z3t0 quit (Ping timeout: 240 seconds) 2018-01-17T12:17:51Z mingus joined #lisp 2018-01-17T12:21:05Z sjl__ quit (Ping timeout: 240 seconds) 2018-01-17T12:39:54Z thijso joined #lisp 2018-01-17T12:42:37Z _death: schweers: using cffi-grovel is easy 2018-01-17T12:43:09Z schweers: I’m trying my hands at it, but I just realized that my problem is not cffi-grovel, but is on the C side 2018-01-17T12:43:45Z schweers: I want to expose O_TMPFILE to lisp in order to open(2) temporary files. Yet I can’t get a C program to see the file, so my problem is not with cffi ;) 2018-01-17T12:44:02Z plertrood joined #lisp 2018-01-17T12:45:30Z _death: what do you mean by "see the file"? 2018-01-17T12:45:56Z Tobbi joined #lisp 2018-01-17T12:46:25Z schweers: oops. see the constant 2018-01-17T12:47:25Z _death: "The O_DIRECT, O_NOATIME, O_PATH, and O_TMPFILE flags are Linux-specific. One must define _GNU_SOURCE to obtain their definitions." 2018-01-17T12:48:22Z schweers: oh. thanks! 2018-01-17T12:48:22Z schweers: 2018-01-17T12:48:29Z schweers: I should have seen that :/ 2018-01-17T12:51:09Z EvW1 joined #lisp 2018-01-17T12:51:15Z pjb: schweers: I have already implemented a C pre-processor in CL, so you could use it to parse C headers and find the values of such C macros. 2018-01-17T12:51:46Z schweers: now it works with cffi-grovel \o/ 2018-01-17T12:52:07Z pjb: schweers: https://gitlab.com/com-informatimago/com-informatimago/tree/master/languages/cpp 2018-01-17T12:52:20Z pjb: (eventually, I'll complete a C to CL compiler). 2018-01-17T12:53:34Z esthlos joined #lisp 2018-01-17T12:53:53Z pjb: The C program solution is as risky as your own parsing of the header: you need to pass the right options and have the right definitions established in the C program just as in your CPP process (this _GNU_SOURCE macro, and others). 2018-01-17T12:54:19Z pjb: It's also the same problem when you use different C compilers on the same system. They may not all interpret the headers the same way… 2018-01-17T12:54:44Z pjb: (you can have a compiler generating 32-bit code, and another generating 64-bit code, or a cross-compiler, etc). 2018-01-17T12:56:13Z pjb: Also, there's one thing that is not handled: #pragma; notably structures in headers using #pragma pack won't be generated correctly by swig (and I wonder about cffi-grovel, I never had much success with it). 2018-01-17T12:57:16Z |3b| joined #lisp 2018-01-17T13:00:37Z ikki joined #lisp 2018-01-17T13:04:29Z murii: Hi 2018-01-17T13:04:48Z murii: would a 2D game framework be something people using Lisp be interested in? 2018-01-17T13:05:00Z murii: btw, are the any 2D game frameworks for lisp? 2018-01-17T13:05:38Z phoe: murii: #lispgames 2018-01-17T13:05:44Z phoe: that's where the game-writing people are hanging out at 2018-01-17T13:06:06Z phoe: they'll be able to answer your questions much better. 2018-01-17T13:06:20Z murii: ok 2018-01-17T13:08:08Z wxie quit (Remote host closed the connection) 2018-01-17T13:08:29Z wxie joined #lisp 2018-01-17T13:08:30Z Shinmera: murii: There are. https://github.com/lispgames/lispgames.github.io/wiki/Common-Lisp 2018-01-17T13:08:53Z smurfrobot joined #lisp 2018-01-17T13:13:05Z smurfrobot quit (Ping timeout: 240 seconds) 2018-01-17T13:24:02Z EvW1 quit (Ping timeout: 276 seconds) 2018-01-17T13:24:15Z ikki quit (Ping timeout: 248 seconds) 2018-01-17T13:24:54Z wxie quit (Remote host closed the connection) 2018-01-17T13:27:47Z wxie joined #lisp 2018-01-17T13:29:08Z marusich quit (Ping timeout: 276 seconds) 2018-01-17T13:31:11Z marusich joined #lisp 2018-01-17T13:52:15Z damke_ joined #lisp 2018-01-17T13:53:09Z Jesin quit (Quit: Leaving) 2018-01-17T13:53:19Z fikka quit (Ping timeout: 256 seconds) 2018-01-17T13:53:45Z damke quit (Ping timeout: 264 seconds) 2018-01-17T13:56:47Z mishoo quit (Ping timeout: 248 seconds) 2018-01-17T14:04:47Z arbv quit (Ping timeout: 248 seconds) 2018-01-17T14:06:02Z arbv joined #lisp 2018-01-17T14:07:02Z nipav joined #lisp 2018-01-17T14:07:36Z nipav left #lisp 2018-01-17T14:07:54Z asarch joined #lisp 2018-01-17T14:08:05Z randomstrangerb quit (Ping timeout: 260 seconds) 2018-01-17T14:08:54Z fikka joined #lisp 2018-01-17T14:09:20Z randomstrangerb joined #lisp 2018-01-17T14:09:27Z epony quit (Read error: Connection reset by peer) 2018-01-17T14:09:57Z shifty quit (Ping timeout: 256 seconds) 2018-01-17T14:10:08Z igemnace joined #lisp 2018-01-17T14:10:56Z mnoonan quit (Remote host closed the connection) 2018-01-17T14:11:41Z Xach: Hmm, I haven't used sb-sprof in a while, I wonder if it's always shown things like "foreign function __lxstat" in the reports. 2018-01-17T14:11:44Z Xach: That is very handy. 2018-01-17T14:11:52Z wxie quit (Remote host closed the connection) 2018-01-17T14:11:59Z Xach: lxstat is soaking up 29% of my runtime for a thing 2018-01-17T14:13:35Z fikka quit (Ping timeout: 240 seconds) 2018-01-17T14:13:38Z murii quit (Ping timeout: 255 seconds) 2018-01-17T14:23:59Z arbv quit (Ping timeout: 255 seconds) 2018-01-17T14:28:02Z orivej quit (Ping timeout: 255 seconds) 2018-01-17T14:34:25Z z3t0 joined #lisp 2018-01-17T14:34:29Z quazimodo quit (Ping timeout: 265 seconds) 2018-01-17T14:45:52Z arbv joined #lisp 2018-01-17T14:46:09Z fikka joined #lisp 2018-01-17T14:46:34Z z3t0 quit (Ping timeout: 265 seconds) 2018-01-17T14:50:59Z flamebeard quit (Quit: Leaving) 2018-01-17T14:55:12Z rippa joined #lisp 2018-01-17T14:55:23Z dyelar joined #lisp 2018-01-17T14:59:31Z rumbler31 joined #lisp 2018-01-17T14:59:56Z Bike joined #lisp 2018-01-17T15:03:02Z dyelar quit (Quit: Leaving.) 2018-01-17T15:04:48Z dyelar joined #lisp 2018-01-17T15:07:25Z orivej joined #lisp 2018-01-17T15:07:59Z Murii joined #lisp 2018-01-17T15:08:12Z loli quit (Quit: WeeChat 2.0) 2018-01-17T15:09:38Z dddddd joined #lisp 2018-01-17T15:10:50Z loli joined #lisp 2018-01-17T15:12:17Z mishoo joined #lisp 2018-01-17T15:12:32Z plertrood quit (Remote host closed the connection) 2018-01-17T15:16:51Z sjl quit (Quit: WeeChat 1.9.1) 2018-01-17T15:17:58Z Murii quit (Ping timeout: 268 seconds) 2018-01-17T15:17:59Z fikka quit (Ping timeout: 255 seconds) 2018-01-17T15:20:32Z FreeBirdLjj joined #lisp 2018-01-17T15:20:38Z fikka joined #lisp 2018-01-17T15:21:41Z randomstrangerb quit (Ping timeout: 276 seconds) 2018-01-17T15:22:06Z Tristam joined #lisp 2018-01-17T15:22:33Z varjag quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2018-01-17T15:22:57Z randomstrangerb joined #lisp 2018-01-17T15:23:23Z m00natic quit (Remote host closed the connection) 2018-01-17T15:26:27Z Tristam quit (Ping timeout: 256 seconds) 2018-01-17T15:28:01Z Cymew quit (Remote host closed the connection) 2018-01-17T15:29:33Z Cymew joined #lisp 2018-01-17T15:30:28Z oleo joined #lisp 2018-01-17T15:32:02Z Murii joined #lisp 2018-01-17T15:32:41Z vydd quit (Ping timeout: 256 seconds) 2018-01-17T15:33:01Z sjl joined #lisp 2018-01-17T15:33:40Z lnostdal quit (Quit: https://quanto.ga/) 2018-01-17T15:34:25Z Cymew quit (Ping timeout: 265 seconds) 2018-01-17T15:35:05Z damke joined #lisp 2018-01-17T15:35:36Z Cymew joined #lisp 2018-01-17T15:36:54Z damke quit (Read error: Connection reset by peer) 2018-01-17T15:37:31Z damke joined #lisp 2018-01-17T15:37:33Z damke_ quit (Ping timeout: 264 seconds) 2018-01-17T15:39:22Z sjl: is https://github.com/nixeagle/cl-irc/blob/master/trunk/utility.lisp#L127-L130 a portable way to implement read-byte-no-hang? 2018-01-17T15:39:31Z JonSmith joined #lisp 2018-01-17T15:39:38Z sjl: It seems like (listen some-binary-input-stream) is probably not guaranteed to work 2018-01-17T15:39:42Z sjl: clhs listen 2018-01-17T15:39:43Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_listen.htm 2018-01-17T15:39:43Z pjb: yes. 2018-01-17T15:39:57Z Cymew quit (Ping timeout: 240 seconds) 2018-01-17T15:40:10Z pjb: Which is not to say that it will work as you want. But this is how you can implement it conformingly. 2018-01-17T15:40:18Z sjl: > Returns true if there is a *character* immediately available from input-stream; 2018-01-17T15:40:20Z pjb: if it works, it works, but it may not work. 2018-01-17T15:40:37Z scymtym quit (Ping timeout: 256 seconds) 2018-01-17T15:40:54Z Xach: yep 2018-01-17T15:40:58Z nika joined #lisp 2018-01-17T15:40:59Z pjb: Notably, the description of LISTEN talks of characters, while input-stream is specified as a stream, not a character stream. 2018-01-17T15:41:05Z turkja quit (Ping timeout: 276 seconds) 2018-01-17T15:41:07Z Xach: there isn't a portable standard read-byte-no-hang 2018-01-17T15:41:21Z pjb: This is an inconsistency, or at least, an underspecification: it says nothing about bytes for binary streams. 2018-01-17T15:41:24Z eudoxia joined #lisp 2018-01-17T15:41:25Z sjl: right, it doesn't say the stream has to be a character stream, but it implies it 2018-01-17T15:41:35Z nowhereman_ quit (Remote host closed the connection) 2018-01-17T15:41:44Z Shinmera: With usocket you can check if there's something available to be read 2018-01-17T15:41:50Z Shinmera: so based on that you can implement read-byte-no-hang 2018-01-17T15:41:57Z pjb: It also talks of interactive streams. So it may be good for binary socket streams, but perhaps it always returns T for file streams. 2018-01-17T15:42:57Z milanj quit (Ping timeout: 248 seconds) 2018-01-17T15:43:20Z sjl: Shinmera: what function in usocket are you thinking of? 2018-01-17T15:43:40Z sjl: Not that I really want to drag in all of usocket for one stream function... 2018-01-17T15:44:16Z Shinmera: sjl: Since you linked cl-irc, I thought you had a sockets background in mind 2018-01-17T15:44:16Z sjl: Is there an SBCL-specific one? I could live with that, but I can't seem to find one in the manual. 2018-01-17T15:44:39Z sjl: Shinmera: ah, no, that's just a result of googling for "read-byte-no-hang" 2018-01-17T15:44:56Z Xach: when i needed it, i wound up using sb-alien to drag in epoll. 2018-01-17T15:45:04Z Cymew joined #lisp 2018-01-17T15:45:05Z Xach: probably overkill? maybe something built-in now? 2018-01-17T15:45:07Z sjl: Yeah, I could FFI I guess. 2018-01-17T15:45:24Z Xach: i was really concerned about stuff timing out 2018-01-17T15:46:30Z LiamH joined #lisp 2018-01-17T15:46:35Z sjl: huh, clisp has a read-byte-no-hang 2018-01-17T15:46:37Z sjl: https://clisp.sourceforge.io/impnotes/non-block-io.html#rbnh 2018-01-17T15:48:04Z sjl: Hmm, it makes a decent argument there that (listen binary-stream) should always return nil. 2018-01-17T15:48:12Z sjl: To be conforming. 2018-01-17T15:48:34Z Jesin joined #lisp 2018-01-17T15:49:00Z Xach: clisp also disallows probe-file on directories and a number of other things. 2018-01-17T15:49:56Z Cymew quit (Ping timeout: 256 seconds) 2018-01-17T15:50:23Z sjl: Yeah, I know it's got other quirks. 2018-01-17T15:51:05Z pagnol joined #lisp 2018-01-17T15:51:12Z Cymew joined #lisp 2018-01-17T15:51:21Z milanj joined #lisp 2018-01-17T15:53:27Z anti_smap joined #lisp 2018-01-17T15:54:09Z anti_smap is now known as antismap_ 2018-01-17T15:54:47Z fikka quit (Ping timeout: 256 seconds) 2018-01-17T15:55:55Z Cymew quit (Ping timeout: 256 seconds) 2018-01-17T15:56:01Z moei joined #lisp 2018-01-17T15:57:31Z fikka joined #lisp 2018-01-17T16:03:10Z Cymew joined #lisp 2018-01-17T16:03:27Z warweasle joined #lisp 2018-01-17T16:05:29Z damke_ joined #lisp 2018-01-17T16:07:37Z Cymew quit (Ping timeout: 256 seconds) 2018-01-17T16:08:09Z damke quit (Ping timeout: 264 seconds) 2018-01-17T16:09:17Z Cymew joined #lisp 2018-01-17T16:13:27Z marioxcc joined #lisp 2018-01-17T16:14:14Z Cymew quit (Ping timeout: 276 seconds) 2018-01-17T16:14:39Z marioxcc: Hello. Is there some Common Lisp implementation that is suitable to call *from* C code? 2018-01-17T16:15:02Z jackdaniel: marioxcc: yes, ECL 2018-01-17T16:15:02Z marioxcc: SBCL does not seem to be (it can call C code, but apparently not be called from C code). 2018-01-17T16:15:10Z jackdaniel: it shares runtime with C 2018-01-17T16:15:15Z marioxcc: jackdaniel: Ok. I will take a look into it 2018-01-17T16:15:16Z jackdaniel: and its fasls are in fact shared objects 2018-01-17T16:15:19Z Cymew joined #lisp 2018-01-17T16:15:35Z marioxcc: jackdaniel: Thanks. 2018-01-17T16:15:41Z jackdaniel: "E" stands for embeddable, because it is easy to embed in C/C++ applications 2018-01-17T16:15:57Z nullniverse quit (Ping timeout: 264 seconds) 2018-01-17T16:16:11Z marioxcc: Ok. I thought that referred to very small computers like microcontrollers. 2018-01-17T16:16:12Z jackdaniel: in fact you may define callbacks in SBCL to as far as I remember (so they may be passed to C world) 2018-01-17T16:16:15Z jackdaniel: but I don't know the details 2018-01-17T16:16:37Z jackdaniel: no, ECL implementation main part is libecl.so (ecl binary is just a client) 2018-01-17T16:16:41Z Xach: marioxcc: i'm curious - what prompts the question? 2018-01-17T16:17:00Z phoe: jackdaniel: that is correct 2018-01-17T16:17:06Z FreeBirdLjj quit (Remote host closed the connection) 2018-01-17T16:17:20Z phoe: callbacks are a part of CFFI 2018-01-17T16:17:29Z marioxcc: Xach: I am considering contributing to gtk-gnutella. I think it would benefit from rewriting a part in Common Lisp (or another high level language). 2018-01-17T16:17:45Z phoe: so anything that is covered by CFFI should be able to implement C callbacks. 2018-01-17T16:18:12Z marioxcc: But callbacks still need the implementation to be the owner of the OS process. 2018-01-17T16:18:28Z jackdaniel: phoe: CFFI is "just" a portability layer, if implementation can't "do" callbacks neither cffi will be able to 2018-01-17T16:18:36Z shka: Shinmera: you there by any chance? 2018-01-17T16:18:43Z Shinmera: Yes 2018-01-17T16:18:49Z phoe: jackdaniel: correct, that's why I said, "anything covered by CFFI". 2018-01-17T16:19:01Z phoe: so you can look up the list of capable implementations by scanning over CFFI docs. 2018-01-17T16:19:07Z shka: Shinmera: how should i approach data bases? 2018-01-17T16:19:17Z Shinmera: What do you mean? 2018-01-17T16:19:21Z phoe: shka: for the love of god, don't use ORMs 2018-01-17T16:19:36Z phoe: and then use postmodern 2018-01-17T16:19:44Z jackdaniel: phoe: that is not correct either - implementation may be supported by cffi in various degree, so if you call defcallback from cffi it will simply error out 2018-01-17T16:19:55Z Cymew quit (Ping timeout: 260 seconds) 2018-01-17T16:20:00Z phoe: jackdaniel: I stand corrected 2018-01-17T16:20:00Z jackdaniel: I'm sure SBCL has it implemented in CFFI, but it doesn't make that statement true in principle 2018-01-17T16:20:18Z shka: I need to perform join or two, i was wondering if i can somehow neatly express that using Radiance data-model module. 2018-01-17T16:20:25Z Shinmera: You cannot. 2018-01-17T16:20:44Z Shinmera: The database interface is very minimal, and doesn't do joins because some DBs don't do joins. 2018-01-17T16:21:21Z Cymew joined #lisp 2018-01-17T16:21:29Z shka: ok 2018-01-17T16:21:36Z osune_ quit (Read error: Connection reset by peer) 2018-01-17T16:21:39Z Shinmera: If you need more capabilities, you're better off accessing a specific database like postgres directly. 2018-01-17T16:22:09Z Shinmera: Naturally you can also do joins and stuff in your application if you need to. There's tradeoffs for everything. 2018-01-17T16:22:14Z knobo quit (Ping timeout: 256 seconds) 2018-01-17T16:22:23Z shka: perhaps it is not that bad as it seem 2018-01-17T16:23:10Z shka: ok, so let's restate this slightly differently 2018-01-17T16:23:27Z marioxcc: I want to rewrite a part of a C program in Common Lisp to make it more easily manipulatable. Is ECL my best option? 2018-01-17T16:23:42Z Shinmera: You can write C programs with just CFFI. 2018-01-17T16:24:14Z jackdaniel: I can't say if its your best, but it is a good option. you may even embed CL in your application to connect to it at runtime 2018-01-17T16:24:17Z shka: Shinmera: let's say that i only need one-to-one relationships, does this makes things slightly easier? 2018-01-17T16:25:11Z jackdaniel: what is the best option for you depends on various factors (and its not that all are technical - taste is an example of non-technical factor) 2018-01-17T16:25:22Z marioxcc: Shinmera: If I know correctly, CFFI serves to call C from a Common Lisp implementation, but not to call a Common Lisp implementation from C. 2018-01-17T16:25:30Z Shinmera: Colleen: tell shka look up radiance database:query 2018-01-17T16:25:31Z Colleen: shka: Macro database:query https://shirakumo.github.io/radiance#MACRO%20DATABASE%3AQUERY 2018-01-17T16:25:45Z marioxcc: jackdaniel: Ok. What are the other options? 2018-01-17T16:26:00Z marioxcc: I am glancing at the ECL manual. Previously I had used only SBCL. 2018-01-17T16:26:12Z Cymew quit (Ping timeout: 256 seconds) 2018-01-17T16:26:16Z Shinmera: marioxcc: It can create callbacks, which you can stuff into C variables and then call from C out. 2018-01-17T16:26:21Z jackdaniel: marioxcc: I don't know, just asserting its the best option wouldn't be smart on my side 2018-01-17T16:26:35Z dec0n quit (Ping timeout: 276 seconds) 2018-01-17T16:26:38Z attila_lendvai: cffi has some callback support 2018-01-17T16:26:41Z marioxcc: Shinmera, jackdaniel: Ok. Thanks you. 2018-01-17T16:26:46Z jackdaniel: I'm ECL developer fwiw, so my point of view may be a little narrowed 2018-01-17T16:26:56Z shka: Shinmera: thanks 2018-01-17T16:27:15Z jackdaniel: if you have any questions regarding ecl drop them on #ecl channel (less traffic) 2018-01-17T16:27:29Z marioxcc: jackdaniel: Thanks. I will, if I do. ☺ 2018-01-17T16:27:43Z Shinmera: shka: Joins are a pain point, I know. I've been thinking about adding a mechanism to it, but it would increase complexity of an implementation for the interface quite a bit. 2018-01-17T16:28:28Z pagnol quit (Ping timeout: 256 seconds) 2018-01-17T16:28:30Z marioxcc quit (Quit: Leaving.) 2018-01-17T16:29:56Z shka: Shinmera: i think that i will relay on postmodern for the time being 2018-01-17T16:31:05Z shka: perhaps some abstract RDB interface implementation can be engineered in the future 2018-01-17T16:31:05Z fikka quit (Ping timeout: 240 seconds) 2018-01-17T16:31:21Z pagnol joined #lisp 2018-01-17T16:31:25Z Shinmera: Yeah, that's a good idea. An extension to the db interface for rdbms. 2018-01-17T16:31:39Z shka: right 2018-01-17T16:32:11Z Shinmera: I'll think on it 2018-01-17T16:33:16Z fikka joined #lisp 2018-01-17T16:33:57Z damke_ quit (Ping timeout: 264 seconds) 2018-01-17T16:35:34Z vydd joined #lisp 2018-01-17T16:38:22Z redeemed quit (Quit: q) 2018-01-17T16:41:03Z shka: Shinmera: uh, i know that tutorial explains deploy stuff 2018-01-17T16:41:15Z shka: but how can i switch to postgress in development phase? 2018-01-17T16:41:48Z FreeBirdLjj joined #lisp 2018-01-17T16:42:03Z Shinmera: https://github.com/Shirakumo/radiance-tutorial/blob/master/Part%208.md#how-do-i-change-the-implementation-of-an-interface 2018-01-17T16:43:06Z dyelar quit (Quit: Leaving.) 2018-01-17T16:43:58Z Shinmera: The configuration variables for i-postmodern are here: https://github.com/Shirakumo/radiance-contribs/tree/master/i-postmodern 2018-01-17T16:46:04Z shka: oh, thanks 2018-01-17T16:46:22Z igemnace quit (Quit: WeeChat 2.0.1) 2018-01-17T16:46:27Z FreeBirdLjj quit (Ping timeout: 240 seconds) 2018-01-17T16:46:58Z Shinmera: The documentation about the available modules/implementations are a bit scarce, and I apologise for that 2018-01-17T16:47:09Z Shinmera: I ran out of steam writing documentation and haven't been able to get back to it. 2018-01-17T16:47:25Z shka: don't worry, i understand that pain all to well 2018-01-17T16:49:09Z Kaisyu quit (Quit: Connection closed for inactivity) 2018-01-17T16:50:51Z ahungry joined #lisp 2018-01-17T16:52:46Z ikki joined #lisp 2018-01-17T16:53:41Z Murii quit (Ping timeout: 265 seconds) 2018-01-17T16:54:21Z ahungry: When using Emacs+slime, is there a standard mechanism to redirect the REPL output to a different buffer? Ideally I would like to have a slime prompt for running interactive lisp, and a separate output buffer to display the results of what is run 2018-01-17T16:55:24Z scymtym joined #lisp 2018-01-17T16:55:45Z pjb: A standard, normalized by what body? ANSI? ISO? AF? DN? 2018-01-17T16:55:53Z Tristam joined #lisp 2018-01-17T16:56:00Z marusich quit (Quit: Leaving) 2018-01-17T16:56:13Z rumbler31: you can redirect trace-output for many functions that print to the repl 2018-01-17T16:56:22Z phoe: pjb: stop 2018-01-17T16:57:02Z rumbler31: and then run emacs auto-revert-tail-mode on that file and keep it open in another buffer 2018-01-17T16:57:02Z PuercoPope joined #lisp 2018-01-17T16:59:14Z rumbler31: I suspect also simply redirecting standard-output as well 2018-01-17T17:00:00Z ahungry: Thanks rumbler31, so it seems doable, but not as simple as just setting a variable in Emacs to control it 2018-01-17T17:00:26Z ahungry: Maybe approaching in the opposite direction would be easier (make a brand new prompt window that on RET sends the current input line to the active slime session for evaluation) 2018-01-17T17:03:09Z rumbler31: although, 2018-01-17T17:03:17Z rumbler31: you might miss out on being able to use presentations 2018-01-17T17:03:49Z rumbler31: although that is kinda black magic to me anyways, maybe it will just work 2018-01-17T17:05:30Z ahungry: hm, a very quick test shows something like slime-eval-buffer would work reasonably well for this (overall i'm hoping to get lispy working well with the slime repl, and the output from the repl breaks it's paren matching counts) 2018-01-17T17:05:46Z schweers quit (Ping timeout: 265 seconds) 2018-01-17T17:06:58Z PuercoPope: Xach: Do the quicklisp failure reports bail on the first error? I've submitted a couple of fixes to the projects listed but I want to know if having a different issue appearing after the first one was fixed is a possiblity 2018-01-17T17:07:23Z Xach: PuercoPope: yes, they do bail out - if there's an error, there's no easy way to continue to find more until the first is fixed. 2018-01-17T17:07:31Z Xach: PuercoPope: do you have an example in mind? 2018-01-17T17:07:38Z pagnol quit (Ping timeout: 276 seconds) 2018-01-17T17:08:25Z PuercoPope: Well, the one I'm worried about is linedit 2018-01-17T17:08:33Z PuercoPope: Removing madeira port is easy 2018-01-17T17:08:55Z Xach: PuercoPope: was your fix committed? 2018-01-17T17:08:57Z fikka quit (Ping timeout: 240 seconds) 2018-01-17T17:09:06Z smasta joined #lisp 2018-01-17T17:09:07Z PuercoPope: but linedit also uses asdf to call gcc when loading the system and I don't know if that will work or not 2018-01-17T17:09:57Z squaanchi quit (Remote host closed the connection) 2018-01-17T17:10:32Z Xach: Can discuss a bit more later - afk for now 2018-01-17T17:10:34Z PuercoPope: Xach: haven't check yet, submitted it today. (Currently at $work). But the solution worked for the other system of nikodemus that depended on madeira port 2018-01-17T17:10:53Z PuercoPope: *checked 2018-01-17T17:11:11Z Xach: PuercoPope: I suggest grabbing sbcl 1.4.3 and using (ql:quickload ... :verbose t) to see everything that has to be fixed 2018-01-17T17:11:14Z pjb: ahungry: I was just asking, because I have a solution, but it's not standardized. I just invented it myself. 2018-01-17T17:11:19Z Xach: that will reproduce my environment to some degree 2018-01-17T17:11:31Z PuercoPope: Xach: ok, will do. Basically no warnings right? 2018-01-17T17:11:40Z drewc_ joined #lisp 2018-01-17T17:13:33Z drewc quit (Ping timeout: 265 seconds) 2018-01-17T17:14:49Z drewc_ is now known as drewc 2018-01-17T17:15:57Z ckonstanski quit (Remote host closed the connection) 2018-01-17T17:16:22Z JuanitoJons joined #lisp 2018-01-17T17:16:49Z damke_ joined #lisp 2018-01-17T17:17:27Z cess11 quit (Ping timeout: 240 seconds) 2018-01-17T17:17:32Z hexfive joined #lisp 2018-01-17T17:18:22Z d4ryus quit (Quit: WeeChat 2.0.1) 2018-01-17T17:18:36Z Karl_Dscc joined #lisp 2018-01-17T17:20:00Z fikka joined #lisp 2018-01-17T17:21:35Z brendyn quit (Ping timeout: 240 seconds) 2018-01-17T17:22:10Z bigos_ joined #lisp 2018-01-17T17:23:44Z d4ryus joined #lisp 2018-01-17T17:24:50Z cess11 joined #lisp 2018-01-17T17:25:53Z kami joined #lisp 2018-01-17T17:26:23Z kami: Hello #lisp 2018-01-17T17:26:27Z fikka quit (Ping timeout: 240 seconds) 2018-01-17T17:27:10Z khrbt joined #lisp 2018-01-17T17:27:30Z fikka joined #lisp 2018-01-17T17:29:23Z khrbt: PuercoPope: Xach: I did this thing a while ago that removes gcc and .c files from linedit. https://github.com/nikodemus/linedit/pull/10 2018-01-17T17:29:38Z Xach: linedit is coming from gitlab.common-lisp.net right now 2018-01-17T17:31:40Z khrbt: ok. let me see what happens with that version. 2018-01-17T17:31:56Z ikki quit (Ping timeout: 256 seconds) 2018-01-17T17:35:15Z eivarv joined #lisp 2018-01-17T17:36:27Z fikka quit (Ping timeout: 240 seconds) 2018-01-17T17:38:34Z antismap_ quit (Quit: antismap_) 2018-01-17T17:39:28Z ahungry quit (Remote host closed the connection) 2018-01-17T17:39:33Z fikka joined #lisp 2018-01-17T17:43:35Z hhdave quit (Ping timeout: 256 seconds) 2018-01-17T17:46:11Z PuercoPope: khrbt: I think remembering trying that branch a couple of years ago. linedit is almost there as a portable decent REPL experience from the CLI 2018-01-17T17:51:48Z shka: Shinmera: where are the docs on setf enviorement? 2018-01-17T17:52:08Z shka: Ubiquitous? 2018-01-17T17:52:34Z shka: i am at loophole 2018-01-17T17:53:23Z shka: to set config i need loaded module, to load module i need started radiance, to update config i need to restart it which i don't know how to do 2018-01-17T17:54:28Z shrdlu68: kami: Hi 2018-01-17T17:54:57Z vydd quit (Ping timeout: 264 seconds) 2018-01-17T17:55:21Z shka: oh, whatever i just modified default 2018-01-17T17:56:30Z shka: and then my module won't load because something something lambdalite? 2018-01-17T17:56:59Z khrbt: PuercoPope: yes. my copy of linedit is based on your branches and I can even load/compile it on ecl and cmucl. I haven't yet looked into what is involved in actually installing a repl. 2018-01-17T17:57:21Z Shinmera: shka: Just use the recompile hook provided by ASDF 2018-01-17T17:57:32Z shka: in what way 2018-01-17T17:57:39Z Shinmera: Err, recompile restart 2018-01-17T17:57:54Z shka: i have no clue what you are suggesting 2018-01-17T17:58:01Z shka: use for what, use how? 2018-01-17T17:58:13Z Shinmera: Your module won't load, so during loading use the recompile restart from ASDF? 2018-01-17T17:58:19Z _main_ joined #lisp 2018-01-17T17:59:00Z _main_ quit (Read error: Connection reset by peer) 2018-01-17T17:59:06Z shka: Shinmera: it… works? 2018-01-17T17:59:12Z shka: but how 2018-01-17T17:59:27Z __main__ quit (Ping timeout: 248 seconds) 2018-01-17T18:00:01Z Shinmera: When you previously loaded it, it was using macros from the lambdalite db implementation. Those expansions ended up in the FASL. When you switched implementations, the lambdalite package isn't there anymore, but ASDF isn't smart enough to pick up that you switched implementations 2018-01-17T18:00:13Z Shinmera: So it doesn't recompile automatically. 2018-01-17T18:00:20Z shka: very confusing 2018-01-17T18:00:52Z shka: but makes sense i guess 2018-01-17T18:01:27Z __main__ joined #lisp 2018-01-17T18:01:29Z shka: what are those macros are for anyway? 2018-01-17T18:02:02Z Shinmera: Well you most likely used the db:query macro, which compiles the query language to something else to make things not slow as hell. 2018-01-17T18:03:27Z shka: ok 2018-01-17T18:08:22Z nika quit (Quit: Leaving...) 2018-01-17T18:09:35Z dyelar joined #lisp 2018-01-17T18:10:07Z drot quit (Quit: Quit.) 2018-01-17T18:10:51Z shka: Shinmera: well, everything works i guess, tables has been created for user and profile 2018-01-17T18:11:40Z drot joined #lisp 2018-01-17T18:13:35Z milanj quit (Ping timeout: 240 seconds) 2018-01-17T18:13:56Z fikka quit (Ping timeout: 276 seconds) 2018-01-17T18:14:02Z varjag joined #lisp 2018-01-17T18:14:27Z JuanitoJons quit (Ping timeout: 240 seconds) 2018-01-17T18:14:40Z Shinmera: I'd hope so :) 2018-01-17T18:15:06Z _mjl joined #lisp 2018-01-17T18:18:29Z dlowe quit (Quit: ZNC - http://znc.sourceforge.net) 2018-01-17T18:20:23Z shka: phoe: btw, I will use ORM that comes with postmodern because i hate myself and you ;-) 2018-01-17T18:21:52Z p_l: ... you haven't yet used hu.dwim.perec 2018-01-17T18:21:59Z fikka joined #lisp 2018-01-17T18:22:23Z p_l might have somewhere a bit of code to implement custom datatype PESEL using it 2018-01-17T18:22:50Z shka: what's wrong with that one? 2018-01-17T18:22:53Z JuanitoJons joined #lisp 2018-01-17T18:23:01Z p_l: it's not so much wrong, but it's a big thing 2018-01-17T18:26:42Z toon` joined #lisp 2018-01-17T18:30:45Z khrbt: Xach: What would be the best way to improve the linedit situation? The GitHub version, especially PuercoPope's "fork" branch is in the best shape it seems. 2018-01-17T18:30:47Z shka: Shinmera: btw, how one should approach to extending information in users? I would simply add my own tables, use foreign key and call it awesome, but perhaps there is a better way to do so 2018-01-17T18:31:51Z Shinmera: shka: If all you need is to store a string on a user object, you can use user:field 2018-01-17T18:32:26Z shka: i see 2018-01-17T18:32:40Z Shinmera: Colleen: tell shka look up radiance user:user 2018-01-17T18:32:40Z Colleen: shka: Class user:user https://shirakumo.github.io/radiance#CLASS%20USER%3AUSER 2018-01-17T18:33:06Z shka: yes, actually i seen this class 2018-01-17T18:33:20Z shka: but i would rather not do it this way… 2018-01-17T18:33:32Z Shinmera: Right, then use the username to identify the user. 2018-01-17T18:34:04Z shka: sounds fine 2018-01-17T18:42:21Z PuercoPope quit (Ping timeout: 264 seconds) 2018-01-17T18:51:15Z knobo joined #lisp 2018-01-17T18:54:47Z bigos_ quit (Remote host closed the connection) 2018-01-17T18:55:47Z fikka quit (Ping timeout: 255 seconds) 2018-01-17T18:59:20Z ebzzry: How does NREVERSE behave in SBCL? Does it modify the argument? 2018-01-17T18:59:58Z pjb: type M-. on nreverse and read the sources. 2018-01-17T19:00:18Z oleo: yes 2018-01-17T19:00:21Z oleo: it does 2018-01-17T19:01:07Z ebzzry: thanks! 2018-01-17T19:01:11Z dlowe joined #lisp 2018-01-17T19:02:09Z smasta quit (Ping timeout: 256 seconds) 2018-01-17T19:02:47Z Ven`` joined #lisp 2018-01-17T19:03:34Z pagnol joined #lisp 2018-01-17T19:04:34Z shka: using postmodern 2018-01-17T19:05:07Z shka: DAO classes seems to lack features like setting foreign-key 2018-01-17T19:05:50Z shka: am I right? 2018-01-17T19:06:01Z smasta joined #lisp 2018-01-17T19:08:18Z fikka joined #lisp 2018-01-17T19:09:00Z phoe: shka: postmodern bundles its own ORM? 2018-01-17T19:09:13Z shka: sort of 2018-01-17T19:09:18Z shka: but it is half arsed 2018-01-17T19:09:24Z phoe: ORM like https://github.com/eudoxia0/crane is the ORM I mean 2018-01-17T19:09:37Z phoe: the simple kind of stuff like postmodern provides isn't insane yet 2018-01-17T19:09:47Z __main__ quit (Read error: Connection reset by peer) 2018-01-17T19:09:51Z shka: could use few extra features 2018-01-17T19:11:17Z __main__ joined #lisp 2018-01-17T19:11:34Z shka: damn, even option to provide YOUR OWN initialization code for table would be nice 2018-01-17T19:11:37Z shka: but whatever 2018-01-17T19:12:26Z megalography quit (Ping timeout: 255 seconds) 2018-01-17T19:13:39Z jasom: most ORMs tend to be buggy ill-specified implementations of half of a real object store; 99% of the time SQL actually maps better to the problems I have 2018-01-17T19:14:05Z shka: well, hard to argue with that… 2018-01-17T19:15:01Z jasom: though I wouldn't mind a sexp sugar on top of SQL, since that's more aesthetically pleasing to me than wrapping a DSL with "" 2018-01-17T19:16:41Z phoe: jasom: postmodern has that I think 2018-01-17T19:16:57Z phoe: is called S-SQL 2018-01-17T19:17:54Z p_l: perec has quite good approach to ORM (i.e. it doesn't do Active Record pattern) 2018-01-17T19:18:35Z rumbler31: ORM is what? 2018-01-17T19:20:04Z PuercoPope joined #lisp 2018-01-17T19:24:49Z toon` quit (Remote host closed the connection) 2018-01-17T19:25:59Z toon` joined #lisp 2018-01-17T19:27:41Z megalography joined #lisp 2018-01-17T19:28:15Z phoe: object-relational mapping, google it. 2018-01-17T19:29:14Z dilated_dinosaur quit (Quit: Leaving) 2018-01-17T19:29:52Z Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2018-01-17T19:33:21Z LocaMocha quit (Ping timeout: 248 seconds) 2018-01-17T19:35:54Z jasom: rumbler31: a tool to let programmers stay in their OO bubble and pretend that SQL doesn't actually exist ;) 2018-01-17T19:35:59Z phoe: ^ 2018-01-17T19:38:03Z nullman quit (Ping timeout: 256 seconds) 2018-01-17T19:38:18Z nullman joined #lisp 2018-01-17T19:38:55Z dim: avoid ORM 2018-01-17T19:39:25Z dim: the problem space of application code objects in memory and of the relational model are not compatible, specialize each of them, the mapping is bound to fail 2018-01-17T19:39:53Z dim: the only interesting ORM style would be to map query results to app objects, as each SQL query defines a new relation 2018-01-17T19:40:21Z dim: I've seen that to some extend in POMM (PHP) and I think JOOQ (Java) has something to that approach 2018-01-17T19:40:28Z sukaeto: jasom: re: sexp sugar on top of SQL, I've been relatively happy with https://github.com/fukamachi/sxql 2018-01-17T19:40:34Z rumbler31: I always thought that was what object databases were 2018-01-17T19:40:39Z dim: in general ORM try to map the database model with the application in-memory state, and that can't help anybody 2018-01-17T19:41:12Z dim: object database would be a kind of hierarchical model rather than relational, I think 2018-01-17T19:41:13Z sukaeto: it doesn't do some of the more complicated dialect specific stuff (namely Postgres' ON CONFLICT and common table expressions), but it's extensible so you could always add those things if you need them 2018-01-17T19:41:35Z dim: CTE is part of SQL'92 I think, it's basic foundamental SQL 2018-01-17T19:41:48Z dim: (fundamental, oops) 2018-01-17T19:42:55Z sukaeto: ah, well then 2018-01-17T19:42:56Z dim: disclaimer: I wrote a book on SQL this summer to teach that to app developers, available at https://masteringpostgresql.com ; I am quite opinionated on the topic... 2018-01-17T19:43:24Z sukaeto: it doesn't support all of the SQL standard, then 2018-01-17T19:43:33Z sukaeto: (it's still pretty nice, and again, you can add those things) 2018-01-17T19:44:16Z jasom: dim: does it include basics of RDB? I was unable to take the DB course at university because there was no room in the class, so I've mostly just learned by doing... 2018-01-17T19:45:25Z jasom: oh, the webpage answered that... buying a copy now... 2018-01-17T19:45:26Z dim: jasom: I think it does, but that depends on the specifics of the curriculum you missed ; you can get a sample with the full ToC for free (in exchange of your email) on the website 2018-01-17T19:45:37Z dim: jasom: awesome, thanks! have a good read ;-) 2018-01-17T19:47:03Z jasom: I limped by using key-value stores for like a decade before actually learning any SQL 2018-01-17T19:47:17Z sukaeto: anyway, to add my (potentially uneducated) opinion on ORMs to the discussion: I agree that trying to automatically map "sets of facts about the world" into "sets of objects in memory" is a fundamentally flawed errand. 2018-01-17T19:51:40Z smasta quit (Read error: Connection reset by peer) 2018-01-17T19:51:45Z epony joined #lisp 2018-01-17T19:51:57Z smasta joined #lisp 2018-01-17T19:52:57Z epony quit (Max SendQ exceeded) 2018-01-17T19:54:00Z epony joined #lisp 2018-01-17T19:57:34Z shrdlu68 quit (Ping timeout: 256 seconds) 2018-01-17T20:00:58Z ebzzry quit (Ping timeout: 256 seconds) 2018-01-17T20:01:43Z damke joined #lisp 2018-01-17T20:02:46Z p_l: the problem with ORM is that it's associated with ActiveRecord pattern, which is popular but not the only way that falls under "ORM" 2018-01-17T20:03:57Z damke_ quit (Ping timeout: 264 seconds) 2018-01-17T20:04:36Z vydd joined #lisp 2018-01-17T20:04:44Z wigust_ joined #lisp 2018-01-17T20:05:02Z Ven`` joined #lisp 2018-01-17T20:06:56Z wigust quit (Ping timeout: 276 seconds) 2018-01-17T20:08:45Z sukaeto: I mean, I've used ORMs as just a way to query the database in the language the ORM was written in vs. embedding strings of SQL - that is, each ORM object is just a record representing some relation in the database, and the business logic objects consume/query the ORM objects. That works out just fine. 2018-01-17T20:10:06Z sukaeto: I still think things like SxQL are nicer for "querying the database in your language". Just one benefit of Lisp over most everything else. :-) 2018-01-17T20:12:46Z p_l: some ORMs provide explicit access to relational aspect instead of trying to shoehorn shit into objects 2018-01-17T20:13:03Z p_l: the "one class one table" thing is called "Active Record" 2018-01-17T20:13:12Z p_l: which is not just a ruby library 2018-01-17T20:14:10Z Murii joined #lisp 2018-01-17T20:14:45Z smasta quit (Ping timeout: 264 seconds) 2018-01-17T20:21:00Z smasta joined #lisp 2018-01-17T20:22:01Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2018-01-17T20:22:23Z PuercoPope quit (Ping timeout: 248 seconds) 2018-01-17T20:25:13Z milanj joined #lisp 2018-01-17T20:26:32Z openthesky joined #lisp 2018-01-17T20:27:43Z _mjl quit (Ping timeout: 248 seconds) 2018-01-17T20:27:54Z eudoxia quit (Quit: Leaving) 2018-01-17T20:28:47Z Cymew joined #lisp 2018-01-17T20:33:27Z Cymew quit (Ping timeout: 240 seconds) 2018-01-17T20:36:01Z shka: how to prevent postmodern from converting table name FOO/BAR into foo_bar in query? 2018-01-17T20:38:58Z khrbt quit (Quit: Page closed) 2018-01-17T20:41:13Z ikki joined #lisp 2018-01-17T20:42:09Z wigust_ quit (Quit: ZNC 1.6.5 - http://znc.in) 2018-01-17T20:42:16Z shka: to_sql_name does it 2018-01-17T20:42:18Z shka: grrrr 2018-01-17T20:42:42Z hvxgr joined #lisp 2018-01-17T20:43:00Z pjb quit (Remote host closed the connection) 2018-01-17T20:46:56Z PuercoPope joined #lisp 2018-01-17T20:51:29Z PuercoPope quit (Ping timeout: 265 seconds) 2018-01-17T20:52:50Z shka: (or (eq ch #\*) (alphanumericp ch)) :( 2018-01-17T20:53:06Z shka: i am so sad right now 2018-01-17T20:53:27Z Bike: should be eql 2018-01-17T20:53:36Z phoe: ^ 2018-01-17T20:54:08Z angavrilov quit (Remote host closed the connection) 2018-01-17T20:55:08Z shka: Bike: not my code but yeah 2018-01-17T20:55:24Z lnostdal joined #lisp 2018-01-17T20:55:43Z shka: actually it can be char= 2018-01-17T20:55:51Z shka: but that's beside the point 2018-01-17T20:56:02Z shka: i can't use S-SQL :/ 2018-01-17T20:59:14Z shka: gross 2018-01-17T20:59:39Z smasta quit (Ping timeout: 256 seconds) 2018-01-17T20:59:50Z shka: i can create view, i guess 2018-01-17T21:00:09Z hexfive quit (Read error: Connection reset by peer) 2018-01-17T21:00:18Z fouric: anyone have any resources on function hotpatching in CL? i've found a few pages on stack overflow that just tell me the bare minimum (how to hotpatch a single function using Emacs+SLIME), but i'm interested in knowing more, such as "how does this work?" and "how can i make my code \"aware\" of said hotpatching (e.g. add hooks that fire off when a function is replaced so i can run code that updates state)?" 2018-01-17T21:00:44Z vlatkoB quit (Remote host closed the connection) 2018-01-17T21:01:01Z hexfive joined #lisp 2018-01-17T21:01:21Z fouric: stack overflow gives me like 2 pages that tell me what i already know, and google gives me those same pages before beginning to omit either "lisp" or "hotpatch" from my query 2018-01-17T21:02:42Z phoe: >add hooks that fire off when a function is replaced 2018-01-17T21:02:47Z Bike: you mean you want to redefine functions in the middle of operation? 2018-01-17T21:02:53Z scymtym quit (Remote host closed the connection) 2018-01-17T21:03:06Z scymtym joined #lisp 2018-01-17T21:03:11Z phoe: in general: you generally don't, unless you care enough to write your own DEFUN. 2018-01-17T21:03:12Z fouric: redefine functions in a given program while it's still running 2018-01-17T21:03:21Z Bike: right. 2018-01-17T21:03:39Z phoe: And your own DEFUN can contain code to fire any callbacks you want and call CL:DEFUN as a part of its operation. 2018-01-17T21:03:42Z Bike: as phoe says, there are no hooks. 2018-01-17T21:03:56Z phoe: but nobody prevents you from installing them 2018-01-17T21:04:21Z fouric: i was hoping that there would be something built-in, but i'm willing to write my own variant of DEFUN if need-be 2018-01-17T21:04:35Z fouric: in general, though, how would i find answers to other questions like this? 2018-01-17T21:04:44Z phoe: fouric: other questions like this - what do you mean? 2018-01-17T21:04:57Z smasta joined #lisp 2018-01-17T21:05:01Z Bike: for how it works, it's a somewhat obscure point of compilation semantics. If a function defined in one compilation unit refers to another function defined in the same unit, e.g. by a call or #', redefining the other function is undefined behavior. 2018-01-17T21:05:06Z fouric: questions about how code hotswapping works in common lisp 2018-01-17T21:05:16Z fouric: has someone written an article somewhere? 2018-01-17T21:05:17Z phoe: you also need to use something like ASDF's WITH-UPGRADABILITY for the functions that you want to be able to always replace. 2018-01-17T21:05:20Z Bike: But you can explicitly force a lookup by using fdefinition, either explicitly or by e.g. (funcall 'foo ...) 2018-01-17T21:05:20Z fouric: is there a section in a book? 2018-01-17T21:05:24Z Bike: I don't know of any articles or anything. 2018-01-17T21:05:27Z phoe: fouric: I don't think so. Just ask questions here. 2018-01-17T21:05:30Z fouric: ...or is almost all of this stuff just passed from person to person? 2018-01-17T21:05:32Z fouric: ah 2018-01-17T21:05:40Z Bike: it's a pretty short explanation. 2018-01-17T21:06:13Z fouric: for that question, yes 2018-01-17T21:06:19Z fouric: i'm anticipating having more 2018-01-17T21:06:21Z phoe: as long as your functions are *not* inlined by the compiler, setting a new fdefinition instantly causes the whole image to pick up the new function. 2018-01-17T21:06:31Z Bike: More about redefining functions, specifically? 2018-01-17T21:06:52Z fouric: mutating bits of an image on the fly, in general 2018-01-17T21:06:54Z phoe: like, when the function is newly called, it'll use the new definition. old calls won't magically start executing the new function if the old function is in the middle of being executed. 2018-01-17T21:07:01Z fouric: i'm vaguely aware of the fact that you can update classes in-place 2018-01-17T21:07:08Z Bike: Mm, that might be tricky. It's kind of... the whole language? 2018-01-17T21:07:24Z Bike: All the defining forms just do side effects. 2018-01-17T21:07:49Z jasom: fouric: under the hood, functions are typically called via indirection, so there is a pointer to the code for a function. When you redefine it, you create new code then just update the pointer 2018-01-17T21:08:19Z jasom: fouric if you know assembly at all, just look at this output from sbcl: (disassemble (lambda () (declare (optimize (speed 3) (safety 0))) (quux))) 2018-01-17T21:08:31Z ikki quit (Ping timeout: 256 seconds) 2018-01-17T21:08:37Z fouric does, and disassembles 2018-01-17T21:09:31Z jasom: then all of the call stacks &c. are roots for the GC, so no old function definition will get garbage collected until it is no longer on anybody's call stack 2018-01-17T21:09:45Z ikki joined #lisp 2018-01-17T21:10:57Z mishoo quit (Ping timeout: 248 seconds) 2018-01-17T21:11:24Z fouric: that's clever 2018-01-17T21:11:36Z fouric: jasom: how did you learn this? 2018-01-17T21:11:53Z fouric: Bike: if there isn't some single document on the internet, that's fine, i'll gladly come here for help 2018-01-17T21:12:19Z fouric: ...i was just trying to see if there was something that i could go to instead of re-asking questions that have already been put here multiple times 2018-01-17T21:12:21Z fouric: (possibly) 2018-01-17T21:12:24Z Bike: I guess the overall way to think of it is, the image is the image. it has some bindings, like of functions and classes. you can alter the bindings at your whim. these are basic language semantics. With functions, the compiler is allowed to integrate definitions and skip bindings sometimes, so you have to be aware of those times to do redefinition 2018-01-17T21:12:27Z fikka quit (Ping timeout: 240 seconds) 2018-01-17T21:12:42Z Bike: But everything else is fairly safe. except there's also threading and who knows what's going on there. 2018-01-17T21:12:59Z Bike: this channel gets a lot of repeat questions. it's no big deal, i don't think 2018-01-17T21:13:20Z Bike: i guess we could put together a faq or whatever, like the cool channels 2018-01-17T21:13:52Z fouric: is that how function redefinition happens? your code is running in one thread, and the SLIME client in another, and said client updates the definition of FOO or whatever, which the "main" thread picks up on the next time FOO is called? 2018-01-17T21:14:31Z rumbler31: I imagine that question has implementation specific answers 2018-01-17T21:14:43Z Bike: well, that's basically it though. 2018-01-17T21:14:56Z fouric: Bike: i'm just trying to learn stuff while enroaching of the time of more skilled (and therefore productive) people in here as little as possible 2018-01-17T21:14:59Z Bike: the semantics are actually defined in a single threaded environment, and implementations do try to be nice 2018-01-17T21:15:01Z fouric: if that explains anything 2018-01-17T21:15:05Z Bike: yeah i getcha 2018-01-17T21:15:26Z Bike: thanks for the concern i guess. but in this case i think it's question city 2018-01-17T21:15:39Z fouric: aight 2018-01-17T21:15:49Z fouric: well, i'm very happy with the answers i got 2018-01-17T21:15:57Z fouric: ty Bike and phoe and jasom 2018-01-17T21:16:13Z rumbler31: also, I personally appreciate the dive into more complicated topics that I might not yet even know how to ask about 2018-01-17T21:16:20Z fouric: o good! 2018-01-17T21:16:25Z fouric is useful 2018-01-17T21:16:52Z rumbler31: and I speak up to have my assumptions tested 2018-01-17T21:17:09Z oleo quit (Quit: Leaving) 2018-01-17T21:17:49Z PuercoPope joined #lisp 2018-01-17T21:18:11Z oleo joined #lisp 2018-01-17T21:18:47Z fikka joined #lisp 2018-01-17T21:20:05Z jasom: also the specification lists when functions can be redefined; if they are either declared notinline at all call points, or not referenced anywhere in the file in which they are defined then it's safe. 2018-01-17T21:20:23Z zaquest quit (Ping timeout: 276 seconds) 2018-01-17T21:20:38Z jasom: basically permission to inline is logically the same as permission to assume the function will never change 2018-01-17T21:21:18Z cgay quit (Remote host closed the connection) 2018-01-17T21:21:25Z rumbler31: jasom: what do you man about "not referenced anywhere in the file in which they are defined" 2018-01-17T21:22:32Z Baggers joined #lisp 2018-01-17T21:26:33Z jasom: rumbler31: logically speeking there are 3 states for inlining a function; lets call them: inline, notinline and default. The default is "may be inlined anywhere in the same file as the function definition"