2017-05-16T00:00:44Z Harag quit (Ping timeout: 246 seconds) 2017-05-16T00:01:42Z qaros joined #lisp 2017-05-16T00:04:51Z vtomole joined #lisp 2017-05-16T00:06:01Z qaros quit (Remote host closed the connection) 2017-05-16T00:07:21Z qaros joined #lisp 2017-05-16T00:13:36Z RedEight quit (Quit: leaving) 2017-05-16T00:13:36Z Harag joined #lisp 2017-05-16T00:16:40Z grublet quit (Quit: Leaving) 2017-05-16T00:22:18Z Harag1 joined #lisp 2017-05-16T00:22:28Z Harag quit (Ping timeout: 260 seconds) 2017-05-16T00:22:28Z Harag1 is now known as Harag 2017-05-16T00:23:40Z kmb quit (Quit: kmb) 2017-05-16T00:24:08Z myrkraverk_ joined #lisp 2017-05-16T00:24:16Z [X-Scale] joined #lisp 2017-05-16T00:25:10Z X-Scale quit (Ping timeout: 240 seconds) 2017-05-16T00:25:11Z [X-Scale] is now known as X-Scale 2017-05-16T00:25:17Z rme quit (Quit: rme) 2017-05-16T00:25:18Z rme quit (Quit: rme) 2017-05-16T00:26:35Z myrkraverk quit (Ping timeout: 240 seconds) 2017-05-16T00:27:12Z myrkraverk_ is now known as myrkraverk 2017-05-16T00:43:28Z Harag quit (Ping timeout: 240 seconds) 2017-05-16T00:46:57Z quazimodo joined #lisp 2017-05-16T00:51:48Z qaros quit (Ping timeout: 240 seconds) 2017-05-16T00:53:29Z pjb quit (Ping timeout: 272 seconds) 2017-05-16T00:56:11Z NeverDie joined #lisp 2017-05-16T00:57:02Z Dotcra joined #lisp 2017-05-16T01:01:12Z Harag joined #lisp 2017-05-16T01:01:51Z Mynock^_^ joined #lisp 2017-05-16T01:03:19Z vtomole quit (Quit: Page closed) 2017-05-16T01:03:44Z Mynock^_^ quit (Client Quit) 2017-05-16T01:05:40Z snits quit (Ping timeout: 240 seconds) 2017-05-16T01:06:16Z snits joined #lisp 2017-05-16T01:08:22Z shifty joined #lisp 2017-05-16T01:09:55Z bigos quit (Remote host closed the connection) 2017-05-16T01:10:12Z cromachina joined #lisp 2017-05-16T01:15:00Z moei joined #lisp 2017-05-16T01:15:59Z MerinoBailon quit (Ping timeout: 260 seconds) 2017-05-16T01:17:45Z bailon joined #lisp 2017-05-16T01:18:20Z whoman quit (Ping timeout: 260 seconds) 2017-05-16T01:19:43Z defaultxr quit (Quit: brb) 2017-05-16T01:20:36Z defaultxr joined #lisp 2017-05-16T01:25:26Z neoncontrails joined #lisp 2017-05-16T01:34:37Z qaros joined #lisp 2017-05-16T01:37:41Z didi quit (Ping timeout: 246 seconds) 2017-05-16T01:38:23Z aeth quit (Ping timeout: 260 seconds) 2017-05-16T01:39:48Z Harag quit (Ping timeout: 240 seconds) 2017-05-16T01:40:14Z aeth joined #lisp 2017-05-16T01:40:21Z Harag joined #lisp 2017-05-16T01:53:58Z joe___ joined #lisp 2017-05-16T01:56:14Z d4ryus4 joined #lisp 2017-05-16T01:59:11Z d4ryus3 quit (Ping timeout: 240 seconds) 2017-05-16T02:01:55Z Harag1 joined #lisp 2017-05-16T02:02:13Z Harag quit (Ping timeout: 260 seconds) 2017-05-16T02:02:13Z Harag1 is now known as Harag 2017-05-16T02:07:20Z joe___: test 2017-05-16T02:10:27Z Harag quit (Ping timeout: 240 seconds) 2017-05-16T02:10:34Z Harag1 joined #lisp 2017-05-16T02:11:41Z al-damiri quit (Quit: Connection closed for inactivity) 2017-05-16T02:12:52Z Harag1 is now known as Harag 2017-05-16T02:14:21Z pjb joined #lisp 2017-05-16T02:14:27Z jack_rabbit joined #lisp 2017-05-16T02:15:33Z joe___ is now known as bigO 2017-05-16T02:16:28Z pierpa quit (Quit: Page closed) 2017-05-16T02:17:01Z bigO is now known as thebigO 2017-05-16T02:17:14Z thebigO is now known as bigO 2017-05-16T02:21:26Z jameser joined #lisp 2017-05-16T02:24:32Z defaultxr: is it possible to change a readtable only while a specific function or macro is being read? i have a function like (defun foo (&rest bar) ...) and i would like to be able to split the 'bar' parameter up by newlines, without affecting how newlines behave for other functions. 2017-05-16T02:25:21Z defaultxr: additionally i don't want to have to change the readtable manually before and after each invocation of 'foo' 2017-05-16T02:25:56Z shdeng joined #lisp 2017-05-16T02:26:56Z Bike: basically no. what do you mean by splitting up by newlines, though? 2017-05-16T02:27:27Z ryanwatk` joined #lisp 2017-05-16T02:27:35Z Bike: newlines count as whitespace for the reader, so (+ 4\n5) reads just like (+ 4 5). 2017-05-16T02:28:24Z defaultxr: yeah, i'd like to be able to differentiate whitespace from newlines, so i know where the newlines are in the arguments, rather than them just being treated as normal whitespace 2017-05-16T02:29:12Z defaultxr: so if it's called like (foo 5\n4\n3 2 1) i would be able to split it up to get something like '((5) (4) (3 2 1)) 2017-05-16T02:29:45Z ryanwatkins quit (Ping timeout: 272 seconds) 2017-05-16T02:30:20Z Bike: yeah, that's not possible. it would be difficult even allowing for changing the reader between calls. 2017-05-16T02:30:53Z Bike: the reader reads whole forms, so if you have (+ (foo 5 4 3 2 1) 7) that whole expression is read at once. and for the inner call, the whole (foo ...) list is read before it could possibly be acknowledged that the car is FOO. 2017-05-16T02:32:07Z bigO is now known as equwal 2017-05-16T02:32:09Z defaultxr: that's unfortunate. so it also wouldn't be possible to selectively replace \n with another symbol if the current form's car is FOO? 2017-05-16T02:32:26Z Bike: no. the reader doesn't even know about 'current forms'. 2017-05-16T02:32:41Z Bike: when the reader sees a ( it basically just recursively calls itself a couple times until it hits a ), and puts the results in a list. 2017-05-16T02:32:52Z pillton: What are you trying to do? Why are you interested in differentiating whitespace from new lines? Are you writing a document? 2017-05-16T02:33:49Z Bike: personally i'd find it extremely confusing if calls to this one function parsed completely differently 2017-05-16T02:34:58Z defaultxr: pillton: i'm writing a library for music composition/performance and i feel that it would be faster and more expressive to be able to split musical phrases by newlines rather than explicitly with another symbol between each one. 2017-05-16T02:35:17Z loke`: defaultxr: I 2017-05-16T02:35:34Z Bike: if you're making your own score format you might just want to not use the lisp reader for it 2017-05-16T02:35:36Z loke`: defaultxr: What kind of content is it that you want to treat that way? 2017-05-16T02:36:35Z loke`: I mean, if it's not actually Lisp code, you can create a parser for that specific format and add it to the readtable: #M[some music format] 2017-05-16T02:36:39Z equwal: that is not impossible 2017-05-16T02:36:50Z orivej quit (Ping timeout: 246 seconds) 2017-05-16T02:36:54Z Harag1 joined #lisp 2017-05-16T02:37:03Z pillton: defaultxr: What about (defconstant \\ '\\) and (my-composition c c g g \\ a a g \\ f f e e \\ d d c)? 2017-05-16T02:37:16Z defaultxr: pillton: that's basically what i'm doing already 2017-05-16T02:37:16Z Harag quit (Ping timeout: 255 seconds) 2017-05-16T02:37:17Z Harag1 is now known as Harag 2017-05-16T02:37:17Z equwal: You need a reader macro if you want to do it though. I have used them before here: https://github.com/equwal/LispBrain 2017-05-16T02:37:20Z defaultxr: was hoping there would be a simpler way 2017-05-16T02:38:17Z pillton: defaultxr: Ok. I use that for constant matrices. 2017-05-16T02:38:20Z equwal: It isn't hard. Read the section of code on the #f notation 2017-05-16T02:38:24Z defaultxr: loke`: basically each line would be the arguments for another function, and i would apply them to that function 2017-05-16T02:39:05Z defaultxr: equwal: thanks, i'll give this a look 2017-05-16T02:39:19Z TDT quit (Quit: TDT) 2017-05-16T02:40:35Z equwal: No problem. You can see it at the bottom of code/interpreter.lisp. There is also documentation online. 2017-05-16T02:41:05Z Fare joined #lisp 2017-05-16T02:41:12Z equwal: That macro makes it possible to run things like #fxyz where rxyz is some brainfuck code. 2017-05-16T02:41:28Z loke`: defaultxr: How about createing a dispatching macro character (let's call it #M, called like so: #M[ ... ]), and inside that block, #\Newline is redefined to return a symbol. Then something like #M[a b\nd] would be read as (a b SPECIAL d) 2017-05-16T02:41:58Z defaultxr: loke`: that was going to be plan B :) 2017-05-16T02:42:37Z pilne quit (Quit: Quitting!) 2017-05-16T02:42:44Z equwal: Exactly what I was getting at loke 2017-05-16T02:47:52Z equwal: Exactly what I was getting at like #'different-newlines which can be called to create the behaviour you need, and have #'default-newlines set it back (for example) 2017-05-16T02:48:15Z equwal: I was thinking that the above way might be closer to what you want. 2017-05-16T02:48:29Z milanj quit (Quit: This computer has gone to sleep) 2017-05-16T02:48:34Z equwal: defaultxr 2017-05-16T02:49:08Z defaultxr: but then wouldn't those functions have to be called manually? like in an eval-when? 2017-05-16T02:49:43Z pillton: defaultxr: If you are reading symbols inside the #M reader macro you'll probably need the function read-preserving-whitespace. 2017-05-16T02:51:01Z defaultxr: pillton: thanks, i'll read up on that one 2017-05-16T02:55:19Z pillton: What is the name of the system which helps manage the readtable? 2017-05-16T02:55:31Z pillton: Is it cl-syntax? 2017-05-16T02:56:07Z pillton: named-readtables? 2017-05-16T02:56:22Z Bike: named readtables 2017-05-16T02:58:02Z equwal quit (Quit: leaving) 2017-05-16T02:58:18Z pillton: defaultxr: Once you get the reader macro working and you like it, I also suggest that you use the named readtables system to simplify read table management. 2017-05-16T02:58:45Z defaultxr: thanks, i probably will 2017-05-16T03:03:46Z bsdcode joined #lisp 2017-05-16T03:07:40Z schoppenhauer quit (Ping timeout: 240 seconds) 2017-05-16T03:07:57Z impulse joined #lisp 2017-05-16T03:09:40Z Harag1 joined #lisp 2017-05-16T03:09:58Z schoppenhauer joined #lisp 2017-05-16T03:10:28Z Harag quit (Ping timeout: 260 seconds) 2017-05-16T03:10:28Z Harag1 is now known as Harag 2017-05-16T03:11:15Z sfa joined #lisp 2017-05-16T03:15:21Z Fare quit (Ping timeout: 272 seconds) 2017-05-16T03:16:18Z Fare joined #lisp 2017-05-16T03:16:28Z stardiviner joined #lisp 2017-05-16T03:20:36Z Harag quit (Read error: Connection reset by peer) 2017-05-16T03:20:50Z Harag joined #lisp 2017-05-16T03:21:27Z Fare quit (Ping timeout: 240 seconds) 2017-05-16T03:29:52Z Harag quit (Ping timeout: 268 seconds) 2017-05-16T03:34:05Z grublet joined #lisp 2017-05-16T03:45:37Z vlatkoB joined #lisp 2017-05-16T03:55:39Z rumbler31 quit (Remote host closed the connection) 2017-05-16T04:06:17Z xristos quit (Quit: ZNC - http://znc.in) 2017-05-16T04:06:36Z Dotcra quit (Quit: leaving) 2017-05-16T04:08:22Z test1600 joined #lisp 2017-05-16T04:10:48Z nacci quit (Read error: Connection reset by peer) 2017-05-16T04:13:04Z nacci joined #lisp 2017-05-16T04:26:36Z stardiviner quit (Ping timeout: 268 seconds) 2017-05-16T04:37:58Z josh5tone quit (Ping timeout: 260 seconds) 2017-05-16T04:39:48Z hyero quit (Remote host closed the connection) 2017-05-16T04:57:07Z orivej joined #lisp 2017-05-16T05:04:11Z orivej quit (Ping timeout: 246 seconds) 2017-05-16T05:05:01Z stardiviner joined #lisp 2017-05-16T05:11:46Z dec0n joined #lisp 2017-05-16T05:12:05Z beach: Good morning everyone! 2017-05-16T05:14:24Z josh5tone joined #lisp 2017-05-16T05:15:08Z safe quit (Read error: Connection reset by peer) 2017-05-16T05:21:32Z ExcelTronic joined #lisp 2017-05-16T05:23:20Z stardiviner quit (Quit: WeeChat 1.7.1) 2017-05-16T05:25:49Z mishoo joined #lisp 2017-05-16T05:26:10Z qaros quit (Ping timeout: 240 seconds) 2017-05-16T05:26:24Z shka_ joined #lisp 2017-05-16T05:29:05Z smoon joined #lisp 2017-05-16T05:34:57Z stardiviner joined #lisp 2017-05-16T05:36:20Z NeverDie quit (Quit: http://radiux.io/) 2017-05-16T05:37:31Z oleo quit (Quit: irc client terminated!) 2017-05-16T05:38:36Z knobo joined #lisp 2017-05-16T05:38:48Z stardiviner quit (Client Quit) 2017-05-16T05:39:17Z stardiviner joined #lisp 2017-05-16T05:41:22Z qaros joined #lisp 2017-05-16T05:42:06Z emacsoma` quit (Remote host closed the connection) 2017-05-16T05:44:20Z stardiviner quit (Quit: WeeChat 1.8) 2017-05-16T05:56:08Z Karl_Dscc joined #lisp 2017-05-16T05:56:12Z rumbler31 joined #lisp 2017-05-16T05:57:23Z Bock joined #lisp 2017-05-16T05:57:24Z Bock quit (Max SendQ exceeded) 2017-05-16T05:59:11Z Harag joined #lisp 2017-05-16T05:59:19Z Bock joined #lisp 2017-05-16T05:59:22Z sfa quit (Quit: Lost terminal) 2017-05-16T06:00:40Z rumbler31 quit (Ping timeout: 240 seconds) 2017-05-16T06:00:51Z angavrilov joined #lisp 2017-05-16T06:06:14Z salv0 quit (Remote host closed the connection) 2017-05-16T06:09:08Z tanuzzo quit (Ping timeout: 255 seconds) 2017-05-16T06:11:31Z tanuzzo joined #lisp 2017-05-16T06:11:57Z neoncontrails quit (Remote host closed the connection) 2017-05-16T06:12:11Z shka_ quit (Ping timeout: 240 seconds) 2017-05-16T06:16:19Z ExcelTronic quit (Quit: I'm going to go hit the sack, then go to bed.) 2017-05-16T06:16:38Z rumbler31 joined #lisp 2017-05-16T06:17:17Z Karl_Dscc quit (Remote host closed the connection) 2017-05-16T06:17:56Z smoon quit (Quit: smoon) 2017-05-16T06:18:04Z ExcelTronic joined #lisp 2017-05-16T06:21:05Z rumbler31 quit (Ping timeout: 240 seconds) 2017-05-16T06:21:25Z Cymew joined #lisp 2017-05-16T06:31:12Z stardiviner joined #lisp 2017-05-16T06:32:57Z knobo quit (Ping timeout: 272 seconds) 2017-05-16T06:38:44Z Cymew: John[Lisbeth]: Did you ever sort out your DO issues, or did you turn to LOOP? 2017-05-16T06:50:07Z jackc_ quit (Ping timeout: 260 seconds) 2017-05-16T06:50:50Z scymtym joined #lisp 2017-05-16T06:52:51Z Lowl3v3l joined #lisp 2017-05-16T06:53:45Z Bike quit (Quit: asleve) 2017-05-16T06:58:05Z BlueRavenGT quit (Ping timeout: 240 seconds) 2017-05-16T07:09:27Z holycow2 joined #lisp 2017-05-16T07:09:28Z jackc joined #lisp 2017-05-16T07:11:46Z holycow2: . 2017-05-16T07:11:52Z eschatologist quit (Ping timeout: 268 seconds) 2017-05-16T07:15:16Z vlatkoB_ joined #lisp 2017-05-16T07:16:15Z o1e9 joined #lisp 2017-05-16T07:16:47Z eschatologist joined #lisp 2017-05-16T07:19:04Z vlatkoB quit (Ping timeout: 260 seconds) 2017-05-16T07:26:02Z huza joined #lisp 2017-05-16T07:27:25Z xaotuk joined #lisp 2017-05-16T07:31:28Z xaotuk_ joined #lisp 2017-05-16T07:33:08Z qaros quit (Ping timeout: 240 seconds) 2017-05-16T07:37:23Z nirved joined #lisp 2017-05-16T07:49:26Z holycow2: new version of txr is released: https://www.reddit.com/r/lisp/comments/6bc1mt/txr_175_released_ffi/ 2017-05-16T07:49:31Z holycow2: man that looks so convenient 2017-05-16T07:50:35Z xaotuk quit (Ping timeout: 240 seconds) 2017-05-16T07:51:44Z xaotuk_ quit (Ping timeout: 260 seconds) 2017-05-16T07:53:57Z defaultxr quit (Ping timeout: 240 seconds) 2017-05-16T07:54:00Z huza quit (Quit: WeeChat 1.0.1) 2017-05-16T07:54:05Z knobo joined #lisp 2017-05-16T07:56:07Z yoonkn joined #lisp 2017-05-16T07:59:34Z holycow2 quit (Quit: leaving) 2017-05-16T08:00:14Z holycow joined #lisp 2017-05-16T08:00:43Z holycow is now known as holycow2 2017-05-16T08:00:52Z qaros joined #lisp 2017-05-16T08:01:04Z milanj joined #lisp 2017-05-16T08:04:05Z grublet quit (Ping timeout: 246 seconds) 2017-05-16T08:04:17Z knobo quit (Ping timeout: 268 seconds) 2017-05-16T08:07:43Z doesthiswork quit (Quit: Leaving.) 2017-05-16T08:10:31Z ExcelTronic quit (Quit: I'm going to go hit the sack, then go to bed.) 2017-05-16T08:10:43Z qaros quit (Ping timeout: 246 seconds) 2017-05-16T08:11:25Z _cosmonaut_ joined #lisp 2017-05-16T08:12:09Z Younder joined #lisp 2017-05-16T08:13:51Z qaros joined #lisp 2017-05-16T08:16:22Z Research joined #lisp 2017-05-16T08:18:49Z ttt72 joined #lisp 2017-05-16T08:21:10Z varjag joined #lisp 2017-05-16T08:26:09Z Research left #lisp 2017-05-16T08:29:07Z gingerale joined #lisp 2017-05-16T08:32:04Z MrBusiness3 joined #lisp 2017-05-16T08:34:52Z MrBismuth quit (Ping timeout: 246 seconds) 2017-05-16T08:35:12Z rumbler31 joined #lisp 2017-05-16T08:39:27Z knobo joined #lisp 2017-05-16T08:39:46Z rumbler31 quit (Ping timeout: 258 seconds) 2017-05-16T08:43:17Z qaros quit (Ping timeout: 246 seconds) 2017-05-16T08:45:17Z qaros joined #lisp 2017-05-16T08:50:17Z sz0 joined #lisp 2017-05-16T08:54:29Z yoonkn quit (Remote host closed the connection) 2017-05-16T08:58:51Z dxtr: What's a good logging library? 2017-05-16T08:59:10Z otwieracz: log4cl 2017-05-16T08:59:14Z dxtr: Alright 2017-05-16T08:59:21Z dxtr: That's the one I'm looking at actually :) 2017-05-16T08:59:38Z otwieracz: We're using it and it's just fine. 2017-05-16T09:00:23Z CrazyEddy quit (Remote host closed the connection) 2017-05-16T09:02:06Z milanj quit (Quit: This computer has gone to sleep) 2017-05-16T09:03:07Z yoonkn joined #lisp 2017-05-16T09:04:27Z nowhere_man quit (Ping timeout: 240 seconds) 2017-05-16T09:06:07Z [X-Scale] joined #lisp 2017-05-16T09:08:38Z X-Scale quit (Ping timeout: 260 seconds) 2017-05-16T09:08:38Z [X-Scale] is now known as X-Scale 2017-05-16T09:10:05Z CrazyEddy joined #lisp 2017-05-16T09:14:19Z arbv quit (Quit: ZNC - http://znc.in) 2017-05-16T09:15:33Z arbv joined #lisp 2017-05-16T09:26:11Z Younder: Eliminating Format from Lisp http://www.cs.yale.edu/homes/dvm/format-stinks.html 2017-05-16T09:27:12Z Younder: Some people have it it is not Lisp like enough. 2017-05-16T09:28:15Z easye: Younder: Like LOOP, FORMAT is arguably not very Lisp-y, but is so useful that most people "put up with it". 2017-05-16T09:31:28Z Younder: I would argue that the ability to create sub languages in Lisp is one of it's strengths. But whatever. It was always a compiler prototyping tool. 2017-05-16T09:31:54Z nowhere_man joined #lisp 2017-05-16T09:32:08Z Younder: It would pick up a bit of this a bit of that. 2017-05-16T09:39:31Z EvW joined #lisp 2017-05-16T09:45:56Z knobo quit (Ping timeout: 246 seconds) 2017-05-16T09:49:20Z ttt72_ joined #lisp 2017-05-16T09:50:20Z ttt72 quit (Ping timeout: 245 seconds) 2017-05-16T09:51:41Z Bratishka joined #lisp 2017-05-16T09:57:39Z HDurer joined #lisp 2017-05-16T09:57:39Z HDurer quit (Changing host) 2017-05-16T09:57:39Z HDurer joined #lisp 2017-05-16T09:57:47Z orivej joined #lisp 2017-05-16T10:01:04Z ttt72_ quit (Quit: ttt72_) 2017-05-16T10:05:49Z yoonkn quit (Remote host closed the connection) 2017-05-16T10:10:22Z Bratishka quit (Remote host closed the connection) 2017-05-16T10:13:05Z flip214 quit (Remote host closed the connection) 2017-05-16T10:15:57Z m00natic joined #lisp 2017-05-16T10:19:38Z milanj joined #lisp 2017-05-16T10:27:06Z Kaisyu joined #lisp 2017-05-16T10:29:02Z knobo joined #lisp 2017-05-16T10:31:41Z flip214 joined #lisp 2017-05-16T10:31:42Z flip214 quit (Changing host) 2017-05-16T10:31:42Z flip214 joined #lisp 2017-05-16T10:32:17Z pve joined #lisp 2017-05-16T10:34:55Z Bratishka joined #lisp 2017-05-16T10:35:54Z dim: for loop, there's the iterate alternative 2017-05-16T10:36:41Z _death: for format, there's mcdermott's out.. and there's mine 2017-05-16T10:40:15Z FreeBirdLjj joined #lisp 2017-05-16T10:42:28Z dim: am I understanding correctly that those `out' implementations are compatible with that of the format-stinks paper? 2017-05-16T10:43:30Z azzamsa joined #lisp 2017-05-16T10:44:15Z _death: mcdermott wrote the format-stinks paper, and recommends it there, so I'm guessing it's compatible.. mine is inspired by his, so maybe 2017-05-16T10:44:23Z FreeBirdLjj quit (Ping timeout: 246 seconds) 2017-05-16T10:45:24Z dim: links to both? 2017-05-16T10:45:57Z arbv quit (Quit: ZNC - http://znc.in) 2017-05-16T10:45:58Z azzamsa quit (Client Quit) 2017-05-16T10:46:56Z _death: for mcdermott's see src/ytools in https://sourceforge.net/p/clocc/hg/ci/default/tree/ 2017-05-16T10:47:05Z arbv joined #lisp 2017-05-16T10:47:13Z _death: mine https://github.com/death/constantia/blob/master/out.lisp 2017-05-16T10:50:28Z jameser quit (Ping timeout: 255 seconds) 2017-05-16T10:57:08Z flip214: _death: do you have a link to the paper as well, please? 2017-05-16T10:57:21Z flip214: "format stinks" doesn't google so well ;/ 2017-05-16T10:57:39Z flip214: ah, got it, I guess. http://www.cs.yale.edu/homes/dvm/format-stinks.html 2017-05-16T10:58:15Z splittist: format strings can be commented. That no-one does it is either a bad habit, or a sign that they're not really mysterious write-only incantations after all. 2017-05-16T10:59:46Z Younder: some do particularly for multi-line ones 2017-05-16T11:00:26Z Younder: Still that RTFM and decrypt it yourself is tempting 2017-05-16T11:00:48Z al-damiri joined #lisp 2017-05-16T11:02:10Z _death: mine expands to format (for some operations).. so feel free to decipher that ;) 2017-05-16T11:03:44Z arbv quit (Quit: ZNC - http://znc.in) 2017-05-16T11:04:55Z arbv joined #lisp 2017-05-16T11:07:12Z dim: _death: thanks for the links 2017-05-16T11:08:05Z dim: I'm not fond of format strings, same as with regexp 2017-05-16T11:08:30Z dim: far too easy to make mistakes, some forms are impossible to remember (0-pad a number to n digits on the left?) 2017-05-16T11:09:29Z __paul0 joined #lisp 2017-05-16T11:10:11Z Xach: dim: i guess i use that so much that it is burned in 2017-05-16T11:10:35Z _death: why it's just ~8,'0X 2017-05-16T11:10:36Z Xach: there are a handful of common not-entirely-trivial cases for me 2017-05-16T11:10:49Z _death: I use format for my public stuff, so as to not depend on constantia 2017-05-16T11:10:50Z Xach: I often forget the ', though. 2017-05-16T11:11:13Z Xach: not its necessity, just its presence 2017-05-16T11:12:10Z _death: dim: I too dislike use of regular expressions.. I agree with Naggum's point of view, that it may be useful as a user-visible feature, but not really for use in programs 2017-05-16T11:12:52Z _paul0 quit (Ping timeout: 260 seconds) 2017-05-16T11:13:02Z dim: regexp are cool for interactively making sense of things 2017-05-16T11:13:16Z dim: but as soon as you know what you're doing it's best to avoid them, I think 2017-05-16T11:13:41Z malice` joined #lisp 2017-05-16T11:13:41Z dim: anyway, what if the 8 isn't hard-coded in ~8,'0x ? 2017-05-16T11:13:54Z dim: and also, how does `out' compare? 2017-05-16T11:14:11Z _death: ~V 2017-05-16T11:14:38Z dim: do you mean ~~v8,'0x ? 2017-05-16T11:14:42Z _death: (out (:d 42 :width 8 :pad-char #\0 :base 16)) 2017-05-16T11:14:49Z _death: I mean ~V,'0X 2017-05-16T11:15:01Z dim: ah ok, thx. I prefer the out version ;-) 2017-05-16T11:15:06Z axion: pjb: Thank you for replying to peter's sbcl-help message. We have been trying to debug this for a long time, and your answer makes perfect sense, however, the solution is not going to be ideal for us, as it introduces complexity at the macro call site for the user. This macro is actually used by another macro that handles working with several vectors at once, and worse, for several 4x4 matrices. 2017-05-16T11:16:33Z _death: dim: with out you could also define your own user-op so it's (out (:u hex32 42)) or something 2017-05-16T11:16:35Z qaros quit (Ping timeout: 246 seconds) 2017-05-16T11:16:37Z axion: pjb: Having the user specify symbol names for (* 16 n) variables is not pretty 2017-05-16T11:17:04Z axion: That is sort of why the macro exists in the first place 2017-05-16T11:22:31Z pjb: axion: in that case, you use an array! 2017-05-16T11:23:20Z pjb: I was about to change the variable names and use x0 x1 x2 instead… 2017-05-16T11:23:29Z Younder: Array's are weird and powerful in CL, yes 2017-05-16T11:23:35Z axion: pjb: We are actually using structs typed to be simple-arrays. 2017-05-16T11:23:43Z pjb: Ah, you see! 2017-05-16T11:23:47Z axion: these with-accessors are internally referencing array indices 2017-05-16T11:24:00Z Younder: they are! 2017-05-16T11:24:00Z pjb: This is good only when you have only 3 slots… 2017-05-16T11:24:15Z pjb: But if you have more, you will use it as a vector. 2017-05-16T11:24:18Z Younder: All of Clos uses arrays internally 2017-05-16T11:25:10Z axion: I'm not sure how raw arrays would solve the problem completely 2017-05-16T11:26:43Z pjb: axion: http://sprunge.us/MYGL 2017-05-16T11:27:54Z pjb: axion: well, while you have still 3 slots, your macro is ok. But once you have more, you won't have x y z parameters, but &rest values, and you will write: (map-into pv #'identity values). 2017-05-16T11:27:59Z axion: pjb: peter failed to show why these macros truly exist. In most cases, the user is supplying 3 15-length arrays 2017-05-16T11:28:33Z pjb: Yes. In that case you just use array or vector functions, such as map-into, map, etc. 2017-05-16T11:28:44Z axion: For example matrix multiplication with a 3rd output for in-place operations 2017-05-16T11:28:58Z pjb: and of course, loop :-) 2017-05-16T11:29:21Z Younder: The grand old bastard 2017-05-16T11:30:17Z pjb: Now, you may want to use a compiler that unroll the loops, or use your own looping macro to unroll them. 2017-05-16T11:30:18Z Younder: An ad hoc fit, but it has a cool set of features for class iteration 2017-05-16T11:30:34Z Younder: macro-expand-1 2017-05-16T11:30:55Z pjb: But 15 looks to me as justifying a loop on most processors. 2017-05-16T11:30:58Z axion: To be honest, we are only interested in sbcl performance, however we definitely want conformity/portability 2017-05-16T11:32:23Z axion: We went through great lengths to type-annotate and inline suitable functions, and wrote macros such as this to make writing and visualizing everything simple. 2017-05-16T11:32:24Z pjb: Unless you or the compiler can use vectorial instructions. IIRC sbcl can do some, but I don't know on what conditions. You can always implement the needed VOP. 2017-05-16T11:33:06Z pjb: So you'd write a loop using your own looping macro, but instead it would use vectorial instructions to implement the body. 2017-05-16T11:33:22Z |3b| wonders if a reader macros would be better for name-generating macros 2017-05-16T11:33:43Z pjb: (of course, you'd have a conforming implementation of the macro for other implementations or processors). 2017-05-16T11:34:07Z pjb: But there's no local reader macro… 2017-05-16T11:34:11Z jibanes quit (Ping timeout: 240 seconds) 2017-05-16T11:35:00Z axion: pjb: Yes VOPs were something we discussed, and the sb-cga system does this already should we need it. This may be used on other implementations though, so portability is a concern. 2017-05-16T11:35:59Z |3b|: yeah, isolating reader macros is a problem in general :/ 2017-05-16T11:36:02Z jibanes joined #lisp 2017-05-16T11:37:30Z Younder: Reader macros are by their nature not isolated. In particular packages can't restrict them 2017-05-16T11:37:47Z axion: pjb: I can give you an example of how this macro is used in the wild, and why it is nice 2017-05-16T11:38:05Z jameser joined #lisp 2017-05-16T11:40:02Z axion: pjb: https://github.com/mfiano/gamebox-math/blob/master/src/matrix-ops.lisp#L234 pretty much this whole file is it's main use in the form of WITH-MATRIX and WITH-MATRICES, and the macro definitions are in the matrix-base.lisp file. 2017-05-16T11:40:25Z |3b| didn't mean 'local' though, just something like #16!m could expand to symbols M0 .. M16 in some useful form (list of symbol-macrolet definitions, input to some normal macro, etc) 2017-05-16T11:41:05Z jameser quit (Client Quit) 2017-05-16T11:41:14Z axion: Line 53 is an example function definition where the conciseness really shines. 2017-05-16T11:41:46Z |3b|: that way you get names defined at read time (so in correct package), but without having to type them out explicitly 2017-05-16T11:42:11Z pjb: axion: yes. You see, if I had to write this matrix-invert! function, I would NOT write it myself! I would write a macro to expand to it! 2017-05-16T11:42:36Z pjb: (and it's already only a 3x3 matrix invert…) 2017-05-16T11:42:43Z _cosmonaut_ quit (Ping timeout: 246 seconds) 2017-05-16T11:42:52Z pjb: or 4x4. 2017-05-16T11:42:53Z |3b| also favors that solution though :) 2017-05-16T11:43:02Z |3b|: (generating it from a macro that is) 2017-05-16T11:43:03Z axion: 4x4 you mean? 2017-05-16T11:43:09Z axion: ah yeah 2017-05-16T11:43:10Z pjb: yed. 2017-05-16T11:43:11Z pjb: s 2017-05-16T11:43:31Z axion: Line 53 is a better example of what the macro solves 2017-05-16T11:43:43Z axion: 3 4x4 matrices, very concise and easy to understand 2017-05-16T11:43:45Z |3b|: easier to reuse the logic with different ways of storing the data 2017-05-16T11:44:17Z Younder: Matrices are tricky. Diagonal ones. Sparse ones. Trigonal ones. Lot's of efficiency issues. 2017-05-16T11:44:46Z axion: Luckily this library is only concerned with square, dense, 4x4 matrices 2017-05-16T11:44:49Z |3b|: Younder: simpler for the ones used for 3d transforms though, small and fewer special cases to care about 2017-05-16T11:45:01Z pjb: axion: now, with-accessor defines symbol-macros that expand to the accessor call each time it's used. This may, or may not be faster than local lexical variables, when you only read the slot several times… 2017-05-16T11:45:09Z Grue`` joined #lisp 2017-05-16T11:45:35Z axion: Hm 2017-05-16T11:46:14Z pjb: In the matrix*!, each slot is read 4 times; it could be faster to read it once, store it in a local lexical variable and then read it 4 times from there. If the processor has a lot of registers, those temp could be stored in registers. 2017-05-16T11:46:23Z Younder: |3b|, for which quaternions are better suited 2017-05-16T11:46:43Z bigos joined #lisp 2017-05-16T11:46:43Z |3b|: Younder: not really, they handle a subset of transforms better, but not all 2017-05-16T11:47:10Z |3b|: (and even then, only better in some ways) 2017-05-16T11:47:16Z axion: pjb: I see, so I'm going to have to discuss with him rewriting the macros for several reasons now. 2017-05-16T11:47:33Z |3b|: dual quaternions get you a bit better coverage, but still don't handle everything a 4x4 matrix does 2017-05-16T11:47:53Z axion: such as scale :/ 2017-05-16T11:48:05Z |3b| was thinking skews and projections 2017-05-16T11:48:10Z axion: Well they do represent scale, but must be normalized and thus losing that information for certain operations 2017-05-16T11:48:15Z pjb: But for the reader macro idea, you could have something like: [o00 that would expand to (aref o 0 0) 2017-05-16T11:48:34Z pjb: or µo00 2017-05-16T11:48:59Z axion: reader macros is actually something I never attempted with CL in my more than a decade of use. Might be fun to learn 2017-05-16T11:49:54Z pjb: or ◽o00 2017-05-16T11:50:31Z |3b| was thinking #4m(o out-matrix) that expands to (((o00 math-lib:m00) (o01 math-lib:m01)) ... out-matrix)), used as `(with-accessors ,@#4m(...) ...) 2017-05-16T11:50:32Z pjb: So you wouldn't even need to have a with-matrices macro, just name your macros with a single letter. 2017-05-16T11:51:09Z Younder: I've used reader macros for short self contained programs like embedded languages. 2017-05-16T11:51:19Z |3b|: though that ends up a bit ugly now that i type it out, probably want a normal macro in the middle to expand the lists instead of ,@ :/ 2017-05-16T11:51:31Z Younder: and the odd #. for speedup 2017-05-16T11:51:35Z pjb: We've only started to explore all the tricks you can do with reader macros… 2017-05-16T11:52:04Z |3b|: editors make a lot of the tricks less fun :( 2017-05-16T11:53:20Z okflo joined #lisp 2017-05-16T11:53:26Z |3b| thinks surface syntax should be an editor feature rather than language feature anyway though :p 2017-05-16T11:53:27Z axion: Well thank you for the suggestions. I am lost when it comes to reader and compiler macros, so I'll have to do some research first. 2017-05-16T11:55:41Z malice` quit (Ping timeout: 240 seconds) 2017-05-16T11:58:04Z malice` joined #lisp 2017-05-16T11:59:35Z _cosmonaut_ joined #lisp 2017-05-16T12:01:48Z scymtym quit (Remote host closed the connection) 2017-05-16T12:01:56Z scymtym joined #lisp 2017-05-16T12:05:19Z Bratishka quit (Remote host closed the connection) 2017-05-16T12:06:09Z arbv quit (Quit: ZNC - http://znc.in) 2017-05-16T12:06:53Z EvW quit (Ping timeout: 255 seconds) 2017-05-16T12:07:11Z arbv joined #lisp 2017-05-16T12:07:36Z shdeng quit (Quit: Leaving) 2017-05-16T12:11:28Z TCZ joined #lisp 2017-05-16T12:14:11Z stardiviner quit (Quit: WeeChat 1.8) 2017-05-16T12:18:35Z Younder: Well compiler macros happen just before compilation and after macro expansion. Easy enough to grook really. Just compiler dispatch on types. Look at the source for CL-PPCR fes 2017-05-16T12:19:09Z BernhardPosselt joined #lisp 2017-05-16T12:19:38Z BernhardPosselt: why do lisp dialects just keep on popping up? what does lisp do better than haskell? or is it just so simple to write a parser :) 2017-05-16T12:20:45Z |3b|: compiler macros should be expanded before normal macros during compilation 2017-05-16T12:20:59Z beach: BernhardPosselt: This channel is about Common Lisp, so we don't care about other dialects. :) 2017-05-16T12:21:05Z BernhardPosselt: i see :D 2017-05-16T12:21:10Z Younder: well Lisp does macro's better 2017-05-16T12:21:12Z BernhardPosselt: entirely different? 2017-05-16T12:21:24Z BernhardPosselt: from clojure/racket 2017-05-16T12:21:25Z easye: BernhardPosselt: It is pretty easy to make a simple Lisp. When encountering a new language, I often try such an implementation. 2017-05-16T12:21:40Z |3b|: same reason as algol dialects, people want to make their own :p 2017-05-16T12:21:49Z Younder: Funny I usually end up with a simple Fourth 2017-05-16T12:21:59Z Younder: No Parents 2017-05-16T12:22:12Z beach: BernhardPosselt: Here is alist of features of Common Lisp. You can compare it to what Haskell does: http://random-state.net/features-of-common-lisp.html 2017-05-16T12:22:15Z Younder: Just push and pop 2017-05-16T12:22:23Z BernhardPosselt: beach: ty 2017-05-16T12:22:30Z beach: ywlcm 2017-05-16T12:23:00Z easye: Younder: A simple Forth is definitely easier that a simple Lisp, but making the Lisp reader for parens tells me a lot about the I/O in the new language. 2017-05-16T12:23:09Z |3b| makes common lisp dialects for same reason, some feature i want that i can't get from the original, or thing i don't like about the original and hope i can do better 2017-05-16T12:23:34Z ferada joined #lisp 2017-05-16T12:24:12Z ferada left #lisp 2017-05-16T12:31:18Z yrk joined #lisp 2017-05-16T12:32:42Z EvW1 joined #lisp 2017-05-16T12:33:56Z Harag quit (Ping timeout: 246 seconds) 2017-05-16T12:34:15Z qaros joined #lisp 2017-05-16T12:34:15Z malice` quit (Read error: Connection reset by peer) 2017-05-16T12:35:53Z TCZ quit (Quit: Leaving) 2017-05-16T12:45:56Z holycow2 quit (Quit: Lost terminal) 2017-05-16T12:52:26Z hhdave joined #lisp 2017-05-16T12:57:16Z TDT joined #lisp 2017-05-16T13:00:36Z doesthiswork joined #lisp 2017-05-16T13:01:14Z PuercoPop left #lisp 2017-05-16T13:07:20Z qaros quit (Remote host closed the connection) 2017-05-16T13:10:55Z EvW1 quit (Ping timeout: 260 seconds) 2017-05-16T13:11:45Z freehck joined #lisp 2017-05-16T13:13:20Z ttt72 joined #lisp 2017-05-16T13:18:28Z stardiviner joined #lisp 2017-05-16T13:18:44Z TCZ joined #lisp 2017-05-16T13:21:05Z doesthiswork quit (Quit: Leaving.) 2017-05-16T13:27:56Z LiamH joined #lisp 2017-05-16T13:29:45Z cromachina quit (Read error: Connection reset by peer) 2017-05-16T13:34:12Z Cymew quit (Ping timeout: 268 seconds) 2017-05-16T13:39:34Z qaros joined #lisp 2017-05-16T13:40:10Z Khisanth quit (Ping timeout: 240 seconds) 2017-05-16T13:51:37Z orivej quit (Read error: Connection reset by peer) 2017-05-16T13:52:40Z burtons joined #lisp 2017-05-16T13:53:42Z rumbler31 joined #lisp 2017-05-16T13:54:06Z Khisanth joined #lisp 2017-05-16T13:55:37Z FreeBirdLjj joined #lisp 2017-05-16T13:56:27Z TCZ quit (Quit: Leaving) 2017-05-16T13:56:36Z bsdcode quit (Read error: Connection reset by peer) 2017-05-16T14:00:18Z FreeBirdLjj quit (Ping timeout: 260 seconds) 2017-05-16T14:00:44Z jibanes quit (Ping timeout: 246 seconds) 2017-05-16T14:02:44Z jibanes joined #lisp 2017-05-16T14:10:08Z knobo quit (Ping timeout: 240 seconds) 2017-05-16T14:10:41Z dec0n quit (Read error: Connection reset by peer) 2017-05-16T14:13:52Z peterhil quit (Ping timeout: 255 seconds) 2017-05-16T14:14:18Z stardiviner quit (Ping timeout: 260 seconds) 2017-05-16T14:14:55Z peterhil joined #lisp 2017-05-16T14:22:07Z test1600 quit (Quit: Leaving) 2017-05-16T14:23:03Z argoneus: hello 2017-05-16T14:23:31Z argoneus: is lisp/funcprog in general a bad idea for things like IRC bots or network processing stuff in general? 2017-05-16T14:23:39Z rumbler31: no 2017-05-16T14:23:47Z BernhardPosselt left #lisp 2017-05-16T14:23:51Z argoneus: when I think about network I think about it imperatively, and I can't really imagine how it'd work with lisp 2017-05-16T14:24:04Z argoneus: connect, get socket, get stuff from socket, process it, send it back 2017-05-16T14:24:13Z argoneus: no idea where I'd start doing that with lisp that just works with functions 2017-05-16T14:24:14Z rumbler31: works exactly like you think it does 2017-05-16T14:24:17Z argoneus: hmm 2017-05-16T14:24:37Z rumbler31: even, there are libraries that help with async, like uhh... lib 2017-05-16T14:24:39Z argoneus: and is it more/less comfortable than doing it in, like, python? 2017-05-16T14:24:44Z argoneus: or is it just different 2017-05-16T14:24:49Z rumbler31: it can be the same 2017-05-16T14:25:16Z argoneus: I see 2017-05-16T14:25:37Z rumbler31: iolib, if you want to build an application in async style 2017-05-16T14:26:00Z rumbler31: (with-open-socket (socket sock-params..) do stuff with the socket) 2017-05-16T14:26:14Z argoneus: oh, huh, I see 2017-05-16T14:26:24Z argoneus: and how good is lisp in general in parsing text? 2017-05-16T14:26:32Z argoneus: like based on a grammar or such 2017-05-16T14:26:52Z rumbler31: I believe grammar/parser libraries exist 2017-05-16T14:27:27Z argoneus: hmm, so all in all it should be pretty much the same difficulty, just a different style so to speak? 2017-05-16T14:27:38Z NeverDie joined #lisp 2017-05-16T14:27:40Z rumbler31: also https://github.com/phoe/secure-read exists if you want to make your protocol parseable by lisp (read 2017-05-16T14:28:07Z xristos joined #lisp 2017-05-16T14:28:23Z argoneus: oh, that looks neta 2017-05-16T14:28:25Z argoneus: neat* 2017-05-16T14:28:46Z rumbler31: regarding Common Lisp, nothing precludes you from writing iterative style 2017-05-16T14:29:03Z argoneus: right, but I kinda wanted to dwelve deeper into funcprog 2017-05-16T14:29:09Z argoneus: and figure out the "cool" things 2017-05-16T14:29:17Z argoneus: so I was wondering if this was a good project for that 2017-05-16T14:29:19Z rumbler31: i would look at trying to write a server, if thats what you're talking about, with iolib 2017-05-16T14:29:25Z rumbler31: which is purpose built for the task 2017-05-16T14:30:10Z argoneus: ah, nice 2017-05-16T14:30:16Z argoneus: oki, thanks! 2017-05-16T14:30:36Z rumbler31: fair warning, if you're on windows, IOlib might need some work on your part to get built. maybe 2017-05-16T14:30:58Z rumbler31: np! 2017-05-16T14:31:11Z beach: argoneus: Common Lisp (the language to which this channel is dedicated) is not particularly "functional" in that sense of the word. 2017-05-16T14:31:46Z rumbler31: I used (read to prototype a text protocol between two applications. I couldn't be bothered to parse the format they wanted yet, so I made it (read-able and then sat on a telnet session and typed/pasted the data in 2017-05-16T14:32:29Z argoneus: oh 2017-05-16T14:32:30Z Harag joined #lisp 2017-05-16T14:32:42Z beach: argoneus: The absolute "coolest" thing about Common Lisp is not that it allows functional programming. Instead it is its object system, CLOS. 2017-05-16T14:32:42Z argoneus: I was actually thinking of using Clojure or such, thought this channel was for general lisp dialect discussion 2017-05-16T14:32:49Z argoneus: woops 2017-05-16T14:33:10Z pjb` joined #lisp 2017-05-16T14:33:21Z argoneus: CLOS? 2017-05-16T14:33:31Z beach: Common Lisp Object System. 2017-05-16T14:33:40Z argoneus: hmm 2017-05-16T14:35:13Z pjb quit (Read error: Connection reset by peer) 2017-05-16T14:35:14Z pjb` is now known as pjb 2017-05-16T14:35:22Z axion: secure-read is missing some reader protection 2017-05-16T14:35:28Z phoe: axion: ! 2017-05-16T14:35:31Z phoe: tell me more 2017-05-16T14:35:33Z axion: for example 1d999 2017-05-16T14:35:43Z pjb is now known as Guest54615 2017-05-16T14:36:15Z phoe: that's correct 2017-05-16T14:36:21Z phoe flings a bug at phoe 2017-05-16T14:36:23Z phoe scowls 2017-05-16T14:36:28Z axion: :) 2017-05-16T14:38:13Z phoe: actually 2017-05-16T14:38:23Z phoe: axion: I don't know what the issue is 2017-05-16T14:38:28Z sellout- joined #lisp 2017-05-16T14:38:29Z axion: What is more troubling is legal but dangerous code. I believe beach wrote a paper on a sandboxing proposition years ago I helped proof-read. I wonder what the status of the ideas present are these days. 2017-05-16T14:38:30Z phoe: the reader attempts to build the number 2017-05-16T14:38:42Z phoe: and fails, throwing a reader error 2017-05-16T14:38:53Z phoe: which is captured by secure-read, which returns NIL 2017-05-16T14:38:58Z phoe: that's what happens on my machine. 2017-05-16T14:39:05Z phoe: what do implementations other than SBCL do? 2017-05-16T14:39:15Z phoe: axion: also, SECURE-READ does not concern code 2017-05-16T14:39:21Z axion: I know 2017-05-16T14:39:23Z phoe: it only concerns Lisp data 2017-05-16T14:39:38Z phoe: the moment you can execute any code, you can make loops or what not. 2017-05-16T14:39:51Z phoe: I'm not trying to sandbox Lisp, which is generally futile 2017-05-16T14:40:02Z axion: It definitely is, well, CL at least. 2017-05-16T14:40:06Z phoe: if anything, aeth has been working on a Scheme implementation written in Lisp 2017-05-16T14:40:13Z phoe: with the purpose of being sandboxable 2017-05-16T14:40:37Z phoe: axion: https://github.com/phoe/secure-read/issues/1 2017-05-16T14:40:54Z phoe: but - how can you leverage this to make evil™? 2017-05-16T14:41:07Z phoe: because right now it errors out, which is expected 2017-05-16T14:41:32Z eazar001 joined #lisp 2017-05-16T14:42:55Z Guest54615 is now known as pjb` 2017-05-16T14:43:07Z axion: I haven't used your library or looked too deeply on what it tries to solve 2017-05-16T14:43:24Z axion: I would consider any read errors dangerous in some contexts though 2017-05-16T14:44:58Z orivej joined #lisp 2017-05-16T14:46:17Z phoe: axion: AFAIK my library returns two values, with the other value being an error code if a reader error happened. 2017-05-16T14:46:27Z phoe: Either that, or you actually get to handle the error. 2017-05-16T14:46:35Z eazar001 quit (Ping timeout: 246 seconds) 2017-05-16T14:47:02Z phoe: Feel free to tweak it if you want to. 2017-05-16T14:49:52Z orivej quit (Ping timeout: 255 seconds) 2017-05-16T14:50:07Z orivej joined #lisp 2017-05-16T14:52:25Z kmb joined #lisp 2017-05-16T14:54:02Z okflo left #lisp 2017-05-16T14:58:32Z mfiano joined #lisp 2017-05-16T14:59:25Z mejja joined #lisp 2017-05-16T15:01:48Z eazar001 joined #lisp 2017-05-16T15:06:12Z rippa joined #lisp 2017-05-16T15:09:05Z Bike joined #lisp 2017-05-16T15:13:40Z knobo joined #lisp 2017-05-16T15:14:30Z stardiviner joined #lisp 2017-05-16T15:15:48Z FreeBirdLjj joined #lisp 2017-05-16T15:17:11Z FreeBirdLjj quit (Client Quit) 2017-05-16T15:17:16Z lxpz quit (Read error: Connection reset by peer) 2017-05-16T15:21:51Z EvW joined #lisp 2017-05-16T15:23:25Z whoman joined #lisp 2017-05-16T15:25:12Z knobo quit (Ping timeout: 268 seconds) 2017-05-16T15:32:18Z cartwright quit (Read error: Connection reset by peer) 2017-05-16T15:33:27Z FreeBirdLjj joined #lisp 2017-05-16T15:36:27Z pratch quit (Ping timeout: 240 seconds) 2017-05-16T15:38:44Z EvW quit (Ping timeout: 246 seconds) 2017-05-16T15:41:46Z neoncontrails joined #lisp 2017-05-16T15:43:46Z freehck quit (Quit: rcirc on GNU Emacs 25.1.1) 2017-05-16T15:48:03Z stardiviner quit (Quit: WeeChat 1.8) 2017-05-16T15:51:16Z lieven quit (Remote host closed the connection) 2017-05-16T15:52:34Z scymtym_ joined #lisp 2017-05-16T15:54:10Z qaros quit (Remote host closed the connection) 2017-05-16T15:56:42Z scymtym quit (Ping timeout: 240 seconds) 2017-05-16T16:00:33Z phinxy joined #lisp 2017-05-16T16:01:18Z lieven joined #lisp 2017-05-16T16:03:09Z handicraftsman joined #lisp 2017-05-16T16:03:52Z handicraftsman left #lisp 2017-05-16T16:04:03Z brendyyn quit (Ping timeout: 268 seconds) 2017-05-16T16:05:00Z sebboh: aeth, pjb, didi, continuing yesterday's conversation... trivial-shell:shell-command returns multiple values, two of which are ... streams, or large strings, or something. (stdout and stderr) I think they are actually strings. You said something about registers. What is a register in this context? Are we talking about a piece of the "vm" or "intepreter" here? Is it appropriate to store a string of unknown length (unix command 2017-05-16T16:05:00Z sebboh: output) in a register? 2017-05-16T16:09:17Z _cosmonaut_ quit (Quit: Leaving.) 2017-05-16T16:10:09Z whoman: what's happeningn with Clasp ? 2017-05-16T16:11:04Z oleo joined #lisp 2017-05-16T16:13:59Z EvW1 joined #lisp 2017-05-16T16:14:44Z beach: whoman: Ask in the #clasp channel. 2017-05-16T16:15:52Z burtons quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2017-05-16T16:16:40Z edgar-rft quit (Quit: edgar-rft) 2017-05-16T16:19:21Z whoman: ok ty 2017-05-16T16:19:29Z beach: ywlcm 2017-05-16T16:22:21Z kobain joined #lisp 2017-05-16T16:26:53Z shka_ joined #lisp 2017-05-16T16:27:06Z doesthiswork joined #lisp 2017-05-16T16:29:57Z mishoo quit (Ping timeout: 268 seconds) 2017-05-16T16:34:56Z o1e9 quit (Quit: Ex-Chat) 2017-05-16T16:36:22Z oleo quit (Remote host closed the connection) 2017-05-16T16:41:40Z hhdave quit (Ping timeout: 268 seconds) 2017-05-16T16:41:54Z TDT quit (Quit: TDT) 2017-05-16T16:49:50Z ante joined #lisp 2017-05-16T16:51:10Z scymtym__ joined #lisp 2017-05-16T16:51:16Z ski quit (Remote host closed the connection) 2017-05-16T16:52:02Z ante is now known as cymew 2017-05-16T16:53:32Z scymtym_ quit (Ping timeout: 255 seconds) 2017-05-16T16:55:23Z nowhere_man quit (Ping timeout: 246 seconds) 2017-05-16T16:55:42Z maarhart joined #lisp 2017-05-16T16:57:47Z lxpz joined #lisp 2017-05-16T16:58:18Z defaultxr joined #lisp 2017-05-16T16:58:18Z maarhart quit (Client Quit) 2017-05-16T17:07:52Z burtons joined #lisp 2017-05-16T17:10:38Z EvW1 quit (Ping timeout: 255 seconds) 2017-05-16T17:11:11Z unrahul joined #lisp 2017-05-16T17:11:54Z EvW joined #lisp 2017-05-16T17:16:24Z drcode quit (Quit: ZNC 1.6.5 - http://znc.in) 2017-05-16T17:19:32Z shifty quit (Ping timeout: 246 seconds) 2017-05-16T17:23:19Z zacts quit (Ping timeout: 255 seconds) 2017-05-16T17:25:50Z Harag quit (Ping timeout: 246 seconds) 2017-05-16T17:28:34Z pilne joined #lisp 2017-05-16T17:30:51Z nowhere_man joined #lisp 2017-05-16T17:31:30Z mazoe joined #lisp 2017-05-16T17:32:51Z m00natic quit (Remote host closed the connection) 2017-05-16T17:33:40Z burtons quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2017-05-16T17:33:44Z FreeBirdLjj quit (Remote host closed the connection) 2017-05-16T17:34:31Z burtons joined #lisp 2017-05-16T17:34:35Z drcode joined #lisp 2017-05-16T17:38:02Z unrahul quit 2017-05-16T17:40:53Z drcode quit (Quit: ZNC 1.6.5 - http://znc.in) 2017-05-16T17:42:19Z FreeBirdLjj joined #lisp 2017-05-16T17:43:15Z tfb quit (Ping timeout: 245 seconds) 2017-05-16T17:43:23Z drcode joined #lisp 2017-05-16T17:43:34Z neoncontrails quit (Remote host closed the connection) 2017-05-16T17:44:02Z didi joined #lisp 2017-05-16T17:44:06Z jerme_ quit (Ping timeout: 258 seconds) 2017-05-16T17:46:13Z tfb joined #lisp 2017-05-16T17:46:58Z jerme_ joined #lisp 2017-05-16T17:47:09Z didi: Can I expand stuff like #'fn to inspect what it turns out? Like I can use C-c C-m in SLIME to macroexpand a macro. 2017-05-16T17:47:14Z raynold joined #lisp 2017-05-16T17:48:58Z orivej quit (Ping timeout: 255 seconds) 2017-05-16T17:49:37Z whoman: M-. ? 2017-05-16T17:50:29Z didi: whoman: I don't think so. M-. shows me the definitions. 2017-05-16T17:51:48Z _death: (write-to-string '#'fn :pretty nil) 2017-05-16T17:52:09Z didi: _death: Ah. Thank you. 2017-05-16T17:56:32Z zacts joined #lisp 2017-05-16T17:57:44Z rumbler3_ joined #lisp 2017-05-16T18:03:19Z quazimodo quit (Read error: Connection reset by peer) 2017-05-16T18:03:35Z quazimodo joined #lisp 2017-05-16T18:10:14Z seg joined #lisp 2017-05-16T18:10:32Z ebrasca joined #lisp 2017-05-16T18:12:19Z mfiano quit (Quit: WeeChat 1.8) 2017-05-16T18:12:35Z mfiano joined #lisp 2017-05-16T18:12:43Z mfiano quit (Client Quit) 2017-05-16T18:12:44Z whoman: okay, i see =) 2017-05-16T18:14:38Z bigos quit (Remote host closed the connection) 2017-05-16T18:14:39Z axion quit (Quit: WeeChat 1.7.1) 2017-05-16T18:19:08Z mfiano joined #lisp 2017-05-16T18:19:14Z mfiano quit (Client Quit) 2017-05-16T18:19:43Z axion joined #lisp 2017-05-16T18:19:59Z rumbler3_ quit 2017-05-16T18:20:05Z kobain quit (Ping timeout: 246 seconds) 2017-05-16T18:21:15Z quazimodo quit (Read error: Connection reset by peer) 2017-05-16T18:21:34Z quazimodo joined #lisp 2017-05-16T18:22:32Z Bock quit (Read error: Connection reset by peer) 2017-05-16T18:27:34Z ebrasca is now known as ebrasca-afk 2017-05-16T18:32:41Z jack_rabbit quit (Ping timeout: 246 seconds) 2017-05-16T18:35:37Z pjb` is now known as pjb 2017-05-16T18:38:02Z dddddd joined #lisp 2017-05-16T18:38:42Z neoncontrails joined #lisp 2017-05-16T18:39:21Z BlueRavenGT joined #lisp 2017-05-16T18:39:29Z FreeBirdLjj quit (Remote host closed the connection) 2017-05-16T18:40:54Z ebrasca-afk is now known as ebrasca 2017-05-16T18:46:09Z ttt72 quit (Quit: ttt72) 2017-05-16T18:54:15Z MrBusiness3 quit (Ping timeout: 258 seconds) 2017-05-16T18:55:58Z Kaisyu quit (Quit: Connection closed for inactivity) 2017-05-16T18:57:03Z Ven joined #lisp 2017-05-16T18:57:27Z Ven is now known as Guest52168 2017-05-16T19:00:34Z scymtym__ quit (Ping timeout: 246 seconds) 2017-05-16T19:00:49Z scymtym__ joined #lisp 2017-05-16T19:08:15Z emacsoma` joined #lisp 2017-05-16T19:09:39Z dwrngr` joined #lisp 2017-05-16T19:11:41Z Grue` quit (Ping timeout: 272 seconds) 2017-05-16T19:12:07Z MrBusiness3 joined #lisp 2017-05-16T19:13:35Z dwrngr quit (Ping timeout: 272 seconds) 2017-05-16T19:18:10Z Grue``` joined #lisp 2017-05-16T19:18:23Z mishoo joined #lisp 2017-05-16T19:22:26Z josemanuel joined #lisp 2017-05-16T19:23:52Z mejja quit (Quit: \ No newline at end of file) 2017-05-16T19:27:42Z oleo joined #lisp 2017-05-16T19:29:16Z mishoo quit (Remote host closed the connection) 2017-05-16T19:29:37Z mishoo joined #lisp 2017-05-16T19:36:59Z vlatkoB_ quit (Remote host closed the connection) 2017-05-16T19:38:40Z MrWoohoo quit (Ping timeout: 240 seconds) 2017-05-16T19:39:11Z Guest52168 quit (Ping timeout: 260 seconds) 2017-05-16T19:39:48Z quazimodo quit (Ping timeout: 260 seconds) 2017-05-16T19:40:43Z quazimodo joined #lisp 2017-05-16T19:42:52Z Ven_ joined #lisp 2017-05-16T19:46:52Z prole joined #lisp 2017-05-16T19:47:58Z Ven_ quit (Ping timeout: 260 seconds) 2017-05-16T19:48:49Z bigos joined #lisp 2017-05-16T19:49:20Z quazimodo quit (Ping timeout: 246 seconds) 2017-05-16T19:50:00Z lagagain quit (Quit: Connection closed for inactivity) 2017-05-16T19:53:20Z scymtym__ quit (Ping timeout: 240 seconds) 2017-05-16T19:55:28Z Jesin quit (Quit: Leaving) 2017-05-16T19:58:34Z Ven joined #lisp 2017-05-16T19:58:58Z Ven is now known as Guest60500 2017-05-16T20:01:26Z gingerale quit (Remote host closed the connection) 2017-05-16T20:07:59Z maarhart joined #lisp 2017-05-16T20:09:25Z Karl_Dscc joined #lisp 2017-05-16T20:09:53Z Jesin joined #lisp 2017-05-16T20:11:16Z maarhart quit (Client Quit) 2017-05-16T20:15:23Z scymtym joined #lisp 2017-05-16T20:16:08Z pierpa joined #lisp 2017-05-16T20:25:40Z Guest60500 quit (Ping timeout: 240 seconds) 2017-05-16T20:26:11Z xaotuk joined #lisp 2017-05-16T20:27:05Z Ven_ joined #lisp 2017-05-16T20:29:53Z safe joined #lisp 2017-05-16T20:30:29Z Canaimero-e64b1 joined #lisp 2017-05-16T20:30:45Z xaotuk_ joined #lisp 2017-05-16T20:31:28Z cymew quit (Ping timeout: 240 seconds) 2017-05-16T20:33:11Z Canaimero-e64b1: hola 2017-05-16T20:33:43Z RedEight joined #lisp 2017-05-16T20:35:58Z xaotuk quit (Quit: xaotuk) 2017-05-16T20:38:31Z pjb: sebboh: when the data cannot fit a register, the register contains a pointer to the data instead. It's still good to have the pointer directly accessible in the register, instead of having to read it from memory. 2017-05-16T20:40:30Z TDT joined #lisp 2017-05-16T20:41:09Z Ven_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2017-05-16T20:41:19Z Canaimero-e64b1 quit (Ping timeout: 255 seconds) 2017-05-16T20:42:50Z rippa quit (Quit: {#`%${%&`+'${`%&NO CARRIER) 2017-05-16T20:42:50Z aeth: Does anyone know what the maximum efficient number of values in (values ...) is on typical modern implementations? multiple-values-limit is "not smaller than 20" and in 64-bit SBCL is 4611686018427387903, but I doubt it's as efficient with 4611686018427387903 as it is with 4. 2017-05-16T20:44:04Z aeth: (It's 200 in CCL and 64 in ECL and 128 in clisp) 2017-05-16T20:44:12Z easye: aeth: I think it is mostly about efficiency of space, not time (other than the time it takes to construct a gadzillion VALUES to return in the first place) 2017-05-16T20:45:11Z easye: ABCL doesn't have a limit: we stuff it all into the per-thread heap 2017-05-16T20:45:55Z jackdaniel: if it's small number (say - 2), it might be quite beneficial to store it in registers if you have control over them 2017-05-16T20:45:59Z easye: Er, well the limit is dependent on how much memory you have. 2017-05-16T20:46:11Z easye: jackdaniel: Agreed. 2017-05-16T20:46:21Z jackdaniel: also, reasonably small number may be stored in preallocated vector 2017-05-16T20:46:31Z jackdaniel: so there is no need for construction (just assignment) 2017-05-16T20:46:35Z pjb: aeth: multiple-values-limit 2017-05-16T20:46:55Z pjb: but depending on what you mean by "efficient" it would depend on the processor. 2017-05-16T20:47:03Z aeth: Well, I'll be specific. With 3 or 4 values, it's (usually?) better just to work with values directly than to create a temporary array to represent a 3D vector or a quaternion. What about e.g. the 16 values of a 4x4 matrix? 2017-05-16T20:47:06Z pjb: Choose your processors wisely (don't use Intel processors!). 2017-05-16T20:47:34Z pjb: But in any case, it'll be better than consing a list… 2017-05-16T20:47:50Z aeth: There has to be some point, especially in SBCL's 4611686018427387903, where an array (not a list!) beats multiple values, right? 2017-05-16T20:48:21Z pjb: Well, obviously sbcl will allocate an array for them… sbcl's a liar. 2017-05-16T20:48:35Z easye: Pants on fire! 2017-05-16T20:48:41Z jackdaniel: :) 2017-05-16T20:48:46Z aeth: The alternative here would be an array declared dynamic extent, which at least for size 4 produces different (larger) disassembly than values 2017-05-16T20:48:49Z Ven_ joined #lisp 2017-05-16T20:48:56Z aeth: It's easy to beat a list. 2017-05-16T20:49:02Z orivej joined #lisp 2017-05-16T20:49:22Z jackdaniel: aeth: do you have actual application where you have to optimize such case, or it's just what-if in a vain? 2017-05-16T20:49:46Z jackdaniel: because unless it's indeed a bottleneck I'd say - choose whatever fits your semantics best 2017-05-16T20:50:00Z aeth: jackdaniel: Yes, I'm writing a 3D game engine. There are lots of temporary vectors and quaternions. 2017-05-16T20:50:00Z mazoe quit (Quit: mazoe) 2017-05-16T20:50:04Z jackdaniel: not theoretical optimization capabilities 2017-05-16T20:50:32Z jackdaniel: then you probably have some kind of object storing state, right? 2017-05-16T20:50:45Z aeth: It is at least looking like multiple values for sizes 3 and 4 beat specialized arrays of sizes 3 and 4 declared dynamic-extent. 2017-05-16T20:51:07Z aeth: The object storing state is a 2D array, with rows of size 3 or 4. 2017-05-16T20:51:18Z jackdaniel: I think folks on #lispgames may have some valuable remarks 2017-05-16T20:51:43Z aeth: I can do (setf (array-row-of-3 array row) (values 1f0 2f0 3f0)) via a macro I wrote 2017-05-16T20:51:55Z easye: Ooh. There's a whole #lispgames channel? Coolio. 2017-05-16T20:52:17Z aeth: jackdaniel: #lispgames is more about higher level game design than the finer details of Common Lisp performance. 2017-05-16T20:52:39Z aeth: And I suspect what most people know about CL performance in #lispgames is for SBCL and maybe CCL or ECL, not modern implementations in general. 2017-05-16T20:52:49Z jackdaniel: aeth: did you encounter a bottleneck already? 2017-05-16T20:52:56Z aeth: Yes, but only in ECL. 2017-05-16T20:53:14Z aeth: I have been optimizing SBCL and CCL, halved their CPU usage, now they're mostly < 3% CPU, but I can't get 60 FPS in ECL for some reason. 2017-05-16T20:53:27Z aeth: It might be a bug, or ECL might be way slower. I am not sure. 2017-05-16T20:53:34Z jackdaniel: you probably use generic functions extensively 2017-05-16T20:53:47Z aeth: I use structs and arrays. 2017-05-16T20:54:01Z aeth: I only use objects before the game loop (rather than during), and for the game window object. 2017-05-16T20:54:11Z aeth: s/objects/CLOS objects/ 2017-05-16T20:54:11Z jackdaniel: I'm asking about generic functions, not objects 2017-05-16T20:54:24Z angavrilov quit (Remote host closed the connection) 2017-05-16T20:54:49Z jackdaniel: either way many people there know a lot about optimizations, they do write 3d engines after all 2017-05-16T20:55:23Z aeth: I have exactly one method remaining in my code, apparently. It is run before the game loop. 2017-05-16T20:55:58Z jackdaniel: uhm 2017-05-16T20:55:59Z aeth: I do use type declarations extensively. Could that hurt performance in ECL even though it helps it in SBCL and CCL? 2017-05-16T20:56:27Z jackdaniel: correct type declarations won't hurt performance 2017-05-16T20:56:43Z jackdaniel: did you profile your code? 2017-05-16T20:56:44Z easye: And they improve your thinking about the code. 2017-05-16T20:57:06Z jackdaniel: what is the most time-consuming operation? 2017-05-16T20:57:08Z aeth: jackdaniel: I mostly profile in SBCL because it's so much easier to profile with. I can't even use disassemble in ECL, apparently. 2017-05-16T20:57:23Z aeth: The most time consuming operation is drawing, via cl-opengl. 2017-05-16T20:57:33Z aeth: It's possible that there's a bug in cl-opengl or cl-sdl2 that hurts performance only in ECL. 2017-05-16T20:57:38Z jackdaniel wonders, when did we move from profiling to disassembly 2017-05-16T20:59:44Z jackdaniel: either way I don't think your bottleneck lies in returning multiple values from function 2017-05-16T21:00:55Z aeth: Well, I have eliminated almost all consing in SBCL (it's easier to do it there than in the others... I'll attempt CCL at some point) 2017-05-16T21:01:01Z aeth: That's how I halved CPU usage. 2017-05-16T21:01:56Z jmsb joined #lisp 2017-05-16T21:02:29Z burtons_ joined #lisp 2017-05-16T21:04:56Z burtons quit (Ping timeout: 246 seconds) 2017-05-16T21:06:45Z Ven_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) 2017-05-16T21:07:26Z sausages joined #lisp 2017-05-16T21:11:41Z aeth: jackdaniel: What is the generally accepted way to profile a running ECL program? 2017-05-16T21:12:08Z nirved quit (Quit: Leaving) 2017-05-16T21:13:50Z jackdaniel: use metering package 2017-05-16T21:14:06Z jackdaniel: if you want to get deeper, use perf 2017-05-16T21:17:48Z dcluna quit (Ping timeout: 240 seconds) 2017-05-16T21:18:42Z aeth: Is there anything like sb-profile? 2017-05-16T21:19:04Z dcluna joined #lisp 2017-05-16T21:20:17Z jackdaniel: did you even care to check things I have suggested? 2017-05-16T21:20:25Z jackdaniel: metering is exactly what sb-profile provides 2017-05-16T21:20:27Z aeth: I'm not sure what you mean by "metering" 2017-05-16T21:20:34Z Bike: it's the name of a system. 2017-05-16T21:21:01Z jackdaniel: http://lmgtfy.com/?q=metering+common+lisp 2017-05-16T21:21:37Z Bike: to be fair your repo is seven down 2017-05-16T21:21:49Z jackdaniel: not on my bubble :-) 2017-05-16T21:21:58Z jackdaniel: second is quickdocs here 2017-05-16T21:22:34Z Bike: but yeah, for (sb-profile:profile ..names...) ...whatever... (sb-profile:report) you just do (with-monitoring (...names...) ...whatever...) i think. 2017-05-16T21:24:40Z aeth: The problem is that it runs in a background thread because that's how cl-sdl2 works 2017-05-16T21:24:52Z aeth: So I get "Not enough execution time to monitor" 2017-05-16T21:25:59Z jackdaniel: read documentation, you may say: monitor this and this function 2017-05-16T21:26:03Z jackdaniel: and report after some time 2017-05-16T21:26:04Z aeth: yes 2017-05-16T21:26:14Z aeth: I mean, the problem with Bike's solution, not with monitor 2017-05-16T21:27:26Z jackdaniel: good night o/ 2017-05-16T21:27:44Z Bike: fixing my broken shit is left as an exercise for the reader 2017-05-16T21:29:13Z aeth: As I suspected, it's the render function. 2017-05-16T21:31:48Z impulse quit (Ping timeout: 240 seconds) 2017-05-16T21:32:21Z aeth: It takes 0.025519 seconds per call in ECL and (/ 60f0) => 0.016666668... so that right there is going to blow the 1/60 of a second budget 2017-05-16T21:33:17Z impulse joined #lisp 2017-05-16T21:33:48Z TeMPOraL: jackdaniel: oh, so you updated a portable profiler; should have googled harder before writing my own for the game engine... xD 2017-05-16T21:34:18Z aeth: It's 0.000084 in CCL and 0.000061 in SBCL, so i's several orders of magnitude slower in ECL. 2017-05-16T21:35:00Z Bike: so what does it do, just foreign calls? 2017-05-16T21:36:22Z aeth: Basically, yes. 2017-05-16T21:37:07Z TeMPOraL: jackdaniel: does ECL have a profiler that'll include foreign calls? 2017-05-16T21:37:28Z TeMPOraL is reminded of that time on VM where ~90% of my game time was spent on ioctl... 2017-05-16T21:39:06Z aeth: Oh, I forgot, I no longer inline draw, so I can profile the per-entity draw function instead of the iterate-over-every-entity render function. 2017-05-16T21:39:56Z aeth: It doesn't help that ECL apparently doesn't measure consing. I know it's lying when it says 0 consing in monitor:report-monitoring, because two functions I was checking definitely still do some consing, including the render one 2017-05-16T21:40:06Z aeth: For all I know, it's doing a *ton* of consing. 2017-05-16T21:40:54Z Bike: assuming you got the new metering, it should work, especially since jackdaniel also maintains ecl 2017-05-16T21:41:05Z aeth: I might have an old ECL 2017-05-16T21:41:17Z aeth: It looks like each draw call takes 0.002299 seconds, or about 14% of the time I have to do literally everything. 2017-05-16T21:41:26Z aeth: (The draw calls are almost entirely %gl calls) 2017-05-16T21:41:27Z Bike: what's (si:gc-stats nil) do? 2017-05-16T21:41:41Z aeth: (values 1 1 NIL) 2017-05-16T21:42:27Z TeMPOraL: gonna take a wild guess here; my problem was caused by glGetError being expensive; maybe try recompiling cl-opengl with #+cl-opengl-no-check-error ;) 2017-05-16T21:42:35Z TeMPOraL: (unless you use %gl calls, then it doesn't matter) 2017-05-16T21:42:45Z aeth: I use %gl calls for most 2017-05-16T21:43:01Z aeth: I think the gl calls I'm still using are identical to their %gl counterparts 2017-05-16T21:43:18Z aeth: I've optimized far more than I probably should at this point, in part because ECL can't hit 60 FPS 2017-05-16T21:44:26Z Bike: maybe gc-stats only tracks actual conses rather than memory. hum. 2017-05-16T21:44:31Z edgar-rft joined #lisp 2017-05-16T21:44:37Z aeth: (And I have an i7-4790k. If I can't hit 60 FPS due to single-threaded CPU usage, then only an i3-7350k and an i7-7700k could possibly hit 60 FPS) 2017-05-16T21:45:14Z aeth: (Excluding overclocks, of course.) 2017-05-16T21:46:14Z jibanes quit (Ping timeout: 246 seconds) 2017-05-16T21:47:32Z josemanuel quit (Quit: Leaving) 2017-05-16T21:48:04Z jibanes joined #lisp 2017-05-16T21:48:49Z kobain joined #lisp 2017-05-16T21:48:54Z kobain quit (Excess Flood) 2017-05-16T21:49:11Z kobain joined #lisp 2017-05-16T21:49:16Z kobain quit (Excess Flood) 2017-05-16T21:49:33Z kobain joined #lisp 2017-05-16T21:50:46Z aeth: What surprises me, though, is that ECL is so much less efficient here than SBCL and CCL, though. e.g. I'm getting 0.000009 sec/call in CCL and SBCL... so ECL is 255x slower... 2017-05-16T21:50:55Z aeth: And this is a function that's interfacing with C, which I thought ECL was designed for. 2017-05-16T21:51:28Z aeth: It's possible that there's a bug in cl-opengl, or it's possible that there's consing that's not a big deal in SBCL and CCL, but is in ECL. 2017-05-16T21:52:01Z pjb: It's not surprising since it goes thru a C compiler. C compilers cannot generate efficient code, since they lose so much information about the source! 2017-05-16T21:55:05Z pve quit (Ping timeout: 272 seconds) 2017-05-16T21:55:53Z eazar001 quit (Quit: WeeChat 1.5) 2017-05-16T21:56:20Z mishoo quit (Ping timeout: 258 seconds) 2017-05-16T21:56:51Z aeth: pjb: Do you think that for some reason it's compiling every time it draws? 2017-05-16T21:57:29Z TeMPOraL: that would be an interesting turn of events... 2017-05-16T21:57:59Z aeth: It does make a lot of sense that SBCL performs identically to CCL here... since they are calling the same C. I'm baffled for the 255x increase in ECL (and I wonder if 255.4444 is a coincidence since 255 is a suspiciously round number) 2017-05-16T21:58:03Z shka_ quit (Ping timeout: 260 seconds) 2017-05-16T21:58:29Z sausages: aeth: i wonder if maybe there's implicit overhead to foreign function calls in ECL that are just slower than in CCL/SBCL? does it have to box or otherwise process a float every single time it passes a float to a GL call? 2017-05-16T21:59:18Z aeth: sausages: By the time I get to the draw function, the floats are already in foreign data structures. I cache the matrices that I feed to GL. 2017-05-16T21:59:44Z pjb: aeth: no, but the code it generates is bound to be slower than the code sbcl generates. 2017-05-16T21:59:58Z aeth: (I only change the foreign matrices when the entity changes. This can lead to interesting bugs if I forget to set the dirty bit.) 2017-05-16T22:00:38Z aeth: I think what I should try to do next is finish removing the consing from the draw function, and then see if the slowness remains in ECL. 2017-05-16T22:02:14Z sausages: if there's any lambda functions being used in draw, maybe split 'em away into dedicated functions, just in case the profiler might overlook or not-report anonymous functions 2017-05-16T22:06:51Z burtons_ quit (Remote host closed the connection) 2017-05-16T22:09:01Z EvW quit (Ping timeout: 272 seconds) 2017-05-16T22:10:13Z aeth: I am just reading in values from a CL struct and from the cached foreign matrices and feeding them into gl or %gl functions. I'm actually not even sure where it conses. 2017-05-16T22:10:34Z aeth: Of course, now I'm not measuring any consing in draw in SBCL. Perhaps I misremembered it and was thinking of render-entities. 2017-05-16T22:15:04Z xaotuk_ quit (Ping timeout: 260 seconds) 2017-05-16T22:17:22Z prole quit (Remote host closed the connection) 2017-05-16T22:18:25Z Baggers joined #lisp 2017-05-16T22:20:59Z kmb quit (Quit: kmb) 2017-05-16T22:21:05Z rumbler31 quit (Ping timeout: 240 seconds) 2017-05-16T22:23:12Z papachan joined #lisp 2017-05-16T22:23:35Z Baggers: Xach: awesome, new dists. Thanks once again for all the work on ql 2017-05-16T22:26:34Z Uneliasmarsu joined #lisp 2017-05-16T22:27:12Z easye: S3 wuz kinda tardy for me ~three hours ago. Wonder if it was AMZN adjusting its buckets... 2017-05-16T22:27:24Z easye: err "Quicklisp S3 access" 2017-05-16T22:29:53Z dyelar quit (Quit: Leaving.) 2017-05-16T22:34:54Z Karl_Dscc quit (Remote host closed the connection) 2017-05-16T22:36:35Z chu quit (Ping timeout: 245 seconds) 2017-05-16T22:44:10Z varjag quit (Ping timeout: 240 seconds) 2017-05-16T22:45:14Z LiamH quit (Quit: Leaving.) 2017-05-16T22:58:46Z whoman quit (Quit: Leaving) 2017-05-16T22:58:47Z ebrasca quit (Remote host closed the connection) 2017-05-16T23:07:54Z al-damiri quit (Quit: Connection closed for inactivity) 2017-05-16T23:17:03Z nowhere_man quit (Remote host closed the connection) 2017-05-16T23:19:42Z sellout- quit (Quit: Leaving.) 2017-05-16T23:19:42Z dddddd quit (Read error: Connection reset by peer) 2017-05-16T23:23:22Z Baggers quit (Remote host closed the connection) 2017-05-16T23:28:43Z Jesin quit (Quit: Leaving) 2017-05-16T23:33:53Z Uneliasmarsu quit (Ping timeout: 272 seconds) 2017-05-16T23:37:03Z Jesin joined #lisp 2017-05-16T23:38:26Z borei joined #lisp 2017-05-16T23:38:44Z borei: hi lispers ! 2017-05-16T23:39:22Z Bike: hail. 2017-05-16T23:40:05Z Younder quit (Quit: Leaving) 2017-05-16T23:41:05Z borei: i have question - functions and macroses (just started to work with macroses, and don't have enough greep on them), but any way - what would be rule of thumb what to use ? from my 2 months experience but approaches can be used to solve my tasks. 2017-05-16T23:41:27Z borei: both approaches ^^^ 2017-05-16T23:41:28Z White_Flame: the plural is "macros" 2017-05-16T23:41:39Z White_Flame: rule of thumb is that if it can be a function, it probably should be 2017-05-16T23:41:39Z Bike: use functions. 2017-05-16T23:41:40Z didi: Rule of thumb: macros, not even once 2017-05-16T23:41:46Z borei: lol, sorry ESL (english second language) 2017-05-16T23:42:08Z krator44: well.. i'm just getting into macros as well 2017-05-16T23:42:09Z White_Flame: if you know for sure that you've got some repetition, or you want to automatically generate code from a custom spec, then go with macros 2017-05-16T23:42:15Z aeth: Use inlined functions instead of trivial macros where possible. 2017-05-16T23:42:29Z White_Flame: but really, mostly the latter 2017-05-16T23:42:31Z krator44: basically a macro is for code rearrangement 2017-05-16T23:42:56Z aeth: Inlined functions can do many of the same things. 2017-05-16T23:43:01Z aeth: Macros are for when those fail 2017-05-16T23:43:07Z krator44: so they serve significantly different tasks 2017-05-16T23:43:54Z krator44: at least abstractly 2017-05-16T23:44:28Z rumbler31 joined #lisp 2017-05-16T23:44:40Z krator44: a macro doesn't have access to variable values just their names for instance 2017-05-16T23:45:35Z krator44: (since it runs at a time when the variables may not yet be initialized) 2017-05-16T23:45:36Z aeth: Macros generally should fit basic patterns like define-foo, do-foo, with-foo, etc. Sometimes macros help you write common macros, e.g. define-modify-macro for incf-style macros. 2017-05-16T23:46:06Z NeverDie_ joined #lisp 2017-05-16T23:46:29Z borei: ok, example in my learning project 2017-05-16T23:46:38Z NeverDie quit (Ping timeout: 246 seconds) 2017-05-16T23:46:39Z aeth: The most complex macros I write, by far, are define-foo macros 2017-05-16T23:47:44Z borei: to find distance between 2 points in 3D space - should it be macros of function, mybe my question is absolutely incorrect 2017-05-16T23:47:59Z borei: or function ^^^ 2017-05-16T23:48:05Z Bike: that definitely sounds liek a function. 2017-05-16T23:48:05Z aeth: Probably a function 2017-05-16T23:48:18Z borei: both approaches will solve my problem 2017-05-16T23:48:23Z Bike: macros introduce syntax. you don't need to do that very often. 2017-05-16T23:48:29Z NeverDie_ quit (Read error: Connection reset by peer) 2017-05-16T23:48:37Z borei: why function ? 2017-05-16T23:48:50Z aeth: If you're concerned about it being so trivially small put this above the defun: (declaim (inline foo)) where foo is the function name. 2017-05-16T23:49:05Z rumbler31 quit (Ping timeout: 240 seconds) 2017-05-16T23:49:09Z Bike: Because you don't need to introduce new syntax, and doing so is confusing. 2017-05-16T23:49:21Z RedEight quit (Quit: leaving) 2017-05-16T23:49:27Z Bike: and limits you. you can't pass a macro to a function and so on. 2017-05-16T23:49:41Z NeverDie joined #lisp 2017-05-16T23:49:45Z borei: that is good point 2017-05-16T23:50:10Z aeth: Inlining will, as a rule of thumb, really help with functions that deal with numbers and specialized arrays if the calling function knows the types. 2017-05-16T23:50:31Z JuanDaugherty joined #lisp 2017-05-16T23:50:55Z aeth: So e.g. (defun foo (x y) (+ x y)) will use a generic +, but if inlined it might not 2017-05-16T23:51:34Z krator44: does anyone have experience embedding common lisp into c++ using ecl 2017-05-16T23:51:58Z sausages: aeth, declaring x and y to be their intended specific types should do that 2017-05-16T23:52:31Z aeth: sausages: That also works, and might be better, depending on circumstances. 2017-05-16T23:52:43Z krator44: i've looked at some example code and basically.. like i thought embedding using ecl will be less work than the other way around using cffi 2017-05-16T23:52:47Z aeth: You'd have to define a foo for every type combination you use, though 2017-05-16T23:53:01Z aeth: I was talking about an alternative to macros 2017-05-16T23:54:04Z bigos quit (Quit: Leaving) 2017-05-16T23:55:18Z aeth: Macros as an optimization aren't as good as inlining, but type declarations might be better than any macro-style thing. But, either way, use functions where you can. 2017-05-16T23:55:37Z borei: got it ! 2017-05-16T23:55:50Z White_Flame: krator44: CLASP took ECL into C++ 2017-05-16T23:57:51Z krator44: White_Flame: CLASP whats that 2017-05-16T23:58:11Z pjb quit (Ping timeout: 246 seconds) 2017-05-16T23:58:49Z White_Flame: http://bfy.tw/Bpes :) 2017-05-16T23:58:57Z krator44: oh the LLVM thing.. i dont know. sounds unportable 2017-05-16T23:59:10Z White_Flame: it's exactly that, ECL + C++ 2017-05-16T23:59:52Z axion: Does anyone know where drmeister has been? 2017-05-16T23:59:55Z White_Flame: does llvm sound less portable than ecl?