2014-12-27T00:00:20Z dobby156: ah yes that makes sense 2014-12-27T00:00:29Z usrj quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )) 2014-12-27T00:03:10Z pppp2 joined #lisp 2014-12-27T00:06:27Z kami quit (Ping timeout: 272 seconds) 2014-12-27T00:07:35Z Quadrescence: nikki93, watching now 2014-12-27T00:09:22Z mathrick quit (Read error: Connection reset by peer) 2014-12-27T00:09:37Z Petit_Dejeuner: nikki93, Neat. Now I have to go learn how to use the slime inspector. 2014-12-27T00:09:45Z oleo quit (Quit: Verlassend) 2014-12-27T00:09:45Z attila_lendvai quit (Quit: Leaving.) 2014-12-27T00:10:04Z stassats: you're not living your life if you're not using the slime inspector 2014-12-27T00:10:18Z Quadrescence: nikki93, cool, interesting 2014-12-27T00:10:25Z theseb joined #lisp 2014-12-27T00:10:58Z mathrick joined #lisp 2014-12-27T00:11:05Z Petit_Dejeuner: stassats, Well I have been pretty pale for a while. 2014-12-27T00:15:42Z hekmek joined #lisp 2014-12-27T00:15:54Z zophy: i don't see anything in the slime contrib directory.. is there a popular way to get ansi color rendered in the slime repl ? 2014-12-27T00:16:21Z Quadrescence: nikki93, what's up with =this-syntax= 2014-12-27T00:16:38Z stassats: zophy: what happens when you run emacs in the terminal? 2014-12-27T00:16:46Z nikki93: Quadrescence: just something dumb to not conflict *bla* and make it stand out 2014-12-27T00:16:54Z nikki93: Quadrescence: honestly I have no good reason and should be ashamed maybe 2014-12-27T00:17:01Z Quadrescence: no, you do what you want 2014-12-27T00:17:10Z nikki93: hehe 2014-12-27T00:17:14Z nikki93: well just to make systems stand out 2014-12-27T00:17:32Z oleo joined #lisp 2014-12-27T00:17:32Z nikki93: I was thinking hard about it then just went with it to make the proof of concept, will decide on something later 2014-12-27T00:18:02Z nikki93: I didn't want to always do (prop (get-system 'transform) ...) or such, just refer directly as *transform*, and without using reader macros or something 2014-12-27T00:18:12Z oleo quit (Read error: Connection reset by peer) 2014-12-27T00:19:49Z spacebat quit (Ping timeout: 245 seconds) 2014-12-27T00:20:11Z pt1 joined #lisp 2014-12-27T00:20:27Z nell joined #lisp 2014-12-27T00:21:21Z spacebat joined #lisp 2014-12-27T00:23:52Z oleo joined #lisp 2014-12-27T00:24:17Z stassats quit (Ping timeout: 258 seconds) 2014-12-27T00:26:15Z PuercoPop: zophy: https://github.com/fukamachi/prove#colorize-test-reports-on-slime 2014-12-27T00:31:28Z linux_dream quit (Quit: Leaving) 2014-12-27T00:33:58Z m_ joined #lisp 2014-12-27T00:34:39Z m_ is now known as m____ 2014-12-27T00:35:01Z Petit_Dejeuner quit (Ping timeout: 258 seconds) 2014-12-27T00:35:47Z zacharias quit (Ping timeout: 258 seconds) 2014-12-27T00:39:33Z JuanDaugherty joined #lisp 2014-12-27T00:40:45Z zophy: PuercoPop, thanks, that's the best solution i can find. 2014-12-27T00:44:49Z Ukari joined #lisp 2014-12-27T00:46:28Z pt1 quit (Remote host closed the connection) 2014-12-27T00:49:54Z notalanturing quit (Quit: Leaving) 2014-12-27T00:50:31Z nikki93: if I wanna store in a class what class to instantiate for some operation 2014-12-27T00:50:43Z nikki93: should I store a symbol of that classname, or the class object itself as returned by (defclass ...) 2014-12-27T00:50:52Z zajn quit (Read error: Connection reset by peer) 2014-12-27T00:51:06Z Bicyclidine: they're mostly interchangeable but i'd say the class itself 2014-12-27T00:51:10Z Quadrescence: store the symbol, it will make it easier to debug 2014-12-27T00:51:14Z Bicyclidine: which you can get with (find-class name) if you didn't know 2014-12-27T00:51:22Z zajn joined #lisp 2014-12-27T00:52:08Z goglosh joined #lisp 2014-12-27T00:52:24Z nikki93: ok 2014-12-27T00:53:02Z nikki93: I have a pattern where there is a 'system class' which will store instances of the 'cell' class inside it and basically I made macros so I can do 2014-12-27T00:54:03Z nikki93: (define-system my-system (my-parent) (define-cell () ((slot :initarg :slot))) ((system-slot :initarg :system-slot))) does that look like a good idea 2014-12-27T00:54:42Z nikki93: the define-system macro makes my-system always have something as a parent which will figure out what the cell class is and manage internally a hash table of them 2014-12-27T00:55:01Z nikki93: abstract all the bookkeeping away and allow you to define the slots and main behaviors 2014-12-27T00:59:33Z tadni quit (Ping timeout: 258 seconds) 2014-12-27T01:01:00Z vaporatorius quit (Remote host closed the connection) 2014-12-27T01:04:18Z nikki93 quit (Remote host closed the connection) 2014-12-27T01:05:54Z jumblerg quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-27T01:06:53Z urandom_1 quit (Quit: Konversation terminated!) 2014-12-27T01:10:07Z jumblerg joined #lisp 2014-12-27T01:10:44Z hiyosi joined #lisp 2014-12-27T01:11:09Z fantazo joined #lisp 2014-12-27T01:18:59Z innertracks joined #lisp 2014-12-27T01:19:56Z innertracks quit (Client Quit) 2014-12-27T01:23:48Z hekmek quit (Quit: Verlassend) 2014-12-27T01:24:05Z pppp2 quit (Read error: No route to host) 2014-12-27T01:25:13Z innertracks joined #lisp 2014-12-27T01:27:52Z Bicyclidine quit (Ping timeout: 255 seconds) 2014-12-27T01:28:32Z tadni joined #lisp 2014-12-27T01:31:38Z arpunk quit (Ping timeout: 256 seconds) 2014-12-27T01:33:25Z zRecursive joined #lisp 2014-12-27T01:38:39Z zophy quit (Ping timeout: 258 seconds) 2014-12-27T01:46:29Z antonv`` quit (Ping timeout: 245 seconds) 2014-12-27T01:54:23Z Bicyclidine joined #lisp 2014-12-27T01:58:15Z fantazo quit (Quit: Verlassend) 2014-12-27T01:58:17Z pjb: - 2014-12-27T01:59:23Z p4nd4m4n_ is now known as hratsimihah 2014-12-27T02:02:22Z chrisb quit (Ping timeout: 245 seconds) 2014-12-27T02:09:16Z goglosh left #lisp 2014-12-27T02:09:53Z eudoxia quit (Quit: Leaving) 2014-12-27T02:18:46Z arpunk joined #lisp 2014-12-27T02:21:47Z abdsd joined #lisp 2014-12-27T02:22:04Z defaultxr joined #lisp 2014-12-27T02:31:32Z j_king quit (Ping timeout: 245 seconds) 2014-12-27T02:32:23Z j_king joined #lisp 2014-12-27T02:35:30Z jumblerg quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-27T02:38:17Z innertracks quit (Quit: innertracks) 2014-12-27T02:39:39Z enitiz quit (Remote host closed the connection) 2014-12-27T02:42:52Z arpunk quit (Remote host closed the connection) 2014-12-27T02:44:49Z arpunk joined #lisp 2014-12-27T02:47:08Z jayne joined #lisp 2014-12-27T02:48:33Z jayne_ quit (Read error: Connection reset by peer) 2014-12-27T02:53:30Z enitiz joined #lisp 2014-12-27T02:59:20Z hrs joined #lisp 2014-12-27T03:00:28Z kapil__ joined #lisp 2014-12-27T03:01:14Z hrs quit (Client Quit) 2014-12-27T03:08:10Z hrs joined #lisp 2014-12-27T03:08:36Z dagnachew quit (Quit: WeeChat 1.0.1) 2014-12-27T03:24:29Z pyx joined #lisp 2014-12-27T03:24:41Z pyx quit (Client Quit) 2014-12-27T03:26:32Z milosn quit (Read error: Connection reset by peer) 2014-12-27T03:29:03Z zRecursive quit (Remote host closed the connection) 2014-12-27T03:30:23Z nell quit (Ping timeout: 272 seconds) 2014-12-27T03:31:04Z _5kg quit (Ping timeout: 265 seconds) 2014-12-27T03:32:25Z _5kg joined #lisp 2014-12-27T03:34:03Z Vutral quit (Ping timeout: 244 seconds) 2014-12-27T03:35:47Z milosn joined #lisp 2014-12-27T03:39:55Z yrk quit (Quit: ERC (IRC client for Emacs 25.0.50.1)) 2014-12-27T03:43:05Z nell joined #lisp 2014-12-27T03:45:18Z jeffcarp joined #lisp 2014-12-27T03:46:22Z Vutral joined #lisp 2014-12-27T03:50:57Z sw2wolfe joined #lisp 2014-12-27T03:52:49Z Phreak quit (Ping timeout: 265 seconds) 2014-12-27T03:54:21Z sw2wolfe left #lisp 2014-12-27T03:54:23Z cmack quit (Ping timeout: 240 seconds) 2014-12-27T03:54:31Z hiyosi quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-27T03:55:35Z sw2wolfe joined #lisp 2014-12-27T03:56:06Z sw2wolfe left #lisp 2014-12-27T03:57:08Z ggwy joined #lisp 2014-12-27T04:01:03Z Dynasty quit (Quit: ChatZilla 0.9.91.1 [Firefox 34.0.5/20141126041045]) 2014-12-27T04:01:28Z Jameser joined #lisp 2014-12-27T04:01:52Z Phreak joined #lisp 2014-12-27T04:03:39Z towodo quit (Quit: towodo) 2014-12-27T04:04:34Z Dynasty joined #lisp 2014-12-27T04:09:30Z Phreak quit (Ping timeout: 250 seconds) 2014-12-27T04:12:01Z ggwy left #lisp 2014-12-27T04:13:51Z arpunk quit (Remote host closed the connection) 2014-12-27T04:14:29Z ggwy joined #lisp 2014-12-27T04:18:26Z arpunk joined #lisp 2014-12-27T04:18:27Z ggwy left #lisp 2014-12-27T04:18:27Z Phreak joined #lisp 2014-12-27T04:21:27Z jackyw joined #lisp 2014-12-27T04:24:40Z rx_ joined #lisp 2014-12-27T04:27:28Z Phreak quit (Ping timeout: 244 seconds) 2014-12-27T04:32:04Z beach joined #lisp 2014-12-27T04:32:13Z beach: Good morning everyone! 2014-12-27T04:32:30Z Bicyclidine: happy boxing day, beach. 2014-12-27T04:32:52Z beach: Thanks! 2014-12-27T04:32:56Z BitPuffin quit (Ping timeout: 265 seconds) 2014-12-27T04:35:04Z gf3 quit (Ping timeout: 250 seconds) 2014-12-27T04:37:38Z gf3 joined #lisp 2014-12-27T04:37:53Z xach quit (Ping timeout: 186 seconds) 2014-12-27T04:40:16Z Phreak joined #lisp 2014-12-27T04:44:07Z hiyosi joined #lisp 2014-12-27T04:44:49Z kcj joined #lisp 2014-12-27T04:46:07Z ndrei joined #lisp 2014-12-27T04:47:00Z innertracks joined #lisp 2014-12-27T04:47:05Z brucem: hey beach 2014-12-27T04:47:50Z theseb: the same way i bent emacs to my pet utopia via .emacs...i want to bend CL to my perfect pet lisp via macros 2014-12-27T04:48:10Z theseb: everyone gets to have the language just the way they want it! 2014-12-27T04:48:19Z theseb: just like Burger King 2014-12-27T04:48:29Z hrs quit (Quit: Computer has gone to sleep.) 2014-12-27T04:50:45Z jusss joined #lisp 2014-12-27T04:52:44Z zyaku quit (Ping timeout: 245 seconds) 2014-12-27T04:57:31Z s00pcan_ quit (Remote host closed the connection) 2014-12-27T04:59:21Z s00pcan joined #lisp 2014-12-27T05:00:38Z Phreak quit (Ping timeout: 250 seconds) 2014-12-27T05:04:50Z kalzz quit (Ping timeout: 265 seconds) 2014-12-27T05:06:47Z Phreak joined #lisp 2014-12-27T05:07:18Z s00pcan_ joined #lisp 2014-12-27T05:10:22Z vinleod joined #lisp 2014-12-27T05:10:29Z jackyw quit (Remote host closed the connection) 2014-12-27T05:10:46Z jackyw joined #lisp 2014-12-27T05:12:44Z tkhoa2711 joined #lisp 2014-12-27T05:12:54Z tkhoa2711 quit (Client Quit) 2014-12-27T05:15:34Z Phreak quit (Ping timeout: 264 seconds) 2014-12-27T05:22:15Z kalzz joined #lisp 2014-12-27T05:23:08Z nell quit (Quit: WeeChat 1.1-rc1) 2014-12-27T05:25:03Z Phreak joined #lisp 2014-12-27T05:29:50Z deraadt joined #lisp 2014-12-27T05:33:43Z deraadt quit (Quit: Changing server) 2014-12-27T05:33:47Z isBEKaml joined #lisp 2014-12-27T05:40:55Z innertracks quit (Quit: innertracks) 2014-12-27T05:45:30Z jusss quit (Ping timeout: 276 seconds) 2014-12-27T05:46:15Z isBEKaml quit (Quit: leaving) 2014-12-27T05:48:23Z LiamH quit (Quit: Leaving.) 2014-12-27T05:49:15Z jackyw quit (Remote host closed the connection) 2014-12-27T05:49:30Z jackyw joined #lisp 2014-12-27T05:53:50Z m____ quit (Remote host closed the connection) 2014-12-27T06:04:12Z Phreak quit (Ping timeout: 256 seconds) 2014-12-27T06:10:48Z rx_ quit (Ping timeout: 244 seconds) 2014-12-27T06:12:08Z rx_ joined #lisp 2014-12-27T06:14:38Z Phreak joined #lisp 2014-12-27T06:18:07Z enitiz quit (Ping timeout: 255 seconds) 2014-12-27T06:20:21Z nostoi joined #lisp 2014-12-27T06:20:55Z theseb quit (Quit: Leaving) 2014-12-27T06:21:52Z vinleod quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-12-27T06:28:09Z beach: I think Paul Dietz' test suite is a great thing to have. I sure hope he got a lot of help with it. 2014-12-27T06:28:56Z beach: ... because it's an excellent example of what collaboration between members of the Lisp community could accomplish. 2014-12-27T06:29:05Z akkad: it's amazing to see so many implementations that are inactive devel. 2014-12-27T06:29:53Z vinleod joined #lisp 2014-12-27T06:34:31Z akkad: in active 2014-12-27T06:37:18Z CrazyM4n joined #lisp 2014-12-27T06:39:37Z Hexstream: beach: ... Would you find it less interesting if he did 99%+ of it himself? 2014-12-27T06:40:13Z beach: Hexstream: No, that's not what I meant. 2014-12-27T06:41:12Z theseb joined #lisp 2014-12-27T06:41:38Z theseb: Lisp has a different command for defining and changing variables right? 2014-12-27T06:41:57Z theseb: can you use 1 command for both? 2014-12-27T06:42:01Z beach: theseb: Lisp doesn't have "commands" at all. 2014-12-27T06:42:07Z theseb: or....detect if var exists or not and then decide which need to use? 2014-12-27T06:42:19Z beach: theseb: Assigning values to a variable is done by SETQ (or SETF). 2014-12-27T06:42:20Z theseb: beach: function/special form/macro////etc. 2014-12-27T06:42:40Z theseb: beach: i read SICP...they had define and set!......in python they didn't distinguish 2014-12-27T06:42:51Z beach: theseb: Creating a global variable can be done with DEFPARAMETER, DEFVAR, etc 2014-12-27T06:42:54Z theseb: beach: you just did an assignment the same for initialization AND mutation 2014-12-27T06:43:07Z hvxgr quit (Ping timeout: 252 seconds) 2014-12-27T06:43:23Z beach: theseb: Creating a local variable can be done with LET, LET*, etc. 2014-12-27T06:43:39Z theseb: beach: and then to CHANGE something created with setq or defvar do you use a different function/special form? 2014-12-27T06:43:49Z theseb: beach: like set! in scheme? 2014-12-27T06:44:05Z beach: theseb: You can't create a variable with SETQ. 2014-12-27T06:44:14Z jusss joined #lisp 2014-12-27T06:44:14Z beach: It must already exist for you to be allowed to use SETQ. 2014-12-27T06:44:14Z theseb: beach: wait..so setq is for mutation? 2014-12-27T06:44:17Z theseb: ah 2014-12-27T06:44:18Z beach: Yes. 2014-12-27T06:44:18Z theseb: ok 2014-12-27T06:44:57Z theseb: beach: possible to see if a var exists somehow so you know dynamically whether to switch to defvar or setq? 2014-12-27T06:44:58Z Hexstream: SETQ is mostly for historical curiosity. Better use SETF instead. 2014-12-27T06:45:34Z beach: theseb: You can always use DEFPARAMETER to change the value. If it doesn't exist, it is created. 2014-12-27T06:45:34Z Hexstream: (Yes, I know, Weitz.) 2014-12-27T06:46:22Z beach: theseb: I advice you read up on the difference between DEFPARAMETER and DEFVAR. 2014-12-27T06:46:51Z theseb: k 2014-12-27T06:47:52Z beach: theseb: And, yes, what Hexstream said. Most of the time you would want to use SETF rather than SETQ. 2014-12-27T06:49:34Z jusss quit (Remote host closed the connection) 2014-12-27T06:52:22Z optikalmouse quit (Ping timeout: 256 seconds) 2014-12-27T06:59:37Z beach: Hexstream: What I meant was that creating a test suite like that is a huge task, but it is also straightforward and boring, and it can be done in parallel. Therefore I hope he had a lot of help. I fear not though. 2014-12-27T07:00:53Z Phreak quit (Ping timeout: 240 seconds) 2014-12-27T07:02:14Z Hexstream: beach: Yeah. I just love the idea of empowered individuals who don't restrain themselves and rely on outside resources to bolster their efforts. If that does come along, that's great too... 2014-12-27T07:03:32Z jusss joined #lisp 2014-12-27T07:05:13Z beach: Hexstream: I agree. And experience shows that those to think that they can count on such outside resources are usually wrong, unless they invest a considerable amount of energy upfront. 2014-12-27T07:06:18Z Phreak joined #lisp 2014-12-27T07:07:22Z Hexstream: beach: Yes! 2014-12-27T07:07:35Z jusss quit (Remote host closed the connection) 2014-12-27T07:09:00Z brucem: I almost never get any help for what I do with over 3 years of part-time effort. I get used to it. 2014-12-27T07:09:07Z jusss joined #lisp 2014-12-27T07:10:38Z jusss quit (Remote host closed the connection) 2014-12-27T07:11:45Z zRecursive joined #lisp 2014-12-27T07:12:02Z jusss joined #lisp 2014-12-27T07:12:34Z beach: brucem: Yes, and I think that is a must. 2014-12-27T07:13:27Z hvxgr joined #lisp 2014-12-27T07:13:31Z brucem: beach: I'm in the midst of fixing up a conversion of a few hundred pages of documentation to a modern format for DUIM ... and fixing a compiler bug that was last fixed in 1997 and broken sometime after that :) 2014-12-27T07:16:35Z beach: brucem: Congratulations! Though that's not a task that would be easy to do in parallel as far as I can tell. 2014-12-27T07:17:18Z brucem: the docs are several files... I did it in parallel with someone else once before (about a year ago when we started our first pass on these docs). 2014-12-27T07:18:27Z jusss quit (Ping timeout: 276 seconds) 2014-12-27T07:19:03Z _5kg quit (Ping timeout: 252 seconds) 2014-12-27T07:19:44Z theseb quit (Quit: Leaving) 2014-12-27T07:23:32Z edgar-rft quit (Quit: session disappeared because no continuation exists) 2014-12-27T07:29:52Z Phreak quit (Ping timeout: 245 seconds) 2014-12-27T07:38:12Z Phreak joined #lisp 2014-12-27T07:42:20Z milosn quit (Read error: Connection reset by peer) 2014-12-27T07:43:13Z milosn joined #lisp 2014-12-27T07:47:26Z vinleod quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-12-27T07:54:34Z pnpuff joined #lisp 2014-12-27T07:57:52Z tadni quit (Ping timeout: 265 seconds) 2014-12-27T08:01:56Z drdanmaku quit (Quit: Connection closed for inactivity) 2014-12-27T08:03:15Z _5kg joined #lisp 2014-12-27T08:04:02Z Vutral quit (Ping timeout: 245 seconds) 2014-12-27T08:04:24Z ggole joined #lisp 2014-12-27T08:04:27Z tesuji joined #lisp 2014-12-27T08:04:29Z tesuji quit (Changing host) 2014-12-27T08:04:29Z tesuji joined #lisp 2014-12-27T08:05:20Z nostoi quit (Quit: Verlassend) 2014-12-27T08:05:21Z Quadrescence quit (Quit: This computer has gone to sleep) 2014-12-27T08:05:35Z Quadrescence joined #lisp 2014-12-27T08:05:38Z milosn quit (Read error: Connection reset by peer) 2014-12-27T08:06:06Z Quadrescence quit (Client Quit) 2014-12-27T08:07:27Z gf3_ joined #lisp 2014-12-27T08:09:06Z gf3 quit (Ping timeout: 264 seconds) 2014-12-27T08:11:11Z milosn joined #lisp 2014-12-27T08:14:24Z Vutral joined #lisp 2014-12-27T08:15:10Z Hexstream left #lisp 2014-12-27T08:20:07Z bgs100 quit (Quit: bgs100) 2014-12-27T08:22:58Z zajn quit (Remote host closed the connection) 2014-12-27T08:23:49Z jtza8 joined #lisp 2014-12-27T08:27:21Z rx_ quit (Quit: ircN 9.00 for mIRC (20100824-DEV) - www.ircN.org) 2014-12-27T08:27:57Z tadni joined #lisp 2014-12-27T08:32:13Z vinleod joined #lisp 2014-12-27T08:35:30Z CrazyM4n quit (Remote host closed the connection) 2014-12-27T08:37:32Z MrWoohoo joined #lisp 2014-12-27T08:46:11Z theos quit (Disconnected by services) 2014-12-27T08:46:41Z theos joined #lisp 2014-12-27T08:49:56Z scymtym quit (Ping timeout: 244 seconds) 2014-12-27T08:52:05Z pt1 joined #lisp 2014-12-27T08:56:04Z spacebat quit (Ping timeout: 245 seconds) 2014-12-27T09:10:31Z oudeis joined #lisp 2014-12-27T09:16:47Z nikki93 joined #lisp 2014-12-27T09:20:27Z innertracks joined #lisp 2014-12-27T09:23:25Z araujo quit (Ping timeout: 265 seconds) 2014-12-27T09:24:02Z nikki93 quit (Ping timeout: 244 seconds) 2014-12-27T09:24:45Z angavrilov joined #lisp 2014-12-27T09:25:41Z araujo joined #lisp 2014-12-27T09:26:32Z manuel__ joined #lisp 2014-12-27T09:30:47Z oudeis quit (Quit: This computer has gone to sleep) 2014-12-27T09:31:17Z zRecursive quit (Remote host closed the connection) 2014-12-27T09:31:57Z yeticry quit (Ping timeout: 240 seconds) 2014-12-27T09:33:12Z jusss joined #lisp 2014-12-27T09:34:18Z yeticry joined #lisp 2014-12-27T09:34:31Z Maurice_TCF joined #lisp 2014-12-27T09:34:36Z Maurice_TCF_ joined #lisp 2014-12-27T09:34:40Z vinleod quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-12-27T09:34:48Z mishoo joined #lisp 2014-12-27T09:35:58Z nydel quit (Quit: WeeChat 0.4.2) 2014-12-27T09:36:38Z jusss quit (Remote host closed the connection) 2014-12-27T09:36:52Z GuilOooo quit (Ping timeout: 240 seconds) 2014-12-27T09:40:31Z protist joined #lisp 2014-12-27T09:40:34Z sellout quit (Ping timeout: 250 seconds) 2014-12-27T09:42:23Z jusss joined #lisp 2014-12-27T09:42:24Z GuilOooo joined #lisp 2014-12-27T09:43:04Z nikki93 joined #lisp 2014-12-27T09:43:23Z Quadrescence joined #lisp 2014-12-27T09:43:27Z sellout joined #lisp 2014-12-27T09:43:34Z sellout is now known as Guest57395 2014-12-27T09:46:08Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T09:46:13Z nikki93__ joined #lisp 2014-12-27T09:46:16Z hekmek joined #lisp 2014-12-27T09:46:59Z nikki93__ quit (Read error: Connection reset by peer) 2014-12-27T09:47:12Z nikki93 joined #lisp 2014-12-27T09:48:38Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T09:49:00Z nikki93 joined #lisp 2014-12-27T09:51:51Z rick-monster quit (Ping timeout: 276 seconds) 2014-12-27T09:52:19Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T09:52:31Z nikki93 joined #lisp 2014-12-27T09:54:19Z jtza8 quit (Ping timeout: 244 seconds) 2014-12-27T09:55:48Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T09:56:14Z nikki93 joined #lisp 2014-12-27T09:56:52Z nikki93 quit (Read error: No route to host) 2014-12-27T09:57:11Z nikki93 joined #lisp 2014-12-27T09:59:21Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T09:59:47Z nikki93 joined #lisp 2014-12-27T10:01:50Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T10:02:52Z nikki93 joined #lisp 2014-12-27T10:05:03Z rick-monster joined #lisp 2014-12-27T10:05:41Z tharugrim quit (Ping timeout: 244 seconds) 2014-12-27T10:06:26Z tharugrim joined #lisp 2014-12-27T10:06:39Z frkout_ joined #lisp 2014-12-27T10:09:02Z oleo is now known as Guest94202 2014-12-27T10:09:10Z nikki93 quit (Ping timeout: 250 seconds) 2014-12-27T10:09:16Z Joreji joined #lisp 2014-12-27T10:10:10Z frkout quit (Ping timeout: 264 seconds) 2014-12-27T10:10:49Z oleo__ joined #lisp 2014-12-27T10:11:55Z frkout_ quit (Ping timeout: 272 seconds) 2014-12-27T10:11:57Z Guest94202 quit (Ping timeout: 245 seconds) 2014-12-27T10:14:00Z oudeis joined #lisp 2014-12-27T10:15:00Z Joreji quit (Ping timeout: 258 seconds) 2014-12-27T10:15:32Z Joreji joined #lisp 2014-12-27T10:19:52Z Joreji quit (Ping timeout: 245 seconds) 2014-12-27T10:22:51Z posterdati300 joined #lisp 2014-12-27T10:30:55Z pt1 quit (Remote host closed the connection) 2014-12-27T10:31:54Z innertracks quit (Quit: innertracks) 2014-12-27T10:33:33Z stassats joined #lisp 2014-12-27T10:35:08Z defaultxr quit (Quit: gnight) 2014-12-27T10:35:08Z pnpuff quit (Quit: Lost terminal) 2014-12-27T10:37:42Z tonetto joined #lisp 2014-12-27T10:37:48Z tonetto: ciao 2014-12-27T10:38:09Z vaporatorius joined #lisp 2014-12-27T10:38:37Z beach: Hello tonetto. 2014-12-27T10:40:03Z maxpeck joined #lisp 2014-12-27T10:40:13Z tonetto quit (Client Quit) 2014-12-27T10:43:30Z munksgaard joined #lisp 2014-12-27T10:43:44Z pt1 joined #lisp 2014-12-27T10:44:00Z tharugrim quit (Quit: ZNC - http://znc.in) 2014-12-27T10:45:08Z tharugrim joined #lisp 2014-12-27T10:46:31Z _m___ joined #lisp 2014-12-27T10:48:26Z jusss quit (Remote host closed the connection) 2014-12-27T10:49:46Z arpunk quit (Ping timeout: 264 seconds) 2014-12-27T10:50:15Z jusss joined #lisp 2014-12-27T10:52:41Z mrkkrp joined #lisp 2014-12-27T10:53:17Z jusss quit (Remote host closed the connection) 2014-12-27T10:53:41Z manuel__ quit (Quit: manuel__) 2014-12-27T10:54:06Z jusss joined #lisp 2014-12-27T10:54:56Z _m___ is now known as _M___ 2014-12-27T10:56:31Z spacebat joined #lisp 2014-12-27T10:56:39Z dkcl quit (Read error: Connection reset by peer) 2014-12-27T10:58:18Z dandersen joined #lisp 2014-12-27T11:01:20Z MoALTz joined #lisp 2014-12-27T11:01:37Z hekmek quit (Quit: Verlassend) 2014-12-27T11:04:00Z jusss quit (Ping timeout: 276 seconds) 2014-12-27T11:04:05Z Dynasty quit (Quit: ChatZilla 0.9.91.1 [Firefox 34.0.5/20141126041045]) 2014-12-27T11:05:02Z jusss` joined #lisp 2014-12-27T11:06:34Z jusss` quit (Remote host closed the connection) 2014-12-27T11:07:16Z jusss` joined #lisp 2014-12-27T11:09:20Z jusss` quit (Remote host closed the connection) 2014-12-27T11:09:49Z Bicyclidine quit (Ping timeout: 258 seconds) 2014-12-27T11:09:56Z pnpuff joined #lisp 2014-12-27T11:10:23Z nikki93 joined #lisp 2014-12-27T11:15:25Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T11:15:40Z manuel__ joined #lisp 2014-12-27T11:15:43Z nikki93 joined #lisp 2014-12-27T11:18:35Z araujo quit (Quit: Leaving) 2014-12-27T11:19:33Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T11:19:44Z nikki93 joined #lisp 2014-12-27T11:21:24Z ehu joined #lisp 2014-12-27T11:23:43Z farhaven joined #lisp 2014-12-27T11:23:57Z nikki93 quit (Remote host closed the connection) 2014-12-27T11:24:31Z nikki93 joined #lisp 2014-12-27T11:26:58Z kcj quit (Read error: Connection reset by peer) 2014-12-27T11:28:59Z nikki93 quit (Ping timeout: 245 seconds) 2014-12-27T11:30:17Z dandersen quit (Read error: Connection reset by peer) 2014-12-27T11:31:26Z dandersen joined #lisp 2014-12-27T11:31:31Z kapil__ quit (Quit: Connection closed for inactivity) 2014-12-27T11:34:49Z psy quit (Ping timeout: 245 seconds) 2014-12-27T11:36:27Z yenda joined #lisp 2014-12-27T11:40:19Z mathrick quit (Remote host closed the connection) 2014-12-27T11:41:03Z mathrick joined #lisp 2014-12-27T11:42:24Z mishoo quit (Ping timeout: 258 seconds) 2014-12-27T11:46:09Z nikki93 joined #lisp 2014-12-27T11:51:13Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T11:51:17Z nikki93_ joined #lisp 2014-12-27T11:52:56Z nikki93_ quit (Read error: Connection reset by peer) 2014-12-27T11:53:09Z nikki93 joined #lisp 2014-12-27T11:56:07Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T11:56:52Z Ethan- joined #lisp 2014-12-27T11:56:53Z nikki93 joined #lisp 2014-12-27T11:58:34Z Ukari quit (Quit: Leaving.) 2014-12-27T11:58:40Z nikki93 quit (Read error: Connection reset by peer) 2014-12-27T11:58:59Z nikki93 joined #lisp 2014-12-27T12:00:54Z nell joined #lisp 2014-12-27T12:04:31Z hardenedapple joined #lisp 2014-12-27T12:06:34Z Bicyclidine joined #lisp 2014-12-27T12:08:20Z atgreen quit (Ping timeout: 250 seconds) 2014-12-27T12:09:13Z abdsd quit (Quit: leaving) 2014-12-27T12:12:10Z atgreen joined #lisp 2014-12-27T12:16:17Z nikki93: do you guys max at 80 columns or 100 columns? 2014-12-27T12:16:21Z nikki93: just a stylic question 2014-12-27T12:17:47Z Quadrescence: i try 80 but not a strict rule, especially if it makes following indentation awful or harder to read 2014-12-27T12:17:54Z attila_lendvai joined #lisp 2014-12-27T12:17:54Z attila_lendvai quit (Changing host) 2014-12-27T12:17:54Z attila_lendvai joined #lisp 2014-12-27T12:17:56Z stassats: nikki93: 93 2014-12-27T12:18:06Z nikki93: stassats: wait really? 2014-12-27T12:18:13Z stassats: of course not, 80 2014-12-27T12:18:19Z nikki93: stassats: ohhhhh. i get it. u funny 2014-12-27T12:18:27Z nikki93: k going with 80 2014-12-27T12:18:37Z Quadrescence: but remember, stassats earlier was determined to not be a lisper 2014-12-27T12:19:01Z nikki93: 100 is too wide 2014-12-27T12:19:02Z stassats: right, i don't want to be described by association with some group 2014-12-27T12:19:22Z Quadrescence: stassats, you're always gonna be a member of some set, whether you like it or not 2014-12-27T12:19:36Z Karl_Dscc joined #lisp 2014-12-27T12:19:39Z Quadrescence: ;) 2014-12-27T12:19:54Z nikki93: he's def in the group of people that don't like to be described by association with groups 2014-12-27T12:20:20Z manuel__ quit (Quit: manuel__) 2014-12-27T12:20:23Z adlai quit (Ping timeout: 250 seconds) 2014-12-27T12:21:00Z stassats: Quadrescence: can i be a member of a set of sets which are not member of themselves? 2014-12-27T12:21:21Z Quadrescence: Can I call you Russell? 2014-12-27T12:22:23Z adlai joined #lisp 2014-12-27T12:22:52Z kapil__ joined #lisp 2014-12-27T12:23:04Z manuel__ joined #lisp 2014-12-27T12:23:17Z Adeon quit (Ping timeout: 240 seconds) 2014-12-27T12:24:10Z Quadrescence quit (Quit: This computer has gone to sleep) 2014-12-27T12:24:22Z Adeon joined #lisp 2014-12-27T12:26:07Z isBEKaml joined #lisp 2014-12-27T12:29:15Z hekmek joined #lisp 2014-12-27T12:29:27Z Mon_Ouie joined #lisp 2014-12-27T12:29:28Z Mon_Ouie quit (Changing host) 2014-12-27T12:29:28Z Mon_Ouie joined #lisp 2014-12-27T12:30:10Z nogart joined #lisp 2014-12-27T12:30:53Z BitPuffin joined #lisp 2014-12-27T12:32:19Z pnpuff: a proper subset of any nonempty set :-) 2014-12-27T12:32:28Z jtza8 joined #lisp 2014-12-27T12:34:53Z nell quit (Quit: WeeChat 1.1-rc1) 2014-12-27T12:41:48Z manuel__ quit (Quit: manuel__) 2014-12-27T12:46:24Z theos quit (Disconnected by services) 2014-12-27T12:46:51Z manuel__ joined #lisp 2014-12-27T12:46:51Z theos joined #lisp 2014-12-27T12:51:29Z pnpuff quit (Quit: Lost terminal) 2014-12-27T12:52:52Z oudeis quit (Quit: This computer has gone to sleep) 2014-12-27T12:54:13Z mband joined #lisp 2014-12-27T12:54:26Z oudeis joined #lisp 2014-12-27T12:54:28Z theos quit (Disconnected by services) 2014-12-27T12:54:46Z itheos joined #lisp 2014-12-27T12:57:16Z nikki93 quit (Ping timeout: 255 seconds) 2014-12-27T12:57:52Z nikki93 joined #lisp 2014-12-27T13:00:15Z adlai quit (Ping timeout: 250 seconds) 2014-12-27T13:01:32Z jusss joined #lisp 2014-12-27T13:03:54Z kcj joined #lisp 2014-12-27T13:04:22Z ehu quit 2014-12-27T13:06:20Z Ainieco joined #lisp 2014-12-27T13:06:25Z Ainieco: hello 2014-12-27T13:06:47Z isBEKaml_ joined #lisp 2014-12-27T13:06:58Z Ainieco: how to make struct field without default value but with string type? 2014-12-27T13:06:59Z manuel__ quit (Quit: manuel__) 2014-12-27T13:07:18Z Ainieco: basically i want it to be required field if that makes sense 2014-12-27T13:07:31Z dim: default is nil, which is of null type, not string type 2014-12-27T13:07:43Z dim: so you can use (or null string) as your type specification 2014-12-27T13:08:00Z Zhivago: Look at the constructor you produce. 2014-12-27T13:08:31Z dim: in some places I'm doing (declare (type (or null simple-string) string)) if that helps you 2014-12-27T13:08:35Z Ainieco: dim: looks like it's opposite of what i want, because it still possible to create struct without setting that fields because of (or). 2014-12-27T13:09:25Z isBEKaml quit (Ping timeout: 255 seconds) 2014-12-27T13:09:39Z dim: oh, when you said no default value you mean that you want to force the slot to have a value? then Zhivago's idea is better, just provide your own constructor and error out when the slot is left empty (by means of error or assert or check-type or something else) 2014-12-27T13:09:45Z Zhivago: Possible shouldn't be an issue - just supply a suitable constructor for people to use. 2014-12-27T13:09:55Z Ainieco: dim: (defstruct foo (a nil :type (or null string))) (make-foo) 2014-12-27T13:10:09Z Ainieco: Zhivago: but is it possible on struct declaration level? 2014-12-27T13:10:23Z stassats: (defstruct foo (a nil :type string)) is conforming 2014-12-27T13:10:23Z Ainieco: like (not null) or something 2014-12-27T13:10:59Z dim: or make it a class and provide an initialisation method (defmethod initialize-instance :after (...) ...) where you check for the slot? 2014-12-27T13:11:00Z Zhivago: Have it produce %make-foo% and call it in your make-foo, and expose that. 2014-12-27T13:11:12Z Ainieco: stassats: oh, i didn't know that it's possible to assign default value of different type 2014-12-27T13:11:15Z Ainieco: stassats: thanks! 2014-12-27T13:11:48Z stassats: not all implementations may typecheck upon construction, so the usual idiom is (defstruct foo (a (error "missing a") :type string)) 2014-12-27T13:12:01Z dim: nice 2014-12-27T13:12:06Z Ainieco: stassats: great, thank you for an explanation 2014-12-27T13:12:28Z huza joined #lisp 2014-12-27T13:12:36Z stassats: sbcl uses internally (defun missing-arg () (error "A required &KEY or &OPTIONAL argument was not supplied.")) 2014-12-27T13:12:49Z stassats: with (declaim (ftype (function () nil) missing-arg)) 2014-12-27T13:13:39Z stassats: another way is (defstruct (foo (:constructor make-foo (a))) (a nil :type string)) 2014-12-27T13:13:47Z stassats: ow you won't be able to construct it without supplying a 2014-12-27T13:13:56Z stassats: caviet, you can't read such a structure back 2014-12-27T13:14:20Z stassats: (read-from-string (princ-to-string (make-foo ""))) => 2014-12-27T13:14:22Z stassats: "The FOO structure does not have a default constructor." 2014-12-27T13:14:49Z stassats: f(defstruct (foo (:constructor make-foo (a)) (:constructor %make-foo)) (a nil :type string)) will solve that 2014-12-27T13:15:04Z stassats: ok, did i exhaust all the options? so that pjb won't come back to haunt me 2014-12-27T13:15:35Z angavrilov quit (Remote host closed the connection) 2014-12-27T13:17:01Z eudoxia joined #lisp 2014-12-27T13:17:36Z dim: forgot that it could also be a class? 2014-12-27T13:18:22Z dim: I'm still not clear on the advantages of using structs or classes 2014-12-27T13:18:38Z dim: I do like the simplicity of structs, tho 2014-12-27T13:18:41Z stassats: a class doesn't normally provide typechecking, due to the redifinition business 2014-12-27T13:18:46Z stassats: dim: faster, more compact 2014-12-27T13:18:57Z dim: it's a vector in disguise, right? 2014-12-27T13:19:03Z stassats: not really 2014-12-27T13:19:07Z adlai joined #lisp 2014-12-27T13:19:23Z stassats: as much as anything is a vector in disguise, as much as vector is a sequence of bytes 2014-12-27T13:19:26Z dim: mmm I though default struct accessor where comparable to aref 2014-12-27T13:20:12Z dim: and faster covers what? I guess defgeneric and defmethod incurs the same per-call cost against structs or classes? 2014-12-27T13:20:32Z stassats: allocation, access 2014-12-27T13:20:46Z stassats: specialization 2014-12-27T13:20:50Z dim: so make-foo and with-slots and friends? 2014-12-27T13:20:54Z stassats: also more thorough typechecking 2014-12-27T13:21:00Z stassats: dim: with-slots doesn't work on structures 2014-12-27T13:21:07Z dim: ahah, showing my ignorance again 2014-12-27T13:21:25Z stassats: defgeneric and defmethod can be used on structures 2014-12-27T13:21:28Z dim: ok I'll continue using structs when I don't feel the need for a class 2014-12-27T13:21:54Z stassats: now for the downsides: no redefinition protocol, no multiple inheritance 2014-12-27T13:22:23Z stassats: no MOP 2014-12-27T13:22:46Z dim: redefinition protocol is easy to live with for me as I normally don't keep instances around in the REPL and tend to ship by means of save-lisp-and-die rather than upgrading live code in-place 2014-12-27T13:23:11Z dim: and not being an OOP fan, multiple inheritance is not missing 2014-12-27T13:23:19Z dim: no MOP might be a problem in cases 2014-12-27T13:23:29Z dim: but then you switch to defclass 2014-12-27T13:23:50Z dim: s/live with/live whithout/ of course 2014-12-27T13:23:59Z gregburd_ is now known as gregburd 2014-12-27T13:25:05Z isBEKaml_ is now known as isBEKaml 2014-12-27T13:25:15Z isBEKaml quit (Changing host) 2014-12-27T13:25:15Z isBEKaml joined #lisp 2014-12-27T13:25:36Z jusss quit (Remote host closed the connection) 2014-12-27T13:26:22Z Ainieco: dim: personally going with "don't pay for what you not going to use" kind of philosophy so for all that time i'm using common lisp i never felt a need in clos, really 2014-12-27T13:26:30Z jusss joined #lisp 2014-12-27T13:27:11Z Ainieco: but i never wrote anything huge/production/entirprise/buzzwords in lisp anyways so probably it's yet to come for me 2014-12-27T13:27:27Z stassats: good thing that CLOS is not huge/production/entirprise/buzzworthy 2014-12-27T13:27:41Z Zhivago: Generic functions can be useful. 2014-12-27T13:28:05Z stassats: Ainieco: and CLOS is really unlike other OO systems 2014-12-27T13:28:12Z stassats: so you don't know what you are missing or not missing 2014-12-27T13:28:13Z Ainieco: stassats: i meant these are the places when one might want to use clos in my imagination 2014-12-27T13:28:50Z Ainieco: stassats: yeah, probably. not going to argue with more knowlegable person on topic 2014-12-27T13:29:13Z stassats: minion: Keene? 2014-12-27T13:29:13Z minion: Keene: No definition was found in the first 5 lines of http://www.cliki.net/Keene 2014-12-27T13:29:20Z Ainieco: just wanted to say that structs suited all my needs so far :) 2014-12-27T13:30:20Z hrs joined #lisp 2014-12-27T13:31:10Z nikki93: when you want to store state through many calls of a defun, do you enclose it in a let? 2014-12-27T13:31:32Z stassats: i'm a fan of load-time-value and conses or what have you 2014-12-27T13:31:34Z nikki93: this is for a thing that prints the frames per second on screen, just accumulates frame count for a while then prints it 2014-12-27T13:32:30Z Ainieco: Zhivago: yeah, generic functions can be useful indeed but it's possible to write your own dispatcher function/macro for set of structs without having to pay all that overhead of classes 2014-12-27T13:32:52Z stassats: nikki93: (defun fps () (let ((state (load-time-value (list 0)))) (incf (car state)))) 2014-12-27T13:33:13Z stassats: no closures, no top-levelness breakage, win-win 2014-12-27T13:33:42Z Ainieco: what is keybinding to go up in history in slime repl? when i hit C-p or up arrow in just moves cursor? 2014-12-27T13:34:03Z Ainieco: arrow it* 2014-12-27T13:34:08Z stassats: M-p 2014-12-27T13:34:18Z Ainieco: stassats: great, thank you once again 2014-12-27T13:34:19Z stassats: with history 2014-12-27T13:34:26Z stassats: with history matching 2014-12-27T13:35:02Z stassats: C-up doesn't search anything, but awkward as hell to type 2014-12-27T13:37:13Z Ainieco: yeah, hate to press arrow keys as well 2014-12-27T13:37:59Z stassats: with the empty repl M-p is the same, but the searching functionality is really useful 2014-12-27T13:38:12Z arpunk joined #lisp 2014-12-27T13:38:32Z dim: I'm not sure about the overhead of classes really, I tend to only use them for long-lived objects, keeping around a complex state etc... not for the computations themselves 2014-12-27T13:39:08Z nikki93: stassats: i see, that's cool 2014-12-27T13:39:09Z Ainieco: dim: in my humble opinion it's the wrong reason to use classes 2014-12-27T13:39:13Z nikki93: stassats: what's the usual way that people do it though? 2014-12-27T13:39:18Z dim: wow I missed out totally that M-p searches if you typed something 2014-12-27T13:39:35Z Bicyclidine quit (Ping timeout: 265 seconds) 2014-12-27T13:39:47Z nikki93: for me M-p never really works because paredit closes parens and it doesn't quite ever match 2014-12-27T13:39:51Z stassats: nikki93: closures is a pretty standard way 2014-12-27T13:39:54Z dim: Ainieco: state + dispatching is the only cases where I use classes 2014-12-27T13:40:03Z nikki93: stassats: ok cool, I'm not that against the let outside thing, so I'll stick to that 2014-12-27T13:40:06Z stassats: nikki93: and is a bit simpler code wise, but like load-time-value better 2014-12-27T13:40:09Z nikki93: stassats: load-time-value is good to know though, thx 2014-12-27T13:40:14Z dim: nikki93: I don't have paredit in the REPL 2014-12-27T13:40:24Z nikki93: dim: why not? 2014-12-27T13:40:39Z stassats: because M-p stops working 2014-12-27T13:40:48Z dim: just didn't think to activate it, and found out it makes life easiers for some things 2014-12-27T13:40:56Z dim: like M-p ;-) 2014-12-27T13:40:58Z jackyw quit (Read error: Connection reset by peer) 2014-12-27T13:41:02Z stassats: i don't write code in the repl, so, why should it have paredit? 2014-12-27T13:41:11Z stassats: it doesn't have syntax highlighting either 2014-12-27T13:41:23Z nikki93: but you do write code, like ... (do-stuff bla) is code right 2014-12-27T13:41:46Z stassats: i do (do-stuff (bla (haa C-RET 2014-12-27T13:41:47Z dim: it's not the same kind of activity tho 2014-12-27T13:42:19Z dim: C-RET, another discovery 2014-12-27T13:42:25Z nikki93: lolz 2014-12-27T13:42:41Z _death: nikki93: I just use a special variable.. easier to inspect 2014-12-27T13:42:52Z nikki93: maybe slime should just search from beginning till point 2014-12-27T13:42:54Z nikki93: for m-p 2014-12-27T13:43:14Z stassats: C-c C-p will jump to the previous repl input 2014-12-27T13:43:21Z nikki93: _death: yeah, I figured the same. but I don't want to pollute wiht special vars everywhere. 2014-12-27T13:44:12Z Maurice_TCF quit (Quit: Leaving) 2014-12-27T13:44:12Z Maurice_TCF_ quit (Quit: Leaving) 2014-12-27T13:44:45Z enitiz joined #lisp 2014-12-27T13:44:57Z Ainieco: stassats: do you know how hash table is implemented in sbcl? is it "real" hash table(wich is computes hash for key and then searches by that hash and not key) or sort of red black tree? 2014-12-27T13:45:10Z stassats: a real hashtable 2014-12-27T13:45:47Z antonv joined #lisp 2014-12-27T13:45:55Z _death: why would it be a red-black tree when it's called hash-table 2014-12-27T13:46:03Z antonv: anyone knows how to use this: https://github.com/LowH/triangle-assets ? 2014-12-27T13:46:11Z stassats: it could be a plist for all you know 2014-12-27T13:46:51Z stassats: "The intent is that this mapping be implemented by a hashing mechanism, such as that described in Section 6.4 ``Hashing'' of The Art of Computer Programming, Volume 3 (pp506-549). In spite of this intent, no conforming implementation is required to use any particular technique to implement the mapping." 2014-12-27T13:47:14Z nikki93_ joined #lisp 2014-12-27T13:47:23Z _death: stassats: yeah, it could also be a banana if you like to stipulate terms this way 2014-12-27T13:47:33Z jusss quit (Remote host closed the connection) 2014-12-27T13:47:48Z stassats: _death: if a rb tree is faster, then why not? 2014-12-27T13:48:05Z Ainieco: stassats: i'm just confused by :test in make-hash-table because why bother if hashed keys are integers(probably) 2014-12-27T13:48:17Z jusss joined #lisp 2014-12-27T13:48:22Z stassats: Ainieco: they are not 2014-12-27T13:48:25Z kcj quit (Remote host closed the connection) 2014-12-27T13:48:37Z Ainieco: why does it need to compore keys if that is not a tree 2014-12-27T13:48:54Z stassats: to resolve collisions 2014-12-27T13:49:04Z _death: stassats: because then the name would be confusing.. is it so hard to understand? 2014-12-27T13:49:28Z nikki93 quit (Ping timeout: 255 seconds) 2014-12-27T13:49:29Z stassats: _death: how would you know? 2014-12-27T13:49:41Z _death: stassats: I'd look at sbcl source 2014-12-27T13:49:55Z Ainieco: stassats: compute hash, get integer/whatever-internal-represenation use whatever best comparison for integers for resolving collisions, is it wrong way to do it? 2014-12-27T13:50:00Z stassats: if it provides an amortized O(1) access, then what will you not be happy with? 2014-12-27T13:50:13Z stassats: _death: knowledge is dangerous 2014-12-27T13:50:13Z ggole: Equal hashes doesn't imply equal values 2014-12-27T13:50:15Z _death: stassats: I wouldn't be happy with it being named hash-table 2014-12-27T13:50:31Z Ainieco: ggole: ahh, it's for values, right? 2014-12-27T13:50:50Z stassats: Ainieco: eql and equal will do different things on strings 2014-12-27T13:50:51Z Ainieco: ahh, it's for values and keys during comparison of two hashes, right? 2014-12-27T13:50:54Z ggole: The :test is applied to see whether two values with the same hash are actually equal, yes 2014-12-27T13:51:04Z stassats: eql will only fetch the same string, i.e. use the pointer, equal will examine its contents 2014-12-27T13:51:15Z admg joined #lisp 2014-12-27T13:51:22Z stassats: consequently, an equal hash function will compute the hash based on the contents, to reduce collisons 2014-12-27T13:51:29Z stassats: and will use equal to resolve collisions 2014-12-27T13:51:53Z stassats: _death: even if it's by all measures better? 2014-12-27T13:52:10Z _death: stassats: right, I still wouldn't like it being called hash-table 2014-12-27T13:52:30Z stassats: but there's no other way to make it available to all users 2014-12-27T13:52:34Z hrs quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-12-27T13:52:43Z stassats: i can't use sb-ext:rb-tree in my portable code 2014-12-27T13:52:57Z _death: stassats: you can write a portability library 2014-12-27T13:53:24Z stassats: i would have to convince everybody to use 2014-12-27T13:53:42Z stassats: to reap the benefits of faster hash-table 2014-12-27T13:53:46Z _death: no, you wouldn't have to convince anyone 2014-12-27T13:53:58Z pt1 quit (Remote host closed the connection) 2014-12-27T13:54:23Z stassats: so, why would i improve the hash-table implementation in SBCL if only a small portion of people will know about it, let alone use it 2014-12-27T13:55:03Z _death: why indeed 2014-12-27T13:55:45Z stassats: abandon it just because of the name? 2014-12-27T13:57:00Z stassats: say, if it did linear search for element count less than 10? 2014-12-27T14:00:12Z _death: I understand you take the name as a given (it could be 'foo') and try to figure out something that may result in more performant programs.. and sure, people may find it useful.. but still, there's nothing to like about an rb-tree being called a hash-table 2014-12-27T14:00:51Z stassats: rb-tree is just an example 2014-12-27T14:01:06Z _death: yes, you can replace it with "not-hash-table" 2014-12-27T14:01:39Z stassats: well, as i said, it'll be useless 2014-12-27T14:02:04Z stassats: but good thing you don't need to reach the consensus with all the users 2014-12-27T14:02:19Z jtza8 quit (Ping timeout: 258 seconds) 2014-12-27T14:02:59Z _death: yep, and good thing people realize the world isn't perfect and don't have to like everything about something to find it useful 2014-12-27T14:04:02Z nell joined #lisp 2014-12-27T14:04:41Z _M___ quit (Remote host closed the connection) 2014-12-27T14:05:46Z Ainieco: is it okay to use symbols for hash table keys? i asking because not sure if it'll be possible find anyhting by 'x if 'x was inserted in hash in different package 2014-12-27T14:05:47Z towodo joined #lisp 2014-12-27T14:05:59Z Ainieco: not sure if it's true what i'm saying 2014-12-27T14:06:22Z stassats: symbols are unique 2014-12-27T14:06:28Z stassats: so it can find only unique symbols 2014-12-27T14:06:32Z dim: foo::x and bar::x are different symbols 2014-12-27T14:06:41Z stassats: if you want find by name, use symbol-name before hashing 2014-12-27T14:07:11Z Ainieco: yeah, that's what i thought 2014-12-27T14:07:37Z dim: symbol and their names are already a kind of a hash table I guess 2014-12-27T14:07:40Z Ainieco: looks like keywords are better option then 2014-12-27T14:08:21Z stassats: if they already interned 2014-12-27T14:08:40Z stassats: if you need to intern something before hashing, it's better to hash the string instead 2014-12-27T14:09:59Z LiamH joined #lisp 2014-12-27T14:10:28Z Ainieco: stassats: okay, thanks 2014-12-27T14:11:09Z stassats: there are also property lists, but i dislike them 2014-12-27T14:14:23Z quazimodo quit (Ping timeout: 265 seconds) 2014-12-27T14:15:32Z quazimodo joined #lisp 2014-12-27T14:16:14Z jusss quit (Remote host closed the connection) 2014-12-27T14:17:02Z fantazo joined #lisp 2014-12-27T14:20:59Z _m___ joined #lisp 2014-12-27T14:21:57Z Ainieco: is there let version that will let me do this and get 2 in the end http://ideone.com/z7zwKt ? as i understand let disregards "place" returned by gethash which setf expects 2014-12-27T14:22:41Z towodo: multiple-value-bind? 2014-12-27T14:22:58Z stassats: Ainieco: no 2014-12-27T14:23:13Z Ainieco: stassats: meh 2014-12-27T14:23:26Z stassats: but wait, for a limited offer of multiple evaluations 2014-12-27T14:23:56Z isBEKaml left #lisp 2014-12-27T14:23:57Z stassats: (symbol-macrolet ((foo (gethash 1 *test*))) (setf foo 2)) 2014-12-27T14:24:34Z pnpuff joined #lisp 2014-12-27T14:24:40Z Ainieco: ah, indeed symbol-macrolet should do the trick 2014-12-27T14:24:44Z Ainieco: thanks! 2014-12-27T14:24:44Z stassats: it doesn't use a pointer to the hash, it just makes it behave as if it were (setf (gethash 1 *test*) 2) 2014-12-27T14:25:00Z stassats: so, (symbol-macrolet ((foo (gethash (print 1) *test*))) (setf foo 2) (setf foo 2)) would print twice 2014-12-27T14:25:07Z pnpuff left #lisp 2014-12-27T14:25:12Z Ainieco: stassats: yeah, it just replaces all occurances of foo with gethash, it's clear 2014-12-27T14:26:38Z zadock joined #lisp 2014-12-27T14:26:48Z oleo__ quit (Quit: Verlassend) 2014-12-27T14:27:58Z Ethan- quit (Remote host closed the connection) 2014-12-27T14:29:25Z oleo joined #lisp 2014-12-27T14:36:07Z Bicyclidine joined #lisp 2014-12-27T14:36:23Z milosn quit (Read error: Connection reset by peer) 2014-12-27T14:36:31Z psy joined #lisp 2014-12-27T14:41:56Z milosn joined #lisp 2014-12-27T14:42:06Z drdanmaku joined #lisp 2014-12-27T14:42:46Z Ainieco: is it possible to undefine function while using slime with sbcl? 2014-12-27T14:43:00Z stassats: clhs fmakunbound 2014-12-27T14:43:00Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_fmakun.htm 2014-12-27T14:43:07Z Ainieco: thanks 2014-12-27T14:43:30Z stassats: with slime: C-c C-u 2014-12-27T14:49:11Z Ainieco: stassats: great, thanks a lot! 2014-12-27T14:49:57Z _m___ quit (Remote host closed the connection) 2014-12-27T14:50:53Z Ainieco: stassats: going back to 'places', how can i get gethash wrapped in function working with setf? 2014-12-27T14:50:57Z Patzy quit (Ping timeout: 240 seconds) 2014-12-27T14:51:05Z Ainieco: should i define some method? 2014-12-27T14:51:23Z oleo quit (Quit: Verlassend) 2014-12-27T14:51:42Z Ainieco: currently i get "undefined function (setf my-gethash-wrapper)" 2014-12-27T14:51:54Z Patzy joined #lisp 2014-12-27T14:52:15Z beach: Ainieco: (defun (setf my-gethash-wrapper) (new-value arg1 arg2 ...) ...) 2014-12-27T14:52:37Z stassats: gethash is a function, nothing special is needed 2014-12-27T14:52:51Z oleo joined #lisp 2014-12-27T14:52:55Z stassats: since hashtables are objects, and not variables 2014-12-27T14:53:25Z Ainieco: beach: oh, never seen such function declaraiont before 2014-12-27T14:53:28Z beach must have misunderstood the question. 2014-12-27T14:53:32Z sol__ quit (Remote host closed the connection) 2014-12-27T14:53:53Z stassats: you did not 2014-12-27T14:53:54Z beach: Ainieco: You probably never saw the need for it, just as with CLOS. 2014-12-27T14:54:22Z Ainieco: beach: ha-ha, and now i see the need for it :) thanks! 2014-12-27T15:00:58Z nikki93_ quit (Ping timeout: 258 seconds) 2014-12-27T15:08:09Z nikki93 joined #lisp 2014-12-27T15:15:10Z yenda quit (Ping timeout: 244 seconds) 2014-12-27T15:15:27Z adlai quit (Ping timeout: 250 seconds) 2014-12-27T15:18:34Z stassats quit (Ping timeout: 250 seconds) 2014-12-27T15:21:35Z fsvehla quit (Quit: fsvehla) 2014-12-27T15:23:32Z itheos is now known as theos 2014-12-27T15:28:13Z pjb: dim: (defpackage "FOO" (:intern "X")) (defpackage "BAR" (:import-from "FOO" "X")) (eq 'foo::x 'bar::x) --> T 2014-12-27T15:28:32Z nyef joined #lisp 2014-12-27T15:28:50Z nyef: G'morning all. 2014-12-27T15:28:59Z dim: pjb: yes. 2014-12-27T15:29:21Z pjb: So you wanted to say: "foo::x and bar::x MAY BE different symbols". 2014-12-27T15:33:34Z pjb: Ainieco: you can use flet instead of let: http://paste.lisp.org/+33TM 2014-12-27T15:34:19Z pjb: Ainieco: you may also combine flet and symbol-macrolet so that you can still write (setf foo 2), and avoid multiple evaluation. 2014-12-27T15:34:50Z pjb: Ainieco: in the worst case, you will have to use get-setf-expansion to avoid multiple evaluation. 2014-12-27T15:35:53Z pjb: Ainieco: But both for this question, and your question about symbols as hash-table keys, the problem is the way you approach the problem. Those are not questions you would have if you used correct abstractions in normal programming. 2014-12-27T15:37:32Z DeadTrickster quit (Remote host closed the connection) 2014-12-27T15:39:33Z Bicyclidine quit (Ping timeout: 252 seconds) 2014-12-27T15:40:11Z nyef: In CLIM, a STANDARD-INPUT-STREAM (section 22.1, Basic Input Streams) has a HANDLE-EVENT method that adds characters from keystroke events to an input buffer. 2014-12-27T15:40:29Z nikki93 quit (Ping timeout: 244 seconds) 2014-12-27T15:40:58Z nyef: Under what circumstances does it make sense to be handling events that go to a stream, including keyboard events, and not actually be dealing with that input immediately? 2014-12-27T15:41:11Z huza quit (Quit: WeeChat 0.3.8) 2014-12-27T15:41:35Z pjb: Your program may be use stream input as external API. 2014-12-27T15:42:16Z nyef: With synthetic keyboard events at the UI level? Seems a little bit thing. 2014-12-27T15:42:19Z nyef: s/thing/thin/ 2014-12-27T15:42:23Z pjb: (write-line "What's your name?" *query-io*) (finish-output *query-io*) (let ((name (read-line *query-io*))) …) 2014-12-27T15:42:45Z pjb: notice that already, output to clim window is done with output streams… 2014-12-27T15:43:15Z pjb: So, my answer would indicate that you would do that mostly in the case of a modal dialog. 2014-12-27T15:43:41Z nyef: But, at the same time, you're still expecting input. 2014-12-27T15:43:47Z pjb: But the event dispatching could also dispatch the events to such an input stream outside of a modal loop. 2014-12-27T15:44:11Z pjb: Well a GUI program is always expecting input normally. 2014-12-27T15:44:36Z nyef: If you're in a modal dialog, your keyboard focus is locked to the dialog box itself. 2014-12-27T15:44:45Z pjb: Yes. 2014-12-27T15:45:14Z nyef: So you're not going to be getting keyboard events sent to some other stream. 2014-12-27T15:45:52Z pjb: Another answer element would be that there are two fundamentally different program structures: event-based, and batch programs, and that this handle-event allows to mix code expecting batch mode in an event-based application 2014-12-27T15:46:08Z edgar-rft joined #lisp 2014-12-27T15:46:31Z _m___ joined #lisp 2014-12-27T15:47:50Z ehu joined #lisp 2014-12-27T15:48:27Z Adlai joined #lisp 2014-12-27T15:48:52Z nyef: Also thin. But I'm now thinking that it's actually a sop to multi-threaded programs, where the process reading from the stream isn't the one handling the UI events. 2014-12-27T15:49:15Z theseb joined #lisp 2014-12-27T15:49:27Z pjb: Definitely. This standard-input-stream+handle-event works like a pipe, so threads are implicit. 2014-12-27T15:50:06Z nyef: Which is still sketchy in terms of how it would work out, really. 2014-12-27T15:50:52Z pjb: Well, the first example would be when you implement a REPL. 2014-12-27T15:50:52Z nyef: No locks on the input buffers, for example. 2014-12-27T15:50:59Z zyaku joined #lisp 2014-12-27T15:51:13Z pjb: You mean in the implementation of handle-event? 2014-12-27T15:51:22Z pjb: Aren't lock used in gray streams? 2014-12-27T15:51:31Z kapil__ quit (Quit: Connection closed for inactivity) 2014-12-27T15:51:47Z nyef: Anywhere in the application layer stuff, AFAIR. 2014-12-27T15:52:43Z pjb: If #\newline is not handled specially, then you would most certainly need a mutex in the gray stream. 2014-12-27T15:53:27Z pjb: Perhaps there's a bug in the CLIM implementation you're watching? 2014-12-27T15:53:58Z nyef: I'm looking at the spec, not a particular implementation at this point. 2014-12-27T15:54:53Z pjb: Then you can expect mutex be implemented in handle-event or the underlying gray-stream. I don't remember if CLIM specifies gray stream. McCLIM uses them. 2014-12-27T15:55:20Z Blaguvest quit 2014-12-27T15:56:34Z Shinmera joined #lisp 2014-12-27T16:02:37Z s_e quit (Ping timeout: 240 seconds) 2014-12-27T16:05:18Z s_e joined #lisp 2014-12-27T16:06:21Z edran quit (Quit: No Ping reply in 180 seconds.) 2014-12-27T16:06:39Z edran joined #lisp 2014-12-27T16:08:13Z pt1 joined #lisp 2014-12-27T16:09:05Z theos quit (Quit: i will be back...nvm) 2014-12-27T16:09:17Z enitiz quit (Ping timeout: 240 seconds) 2014-12-27T16:10:38Z jtza8 joined #lisp 2014-12-27T16:11:31Z arpunk quit (Remote host closed the connection) 2014-12-27T16:13:24Z fsvehla joined #lisp 2014-12-27T16:17:52Z theos joined #lisp 2014-12-27T16:18:17Z theos quit (Read error: Connection reset by peer) 2014-12-27T16:20:49Z fsvehla quit (Quit: fsvehla) 2014-12-27T16:22:16Z zacharias joined #lisp 2014-12-27T16:22:46Z Wojciech_K joined #lisp 2014-12-27T16:25:42Z sigjuice quit (Ping timeout: 245 seconds) 2014-12-27T16:26:36Z sigjuice joined #lisp 2014-12-27T16:30:56Z manuel__ joined #lisp 2014-12-27T16:31:09Z loke_ quit (Remote host closed the connection) 2014-12-27T16:34:41Z bcoburn` joined #lisp 2014-12-27T16:35:59Z EvW joined #lisp 2014-12-27T16:36:07Z hratsimihah quit (Ping timeout: 245 seconds) 2014-12-27T16:36:13Z Bicyclidine joined #lisp 2014-12-27T16:37:12Z hratsimihah joined #lisp 2014-12-27T16:37:25Z sigjuice quit (Ping timeout: 256 seconds) 2014-12-27T16:38:09Z sigjuice joined #lisp 2014-12-27T16:38:13Z Ainieco: how do i define generic to accept something and integer? is it possible? 2014-12-27T16:38:50Z Ainieco: i want concrete methods parametrize only on first arg but second should always be integer 2014-12-27T16:39:27Z Ainieco: like (defgeneric foo (what (x integer))) but it's doesn't work 2014-12-27T16:39:57Z hitecnologys: You can't define generic like that. You can only do (defmethod foo (x (y integer)) (do-foo x y)). 2014-12-27T16:39:59Z Ainieco: and then (defmethod foo ((what some-struct) (x integer)) 2014-12-27T16:40:00Z pjb: (defmethod foo ((something someclass) i) (check-type i integer) ..) 2014-12-27T16:40:37Z Ainieco: hitecnologys: okay, thanks 2014-12-27T16:40:43Z hitecnologys: pjb: that would require retyping (check-type i integer) in every method. 2014-12-27T16:40:54Z Ainieco: pjb: that's contstraint on wrong end of stick 2014-12-27T16:40:55Z pjb: in CL, check-type is used to check parameters are always of a given type. 2014-12-27T16:40:58Z pjb: hitecnologys: yes. 2014-12-27T16:41:01Z pjb: Ainieco: then go do C++. 2014-12-27T16:41:12Z hitecnologys: pjb: which is what he tries to avoid, I assume. Besides, this approach is no different from specifying on integer. 2014-12-27T16:41:16Z pjb: You may write a macro to generate those methods. 2014-12-27T16:41:23Z pjb: Ainieco: just don't care about checking! 2014-12-27T16:41:39Z pjb: We trust you, the compiler trust you, you are the programmer, you are god! 2014-12-27T16:41:48Z Ainieco: cool 2014-12-27T16:42:34Z hitecnologys agrees with pjb. One shouldn't care about types unless tasks requires it. 2014-12-27T16:46:04Z pnpuff joined #lisp 2014-12-27T16:48:46Z scymtym joined #lisp 2014-12-27T16:48:54Z Ainieco: is it in scheme on cl not specified order of evaluation of let bindings? 2014-12-27T16:49:02Z Ainieco: or cl* 2014-12-27T16:49:07Z pjb: scheme 2014-12-27T16:49:15Z Ainieco: ah, yeah, they have let* 2014-12-27T16:49:24Z pjb: In CL, things are usually evaluated from left to right. 2014-12-27T16:51:48Z jumblerg joined #lisp 2014-12-27T16:55:22Z jtza8 quit (Ping timeout: 240 seconds) 2014-12-27T16:57:02Z mearnsh quit (Changing host) 2014-12-27T16:57:02Z mearnsh joined #lisp 2014-12-27T16:58:27Z Adlai quit (Remote host closed the connection) 2014-12-27T16:58:56Z Adlai joined #lisp 2014-12-27T16:59:00Z mrSpec joined #lisp 2014-12-27T17:00:36Z Ainieco: how to do qualified import? e.g. in defpackage i have (:use :alexandria) and i want all functions exported by alexandria be prefixed with something(like a:iota) 2014-12-27T17:01:49Z theos joined #lisp 2014-12-27T17:01:53Z nyef: You can't, that's not how packages work. 2014-12-27T17:02:03Z theos quit (Read error: Connection reset by peer) 2014-12-27T17:02:32Z Ainieco: nyef: i think i can somehow but i forgot 2014-12-27T17:03:03Z Ainieco: i shouldn't use :use but i should locally rename alexandria package somehow 2014-12-27T17:03:25Z Ainieco: i think package local renaming wasn't possible untile recently iirc 2014-12-27T17:03:36Z Ainieco: but now sure how to do it in practice 2014-12-27T17:03:46Z nyef: Package names and nicknames are a global namespace, so you'd be looking for some custom library or extension. 2014-12-27T17:03:59Z theseb quit (Quit: Leaving) 2014-12-27T17:04:09Z towodo quit (Quit: towodo) 2014-12-27T17:05:47Z Ainieco: nyef: yeah, i think it could probably be sbcl extension 2014-12-27T17:05:51Z Ainieco: but not sure 2014-12-27T17:07:14Z Ainieco: yeah https://bugs.launchpad.net/sbcl/+bug/796080 i'm right 2014-12-27T17:07:41Z Ainieco: meh, i don't remember a thing from cl world now :( 2014-12-27T17:09:01Z Bicyclidine quit (Ping timeout: 252 seconds) 2014-12-27T17:14:53Z Grue`: you can just :shadow the symbols that you need to be in your own package 2014-12-27T17:15:56Z manuel__ quit (Quit: manuel__) 2014-12-27T17:17:00Z jumblerg quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-27T17:17:25Z nyef: Grue`: Doesn't actually help with this use-case. 2014-12-27T17:18:46Z manuel__ joined #lisp 2014-12-27T17:20:26Z oleo quit (Quit: Verlassend) 2014-12-27T17:21:24Z s00pcan__ joined #lisp 2014-12-27T17:21:32Z s00pcan quit (Read error: Connection reset by peer) 2014-12-27T17:22:57Z jumblerg joined #lisp 2014-12-27T17:24:28Z jumblerg quit (Client Quit) 2014-12-27T17:24:43Z oleo joined #lisp 2014-12-27T17:25:27Z DrCode quit (Ping timeout: 250 seconds) 2014-12-27T17:28:53Z zyaku quit (Ping timeout: 240 seconds) 2014-12-27T17:28:56Z Grue`: well, maybe i missed what the use case was 2014-12-27T17:29:23Z Grue`: redefining every function from alexandria to be generic? 2014-12-27T17:30:28Z zyaku joined #lisp 2014-12-27T17:30:35Z nyef: Okay, the use-case for reading from a stream without having input-editing is for non-textual keyboard input, such as for a game. 2014-12-27T17:31:27Z ehu quit (Ping timeout: 272 seconds) 2014-12-27T17:31:46Z nyef: Or for an old-fashioned menu setup, or... 2014-12-27T17:31:49Z arpunk joined #lisp 2014-12-27T17:32:13Z nyef: I'm not sure how much it makes sense to accumulate unread input, though. 2014-12-27T17:32:14Z DrCode joined #lisp 2014-12-27T17:33:39Z stassats joined #lisp 2014-12-27T17:33:40Z DeadTrickster joined #lisp 2014-12-27T17:34:40Z WojciechK joined #lisp 2014-12-27T17:34:58Z pt1 quit (Remote host closed the connection) 2014-12-27T17:35:22Z bcoburn` quit 2014-12-27T17:35:53Z manuel__ quit (Quit: manuel__) 2014-12-27T17:37:05Z schjetne quit (Read error: Connection reset by peer) 2014-12-27T17:37:06Z schjetne joined #lisp 2014-12-27T17:37:37Z Wojciech_K quit (Ping timeout: 240 seconds) 2014-12-27T17:37:37Z tbarletz quit (Ping timeout: 240 seconds) 2014-12-27T17:37:50Z tbarletz joined #lisp 2014-12-27T17:37:50Z Jameser` joined #lisp 2014-12-27T17:38:01Z rvchangue_ quit (Remote host closed the connection) 2014-12-27T17:39:17Z Jameser quit (Ping timeout: 240 seconds) 2014-12-27T17:40:15Z Ainieco quit (Quit: leaving) 2014-12-27T17:40:18Z urandom__ joined #lisp 2014-12-27T17:40:49Z Bicyclidine joined #lisp 2014-12-27T17:41:00Z pnpuff left #lisp 2014-12-27T17:41:07Z Hexstream joined #lisp 2014-12-27T17:44:43Z MoALTz_ joined #lisp 2014-12-27T17:46:28Z oleo quit (Remote host closed the connection) 2014-12-27T17:47:01Z fsvehla joined #lisp 2014-12-27T17:47:01Z oleo joined #lisp 2014-12-27T17:47:39Z oleo quit (Read error: Connection reset by peer) 2014-12-27T17:48:24Z oleo joined #lisp 2014-12-27T17:48:33Z MoALTz quit (Ping timeout: 272 seconds) 2014-12-27T17:49:01Z oleo quit (Read error: Connection reset by peer) 2014-12-27T17:49:38Z oleo joined #lisp 2014-12-27T17:50:04Z oleo quit (Read error: Connection reset by peer) 2014-12-27T17:50:12Z towodo joined #lisp 2014-12-27T17:51:27Z oleo joined #lisp 2014-12-27T17:52:08Z oleo quit (Read error: Connection reset by peer) 2014-12-27T17:52:30Z mrkkrp left #lisp 2014-12-27T17:53:55Z oleo joined #lisp 2014-12-27T17:53:59Z antonv quit (Ping timeout: 244 seconds) 2014-12-27T17:54:31Z oleo quit (Read error: Connection reset by peer) 2014-12-27T17:55:54Z oleo joined #lisp 2014-12-27T17:56:56Z oleo quit (Read error: Connection reset by peer) 2014-12-27T17:57:25Z oleo joined #lisp 2014-12-27T17:57:59Z protist quit (Quit: Konversation terminated!) 2014-12-27T17:58:38Z WojciechK quit (Ping timeout: 244 seconds) 2014-12-27T17:58:56Z oleo quit (Read error: Connection reset by peer) 2014-12-27T17:59:55Z oleo joined #lisp 2014-12-27T18:00:53Z jtza8 joined #lisp 2014-12-27T18:01:27Z manuel__ joined #lisp 2014-12-27T18:02:17Z oleo quit (Read error: Connection reset by peer) 2014-12-27T18:08:17Z oleo joined #lisp 2014-12-27T18:08:56Z bullone joined #lisp 2014-12-27T18:12:12Z oleo quit (Remote host closed the connection) 2014-12-27T18:13:59Z optikalmouse joined #lisp 2014-12-27T18:16:29Z mvilleneuve joined #lisp 2014-12-27T18:20:24Z oleo joined #lisp 2014-12-27T18:20:35Z enitiz joined #lisp 2014-12-27T18:26:18Z Wojciech_K joined #lisp 2014-12-27T18:27:10Z zyaku quit (Ping timeout: 265 seconds) 2014-12-27T18:28:28Z zyaku joined #lisp 2014-12-27T18:31:28Z zophy joined #lisp 2014-12-27T18:31:47Z _m___ quit (Remote host closed the connection) 2014-12-27T18:31:58Z ehu joined #lisp 2014-12-27T18:33:36Z beach left #lisp 2014-12-27T18:34:37Z bgs100 joined #lisp 2014-12-27T18:39:02Z jumblerg joined #lisp 2014-12-27T18:39:49Z nowhere_man_ quit (Ping timeout: 245 seconds) 2014-12-27T18:39:52Z nowhereman_ joined #lisp 2014-12-27T18:41:39Z gravicappa joined #lisp 2014-12-27T18:42:37Z dagnachew joined #lisp 2014-12-27T18:42:45Z innertracks joined #lisp 2014-12-27T18:43:39Z zajn joined #lisp 2014-12-27T18:45:52Z oleo quit (Quit: Verlassend) 2014-12-27T18:46:19Z oleo joined #lisp 2014-12-27T18:47:10Z nikki93 joined #lisp 2014-12-27T19:12:15Z oleo quit (Changing host) 2014-12-27T19:12:15Z oleo joined #lisp 2014-12-27T19:20:07Z hekmek quit (Quit: Verlassend) 2014-12-27T19:21:52Z akkad: ql:quickload can take a list right? 2014-12-27T19:22:39Z nyef: akkad: It was either a list, or it's an &REST argument in the first place. I forget which. 2014-12-27T19:23:05Z stassats: it has verbose and stuff, clearly not &rest 2014-12-27T19:23:05Z minion: stassats, memo from pjb: you may not use sb-ext:rb-tree in portable code, but you can use com.informatimago.common-lisp.cesarum.llrbtree in portable code ;-) 2014-12-27T19:23:49Z stassats: but i don't use quicklisp, so can't really check 2014-12-27T19:24:19Z Xach: akkad: ql:quickload can take a list 2014-12-27T19:24:27Z akkad: Xach thanks 2014-12-27T19:29:53Z Patzy quit (Ping timeout: 244 seconds) 2014-12-27T19:30:04Z defaultxr joined #lisp 2014-12-27T19:30:33Z Patzy joined #lisp 2014-12-27T19:33:14Z malbertife joined #lisp 2014-12-27T19:39:11Z psy quit (Quit: Leaving) 2014-12-27T19:40:23Z arpunk quit (Ping timeout: 240 seconds) 2014-12-27T19:42:02Z tadni quit (Ping timeout: 250 seconds) 2014-12-27T19:45:02Z normanrichards joined #lisp 2014-12-27T19:45:57Z hitecnologys_ joined #lisp 2014-12-27T19:47:52Z davazp joined #lisp 2014-12-27T19:47:58Z EvW quit (Ping timeout: 244 seconds) 2014-12-27T19:49:01Z hitecnologys quit (Ping timeout: 255 seconds) 2014-12-27T19:49:01Z hitecnologys_ is now known as hitecnologys 2014-12-27T19:50:27Z manuel__ quit (Quit: manuel__) 2014-12-27T19:54:46Z hiyosi quit (Read error: Connection reset by peer) 2014-12-27T19:55:05Z hiyosi joined #lisp 2014-12-27T19:55:53Z dim: there is a "closure" browser in CL, right? does it support graphics, images, canvas, and a layer like javascript but in CL? 2014-12-27T19:56:23Z Karl_Dscc quit (Remote host closed the connection) 2014-12-27T19:56:23Z stassats: it hardly supports anything 2014-12-27T19:57:05Z dim: yeah, you're going to advice for common-qt with a webkit widget? 2014-12-27T19:57:31Z stassats: that at least works 2014-12-27T19:57:35Z dim: too many ideas, not enough time 2014-12-27T19:57:54Z sauerkra- is now known as sauerkrause 2014-12-27T19:57:56Z dim: I'd rather polish my pgloader current master's branch and release 2014-12-27T19:58:04Z dim: boring, but useful 2014-12-27T20:04:12Z eudoxia: closure is pretty dead 2014-12-27T20:04:22Z eudoxia: but the components built around it sort of work 2014-12-27T20:04:30Z eudoxia: e.g. i've used the xpath thing succesfully 2014-12-27T20:05:59Z jumblerg quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-27T20:07:04Z dim: yeah I've been using the cxml parser too 2014-12-27T20:07:11Z dim: I don't even remember when/why/which project 2014-12-27T20:07:28Z dim: mm, XML support for pgloader is on the list, of course ;-) 2014-12-27T20:09:37Z nyef: ISTR that there's some HTML or XML parser out there that does things that can charitably be called "hilariously wrong" with respect to its parsed output, but I forget which one it is. /-: 2014-12-27T20:10:07Z jumblerg joined #lisp 2014-12-27T20:10:19Z Shinmera: output? 2014-12-27T20:10:26Z Shinmera: As in, the DOM it generates is wrong, or? 2014-12-27T20:10:30Z Sgeo quit (Read error: Connection reset by peer) 2014-12-27T20:11:08Z nyef: Yeah, it generated some weird s-expression format that bore no more than a vague resemblance to the structure of its input. 2014-12-27T20:11:22Z nyef: Tags being inserted at the wrong level, and the like. 2014-12-27T20:11:26Z Shinmera: Can't say I've encountered that. 2014-12-27T20:12:49Z nyef: It got to the point where I was rewriting my test cases not in terms of the parsed data but in terms of literal HTML captures in files on disk, so that once there was enough test coverage I could switch parsers. 2014-12-27T20:13:18Z akkad: is closure also an acronym like Clojure? 2014-12-27T20:13:33Z EvW joined #lisp 2014-12-27T20:13:38Z nyef: ... Since when was Clojure an acronym? 2014-12-27T20:13:48Z nyef: minion: What does clojure stand for? 2014-12-27T20:13:48Z minion: Caeremoniarius Lateen Omniproduction Juramentum Unproportion Roper Endocervicitis 2014-12-27T20:14:02Z akkad: common lisp on java using Rich's extensions 2014-12-27T20:14:05Z nyef: ... Sometimes I wonder about that bot's vocabulary. /-: 2014-12-27T20:14:05Z akkad: dderp 2014-12-27T20:14:32Z theseb joined #lisp 2014-12-27T20:14:42Z stassats: how come it looks nothing like common lisp? 2014-12-27T20:19:52Z akkad: stassats: stand back and relax your eyes... you'll see the boat^HCL 2014-12-27T20:19:52Z dandersen quit (Read error: Connection reset by peer) 2014-12-27T20:20:12Z hitecnologys: akkad: boaCL? 2014-12-27T20:20:34Z akkad: ^W 2014-12-27T20:20:54Z stassats: hydrogen chloride? 2014-12-27T20:21:21Z dim: ahah, adding support for - (meaning stdin, or *standard-input*) on the pgloader CLI was really easy, so now pgloader is a proper unix citizen 2014-12-27T20:21:37Z akkad: dim nice 2014-12-27T20:21:41Z dim: curl http://... | gunzip -c | pgloader --type csv - pgsql:///dbname 2014-12-27T20:21:51Z dim: there you go, full streaming from http down to PostgreSQL ;-) 2014-12-27T20:22:00Z dandersen joined #lisp 2014-12-27T20:22:05Z akkad: you use COPY.? 2014-12-27T20:22:41Z stassats: dim: can't it to do that all by itself? 2014-12-27T20:22:46Z hitecnologys: stassats: more like "boat in the power of hydrogen chloride". 2014-12-27T20:23:15Z dim: stassats: yes, but currently it fetches the file, then expand it on-disk, and only then reads from it 2014-12-27T20:23:32Z dim: I didn't implement proper several stages streaming 2014-12-27T20:23:38Z dim: I only have one level streaming 2014-12-27T20:23:54Z dim: pgloader mysql:///dbname pgsql:///dbname # here it's full streaming 2014-12-27T20:24:13Z jumblerg quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-27T20:24:37Z dim: I had a look at how to stream *standard-output* from a subcommand with uiop:run-command and failed to integrate that in pgloader at the time 2014-12-27T20:29:14Z jumblerg joined #lisp 2014-12-27T20:29:40Z Sgeo joined #lisp 2014-12-27T20:32:18Z Shinmera: dim: I'm not sure I quite understand your problem, but there's multiple libraries to download and decompress files/streams in native CL already. 2014-12-27T20:32:42Z dim: pgloader uses drakma for its integrated support 2014-12-27T20:32:59Z dim: the problem is downloading in a separate thread and processing in a streaming fashion 2014-12-27T20:33:39Z dim: currently I just download, inspect, expand if it's an archive, inspect, and then provide the file(s) to the streaming parts that will read the file in a thread and COPY its content to PostgreSQL in another one 2014-12-27T20:33:52Z dim: with the curl | gunzip | pgloader command, it's all streaming 2014-12-27T20:33:52Z Shinmera: I'm not sure if threading would really help when you're dealing with downloading files anyway. 2014-12-27T20:34:04Z dim: threading or sub-processing, right 2014-12-27T20:34:52Z Shinmera: But drakma allows just returning a stream instead of downloading a file. If it's a gzip according to the headers you can pass that stream to a decompressor library and the output of that to whatever it is you're doing. 2014-12-27T20:35:02Z Shinmera: So I still don't quite see the need for external processes here. 2014-12-27T20:36:32Z manuel__ joined #lisp 2014-12-27T20:38:40Z Shinmera: But I probably don't understand the actual complications involved, so 2014-12-27T20:40:21Z akkad: is there a pure cl implementation of gzip? 2014-12-27T20:40:44Z Shinmera: http://cliki.net/compression 2014-12-27T20:41:45Z jumblerg quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-27T20:41:49Z akkad: much more detailed than system-apropos 2014-12-27T20:42:50Z akkad: with-open-gzip-file. just what I was looking for thanks 2014-12-27T20:43:18Z dim: I used the cl implementation of gzip but IIRC it was pretty damn slow 2014-12-27T20:43:50Z dim: Shinmera: I may not need the multi-{thread,process} parts here, right, will think and revisit 2014-12-27T20:44:19Z Shinmera: dim: My thought is just that usually the network will be your bottleneck by far anyway, so there's no need to get messy (hopefully). 2014-12-27T20:44:26Z dim: but really, letting unix do its part is the best I can have for the effort, I think 2014-12-27T20:44:51Z Shinmera: Right, it is pretty nice, but putting in an HTTP url as an arg would be just a bit nicer :) 2014-12-27T20:45:02Z bulloLisp joined #lisp 2014-12-27T20:45:24Z dim: it's supported too 2014-12-27T20:45:25Z bulloLisp quit (Read error: Connection reset by peer) 2014-12-27T20:45:39Z bulloLisp joined #lisp 2014-12-27T20:45:45Z dim: ./build/bin/pgloader --type csv --field "usps,geoid,aland,awater,aland_sqmi,awater_sqmi,intptlat,intptlong" --with "skip header = 1" --with "fields terminated by '\t'" http://pgsql.tapoueh.org/temp/2013_Gaz_113CDs_national.txt postgresql:///pgloader?districts_longlat 2014-12-27T20:45:48Z dim: that's a whole command 2014-12-27T20:45:58Z dim: pgloader http://... pgsql://... # for short 2014-12-27T20:46:04Z dim: that already works 2014-12-27T20:46:32Z dim: or ./build/bin/pgloader --type dbf http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2013/dbf/historiq2013.zip postgresql:///pgloader 2014-12-27T20:46:50Z dim: it you want simpler (less options/args) and with a zip extension on remote http too! 2014-12-27T20:47:18Z dim: it's just not implemented as a streaming at all 2014-12-27T20:47:26Z dim: maybe it could, dunno 2014-12-27T20:47:45Z Shinmera: Ah, alright. 2014-12-27T20:48:17Z Shinmera: I still haven't gotten to moving my mail server to postgres, but I should probably get to that some day. When I do, I'll certainly give your tool a go! 2014-12-27T20:48:34Z dim: hehe sure, that's why it exists ;-) 2014-12-27T20:48:37Z mvilleneuve quit (Quit: This computer has gone to sleep) 2014-12-27T20:49:01Z bullone quit (Ping timeout: 256 seconds) 2014-12-27T20:49:01Z segmond quit (Ping timeout: 256 seconds) 2014-12-27T20:51:15Z eudoxia: dim: you might be interested in https://github.com/eudoxia0/trivial-extract and https://github.com/eudoxia0/trivial-download 2014-12-27T20:53:30Z dim: indeed, having a look, thanks! 2014-12-27T20:53:42Z sindikat joined #lisp 2014-12-27T20:54:23Z sindikat: Hello everyone! 2014-12-27T20:55:09Z sindikat: I have a list (setq xxx '(1 2 3)). I wanna change it in-place within a function. (defun f (xs) (setf xs '(4 5 6))) doesn't work. What should I do? 2014-12-27T20:56:23Z ndrei quit (Ping timeout: 240 seconds) 2014-12-27T20:57:09Z dim: I think I missed that drakma :want-stream t allows me to process the stream as I want while it's being downloaded 2014-12-27T20:58:11Z Hexstream: sindikat: First of all, you must not destructively change literals such as quoted structure like '(1 2 3). 2014-12-27T20:58:41Z sindikat: Hexstream: why not? map-into changes an argument destructively 2014-12-27T20:59:10Z vinleod joined #lisp 2014-12-27T20:59:14Z ggole quit 2014-12-27T20:59:15Z sindikat: Hexstream: let's assume that `xxx' is just a list. 2014-12-27T20:59:35Z Wojciech_K quit (Read error: Connection reset by peer) 2014-12-27T21:01:09Z Hexstream: Common Lisp passes references by value, so of course changing the value of the binding of that local (lexical) XS variable will not affect another binding of it, though if you assign new values to the internal structure that it points to, then that would be reflected in other bindings... 2014-12-27T21:01:50Z akkad: so if I'm reading in a gzipped json file, with with-open-gzip-file, I can't use yason:parse directly on the input stream right? I need to read it into a string or something first? 2014-12-27T21:01:52Z Grue`: sindikat: you can do (defun f (xs) (setf (cdr xs) (list 1 2 3))) though it's a bad idea as somebody might pass a literal list to the function 2014-12-27T21:02:44Z akkad: e.g. https://gist.github.com/6172db02ff91187bd256 2014-12-27T21:02:48Z Hexstream: For instance, if you did (defun f (xs) (setf (cdr xs) nil)), then assuming xs points to a non-literal cons, the cons could now be interpreted as a list with one single value. But (defun f (xs) (setf xs '(4 5 6))) will not affect the original list. 2014-12-27T21:03:04Z sindikat: Grue`: I don't get why is it a bad idea. So what if someone passes a literal? 2014-12-27T21:03:09Z segmond joined #lisp 2014-12-27T21:03:22Z sindikat: Hexstream: I get it now! Thanks 2014-12-27T21:03:27Z Hexstream: (Oops, didn't see Grue`'s message.) 2014-12-27T21:03:38Z Grue`: it's bad to destructively modify literals 2014-12-27T21:03:58Z Hexstream: Worse than "bad", it's "undefined"! 2014-12-27T21:04:31Z Grue`: well, it might be better if you learn the specific behavior of your implementation and adapt to it 2014-12-27T21:04:46Z Hexstream: Unfortunately most implementations have little or no protections against literal modifications, which can lead to really puzzling and hard to debug bugs. 2014-12-27T21:05:14Z Grue`: might create a nice self-modifying program... 2014-12-27T21:05:20Z |3b|: unless your implementation specifically defines behavior, you shouldn't rely on undefined behavior even if it mostly works on some implementation 2014-12-27T21:05:33Z Hexstream: Grue`: No, invoking behavior defined by the standard as being undefined is generally a really bad idea, even if you know that a specific version of a specific implementation behaves a certain way. 2014-12-27T21:06:12Z Grue`: i wasn't seriously suggesting that this is a good idea 2014-12-27T21:06:31Z Hexstream: I am seriously suggesting that it is a really bad idea. :) 2014-12-27T21:06:33Z sindikat: But there are so many destructive functions in CL, anyone can pass a literal there 2014-12-27T21:06:44Z arpunk joined #lisp 2014-12-27T21:07:05Z |3b|: sindikat: i wouldn't say destructive functions are 'bad', but it should be obvious from the name that they are (so for example SORT is CL is poorly named) 2014-12-27T21:07:06Z zophy: oh... maybe bit banging around in a 85 MB image would be fun 2014-12-27T21:07:22Z zophy: you can always stop it and debug it :) 2014-12-27T21:07:49Z |3b|: sindikat: and using literals with the destructive functions in CL is a common source of hard to find bugs 2014-12-27T21:07:57Z Hexstream: sindikat: Most destructive functions are pretty much only ever used on locally created fresh values which are then destructively modified (for example by NREVERSE) locally before anything else can see the value, and then the value is never modified again. 2014-12-27T21:08:32Z |3b|: so to the extent they are 'bad', it applies to the functions in Cl as well 2014-12-27T21:09:14Z Hexstream: Not sure if I was clear, I only said that destructively modifying literals is a really bad idea. 2014-12-27T21:09:24Z sindikat: Hexstream: (defun check-setf (xs) (setcar xs 1) (setcdr xs '(2 3))) -- ha ha 2014-12-27T21:09:35Z Hexstream: Using destructive functions appropriately is of course not a problem. 2014-12-27T21:10:03Z sindikat: Hexstream: I mean that nothing can stop a CL programmer to pass literals into destructive functions, right? 2014-12-27T21:10:26Z Grue`: nothing can stop CL programmer from anything! 2014-12-27T21:10:31Z Hexstream: sindikat: Hopefully the programmer can stop themselves from doing so. It would be their responsibility. 2014-12-27T21:10:36Z Grue`: CL is very powerful ;) 2014-12-27T21:12:03Z antonv joined #lisp 2014-12-27T21:12:13Z GuilOooo quit (Remote host closed the connection) 2014-12-27T21:12:50Z sindikat: Hexstream: Ok, (setcar xs 1) (setcdr xs '(2 3)) is really a convoluted way of destructively changing a list. Is there a better way? 2014-12-27T21:13:15Z pnpuff joined #lisp 2014-12-27T21:13:25Z Hexstream: sindikat: The general convention is that functions should not destructively modify values that they don't "own", such as those returned from functions, and can generally return values that share structure with the arguments that they were passed, knowing that their user should in turn not destructively modify them... 2014-12-27T21:14:08Z Grue`: CONS is a basic structure of 2 field, of which all lists are made; it has a CAR field and CDR field; what you've done is overwrote both fields of a cons 2014-12-27T21:14:12Z Hexstream: sindikat: Just assign a new list to an appropriate "place" (such as for example a lexical variable). 2014-12-27T21:14:52Z Grue`: damn, i can't into english today 2014-12-27T21:16:18Z sindikat: Hexstream: Basically, what I'm trying to do is to implement `map-into' from scratch. AFAIU, in (map-into as f bs), as is destructively changed. It's practically the same as (setq as (mapcar f bs) with few caveats. 2014-12-27T21:17:00Z |3b|: for map-into, (setf (car ... ) ...) is appropriate 2014-12-27T21:17:23Z arpunk quit (Remote host closed the connection) 2014-12-27T21:17:40Z |3b|: you shouldn't be setting the CDR though, since the point of map-into is to reuse the existing conses 2014-12-27T21:17:51Z |3b|: (or existing array if it isn't a list) 2014-12-27T21:18:05Z sindikat: |3b|: true 2014-12-27T21:18:39Z Hexstream: sindikat: http://paste.lisp.org/display/144930 2014-12-27T21:18:39Z jtza8 quit (Remote host closed the connection) 2014-12-27T21:18:49Z Grue`: so it's actually more convoluted than setting car and cdr, you have to setf every single place in the list 2014-12-27T21:19:05Z gabriel_laddel joined #lisp 2014-12-27T21:20:52Z pnpuff left #lisp 2014-12-27T21:21:16Z nikki93_ joined #lisp 2014-12-27T21:21:23Z sindikat: Hexstream: basically I implemented map-into like this - http://paste.lisp.org/display/144931 - but it seems to work in O(n^2), as there is `elt' inside `dotimes'. Now I'm trying to rewrite it as O(n), but I have no idea how to do it elegantly 2014-12-27T21:21:33Z GuilOooo joined #lisp 2014-12-27T21:21:36Z gabriel_laddel quit (Changing host) 2014-12-27T21:21:36Z gabriel_laddel joined #lisp 2014-12-27T21:22:10Z zadock quit (Quit: Leaving) 2014-12-27T21:22:31Z |3b| would just discard the car of each list after processing it 2014-12-27T21:22:46Z akkad: (cl-json:decode-json-from-source (open "~/test.json")) soo much easier than yason 2014-12-27T21:23:06Z Hexstream: clhs mapl 2014-12-27T21:23:07Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/f_mapc_.htm 2014-12-27T21:23:32Z nikki93 quit (Ping timeout: 258 seconds) 2014-12-27T21:23:38Z |3b|: and use some iteration construct that doesn't require precalculating the length 2014-12-27T21:23:39Z stassats: akkad: don't use open 2014-12-27T21:24:07Z Hexstream: sindikat: MAPL would do most of the work for you, it will give you successive conses of the list, and you can SETF their CARs. 2014-12-27T21:24:41Z danielfm joined #lisp 2014-12-27T21:24:43Z Bicyclidine quit (Ping timeout: 256 seconds) 2014-12-27T21:24:44Z Grue`: i thought the point was to not use map-foo, but then again sindikat's code uses mapcar, so i dunno 2014-12-27T21:25:11Z Hexstream: Grue`: Well, he could just use map-into, too, while we're at it... 2014-12-27T21:25:16Z sindikat: Grue`: can you imagine a way without using maps at all? 2014-12-27T21:25:34Z Grue`: of course, duh, how do you think it's implemented? 2014-12-27T21:25:44Z sindikat: Hexstream: honestly, I just want to implement map-into in Emacs Lisp with minimum ammo 2014-12-27T21:25:45Z |3b|: sindikat: tagbody would be a relatively primitive way to implement it, or recursion if you know you have TCO 2014-12-27T21:26:00Z meiji11 joined #lisp 2014-12-27T21:26:05Z Hexstream: sindikat: Maybe the emacs "cl" package implements that, not sure. 2014-12-27T21:26:05Z urandom_1 joined #lisp 2014-12-27T21:26:09Z akkad: stassats: I'm all ears :P 2014-12-27T21:26:21Z sindikat: Hexstream: it doesn't 2014-12-27T21:26:24Z Grue`: sindikat: you need to read about lists in "A Gentle Introduction to Symbolic Computation" 2014-12-27T21:26:28Z Hexstream: Ok, yeah, it doesn't. 2014-12-27T21:26:29Z urandom__ quit (Ping timeout: 265 seconds) 2014-12-27T21:26:38Z |3b|: akkad: you are leaking file descriptors like that, either use an API that takes filenames, or use with-open-file 2014-12-27T21:26:52Z |3b|: (or maybe an API that closes streams, but that would be ugly) 2014-12-27T21:26:58Z akkad: I did in the previous example 2014-12-27T21:27:19Z sindikat: Grue`: I did, years ago. Why do you think I would need to change every single cons cell? I can just come up with CDR in advance, then do setcar+setcdr 2014-12-27T21:27:44Z Grue`: but that's not the same thing 2014-12-27T21:27:55Z Hexstream: sindikat: This channel is about Common Lisp specifically. You would get better emacs help in for example #emacs. 2014-12-27T21:28:57Z tesuji quit (Ping timeout: 272 seconds) 2014-12-27T21:29:14Z sindikat: Hexstream: I want to know more about accepted practices in CL in general, i just happen to use Emacs Lisp at the moment 2014-12-27T21:29:34Z pjb: sindikat: "<22:01:02> But there are so many destructive functions in CL, anyone can pass a literal there" You see, this is the crux of the question! CL gives you weapons to shoot you in the foot, but lisp programmers are generally smart enough not to shoot themselves! 2014-12-27T21:29:47Z Hexstream: sindikat: The accepted practice in CL would be to use MAP-INTO if it's what you need. :) 2014-12-27T21:30:08Z sindikat: Hexstream: but what if CL novice wants to implement it from scratch to gain experience? :) 2014-12-27T21:30:28Z stassats: then he wouldn't ask on #lisp but will do it themselves 2014-12-27T21:30:35Z Hexstream: sindikat: Sure, but for instance SETCAR isn't in the Common Lisp standard. 2014-12-27T21:30:57Z Grue`: RPLACA! 2014-12-27T21:31:02Z pjb: sindikat: that's why you cannot assume just a list. You have to know whether it's a literal list or a mutable list, whether it's a proper list or a dotted list, etc. 2014-12-27T21:31:05Z Hexstream: Obsolete, use SETF CAR always. 2014-12-27T21:31:13Z pjb: sindikat: as a programmer, it's your responsibility. 2014-12-27T21:33:13Z isoraqathedh_l joined #lisp 2014-12-27T21:33:31Z akkad: http://paste.lisp.org/display/144932 2014-12-27T21:33:44Z pjb: sindikat: nothing can stop a lisp programmer from anything, because lisp programmers are gods (for their programs). Perhaps you should watch Tron (1982). 2014-12-27T21:34:14Z stassats: akkad: please don't use quickload like that 2014-12-27T21:34:24Z akkad: this is purely for testing, 2014-12-27T21:34:40Z stassats: even for testing 2014-12-27T21:34:42Z pjb: sindikat: you can also use replace to replace the contents of a sequence such as a list: (let ((b (list 1 2 3))) (replace b '(4 5 6)) b) --> (4 5 6) 2014-12-27T21:34:44Z Hexstream: While Common Lisp does allow to shoot yourself in the foot in some ways, it also tends to protect your foot in many other ways that many other languages will not do. 2014-12-27T21:34:44Z akkad: and it avoids the inevitable "you forgot to load it in quicklisp" response 2014-12-27T21:34:48Z akkad: ok thanks 2014-12-27T21:34:53Z pjb: sindikat: but replace doesn't change the length. 2014-12-27T21:35:08Z isoraqathedh quit (Ping timeout: 250 seconds) 2014-12-27T21:35:12Z stassats: akkad: just load it before, don't load it each time the function is caled 2014-12-27T21:35:26Z stassats: and why do you create a new list instead of using '(:cl-json :gzip-stream)? 2014-12-27T21:35:27Z akkad: stassats: it's just there for completeness 2014-12-27T21:35:35Z Hexstream: And good Common Lisp implementations generally protect your foot in many ways that the Common Lisp standard does not even require. 2014-12-27T21:35:45Z akkad: stassats: ignorance of such a function perhaps? 2014-12-27T21:35:56Z stassats: it ain't no function 2014-12-27T21:36:09Z Grue`: but you did use '(unsigned-byte 8) ;) 2014-12-27T21:36:12Z akkad: s/function/lambda/macro/method/class invocation 2014-12-27T21:36:18Z Grue`: even thought it's commented out 2014-12-27T21:36:20Z Quadrescence joined #lisp 2014-12-27T21:36:26Z stassats: cargo cult copy paste 2014-12-27T21:36:28Z akkad: trial and error 2014-12-27T21:36:28Z sindikat: Hexstream: Ok, what should I read for best practices concerning "not giving literals to destructive functions" and "how to use setf like a normal person"? 2014-12-27T21:36:49Z akkad: stassats: thank your 2014-12-27T21:36:56Z pjb: sindikat: Do you know any other programming language, or is Lisp your first? 2014-12-27T21:37:10Z stassats: akkad: your welcome 2014-12-27T21:37:15Z Quadrescence: stassats, CCCP? :) 2014-12-27T21:37:24Z omega3 joined #lisp 2014-12-27T21:37:59Z stassats: on soviet russia.. nah 2014-12-27T21:38:02Z stassats: in 2014-12-27T21:38:10Z pjb: sindikat: AFAIK, there's nothing to read for best practice, because it's so obvious. But I guess we could write down obvious things too. 2014-12-27T21:38:34Z Hexstream: sindikat: http://www.hexstreamsoft.com/articles/notes-tips-standard-common-lisp-symbols/themes/obsoletion/ and http://www.hexstreamsoft.com/articles/notes-tips-standard-common-lisp-symbols/themes/structural-sharing/ are apropos. 2014-12-27T21:38:38Z Grue`: sindikat: the normal style is to avoid destructive functions unless you really know what you're doing is safe; there are some common idioms like push/nreverse 2014-12-27T21:38:41Z sindikat: pjb: what's obvious? 2014-12-27T21:39:20Z pjb: it is obvious that you should know whether the function you use modifies or not its arguments, and whether the data you want to give it is modifiable or not. 2014-12-27T21:39:35Z pjb: and therefore it is obvious that you should not pass immutable data to a function that modifies it! 2014-12-27T21:39:43Z pjb: sindikat: Do you know any other programming language, or is Lisp your first? 2014-12-27T21:40:01Z sindikat: pjb: it isn't 2014-12-27T21:40:13Z pjb: What other language do you know? 2014-12-27T21:40:19Z sindikat: pjb: why does that matter? 2014-12-27T21:40:25Z theseb: a macro changes what does INTO the evaluator but how change what comes OUT? e.g. what if you wanted your DSL to use FALSE instead of false? 2014-12-27T21:40:25Z minion: theseb, memo from pjb: each CL implementation has a different rc file (~/.clisprc.lisp ~/ccl-init.lisp ~/.cmucl-init.lisp etc) So I put (load #P"~/rc/common.lisp") in each of them, and I put my CL customizations in that file. 2014-12-27T21:40:27Z pjb: To let me you ask a question. 2014-12-27T21:40:37Z Guest57395 is now known as sellout 2014-12-27T21:40:43Z zygentoma joined #lisp 2014-12-27T21:40:47Z theseb: pjb: thanks for the memos btw..i appreciate it 2014-12-27T21:40:55Z stassats: theseb: this has nothing to do with the evaluator 2014-12-27T21:41:10Z theseb: stassats: i've seen such components called a "postprocessor" 2014-12-27T21:41:14Z stassats: and your questions are as always an enigma 2014-12-27T21:41:48Z theseb: stassats: in short..what if you wanted to modify what evals spit out? 2014-12-27T21:41:50Z omega3 ponders how stassats keeps getting unignored 2014-12-27T21:41:55Z pjb: sindikat: So, do you know C for example? 2014-12-27T21:41:55Z theseb: stassats: isn't that clear? 2014-12-27T21:42:01Z omega3: ahh right, /save 2014-12-27T21:42:01Z malbertife quit (Quit: Leaving) 2014-12-27T21:42:20Z stassats: theseb: it produces objects 2014-12-27T21:42:35Z stassats: theseb: if you want different objects you should evaluate different things 2014-12-27T21:42:50Z stassats: omega3: so brave 2014-12-27T21:42:51Z ehu quit (Ping timeout: 256 seconds) 2014-12-27T21:42:53Z drmeister: Hello everyone. 2014-12-27T21:43:04Z stassats: theseb: now, maybe you want to print the same objects differently? 2014-12-27T21:43:05Z nyef: Hello drmeister. 2014-12-27T21:43:06Z sindikat: pjb: it's not obvious that a literal is immutable 2014-12-27T21:43:24Z Grue`: theseb: you can hack your implementation until evaluation works as you want (warning: it might result in non-conforming CL implementation) 2014-12-27T21:43:32Z pjb: sindikat: Yes, indeed. And this is one of the reason why a literal shall not be modified. 2014-12-27T21:43:42Z Hexstream: sindikat: Well, it's not necessarily "immutable", it's just that you must not modify it. 2014-12-27T21:44:25Z Hexstream: omega3: Because what he says is quite consistently relevant. 2014-12-27T21:44:39Z sindikat: Hexstream: well, "you must not modify a literal" is a "best practices", not an "obvious", right? :) 2014-12-27T21:44:50Z pjb: sindikat: what about: char* f(char c){char* s="abc"; s[0]=c; return s; } void g(){char *a=f('a'),*b=f('b'); printf("%s %s\n",a,b;} 2014-12-27T21:44:58Z theseb: stassats: YES! 2014-12-27T21:44:59Z pjb: sindikat: how do you feel about that? 2014-12-27T21:45:08Z nyef: sindikat: It's actually in CLHS somewhere. 2014-12-27T21:45:13Z stassats: theseb: yes what? 2014-12-27T21:45:21Z theseb: stassats: yes i want to print same objects differently 2014-12-27T21:45:23Z Hexstream: It's not obvious, but you must know it and honor it or you'll be very confused and sad. 2014-12-27T21:45:33Z stassats: theseb: so, you need to change the printer 2014-12-27T21:45:43Z stassats: which is not related to the evaluator 2014-12-27T21:45:57Z theseb: stassats: macros change the reader...what do you call stuff that changes the printer? *printer macros*? 2014-12-27T21:46:12Z stassats: macros do not change the reader, at least the macros macros 2014-12-27T21:46:14Z pjb: theseb: macros don't change the reader. 2014-12-27T21:46:16Z stassats: reader macros do change it 2014-12-27T21:46:24Z theseb: stassats: are there "printer macros"? 2014-12-27T21:46:30Z theseb: this is getting hardcore 2014-12-27T21:46:32Z stassats: why would there be? 2014-12-27T21:46:34Z zophy: ya know.. you could poke around in the .DATA section of a compiled C program and modify constants.. but why would you ? 2014-12-27T21:46:37Z pjb: theseb: yes: you write your own printing function! 2014-12-27T21:46:41Z stassats: but of course there is a printer dispatch 2014-12-27T21:46:48Z stassats: clhs s-p-d 2014-12-27T21:46:48Z specbot: set-pprint-dispatch: http://www.lispworks.com/reference/HyperSpec/Body/f_set_pp.htm 2014-12-27T21:46:48Z theseb: stassats: to modify how the same objects are printed! 2014-12-27T21:46:48Z pjb: theseb: (defun zulu-print (object stream) …) 2014-12-27T21:46:54Z Grue`: is there even any programming language, where modifying literals is allowed? 2014-12-27T21:47:01Z stassats: theseb: printed by whom? most objects are never printed 2014-12-27T21:47:27Z stassats: Grue`: i'm sure intercal will forgive you if you insert enough "PLEASE" 2014-12-27T21:47:32Z sindikat: Grue`: usually the literal is simply discarded 2014-12-27T21:48:00Z stassats: theseb: if you are using the standard printer, then see above, set-pprint-dispatch 2014-12-27T21:48:05Z pjb: Grue`: 42:=33; 42*2 --> 66 2014-12-27T21:48:22Z stassats: there's also the print-object method, but it cannot be applied to standard objects 2014-12-27T21:48:31Z theseb: stassats: this is a silly example...but suppose every time nil is in the output you wanted to instead print THIS_IS_A_NIL 2014-12-27T21:48:54Z pjb: (print-with-this-is-a-nil-nil object) 2014-12-27T21:48:57Z Hexstream: theseb: Configure the pretty-printer to your liking. 2014-12-27T21:49:01Z theseb: stassats: i'll look into set-pprint-dispatch 2014-12-27T21:49:10Z stassats: theseb: (set-pprint-dispatch 'null (lambda (stream object) (declare (ignore object)) (write-string "THIS_IS_A_NIL" stream))) 2014-12-27T21:49:26Z drmeister: I'm doing some major surgery on my C++ source code. Changing all #include directives such as #include "foundation.h" to #include . This is so that I can distribute the header files. 2014-12-27T21:49:46Z stassats: does it have to be /src/? 2014-12-27T21:49:54Z drmeister: The program that does the surgery was written in Clasp Common Lisp using SLIME. 2014-12-27T21:50:14Z stassats: theseb: provided that *print-pretty* is set to T 2014-12-27T21:50:15Z drmeister: stassats: Was that directed at me? 2014-12-27T21:50:24Z stassats: drmeister: most probably 2014-12-27T21:50:37Z manuel__ quit (Quit: manuel__) 2014-12-27T21:50:42Z Hexstream: (write my-object :pretty t) is a perhaps-not-enough-well-known feature. 2014-12-27T21:51:03Z pjb: drmeister: yes, given that it's probable to find it under /usr/local/include/clasp/src?/core/foundation.h 2014-12-27T21:51:17Z drmeister: The header files will be moved into /usr/include/clasp/... Is there a problem having header files like /usr/include/clasp/src/core/foundation.h? 2014-12-27T21:51:26Z Bicyclidine joined #lisp 2014-12-27T21:51:43Z stassats: Hexstream: few reasons to know it, when you have PPRINT 2014-12-27T21:52:16Z Hexstream: PPRINT has less useful return values. ;P 2014-12-27T21:52:21Z drmeister: pjb: Right - or /usr/local/include/clasp/... But is there a problem with having "../src/.." in there? 2014-12-27T21:52:24Z stassats: drmeister: it will always be /src/ 2014-12-27T21:52:35Z stassats: drmeister: think of all the bytes wasted 2014-12-27T21:52:47Z stassats: and cpu cycles 2014-12-27T21:53:08Z pjb: We expect to find .c in src/ and .h in include/ 2014-12-27T21:53:20Z pjb: so include/src/ is confusing. 2014-12-27T21:53:29Z Hexstream: But I was also vaguely alluding to the panoply of other keyword arguments you can conveniently use with WRITE instead of binding printer variables around the WRITE call. 2014-12-27T21:53:30Z drmeister: stassats: Oh I see - it would involve more pain for me to rearrange things. 2014-12-27T21:53:58Z drmeister: stassats, pjb: I see what you are saying. 2014-12-27T21:54:41Z drmeister: You are suggesting that I separate the header files from the source .cc files. 2014-12-27T21:55:06Z Ainieco joined #lisp 2014-12-27T21:55:08Z Ainieco: hello 2014-12-27T21:55:10Z pjb: At least, when you distribute them. yes. 2014-12-27T21:55:20Z pjb: Ainieco: hi 2014-12-27T21:55:30Z Ainieco: could someone please explain why do i get these warnings http://vpaste.net/JKrxQ ? it's really weird 2014-12-27T21:55:51Z stassats: let*, not let 2014-12-27T21:55:54Z drmeister: Ok. Let me think on that. If I was going to do that, now would be the time and it wouldn't take much work now. 2014-12-27T21:56:06Z pjb: Ainieco: read about let* and read again about let 2014-12-27T21:56:07Z Hexstream: Ainieco: Try LET*... 2014-12-27T21:56:08Z pjb: clhs let 2014-12-27T21:56:08Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/s_let_l.htm 2014-12-27T21:56:09Z Ainieco: stassats: i thought that only in scheme order matters 2014-12-27T21:56:21Z Ainieco: ugh, order is underfined that is 2014-12-27T21:56:25Z stassats: if anything, in scheme order doesn't matter 2014-12-27T21:56:55Z stassats: Ainieco: and it's the same deal in scheme 2014-12-27T21:57:18Z pjb: Ainieco: the order is defined, but the scope of the variable defined by LET is the body, not the bindings. 2014-12-27T21:57:19Z Ainieco: okay, thanks. it all makes sense now 2014-12-27T21:57:27Z pjb: Ainieco: again, read again clhs let! 2014-12-27T21:57:34Z Quadrescence quit (Quit: This computer has gone to sleep) 2014-12-27T22:00:21Z Ainieco: a beg pardon me but clhs is really hard to understad at times, like "let* is similar to let, but the bindings of variables are performed sequentially rather than in parallel" it doesn't really makes sense because of parallel word 2014-12-27T22:00:42Z pjb: Perhaps, yes. 2014-12-27T22:00:45Z Grue`: parallel = at the same time 2014-12-27T22:00:48Z stassats: Ainieco: they do not intersect 2014-12-27T22:00:58Z Ainieco: does it starts OS threads and ensures *parallel* execution even on one cpu... 2014-12-27T22:01:02Z Grue`: conceptually though 2014-12-27T22:01:20Z stassats: Ainieco: no 2014-12-27T22:01:29Z Ainieco: yeah, i understand that and what i just said is a nitpicking 2014-12-27T22:01:32Z stassats: Ainieco: it means one binding doesn't see another 2014-12-27T22:02:04Z Ainieco: but there are a lot of other places where wording is awful and hard to get right, excuse me for my rant 2014-12-27T22:02:15Z stassats: it's not for learning 2014-12-27T22:02:24Z Ainieco: just had it inside for some time and finally let it out, sorry 2014-12-27T22:02:28Z Hexstream: It was great for my learning. ;P 2014-12-27T22:02:33Z nikki93_ quit (Remote host closed the connection) 2014-12-27T22:02:37Z stassats: Ainieco: you should have let* it out 2014-12-27T22:02:43Z Ainieco: lol 2014-12-27T22:02:52Z keen__________15 joined #lisp 2014-12-27T22:02:59Z Hexstream: Ainieco: The wording takes some time to get used to, but it is very precise. 2014-12-27T22:03:07Z nikki93 joined #lisp 2014-12-27T22:03:12Z stassats: Hexstream: except when you start implementing things 2014-12-27T22:03:24Z Hexstream: Ainieco: You'll get used to certain terminologies and turns of phrases in due course, with some effort. 2014-12-27T22:04:00Z stassats: then it's time for bikeshedding and talmudic numerology 2014-12-27T22:04:30Z Dynasty joined #lisp 2014-12-27T22:04:33Z Hexstream: stassats: Depends, for instance if the standard explicitly says that something is "undefined", then to me that would be "fairly precise" in most circumstances. 2014-12-27T22:04:45Z pjb: Ainieco: https://awwapp.com/s/ca/a4/fe.html 2014-12-27T22:04:49Z keen__________14 quit (Ping timeout: 245 seconds) 2014-12-27T22:05:10Z Hexstream: It's at least more precise than saying things like "you can't do this" or "you must not do this" and such. 2014-12-27T22:05:25Z stassats: Hexstream: those are the easy cases 2014-12-27T22:06:09Z stassats: sometimes you have to read twenty different chapters and still not figure what should happen in a particular case 2014-12-27T22:06:36Z Ainieco: pjb: yeah, that's because you used all bindings in let and haven't referenced then inside other let binding, i understand difference between let and let*. for some reason i thought that it's only in scheme they have let* and in cl it's only let 2014-12-27T22:06:48Z pjb: Ainieco: https://awwapp.com/s/85/f8/08.html 2014-12-27T22:07:04Z Hexstream: I don't doubt it. I haven't tried implementing Common Lisp yet, but as a user I find the Common Lisp standard "fairly precise" in the aspects that matter to me. Or maybe I just have humble needs. 2014-12-27T22:07:31Z stassats: as a user as well "will my program run on all implementations?" 2014-12-27T22:07:31Z Ainieco: pjb: thanks 2014-12-27T22:07:34Z pjb: Ainieco: this problem of scope occurs both in CL and in scheme hence let* is present in both. 2014-12-27T22:07:37Z nikki93 quit (Ping timeout: 258 seconds) 2014-12-27T22:07:40Z Grue`: beach knows a lot of places where CLHS is vague or incorrect 2014-12-27T22:07:43Z Hexstream: stassats: Yes, and that's when there aren't outright contradictions in different places. :) 2014-12-27T22:07:57Z nyef: The most famous problem with CLHS is PROG2. 2014-12-27T22:08:08Z stassats: prog2 is the easiest case 2014-12-27T22:08:45Z nyef: A less well known, and somewhat debatable issue is the existence of (VECTOR NIL) as a subtype of string. 2014-12-27T22:10:42Z Hexstream: nyef: Wanna bet the most famous problem 5 or 10 years from now will be "backquotegate"? ;P Anyway, that's my bet because it's so fundamental, unless the matter gets resolved magically by someone. But I don't expect "better education about proper code-walking" to be a comprehensive solution. 2014-12-27T22:11:20Z Zhivago: Don't forget the array upgrading quagmire. 2014-12-27T22:11:38Z nyef: Hexstream: No, because that sort of stunt is clearly forbidden by the spec. 2014-12-27T22:11:48Z nyef: Zhivago: That'd be the (VECTOR NIL) thing. 2014-12-27T22:12:14Z gravicappa quit (Remote host closed the connection) 2014-12-27T22:12:17Z Zhivago: nyef: A broad superset thereof. 2014-12-27T22:12:19Z Hexstream: nyef: You mean hiding user code inside implementation-defined objects? ;P 2014-12-27T22:12:21Z stassats: i still don't know what should happen with checking array types, should it be upgraded or not before typechecking 2014-12-27T22:13:25Z nyef: Hexstream: I mean trying to parse implementation-defined objects generally. 2014-12-27T22:14:22Z nyef: Oh, there was another one... You can't implement a portable reader because there's no portable way to implement #S. 2014-12-27T22:14:36Z vinleod quit (Quit: ["Textual IRC Client: www.textualapp.com"]) 2014-12-27T22:14:46Z Hexstream: That's the exact thing that all backquote implementations since the dawn of time have correctly avoided. You didn't need to care about implementation-defined objects. But now you can't even fucking walk conses anymore, a well-known, battle-tested technique with some caveats and limitations but so very convenient and highly effective. 2014-12-27T22:14:49Z nyef: The reader is particularly squirrelly with respect to #\: as a constituent... 2014-12-27T22:15:28Z Zhivago: And generally doesn't handle unicode well. 2014-12-27T22:15:41Z nyef: A well-known, battle-tested, explicitly-forbidden-by-the-standard technique... 2014-12-27T22:15:50Z stassats: or was it complex upgrading 2014-12-27T22:16:06Z Hexstream: nyef: And where is that, please? 2014-12-27T22:16:11Z Zhivago: Speaking of which -- strings as character vectors had the usual problems. 2014-12-27T22:16:23Z Hexstream: I already know what page you're going to link to, and it doesn't explicitly forbid that at all. 2014-12-27T22:16:42Z nyef: Hexstream: The output from the backquote reader is not guaranteed to be transparent to walking conses. 2014-12-27T22:16:46Z stassats: (subtypep '(complex single-float) '(complex number)) => T, (subtypep '(vector single-float) '(vector number)) => NIL 2014-12-27T22:16:48Z pnpuff joined #lisp 2014-12-27T22:16:48Z stassats: (upgraded-complex-part-type 'single-float) => SINGLE-FLOAT 2014-12-27T22:16:58Z Hexstream: nyef: It was strongly implied to be. 2014-12-27T22:17:50Z Zhivago: hex: What does `',x produce? 2014-12-27T22:17:57Z nyef: ... In 2.4.6.1? 2014-12-27T22:18:40Z Hexstream: nyef: I always thought https://twitter.com/HexstreamSoft/statuses/492377270406103041?tw_i=492377270406103041&tw_e=details&tw_p=archive explained everything in a fairly unambiguous way, though I appear to be the only one who thinks so. 2014-12-27T22:18:44Z nyef: The explicit license of freedom to the implementation does not constraint the nature of the forms produced, even if all of the examples are in terms of list structure. 2014-12-27T22:18:56Z Zhivago: Sorry, '`,x 2014-12-27T22:18:57Z pnpuff left #lisp 2014-12-27T22:20:43Z _m___ joined #lisp 2014-12-27T22:20:51Z hiyosi quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2014-12-27T22:21:39Z stassats: Hexstream: i don't get it, the sbcl quasiquote things get macroexpanded away 2014-12-27T22:22:09Z Hexstream: stassats: One of my favorite techniques happens to be to walk some conses before doing any sort of macroexpansion. 2014-12-27T22:22:45Z Hexstream: It works remarkably well, I know there are some caveats and stuff but not being able to walk anything without fucking expanding everything really fucks up my shit. 2014-12-27T22:23:09Z stassats: tough luck then? 2014-12-27T22:23:14Z Hexstream: Yeah. 2014-12-27T22:23:57Z Bicyclidine quit (Ping timeout: 240 seconds) 2014-12-27T22:24:22Z Hexstream: I really need to write an article about it, cuz a bunch of tweets isn't very linkable, but it's not like it would change anything anyway except that it would be a free ticket to true insanity this time. 2014-12-27T22:24:29Z Zhivago: Why walk without expansion? 2014-12-27T22:24:44Z stassats: Hexstream: and clisp had this for a longer time 2014-12-27T22:24:46Z Hexstream: Zhivago: Much more readable macroexpansions, for one thing. 2014-12-27T22:25:06Z Hexstream: stassats: "this"? clisp also breaks backquote? 2014-12-27T22:25:18Z pawanspace joined #lisp 2014-12-27T22:26:18Z nyef: By the strict definition, backquote is not broken. 2014-12-27T22:26:21Z stassats: i stopped understanidng your problem 2014-12-27T22:26:31Z Hexstream: Zhivago: And sometimes it's not even "walking", just "dumb" replacement of symbols or whatever, or other "semantics-agnostic walking". That works really well unless the most popular CL implementation unilaterally decides to break backquote by hiding user code inside implementation-dependent objects. 2014-12-27T22:26:38Z stassats: it was always like this, now it's different 2014-12-27T22:27:20Z Hexstream: nyef: Well, at the very least and extremely strong and well-established tradition is broken. 2014-12-27T22:27:29Z stassats: previously it was (SB-IMPL::BACKQ-LIST X), now it's (SB-INT:QUASIQUOTE (#S(SB-IMPL::COMMA :EXPR X :KIND 0))) 2014-12-27T22:28:00Z stassats: how one is preferreable for code walkers is not clear to me 2014-12-27T22:28:29Z |3b| notes that ` has a tradition of being subtly broken too, at least judging by the things that was intended to fix 2014-12-27T22:28:32Z Hexstream: It's not like anyone had campaigned against Cons Walking Rights for years before, even though the few minor caveats were well-known and could easily be avoided. 2014-12-27T22:29:08Z stassats: how did you handle (SB-IMPL::BACKQ-LIST X) before? 2014-12-27T22:29:09Z sindikat quit (Quit: Page closed) 2014-12-27T22:29:14Z stassats: i am completely oblivious 2014-12-27T22:29:34Z Hexstream: stassats: Easily. I just didn't care as long as walking the conses eventually got to my form, X. 2014-12-27T22:29:56Z Hexstream: I didn't care about extra junk. I would just obviously recurse over those unimportant conses. 2014-12-27T22:30:27Z pawanspace quit (Quit: Colloquy for iPhone - http://colloquy.mobi) 2014-12-27T22:30:40Z stassats: what for did you do that? 2014-12-27T22:30:50Z Hexstream: But now recursion won't get me to my code. And normal macros can't even do that, since I don't expand them before doing that, but the new backquote implementation abuses its status as a reader-macro to do this horrible stuff before I get to walk over it. 2014-12-27T22:30:54Z pawanspace joined #lisp 2014-12-27T22:31:27Z Hexstream: stassats: http://www.hexstreamsoft.com/libraries/bubble-operator-upwards/ is one particular thing, but I'm using cons-walking all over the fucking place. 2014-12-27T22:32:05Z Hexstream: bubble-operator-upwards does what I call "semantically-oblivious conses-walking". 2014-12-27T22:32:07Z stassats: your page doesn't show backquote 2014-12-27T22:32:47Z Hexstream: bubble-operator-upwards may break if someone uses it with a backquoted form in the new SBCL versions. 2014-12-27T22:33:11Z zajn quit (Remote host closed the connection) 2014-12-27T22:33:57Z CrazyM4n joined #lisp 2014-12-27T22:34:14Z mrSpec quit (Remote host closed the connection) 2014-12-27T22:34:54Z Hexstream: stassats: https://github.com/Hexstream/multiple-value-variants/commit/c08a1fa4e8d61b8d26c5e6dd5f4ec2278b2241b1 is also an example of something I had to "fix". 2014-12-27T22:35:23Z stassats: so when CCL expands into LIST* and APPEND and you are using your bubble thing is asked to work on LIST* or APPEND, it breaks too? 2014-12-27T22:35:23Z Hexstream: Because positional-lambda does so-called "naïve" cons-walking. 2014-12-27T22:35:35Z stassats: i mean broken things will be broken, even if they happen to work sometimes 2014-12-27T22:36:41Z Hexstream: Well, I haven't tried CCL. bubble-operator-upwards may break if you care about code quoted by backquote, but it generally works if you care only about code unquoted by backquote, if you see what I mean. 2014-12-27T22:36:57Z Patzy quit (Ping timeout: 245 seconds) 2014-12-27T22:36:57Z akkad: stassats: '(:cl-json :gzip-stream) as an argument to with-open-file? 2014-12-27T22:37:20Z stassats: akkad: that doesn't seem like it would fit anywhere 2014-12-27T22:37:26Z admg quit (Quit: Laptop gone to sleep...) 2014-12-27T22:37:35Z |3b| thought that was an argument to ql:quickload or something 2014-12-27T22:37:43Z Patzy joined #lisp 2014-12-27T22:37:43Z akkad: I misread your previous statement as cl-json:gzip-stream 2014-12-27T22:37:48Z Hexstream: There are a few corner cases, but things really used to work quite fine. Now it seems the only thing I can reasonably do is think about using a backquote replacement that won't give other people license to fuck up my shit at their convenience. 2014-12-27T22:37:50Z akkad: "why aren't you using this" 2014-12-27T22:38:11Z stassats: Hexstream: so, you're using something that happend to work in some circumstances 2014-12-27T22:38:11Z admg joined #lisp 2014-12-27T22:38:18Z akkad: oh I see, no need for explicit list 2014-12-27T22:38:27Z |3b|: Hexstream: well, it still works, it just has some caveats 2014-12-27T22:38:38Z pppp2 joined #lisp 2014-12-27T22:38:45Z zajn joined #lisp 2014-12-27T22:39:03Z Ainieco quit (Quit: leaving) 2014-12-27T22:39:44Z Hexstream: stassats: No, really, I was quite mindful of the limitations, and there were many advantages to doing it this way, like a much simpler implementation and much nicer macroexpansions. It's not like, "oh, this was never supposed to work in any sort of way in the first place" like some many people are trying so hard to make me believe. 2014-12-27T22:39:57Z Hexstream: so many* 2014-12-27T22:40:15Z dkcl joined #lisp 2014-12-27T22:41:11Z stassats: in clisp, it's `(x ,x y) is (system::backquote (x (system::unquote x) y)) 2014-12-27T22:41:22Z stassats: so, you can't know what is quoted and what is not without expanding 2014-12-27T22:41:29Z |3b|: Hexstream: you should probably document the 'edge cases' and 'caveats' in bubble-operator-upwards docs. As it is documented now, i'd expect it to work on anything (not that i can tell what it is supposed to do even with the examples) 2014-12-27T22:42:11Z Hexstream: stassats: I know that, but I only cared about "unquoted" code anyway, and it was my rule that you can't care about backquoted-but-not-unquoted code. 2014-12-27T22:42:19Z |3b| has no idea what the limitations are in that case, since i wouldn't have thought to check whether it used a proper codewalker or not 2014-12-27T22:42:52Z stassats: Hexstream: then it shows i still don't understand what you're doing 2014-12-27T22:43:02Z Hexstream: |3b|: It does "semantics-oblivious cons-walking", as I said. It doesn't care about what IF means and stuff like that. 2014-12-27T22:43:27Z |3b|: Hexstream: is that mentioned anywhere in bubble-operator-upwards docs? 2014-12-27T22:43:29Z Hexstream: stassats: Yeah, I've come to realize that what I was doing was a bit less conventional and obvious than I initially assumed. 2014-12-27T22:43:35Z akkad left #lisp 2014-12-27T22:43:51Z omega3 waves bye bye to the idiot 2014-12-27T22:44:17Z omega3: stassats: you're right, this channel is not a place for newbies to learn CL. they need to learn on their own. 2014-12-27T22:44:21Z Hexstream: |3b|: It's implied by the examples... 2014-12-27T22:44:36Z stassats: omega3: i never said that 2014-12-27T22:44:55Z nikki93 joined #lisp 2014-12-27T22:45:32Z omega3: oh, sorry that was in private 2014-12-27T22:45:35Z Hexstream: |3b|: bubble-operator-upwards obviously doesn't know what PLATE, HAM, EGGS and BEANS means... 2014-12-27T22:46:03Z |3b|: well, neither do i 2014-12-27T22:46:03Z stassats: omega3: what are you talking about? 2014-12-27T22:46:15Z stassats: Hexstream: it means breakfast time 2014-12-27T22:47:32Z Hexstream: positional-lambda's docs is a bit more explicit about the "surface parsing" limitations (look at the bottom): http://www.hexstreamsoft.com/libraries/positional-lambda/ 2014-12-27T22:48:11Z Hexstream: |3b|: And you don't need to understand what it means to understand what bubble-operator-upwards does, that's the beauty of semantics-obliviousness... 2014-12-27T22:48:16Z omega3: this channel reminds me of when I was a Turkish Customs agent.... 2014-12-27T22:48:17Z stassats: ` doesn't produce a source s-exp, i never would have expected this to work 2014-12-27T22:48:20Z omega3: sooooooo many assholes 2014-12-27T22:48:21Z omega3 left #lisp 2014-12-27T22:48:32Z stassats: one less 2014-12-27T22:48:43Z jumblerg joined #lisp 2014-12-27T22:48:50Z antonv quit (Remote host closed the connection) 2014-12-27T22:50:31Z hiroakip joined #lisp 2014-12-27T22:52:02Z Bicyclidine joined #lisp 2014-12-27T22:52:28Z Hexstream: stassats: Anyway, you don't really seem to care a lot (or "at all"), but you at least tried to understand and I find your brand of "not caring" much more considerate than what I got so far, so thanks for listening in any case! 2014-12-27T22:54:18Z stassats: and if it were '(SB-IMPL::COMMA :EXPR X :KIND 0) instead of #S(SB-IMPL::COMMA :EXPR X :KIND 0) would your thing work? 2014-12-27T22:55:17Z meiji11 quit (Remote host closed the connection) 2014-12-27T22:55:43Z Hexstream: stassats: Sure, as long as just blindly recursing through conses eventually gets to my own "unquote" code, everything is fine and dandy! 2014-12-27T22:56:03Z Hexstream: "unquoted", I mean. 2014-12-27T22:56:43Z stassats: ok, let me try that 2014-12-27T22:57:06Z isoraqathedh_l is now known as isoraqathedh 2014-12-27T22:57:29Z Ven joined #lisp 2014-12-27T22:58:54Z Hexstream: It's a bit analogous to macroexpanding a call to a macro, (foo bar baz) where I don't care where bar and baz appear in the expansion, maybe even in multiple places or whatever, as long as bar and baz are eventually reachable as-is through blind cons-walking, I don't care about the rest. 2014-12-27T22:59:08Z EvW quit (Ping timeout: 244 seconds) 2014-12-27T22:59:11Z nyef: ... Including in literal data? That's scary. 2014-12-27T22:59:40Z Hexstream: nyef: I would know not to use inappropriate objects in inappropriate places as a user. 2014-12-27T22:59:47Z stassats: Hexstream: what about #(SB-IMPL::COMMA :EXPR X :KIND 0)? 2014-12-27T23:00:14Z Hexstream: stassats: Well, that is not reachable through cons-walking. 2014-12-27T23:00:27Z stassats: why isn't it? 2014-12-27T23:00:47Z Hexstream: Because just recursing through conses will never get me to my X which I cherish so much. 2014-12-27T23:01:04Z nyef: ... Because it's in a vector? 2014-12-27T23:01:30Z stassats: do you have an aversion to vectors? 2014-12-27T23:01:32Z Hexstream: Yeah. But I guess it's not as bad as a straight up implementation-defined object I can't even portably know about. 2014-12-27T23:01:47Z stassats: i can see not being able to walk a structure, but what's the problem with vectors? 2014-12-27T23:01:50Z Hexstream: I have an aversion to hiding code inside of non-conses. 2014-12-27T23:02:01Z Hexstream: User code, specifically. 2014-12-27T23:02:03Z Bicyclidine: wow, it's just like months ago 2014-12-27T23:02:18Z nyef: I have an aversion to code that tries to be too clever. 2014-12-27T23:02:33Z Hexstream: stassats: Well, I'd rather not add a special case for walking vectors when that shouldn't be necessary. 2014-12-27T23:02:41Z Bicyclidine: i've written code that does blind code walking precisely once. it has already broken once. it's pretty rad 2014-12-27T23:02:43Z antonv joined #lisp 2014-12-27T23:02:46Z Bicyclidine: blind cons walking 2014-12-27T23:03:15Z stassats: Hexstream: so you just want your nonconforming code magically start working? 2014-12-27T23:03:49Z Hexstream: Bicyclidine: I've written tons and tons of code like that, and before backquotegate everything was fine and dandy as long as I was mindful of the limitations and used the technique only in appropriate places where it worked well in practice. 2014-12-27T23:04:24Z Hexstream: Backquote implementations have produced cons-walkable code for decades, I don't see why that suddenly has to change. 2014-12-27T23:04:32Z Bicyclidine: i don't think it counts as a watergate if it's just you 2014-12-27T23:04:58Z Hexstream: stassats: I don't see how it's "nonconforming". 2014-12-27T23:05:19Z Bicyclidine: backquote is allowed to expand into whatever the heck it wants, so if you're relying on any particular expansion, you're nonconforming. easy 2014-12-27T23:05:24Z Bicyclidine: pretty sure i said the same thing months ago 2014-12-27T23:05:58Z Hexstream: I'm not relying any particular expansion, only on cons-walkability. I don't think it's too much to ask, and for decades, it wasn't. 2014-12-27T23:06:01Z stassats: Hexstream: it expects things that aren't guaranteed 2014-12-27T23:06:16Z Bicyclidine: cons walkability is not guaranteed any more than any particular expansion 2014-12-27T23:06:38Z oleo is now known as Guest66245 2014-12-27T23:06:42Z Hexstream: stassats: It was strongly implied that it was guaranteed by the strong established practice and the lack of explicit forbidding of cons-walking in the standard. 2014-12-27T23:07:26Z Bicyclidine: "not explicitly forbidden" is my new go-to test for legality 2014-12-27T23:07:38Z |3b|: Hexstream: "established practice" is for ` to be broken in lots of edge cases too, should we assume that is a guarantee too? 2014-12-27T23:08:00Z Hexstream: Bicyclidine: Then how do you explain that relying on a particular expansion would regularly break whenever the particular expansion would change, which could be several times a month, whereas the particular property of cons-walkability has worked unchanged for decades on every implementation ever? 2014-12-27T23:08:13Z |3b|: other option is to break printing of ` forms, which would probably annoy lots of users as well 2014-12-27T23:08:21Z Hexstream: Bicyclidine: Wait, what's your real name? Did we talk about this before? 2014-12-27T23:08:23Z oleo__ joined #lisp 2014-12-27T23:08:24Z Bicyclidine: bike. 2014-12-27T23:08:32Z Bicyclidine: we did. i think i'm not going to bother again. 2014-12-27T23:09:23Z Guest66245 quit (Ping timeout: 240 seconds) 2014-12-27T23:10:12Z Hexstream: Well, I don't remember talking with you about this before, so it must not have been at length. I tried really hard to confine the discussion to my twitter so that I may more easily be ignored, as I was. ;P 2014-12-27T23:10:21Z Bicyclidine: it was in #sbcl 2014-12-27T23:11:00Z Hexstream: Yeah, I said I "tried really hard to", but in any case the bulk of it was on my twitter. There was pretty much nothing in #lisp and #sbcl in comparison, trust me. 2014-12-27T23:11:00Z vaporatorius quit (Quit: Leaving) 2014-12-27T23:11:15Z nightshade427 quit (Ping timeout: 258 seconds) 2014-12-27T23:11:15Z sbryant quit (Ping timeout: 258 seconds) 2014-12-27T23:11:17Z vaporatorius joined #lisp 2014-12-27T23:11:52Z Bicyclidine: basically http://xkcd.com/1172/ + legalism. 2014-12-27T23:12:18Z Hexstream: Ok, I wasn't entirely ignored on my twitter, but it was almost nothing for an issue that I thought was so obviously fundamental. 2014-12-27T23:12:50Z Bicyclidine: maybe you thought wrong, then. 2014-12-27T23:13:17Z eudoxia quit (Ping timeout: 244 seconds) 2014-12-27T23:13:33Z optikalmouse quit (Quit: Leaving) 2014-12-27T23:13:45Z stassats: who uses twitter anyway? 2014-12-27T23:14:26Z dim: it's useful to find nice articles and papers to read, and be confronted to new ideas too 2014-12-27T23:14:32Z dim: also for pictures of cats 2014-12-27T23:15:14Z danielfm quit (Ping timeout: 250 seconds) 2014-12-27T23:15:31Z Shinmera: and to shout at clouds 2014-12-27T23:15:38Z Hexstream: Bicyclidine: There's quite a lot of warranted pride in the Common Lisp community about the ability to write old code as-is since the standard never changes, but this backquote change breaks TONS of "old" code, probably including a lot of On Lisp among other things, though I haven't checked yet and I don't have the time. 2014-12-27T23:16:01Z sbryant joined #lisp 2014-12-27T23:16:39Z Hexstream: Haha, "run old code as-is", I mean. 2014-12-27T23:16:49Z Bicyclidine: lots of old code is full of hack implementation crap, like clx and series. now it's jerry rigged and full of problems. being held back by old crap sucks. 2014-12-27T23:17:23Z Shinmera: The right way to go is to fix things to work right, not to keep on supporting hackjobs forever. 2014-12-27T23:18:08Z nightshade427 joined #lisp 2014-12-27T23:18:21Z Hexstream: Right now the most probably fix I see is stop using CL backquote and write replacement as just a simple macro. Simple macros, as opposed to fucking reader-macros, can't fuck up my shit like that. 2014-12-27T23:18:27Z Hexstream: probable* 2014-12-27T23:19:04Z Hexstream: I mean the most probable fix for me. People are free not to give a shit and continue using CL backquote. 2014-12-27T23:19:09Z Bicyclidine: that's stupid. what's your code that does this, again? the example i saw before was stupid, something about blindly negating all numbers. 2014-12-27T23:19:51Z nyef: This one is about blindly substituting function parameters for keywords. 2014-12-27T23:19:53Z Hexstream: Bicyclidine: I'm not interested in doing months of archeology in my old not-yet-cleaned up code to dig out all the examples. 2014-12-27T23:20:28Z Bicyclidine: i don't see any reason i should be interested in caring, then... 2014-12-27T23:21:07Z Hexstream: I don't see any reason I should be interested in your disinterest, so let's keep it at that I guess. 2014-12-27T23:21:37Z Bicyclidine: you're interested enough to try to convince me, i figured 2014-12-27T23:21:54Z Hexstream: Yeah, but since you're not receptive, I adapt. 2014-12-27T23:22:07Z logand joined #lisp 2014-12-27T23:22:42Z nyef: Preliminary conclusion: plambda operates at macroexpand time, when it should have a read-time component for the lambda itself and for the numbered arguments. 2014-12-27T23:22:42Z _m___ quit (Remote host closed the connection) 2014-12-27T23:23:09Z nyef: As soon as there's a reliable read-time operation, the whole backquote thing pretty much falls away. 2014-12-27T23:23:13Z Hexstream: I generally hate user-defined reader-macros and so try to avoid making my own if a simple macro will do. 2014-12-27T23:23:31Z nyef: Too bad it won't do for this. 2014-12-27T23:23:59Z nyef: Anyway, I think I'm going to go back to glaring at CLIM II 11.3. 2014-12-27T23:30:18Z dim: so, is there a working CLIM implementation around? 2014-12-27T23:30:37Z pawanspace quit (Remote host closed the connection) 2014-12-27T23:30:52Z dim: wow quicklisp is listing lots of things here 2014-12-27T23:30:57Z nyef: dim: If there is, it probably doesn't conform to the specification. 2014-12-27T23:31:12Z tadni joined #lisp 2014-12-27T23:31:14Z stassats: i kinda like the way backquote changes broke things 2014-12-27T23:31:21Z danielfm joined #lisp 2014-12-27T23:31:29Z stassats: now people would know better than to expect things where they cannot be expected 2014-12-27T23:31:29Z nyef: stassats: A sort of software darwinianism? 2014-12-27T23:31:48Z nyef: ... or darwinism, however you want to spell it. 2014-12-27T23:31:48Z Xach: dim: part of that is the impulse to name clim-related things "clim-whatever" 2014-12-27T23:32:09Z stassats: nyef: sbcl already tries to notify of undefined behaviour 2014-12-27T23:32:10Z Xach: just like C hackers name everything c-irc, c-database, c-twitter, etc. 2014-12-27T23:32:17Z stassats: so, this is just one of the sbcl features 2014-12-27T23:32:57Z pjb: and ruby hackers ruby-irc ruby-db ruby-twitter, and python hackers py-irc py-db py-twitter. 2014-12-27T23:32:58Z dim: Xach: yeah, clim-clx and clim-lisp and climacs and whatnot 2014-12-27T23:33:05Z nyef: Just like all of the projects starting with g, k, q, and various other things in the C/C++ world... 2014-12-27T23:34:57Z Xach used to use ws_irc 2014-12-27T23:35:03Z nydel joined #lisp 2014-12-27T23:36:23Z zajn quit (Read error: Connection reset by peer) 2014-12-27T23:36:52Z zajn joined #lisp 2014-12-27T23:39:20Z hardenedapple quit (Quit: WeeChat 1.0.1) 2014-12-27T23:40:55Z danielfm left #lisp 2014-12-27T23:43:04Z davazp quit (Remote host closed the connection) 2014-12-27T23:43:45Z oleo__ quit (Quit: Verlassend) 2014-12-27T23:45:25Z towodo quit (Quit: towodo) 2014-12-27T23:45:29Z sindikat joined #lisp 2014-12-27T23:45:50Z pppp2 quit (Read error: Connection reset by peer) 2014-12-27T23:46:52Z DrCode quit (Remote host closed the connection) 2014-12-27T23:47:45Z DrCode joined #lisp 2014-12-27T23:47:46Z stassats: dim: clim-clx and clim-lisp are a part of mcclim 2014-12-27T23:47:58Z Bicyclidine quit (Read error: No route to host) 2014-12-27T23:48:16Z Bicyclidine joined #lisp 2014-12-27T23:48:26Z dim: each time I have a look at making GUIs my conclusion is the same: platform dependencies, libs, oh my; just use html/css/js really 2014-12-27T23:48:43Z dim: problem is learning enough of them to be proficient 2014-12-27T23:48:51Z stassats: just ship the necessary libraries 2014-12-27T23:48:58Z dim: but actually, learning any widget/toolkit is a problem too 2014-12-27T23:49:00Z stassats: html/css/js is really awful 2014-12-27T23:49:14Z dim: it kind'of works kind of everywhere 2014-12-27T23:49:36Z stassats: poorly 2014-12-27T23:49:55Z stassats: but it's all the rage, whatchagonna do 2014-12-27T23:50:12Z Zhivago: It's not bad if you ignore IE. 2014-12-27T23:50:32Z Shinmera: Still pbad even if you ignore IE. 2014-12-27T23:50:35Z dim: well you'd only target web browsers, IE is out 2014-12-27T23:50:44Z Hexstream: I ignore everything that isn't a W3C standard, basically. 2014-12-27T23:50:57Z dim: arena! 2014-12-27T23:51:06Z dim: or what was the name of their implementation? 2014-12-27T23:51:14Z stassats: i also don't like high latency and high bandwaidth requirements 2014-12-27T23:51:16Z s00pcan__ quit (Quit: leaving) 2014-12-27T23:51:30Z dim: I'm thinking have the webserver local 2014-12-27T23:51:38Z s00pcan joined #lisp 2014-12-27T23:51:38Z oleo__ joined #lisp 2014-12-27T23:51:53Z oleo__ is now known as oleo 2014-12-27T23:52:03Z dim: it seems way easier to ship a webserver and to open a frame than to ship a fully working multi-platform GUI application 2014-12-27T23:52:16Z Xach: for a while i thought about having a webserver in the quicklisp client to have a local gui 2014-12-27T23:52:33Z Xach: it was harder to do than simple client sockets so i stopped 2014-12-27T23:52:52Z dim: oh, right, you don't want quicklisp to depend on hunchentoot or the like 2014-12-27T23:53:23Z dim: maybe it could be an extension to the client and as a precondition you have a working quicklisp setup? 2014-12-27T23:53:32Z stassats: shipping is easy if you actually do shipping 2014-12-27T23:53:35Z dim: now you may depend on hunchentoot 2014-12-27T23:53:39Z normanrichards quit 2014-12-27T23:53:44Z Shinmera: I don't quite understand why you'd want to control QL from anything but a REPL anyway 2014-12-27T23:53:45Z stassats: there's no pushbutton, but once you set everything up you're set 2014-12-27T23:54:03Z dim: stassats: well they click a download link then open the thing and it must run, that's about the shipping I have in mind 2014-12-27T23:54:04Z Xach: I thought it could be nice to see more stuff at a time. 2014-12-27T23:54:18Z Xach: Repl exploration is like looking at a circus through a straw 2014-12-27T23:55:48Z dim: stassats: I want to develop a game to teach (the gamer learns) programming 2014-12-27T23:56:06Z Shinmera: dim: You aren't the first with that idea. 2014-12-27T23:56:09Z dim: like a normal game only all the user interactions are done through eval'ing code 2014-12-27T23:56:13Z dim: Shinmera: I know 2014-12-27T23:56:21Z stassats: can you shoot folks? 2014-12-27T23:56:24Z Shinmera still thinks that idea is garbage, but w/e 2014-12-27T23:56:34Z dim: stassats: you will be allowed to contribute shooter games 2014-12-27T23:57:07Z dim: Shinmera: what I don't like is teaching programming with simplified languages and environments 2014-12-27T23:57:17Z dim: I want to teach with a scheme or CL, the whole thing 2014-12-27T23:57:22Z Shinmera: dim: I don't see where a game comes in for that. 2014-12-27T23:57:50Z dim: well I then to think smalltalk design is right to focus on letters, numbers, pictures and sounds 2014-12-27T23:57:57Z |3b| plays lots of games that would be fun to automate, so having that built-in could be interesting 2014-12-27T23:57:57Z dim: so I want something where you can manipulate all that 2014-12-27T23:58:29Z stassats: |3b|: to stop playing them? 2014-12-27T23:58:55Z |3b|: stassats: not exactly 2014-12-27T23:59:00Z dim: but maybe I should focus on programming robots nowadays 2014-12-27T23:59:09Z stassats: to shoot real folks? 2014-12-27T23:59:23Z dim: having a little piece of hardware move under your commands, and teach it to see and react for itself, etc 2014-12-27T23:59:38Z dim: stassats: you're the shooter, I'm not 2014-12-27T23:59:41Z |3b|: some things can be interesting to do even if a computer could do them better, but making the computer do them is a separate but also interesting task 2014-12-27T23:59:48Z Hexstream: tasvideos.org is awesome, btw! (Games? Check. Automation? Check.)