2015-12-29T00:02:22Z Petit_De` quit (Read error: Connection reset by peer) 2015-12-29T00:02:23Z Petit_Dejeuner quit (Read error: Connection reset by peer) 2015-12-29T00:02:39Z Petit_De` joined #lisp 2015-12-29T00:02:47Z Petit_Dejeuner joined #lisp 2015-12-29T00:03:23Z zupoman quit (Ping timeout: 260 seconds) 2015-12-29T00:03:43Z resttime joined #lisp 2015-12-29T00:06:54Z s00pcan_ joined #lisp 2015-12-29T00:09:27Z resttime quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2015-12-29T00:09:39Z mac_ified quit 2015-12-29T00:16:49Z jasom: Thought's on this versus shebang? https://gist.github.com/jasom/467cbb40667f96f75ae4 2015-12-29T00:19:00Z anti-freeze joined #lisp 2015-12-29T00:21:17Z brimdish joined #lisp 2015-12-29T00:21:21Z brimdish: How useful is something like SICP (or even theoretical computer science in general) to someone interested in security/ethical hacking? Seems *COMPLETELY* useless. 2015-12-29T00:21:48Z jasom: brimdish: off-topic, but I'll talk about it in #lispcafe if you like 2015-12-29T00:22:25Z cmack quit (Ping timeout: 260 seconds) 2015-12-29T00:22:39Z White_Flame: security is about thinking outside the box. SICP is about the fundamentals of computing. Kind of different realms 2015-12-29T00:23:05Z rvchangue quit (Ping timeout: 276 seconds) 2015-12-29T00:25:02Z wizzo quit (Ping timeout: 276 seconds) 2015-12-29T00:25:41Z cmatei quit (Ping timeout: 276 seconds) 2015-12-29T00:25:57Z cmatei joined #lisp 2015-12-29T00:26:03Z rvchangue joined #lisp 2015-12-29T00:26:08Z InvalidCo: I don't think common lisp is very well suited for cracking mad boxen 2015-12-29T00:26:18Z wizzo joined #lisp 2015-12-29T00:26:21Z InvalidCo: most pentest tools I've used were written with C and python 2015-12-29T00:26:43Z ebrasca quit (Read error: Connection reset by peer) 2015-12-29T00:27:15Z InvalidCo: this is also reflected in how the environment is designed to be hackable but not to be made hacker-proof 2015-12-29T00:28:04Z InvalidCo: sandboxing is not an out-of-the-box feature and I'm under the assumption reading symbols is quite hardwired 2015-12-29T00:28:52Z jasom: READ and potentially malicious inputs are no good together 2015-12-29T00:29:07Z jasom found more than one bug in lisp web frameworks due to that 2015-12-29T00:30:05Z jasom: including a read-from-string with *read-eval* not bound (big oops) 2015-12-29T00:31:24Z InvalidCo: sicp most likely even less of a solution for "hacking", maybe some applications in hiding program code from heuristics 2015-12-29T00:31:53Z Denommus quit (Quit: going home) 2015-12-29T00:33:15Z Bicyclidine: I think fundamentals of computing stuff is useful for a few things, like return-oriented programming. 2015-12-29T00:34:35Z lisse_ quit (Ping timeout: 240 seconds) 2015-12-29T00:35:52Z White_Flame: that's more compiler tech than high-falutin' CS 2015-12-29T00:36:55Z ajf- quit (Quit: Textual IRC Client: www.textualapp.com) 2015-12-29T00:37:03Z Jonsky quit (Ping timeout: 255 seconds) 2015-12-29T00:37:54Z InvalidCo: I thought sicp explains compiler tech in high-falutin' CS terms 2015-12-29T00:39:31Z InvalidCo: of course, you might not count compiler tech as fundamentals of computing 2015-12-29T00:40:34Z s00pcan_ quit (Ping timeout: 245 seconds) 2015-12-29T00:42:34Z s00pcan_ joined #lisp 2015-12-29T00:42:47Z ACE_Recliner quit (Ping timeout: 264 seconds) 2015-12-29T00:43:56Z warweasle joined #lisp 2015-12-29T00:45:06Z brimdish quit (Quit: brimdish has decided to call it quits and kill himself) 2015-12-29T00:49:14Z warweasle: Would anyone object to makeing an alias for ql:quickload to ql:ql? 2015-12-29T00:51:36Z sz0 quit (Ping timeout: 272 seconds) 2015-12-29T00:56:07Z s00pcan_ quit (Ping timeout: 260 seconds) 2015-12-29T00:57:19Z bcoburn joined #lisp 2015-12-29T00:59:12Z bcoburn_t quit (Ping timeout: 272 seconds) 2015-12-29T01:00:08Z maguire joined #lisp 2015-12-29T01:05:21Z ACE_Recliner joined #lisp 2015-12-29T01:09:20Z harish_ quit (Ping timeout: 272 seconds) 2015-12-29T01:09:33Z karswell` joined #lisp 2015-12-29T01:09:46Z White_Flame: warweasle: I tend to put stuff like that into the user lisp startup file 2015-12-29T01:10:33Z warweasle: White_Flame: I could, but I know I'll forget it. :) 2015-12-29T01:12:50Z s00pcan_ joined #lisp 2015-12-29T01:16:29Z jeti quit (Ping timeout: 246 seconds) 2015-12-29T01:19:10Z pjb: phoe_krk: have a look at https://github.com/informatimago/emacs/blob/master/slime-rpc.el 2015-12-29T01:22:26Z pjb: warweasle: cf. com.informatimago.tools.quicklisp 2015-12-29T01:22:57Z pjb: warweasle: you don't have to bug the library or tool author for your own UI questions, just write your own commands. 2015-12-29T01:24:21Z warweasle: what is slime-rpc part of? 2015-12-29T01:25:27Z warweasle: pjb: Also, I have slime-dump-last-result and slime-dump-last-expression, which dumps the last repl result or expression, respectively. 2015-12-29T01:25:34Z warweasle: If you want them. 2015-12-29T01:26:39Z Karl_Dscc quit (Remote host closed the connection) 2015-12-29T01:26:54Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-29T01:27:15Z pjb: warweasle: slime-rpc is part of the universe. 2015-12-29T01:27:42Z adhoc quit (Ping timeout: 250 seconds) 2015-12-29T01:29:32Z diginet quit (Quit: diginet has quit!) 2015-12-29T01:29:37Z adhoc joined #lisp 2015-12-29T01:29:50Z diginet joined #lisp 2015-12-29T01:30:52Z earl-ducaine quit (Ping timeout: 272 seconds) 2015-12-29T01:31:06Z Denommus joined #lisp 2015-12-29T01:33:57Z karswell` is now known as karswell 2015-12-29T01:34:18Z diginet quit (Client Quit) 2015-12-29T01:37:04Z Nikotiini quit (Remote host closed the connection) 2015-12-29T01:38:01Z grouzen joined #lisp 2015-12-29T01:38:02Z warweasle quit (Read error: Connection reset by peer) 2015-12-29T01:39:47Z kazlock_: Why do some people use :kwd for loop constructs while other just use kwd? 2015-12-29T01:40:08Z FreeBirdLjj joined #lisp 2015-12-29T01:40:14Z warweasle` joined #lisp 2015-12-29T01:43:52Z nyef: It wouldn't surprise me if the answer were "syntax highlighting". 2015-12-29T01:44:26Z jasom: I assumed it was to make it stand-out visually regardless of syntax highlighting 2015-12-29T01:44:27Z fsmunoz: Any recommendations for outputing HTML? I know there are several web frameworks but due to the nature of my experiment I'm using Jetty for that so I mostly need a way to quickly do forms and the like, is cl-who still the most common choice? 2015-12-29T01:44:46Z jasom: I use cl-who 2015-12-29T01:45:07Z EvW1 joined #lisp 2015-12-29T01:45:31Z jasom: note that it can be a good idea to dynamically bind a symbol for outputting to html if you want to do anything with nested functions that also output html 2015-12-29T01:45:54Z EvW quit (Ping timeout: 250 seconds) 2015-12-29T01:45:55Z EvW1 is now known as EvW 2015-12-29T01:46:39Z lisse_ joined #lisp 2015-12-29T01:47:07Z eazar001 joined #lisp 2015-12-29T01:49:13Z fsmunoz: ack 2015-12-29T01:50:30Z EvW quit (Ping timeout: 260 seconds) 2015-12-29T01:54:19Z diginet joined #lisp 2015-12-29T01:54:22Z pjb: kazlock_: because if you have a package that exports a symbol such as FOR or COLLECT, and you use a (loop for i below 3 collect i) then you (use-package "THAT-PACKAGE"), then you will get an error. 2015-12-29T02:01:15Z kazlock_: pjb: I see 2015-12-29T02:04:29Z s00pcan_ quit (Ping timeout: 276 seconds) 2015-12-29T02:06:11Z eazar001 quit (Quit: WeeChat 1.3) 2015-12-29T02:07:23Z scymtym quit (Ping timeout: 264 seconds) 2015-12-29T02:09:44Z aap_ joined #lisp 2015-12-29T02:10:23Z _sjs quit (Ping timeout: 264 seconds) 2015-12-29T02:13:21Z aap quit (Ping timeout: 265 seconds) 2015-12-29T02:15:33Z jasom: pjb: that's a minor concern as I rarely do a use-package outside of a REPL 2015-12-29T02:16:44Z zygentoma quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2015-12-29T02:18:30Z cmack joined #lisp 2015-12-29T02:20:08Z agumonkey joined #lisp 2015-12-29T02:23:10Z cmack quit (Ping timeout: 250 seconds) 2015-12-29T02:30:01Z arescorpio joined #lisp 2015-12-29T02:30:46Z joneshf-laptop quit (Ping timeout: 240 seconds) 2015-12-29T02:31:30Z harish_ joined #lisp 2015-12-29T02:39:47Z joneshf-laptop joined #lisp 2015-12-29T02:41:02Z diginet quit (Quit: diginet has quit!) 2015-12-29T02:41:28Z diginet joined #lisp 2015-12-29T02:43:56Z defaultxr joined #lisp 2015-12-29T02:44:49Z loke: Good morning Lisp! 2015-12-29T02:45:54Z eazar001 joined #lisp 2015-12-29T02:47:08Z _sjs joined #lisp 2015-12-29T02:53:38Z \var quit (Quit: Leaving) 2015-12-29T02:54:06Z smokeink joined #lisp 2015-12-29T02:56:03Z s00pcan_ joined #lisp 2015-12-29T02:56:31Z nell joined #lisp 2015-12-29T02:56:42Z eazar001 quit (Quit: WeeChat 1.3) 2015-12-29T03:01:45Z arborist quit (Read error: Connection reset by peer) 2015-12-29T03:03:23Z lisse_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-29T03:04:00Z gko: Hi 2015-12-29T03:04:17Z s00pcan_ quit (Ping timeout: 246 seconds) 2015-12-29T03:04:45Z TDT quit (Quit: TDT) 2015-12-29T03:10:29Z s00pcan_ joined #lisp 2015-12-29T03:10:57Z axion: i use keyword clauses for another reason; it is easier for me to read having clauses stand out with my theme 2015-12-29T03:11:53Z anti-freeze quit (Remote host closed the connection) 2015-12-29T03:12:45Z tmtwd quit (Ping timeout: 255 seconds) 2015-12-29T03:12:45Z diginet left #lisp 2015-12-29T03:12:58Z PuercoPop: kazlock_: I use keywords to avoid interning spurious symbols in every package one uses loop, plus the syntax highlighting thing. 2015-12-29T03:13:41Z loke: axion: That's a limitation of the syntax highlighter then. We need one that can be smarter about LOOP. There is already a SIMPLE extension that allows proper indentation for LOOP, it should be able to provide syntax highlighting information too. 2015-12-29T03:14:18Z loke: PuercoPop: Why is interning the loop symbols a problem for you? 2015-12-29T03:14:20Z kumbiKambi joined #lisp 2015-12-29T03:15:07Z axion: loke: most editors are very dumb being lexically but not syntax aware 2015-12-29T03:15:13Z fsmunoz quit (Ping timeout: 265 seconds) 2015-12-29T03:15:27Z PuercoPop: loke: it is not a problem, it is just a potential problem. 2015-12-29T03:15:33Z loke: axion: I don't care about "most editors". In partciular when it comes to Lisp. There is really only one editor for Lisp code. 2015-12-29T03:15:43Z axion: emacs-inclusive 2015-12-29T03:15:53Z omilu joined #lisp 2015-12-29T03:16:08Z anti-freeze joined #lisp 2015-12-29T03:16:46Z loke: Point is, when using the contrib "slime-indentation", it becomes syntax aware at least for LOOP. 2015-12-29T03:20:54Z s00pcan_ quit (Ping timeout: 256 seconds) 2015-12-29T03:22:31Z eazar001 joined #lisp 2015-12-29T03:22:49Z warweasle` quit (Remote host closed the connection) 2015-12-29T03:26:20Z oleo_ joined #lisp 2015-12-29T03:27:35Z s00pcan_ joined #lisp 2015-12-29T03:27:39Z pjb: jasom: it's exactly in the REPL that having to manage namespace collisions is the most irritating, hence using KEYWORDs for the loop keywords. 2015-12-29T03:28:03Z maguire quit (Read error: Connection reset by peer) 2015-12-29T03:29:07Z Petit_De`: How does that help? 2015-12-29T03:29:21Z Petit_Dejeuner quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2015-12-29T03:29:32Z pjb: Think about it. 2015-12-29T03:29:38Z oleo quit (Ping timeout: 276 seconds) 2015-12-29T03:29:52Z Petit_De`: Give me a second. Apparently I have three connections to freenode open isntead of one. 2015-12-29T03:30:15Z Petit_De` quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2015-12-29T03:30:51Z Petit_Dejeuner joined #lisp 2015-12-29T03:31:23Z loke: Who is the maintainer for cxml? 2015-12-29T03:31:36Z Petit_Dejeuner: Because keywords eval to themselves? 2015-12-29T03:32:12Z Petit_Dejeuner: When wouldn't the loop macro expand before anything else could interfere? Symbol macros? 2015-12-29T03:34:39Z Bicyclidine: that's not the problem 2015-12-29T03:34:52Z lisse_ joined #lisp 2015-12-29T03:35:44Z Bicyclidine: pjb is talking about a situation where you read the symbols into the current package, and then try to use a package that also exports those symbols 2015-12-29T03:37:39Z loke thinks that situation is so obscure (especially if you're very rarely using USE) that uglyfying every single use-case of LOOP indicates somewhat misaligned priorities. 2015-12-29T03:38:04Z loke: Even if you use USE, one can press "1" in sldb a few times to get past it. 2015-12-29T03:38:25Z s00pcan_ quit (Ping timeout: 260 seconds) 2015-12-29T03:39:17Z pjb: You use use-package everyday in the REPL. 2015-12-29T03:39:29Z loke: Not me. 2015-12-29T03:39:42Z pjb: Then you don't use the REPL enough. 2015-12-29T03:39:45Z loke: I always fully-qualify my symbols. 2015-12-29T03:39:49Z loke: I use the repl all the time. 2015-12-29T03:40:16Z MrWoohoo joined #lisp 2015-12-29T03:40:20Z MrWoohoo2 joined #lisp 2015-12-29T03:40:25Z loke: Here's a command I just types 30 seconds ago, just to point out my use of symbols: 2015-12-29T03:40:26Z loke: (dolist (row (cdr (assoc :|rows| (clouchdb:ad-hoc-view (ps:ps (lambda (doc) (when (eql (ps:getprop doc "type") "foo") (emit (ps:getprop doc "_id") nil)))))))) 2015-12-29T03:40:26Z loke: (clouchdb:delete-document (cdr (assoc :|id| row)))) 2015-12-29T03:41:35Z ACE_Recliner quit (Ping timeout: 264 seconds) 2015-12-29T03:41:38Z loke: Also, this "problem" only ever happens when you USE a package that exports loop symbols. How many of those are there? 2015-12-29T03:42:25Z loke: My point, again, is that making every single use of LOOP ugly is to deal with this easily-rectified issue is not worth it. 2015-12-29T03:44:07Z s00pcan_ joined #lisp 2015-12-29T03:44:45Z lisse_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-29T03:48:38Z eazar001 quit (Read error: Connection reset by peer) 2015-12-29T03:51:09Z meiji11 joined #lisp 2015-12-29T03:58:48Z sjl joined #lisp 2015-12-29T04:01:17Z sysfault quit (Quit: Leaving) 2015-12-29T04:04:16Z OrangeShark quit (Quit: Leaving) 2015-12-29T04:08:44Z cyraxjoe quit (Read error: Connection reset by peer) 2015-12-29T04:08:44Z cyraxjoe_ joined #lisp 2015-12-29T04:10:17Z iddqd joined #lisp 2015-12-29T04:10:23Z arescorpio quit (Quit: Leaving.) 2015-12-29T04:11:40Z badkins quit (Remote host closed the connection) 2015-12-29T04:12:15Z s00pcan_ quit (Ping timeout: 260 seconds) 2015-12-29T04:12:54Z kobain quit (Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/) 2015-12-29T04:13:15Z Guest20174 quit (Ping timeout: 240 seconds) 2015-12-29T04:13:55Z PuercoPop: loke: things is, beauty is in the eye of the beholder. I for one like how it 'looks'. But most importantly it is not something worth arguing about. (like using uninterned symbols instead of keywords as package designators (almost no one uses strings)). 2015-12-29T04:14:04Z sysfault joined #lisp 2015-12-29T04:17:02Z Guest20174 joined #lisp 2015-12-29T04:19:20Z cmack joined #lisp 2015-12-29T04:19:44Z PuercoPop: related, my intuition is that keywords were designed for when all that one cares for is the symbol name. Like glkit's defdict macro for example. If one uses keyword's one does not have to import the symbol program or use glkit (This was addressed a couple of weeks ago) 2015-12-29T04:22:32Z yvm: Is there a tool to convert C source code to something like (:struct "fooStruct" ((:int "barVar") (:char* "buzString") ... ? 2015-12-29T04:22:58Z jasom: yvm: several 2015-12-29T04:23:19Z jasom: yvm: if you are talking about generating bindings for cffi anyway 2015-12-29T04:23:36Z yvm: Yep, thats why I need it. 2015-12-29T04:24:30Z cmack quit (Ping timeout: 260 seconds) 2015-12-29T04:24:38Z jasom: yvm: cffi includes something called "The Groveller" which handles the simple case, but requires people building your library to have the header files around. It is best when you are including e.g. system headers that may be different on different systems 2015-12-29T04:25:56Z jasom: cl-autowrap is better when the header files are unlikely to be different on different systems (e.g. just wrapping a specific library that has rarely changing structure layouts) 2015-12-29T04:26:26Z jasom: see the cffi docs for the groveller and https://github.com/rpav/cl-autowrap for cl-autowrap 2015-12-29T04:27:15Z yvm: I want to process C code with my macro, so groveller is not an option. I tried autowrap, but it hangs: seems like it can't convert some cases of nested structures. 2015-12-29T04:28:26Z yvm: Both tools make a translation by their own, but I want to generate it myself. 2015-12-29T04:29:12Z yvm: So I just need a tool which will parse, cut a pieces of C source code and translate it to list tree. 2015-12-29T04:32:28Z jasom: yvm: SWIG in that cas 2015-12-29T04:32:34Z jasom: it has a cffi output mode 2015-12-29T04:32:46Z jasom: and you create a file that specifies what things you want from a given header 2015-12-29T04:33:10Z jasom: it's more work than the other two, but the library you are using may already have a swig configuration file 2015-12-29T04:34:28Z yvm: Yep, SWIG seems like what I need. Thank you. 2015-12-29T04:34:37Z jasom: yvm: also, if you can publish the file(s) that cause cl-autowrap to choke, please file an issue on github 2015-12-29T04:36:05Z yvm: I did. 2015-12-29T04:44:22Z Bicyclidine: the issue from november? 2015-12-29T04:44:50Z yvm: Yep, #50. 2015-12-29T04:45:48Z Bicyclidine: you should probably tell rpav it's not actually fixed, then... 2015-12-29T04:50:26Z anti-freeze quit (Remote host closed the connection) 2015-12-29T04:52:48Z yvm: I didn't mention it fixed. Will try it again later. 2015-12-29T04:52:52Z nisstyre_ is now known as nisstyre 2015-12-29T04:53:16Z nisstyre quit (Changing host) 2015-12-29T04:53:16Z nisstyre joined #lisp 2015-12-29T04:54:47Z jeti joined #lisp 2015-12-29T04:55:02Z wooden_ quit (Read error: Connection reset by peer) 2015-12-29T04:55:20Z sjl quit (Ping timeout: 255 seconds) 2015-12-29T04:59:41Z wooden joined #lisp 2015-12-29T04:59:41Z wooden quit (Changing host) 2015-12-29T04:59:41Z wooden joined #lisp 2015-12-29T05:01:57Z ggole joined #lisp 2015-12-29T05:07:50Z yuankode quit (Ping timeout: 250 seconds) 2015-12-29T05:08:44Z moei quit (Read error: Connection reset by peer) 2015-12-29T05:09:19Z moei joined #lisp 2015-12-29T05:09:33Z yvm: s/mention/seen/ 2015-12-29T05:10:57Z housel quit (Excess Flood) 2015-12-29T05:11:20Z housel joined #lisp 2015-12-29T05:17:56Z jgrant joined #lisp 2015-12-29T05:21:45Z yvm quit (Quit: Leaving) 2015-12-29T05:26:42Z Denommus quit (Remote host closed the connection) 2015-12-29T05:32:12Z ggole_ joined #lisp 2015-12-29T05:35:09Z ggole quit (Ping timeout: 245 seconds) 2015-12-29T05:36:30Z ggole_ is now known as ggole 2015-12-29T05:36:54Z yvm joined #lisp 2015-12-29T05:38:41Z ggole_ joined #lisp 2015-12-29T05:41:38Z defaultxr quit (Quit: gnight) 2015-12-29T05:42:11Z ggole quit (Ping timeout: 264 seconds) 2015-12-29T06:00:14Z kazlock_: I have a question about the FOR construct of LOOP. Is there a way to do... FOR var = (my-form) then (my-form) without repeating (my-form)? 2015-12-29T06:00:59Z vlatkoB joined #lisp 2015-12-29T06:01:05Z ggole_ quit (Read error: Connection reset by peer) 2015-12-29T06:01:29Z blub: for var = (my-form) 2015-12-29T06:02:17Z Petit_Dejeuner quit (Read error: Connection reset by peer) 2015-12-29T06:02:18Z kazlock_: blub: var will be updated on each iteration? 2015-12-29T06:02:37Z blub: if you didn't want it updated you would use with var = (my-form) 2015-12-29T06:02:38Z blub: yes 2015-12-29T06:02:49Z Petit_Dejeuner joined #lisp 2015-12-29T06:02:58Z kazlock_: blub: awesome, ty 2015-12-29T06:03:11Z nell quit (Ping timeout: 264 seconds) 2015-12-29T06:03:45Z ggole_ joined #lisp 2015-12-29T06:09:05Z kazlock_: also, do FOR clauses execute before or after conditional clauses? 2015-12-29T06:10:33Z blub: before 2015-12-29T06:11:40Z kazlock_: Is there a way to have the condition execute after the body, as in a do-while from other language? (sorry I have a lot of questions and I don't know how to find the answers) 2015-12-29T06:12:15Z Bicyclidine: clhs 6.1 2015-12-29T06:12:16Z specbot: The LOOP Facility: http://www.lispworks.com/reference/HyperSpec/Body/06_a.htm 2015-12-29T06:12:19Z Bicyclidine: is the manual 2015-12-29T06:12:25Z Bicyclidine: i think the answer is "no", though 2015-12-29T06:12:45Z kazlock_: I'm strying to write (defun string-split (str delim)...) 2015-12-29T06:13:00Z beach: Bicyclidine: Really? 2015-12-29T06:13:12Z beach: It should be enough to put the condition after the DO. 2015-12-29T06:13:22Z beach: (loop do stuff while condition) 2015-12-29T06:13:37Z beach: Good morning everyone, by the way. 2015-12-29T06:13:45Z kazlock_: good morning (evening) 2015-12-29T06:14:29Z kazlock_: I want to: init vars - collect - test condition 2015-12-29T06:14:34Z Bicyclidine: beach: i thought things had a stricter order, but you're right 2015-12-29T06:14:36Z beach: kazlock: http://www.total-knowledge.com/~ilya/mips/ugt.html 2015-12-29T06:15:39Z beach: (loop for i from 0 collect i while (< i 20)) 2015-12-29T06:17:33Z blub: hi beach 2015-12-29T06:17:46Z ggole__ joined #lisp 2015-12-29T06:18:20Z beach: kazlock_: http://www.gigamonkeys.com/book/loop-for-black-belts.html 2015-12-29T06:18:37Z kazlock_: beach: I'm working my way through that book actually 2015-12-29T06:18:53Z kazlock_: I just finished the macros section and I wanted to take a break and try writing something 2015-12-29T06:19:46Z kumbiKambi quit (Ping timeout: 250 seconds) 2015-12-29T06:20:09Z cmack joined #lisp 2015-12-29T06:21:10Z ggole_ quit (Ping timeout: 260 seconds) 2015-12-29T06:21:36Z dreamaddict joined #lisp 2015-12-29T06:21:53Z dreamaddict: does anyone here know much about prime number algorithms? 2015-12-29T06:21:58Z Bicyclidine: some. 2015-12-29T06:22:20Z dreamaddict: I had a sort of one I thought of in LISP, and I’m sure it’s been done some other way by some mathematician or whatever 2015-12-29T06:22:56Z dreamaddict: basically (for 2,3, and 5 at least), I made a circular list of T and NIL that filters out multiples 2015-12-29T06:23:08Z beach: dreamaddict: For the past few decades, we have been writing the name of the language like "Lisp" rather than like "LISP". 2015-12-29T06:23:16Z dreamaddict: sure :) 2015-12-29T06:24:27Z dreamaddict: so for 2, the circular list is (T NIL), you start it at three and collect with a loop when (pop circular-list) 2015-12-29T06:24:40Z dreamaddict: it’s faster than mod/rem and WAY faster than evenp 2015-12-29T06:24:58Z cmack quit (Ping timeout: 250 seconds) 2015-12-29T06:25:23Z Bicyclidine: have you quantified that? 2015-12-29T06:25:29Z dreamaddict: actually yes 2015-12-29T06:25:38Z beach: It is even faster to do 15 actions per loop iteration. 2015-12-29T06:25:39Z dreamaddict: I ran it with just the 2 list over a range of 1 million and timed it 2015-12-29T06:25:39Z bcoburn_y joined #lisp 2015-12-29T06:25:47Z voidengineer quit (Ping timeout: 276 seconds) 2015-12-29T06:25:51Z Bicyclidine: because i would expect arithmetic to be faster than memory traversal most of the time. 2015-12-29T06:26:13Z dreamaddict: welll…I wrote three functions using loop and collect 2015-12-29T06:26:26Z bcoburn quit (Ping timeout: 272 seconds) 2015-12-29T06:26:26Z voidengineer joined #lisp 2015-12-29T06:26:33Z dreamaddict: one popped through the circular list, collecting if the result was T and discarding if NIL 2015-12-29T06:26:38Z beach: dreamaddict: How do you test the remaining cases? 2015-12-29T06:26:50Z dreamaddict: with another circular list that is more complicated :P 2015-12-29T06:26:53Z dreamaddict: that’s the part I am playing with 2015-12-29T06:27:12Z dreamaddict: to see if I can code a list generator that can generate lists for the prime numbers 2015-12-29T06:27:28Z Bicyclidine: it sounds like a sieve of eratosthenes, anyway. 2015-12-29T06:27:30Z dreamaddict: the idea being that each successive circular filter will run slower and slower 2015-12-29T06:27:32Z dreamaddict: well it is 2015-12-29T06:27:48Z dreamaddict: just with circular lists and whatnot, mostly this is just to make for fun and see what happens 2015-12-29T06:27:58Z dreamaddict: the list for 3, going over (3,5,7,9,etc.) 2015-12-29T06:28:18Z dreamaddict: skipping 3, is (t t NIL) 2015-12-29T06:28:27Z ggole_ joined #lisp 2015-12-29T06:28:41Z dreamaddict: and then 5, running over the results is (t t t t t t NIL t t NIL) 2015-12-29T06:28:52Z dreamaddict: those can run circularly and they actually work…but anything past that gets crazy 2015-12-29T06:29:16Z dreamaddict: I have no idea if that matches up with any other algorithm that is already done, probably better than anything I am thinking of, but it’s a fun subject (primes) and it’s enlightening to see how deep it goes 2015-12-29T06:29:44Z dreamaddict: also enlightening to see that popping through the circular list is faster than mod and evenp :P 2015-12-29T06:31:02Z ggole__ quit (Ping timeout: 250 seconds) 2015-12-29T06:31:46Z dreamaddict: evenp was 50-100 times slower than popping 2015-12-29T06:31:55Z dreamaddict: rem, a little over twice as slow 2015-12-29T06:31:58Z Bicyclidine: hard to believe. 2015-12-29T06:32:26Z dreamaddict: I can post the code if you want to try it yourself :) 2015-12-29T06:32:29Z ggole__ joined #lisp 2015-12-29T06:32:34Z dreamaddict: also I was using SBCL 2015-12-29T06:32:38Z dreamaddict: whatever difference that makes 2015-12-29T06:32:46Z Bicyclidine: code might help, yes. 2015-12-29T06:32:54Z dreamaddict: ok a few minutes and I’ll have it for you 2015-12-29T06:35:14Z ggole_ quit (Ping timeout: 255 seconds) 2015-12-29T06:39:48Z beach: dreamaddict: Do you declare the types of your variables? 2015-12-29T06:39:59Z dreamaddict: not yet 2015-12-29T06:40:08Z dreamaddict: I was just sketching it out 2015-12-29T06:40:14Z beach: That could explain why arithmetic is slow. 2015-12-29T06:40:37Z Bicyclidine: it would, but i think i'd be surprised anyway 2015-12-29T06:41:43Z freehck joined #lisp 2015-12-29T06:42:47Z beach: Maybe the lists are in the cache. Then only a Boolean value has to be tested, compared to arithmetic where types have to be determined. 2015-12-29T06:43:19Z beach: Pure speculation, of course. 2015-12-29T06:43:43Z dreamaddict: that’s what I was trying to get at with this little toy 2015-12-29T06:44:00Z dreamaddict: a way to do primes with as little math as possible and as much boolean comparison as possible 2015-12-29T06:44:28Z mishoo joined #lisp 2015-12-29T06:44:42Z beach: dreamaddict: Do you create a circular list whenever you find a new prime? 2015-12-29T06:45:21Z CEnnis91 quit (Quit: Connection closed for inactivity) 2015-12-29T06:45:45Z dreamaddict: that’s the plan 2015-12-29T06:46:15Z dreamaddict: however each list is fed the results of the one before it 2015-12-29T06:46:25Z dreamaddict: so the larger primes spin “slower” than the inner ones. 2015-12-29T06:46:50Z ggole__ quit (Ping timeout: 260 seconds) 2015-12-29T06:47:45Z Bicyclidine: (defun prime-cycle (n) (let ((ret (make-list n :initial-element t))) (setf (car (last ret)) nil) (nconc ret ret)) and then making a combined sieve turned out to be a bit long for irc 2015-12-29T06:47:46Z ggole joined #lisp 2015-12-29T06:48:03Z kazlock_: I'm having a tough time debugging this split-string function https://bpaste.net/show/ea3cb7f436c4 2015-12-29T06:48:33Z beach: kazlock_: Are you using SBCL? 2015-12-29T06:48:37Z kazlock_: beach: yes 2015-12-29T06:48:59Z beach: kazlock_: I recommend you put this in your .sbclrc: (declaim (optimize (speed 0) (debug 3) (safety 3))) 2015-12-29T06:49:16Z kazlock_: beach: what does that do? 2015-12-29T06:49:34Z beach: It sets the debug level to its max. 2015-12-29T06:49:34Z kazlock_: oh and I think I see a problem with my function now 2015-12-29T06:50:05Z beach: Unless you do that, whenever you find a bug you will need to recompile with higher debug settings to get maximum information. 2015-12-29T06:51:18Z tmtwd joined #lisp 2015-12-29T06:51:26Z ggole_ joined #lisp 2015-12-29T06:51:57Z beach: kazlock_: Is this an attempt at something useful, or is it just an exercise? 2015-12-29T06:52:05Z kazlock_: beach: an exercise 2015-12-29T06:52:13Z kazlock_: is there already a split-string function? 2015-12-29T06:52:22Z Bicyclidine: there's a common library for it. 2015-12-29T06:52:31Z beach: minion: Please tell kazlock_ about split-sequence. 2015-12-29T06:52:31Z minion: split-sequence: No definition was found in the first 5 lines of http://www.cliki.net/split-sequence 2015-12-29T06:52:32Z Bicyclidine: though not based on subsequences like yours 2015-12-29T06:52:36Z loke: (ql:quickload "split-sequence") 2015-12-29T06:52:55Z beach: kazlock_: Stuff like that is usually easier to implement and understand as a state machine. 2015-12-29T06:53:10Z dreamaddict: ooh paste.lisp.org is down :P 2015-12-29T06:53:21Z kazlock_: it got hacked or something dreamaddict 2015-12-29T06:53:28Z dreamaddict: laaaaame 2015-12-29T06:53:36Z dreamaddict: guess I’ll use the regular code pastebin or whatever then... 2015-12-29T06:53:43Z kazlock_: bpaste.net 2015-12-29T06:54:24Z kazlock_: beach: What do you mean by state machine in this case? 2015-12-29T06:54:30Z ggole quit (Ping timeout: 272 seconds) 2015-12-29T06:54:39Z dreamaddict: http://pastebin.com/nYx5Rk65 2015-12-29T06:54:52Z dreamaddict: there’s what I have so far, enough to see times for the different approaches at least 2015-12-29T06:55:04Z beach: kazlock_: In Common Lisp it would be a TAGBODY where each label corresponds to a state, and you would do GO to change state. 2015-12-29T06:56:23Z kazlock_: beach: oh neat idea. Like a turing machine? 2015-12-29T06:56:29Z kazlock_: or dfa rather 2015-12-29T06:56:31Z lisse_ joined #lisp 2015-12-29T06:56:59Z Bicyclidine: i don't really understand the 5-wheel. surely the fifth element should be nil 2015-12-29T06:57:27Z dreamaddict: each list works on the results of the previous wheel 2015-12-29T06:57:30Z beach: kazlock_: Yes, another word for a finite automaton is a "finite state machine". 2015-12-29T06:57:40Z moore33 joined #lisp 2015-12-29T06:57:42Z dreamaddict: the 3-wheel gets (3,5,7,9,etc.), the leftovers from 2-wheel 2015-12-29T06:57:57Z Bicyclidine: oh. that's more complicated than i thought. 2015-12-29T06:57:59Z dreamaddict: so the three wheel has to filter (t t nil) 2015-12-29T06:58:08Z dreamaddict: and then the 5-wheel operates on what is left after the 2 and 3 wheel 2015-12-29T06:58:27Z Bicyclidine: i just made something to make a sieve. seems to work. 2015-12-29T06:58:29Z dreamaddict: this is an experiment to see if there is any way this can scale, or if it is feasible, for fun, exploration and flexing of math and code muscles 2015-12-29T06:58:47Z ggole_ quit (Read error: Connection reset by peer) 2015-12-29T06:58:59Z dreamaddict: but you saw the times…I wasn’t lying :P 2015-12-29T06:59:01Z Bicyclidine: of course, the length is (apply #'lcm primes), so it wouldn't hold up. 2015-12-29T06:59:19Z dreamaddict: but then…there is never two NILs in a row 2015-12-29T06:59:39Z dreamaddict: so you could encode each list as a list of t’s before a nil 2015-12-29T06:59:43Z ggole_ joined #lisp 2015-12-29T06:59:45Z Bicyclidine: i didn't think you were lying, i thought it would be weird code. but i uess unoptimized like beach says works too. 2015-12-29T06:59:48Z Bicyclidine: dreamaddict: yes. 2015-12-29T06:59:52Z myrkraverk: I was browsing my scrollback, and don't exactly get why (loop for i in '(1 2 3) collect (let ((i i)) (lambda () i))) is different from (loop for i in '(1 2 3) collect (lambda () i)) 2015-12-29T06:59:55Z dreamaddict: so the 2-wheel would be (1), the 3-wheel would be (2), and the 5-wheel would be (6 2) 2015-12-29T06:59:56Z myrkraverk: What's different? 2015-12-29T06:59:58Z Bicyclidine: i put the function for it in there. 2015-12-29T07:00:21Z Bicyclidine: myrkraverk: in the second one, all the closures close over the same binding (so, in particular, all the functions probably return 3) 2015-12-29T07:00:56Z dreamaddict: the question is, how fast is zerop? 2015-12-29T07:01:00Z dreamaddict: as fast as fast gets? 2015-12-29T07:01:27Z jasom: dreamaddict: really fast if it knows you have a fixnum 2015-12-29T07:01:31Z myrkraverk: Bicyclidine: Oh, ok. 2015-12-29T07:01:37Z Bicyclidine: should be a single instruction or thereabouts. 2015-12-29T07:01:48Z Bicyclidine: if, yes. 2015-12-29T07:02:35Z dreamaddict: that’s good to know 2015-12-29T07:02:59Z dreamaddict: I guess what I was wondering is, does that resemble anything that is already done for prime numbers? 2015-12-29T07:03:10Z Bicyclidine: yes, it's the sieve of eratosthenes. 2015-12-29T07:03:15Z jasom: somewhat; I'll paste a more classic sieve in a minute 2015-12-29T07:03:26Z dreamaddict: there are quite a few versions of the sieve though 2015-12-29T07:03:48Z dreamaddict: variations I suppose 2015-12-29T07:03:59Z Bicyclidine: now you should do the sieve of atkin, obvs 2015-12-29T07:04:23Z ggole__ joined #lisp 2015-12-29T07:04:44Z futpib joined #lisp 2015-12-29T07:05:29Z dreamaddict: yeah, there’s code for all of the different implementations out there 2015-12-29T07:05:40Z dreamaddict: if I just wanted prime numbers I could copy or import any of it :) 2015-12-29T07:06:22Z Bicyclidine: sieve of atkin is a different sieve, not just another implementation 2015-12-29T07:06:50Z jasom: dreamaddict: how are you calculating each new wheel? 2015-12-29T07:07:00Z jasom: dreamaddict: it seems like you are just moving the computation to there 2015-12-29T07:07:15Z ggole_ quit (Ping timeout: 260 seconds) 2015-12-29T07:07:24Z dreamaddict: so far I’ve been staring at the output…I can almost see how to do it 2015-12-29T07:07:56Z kazlock_: Can someone my split-string implementation? It works as far as I can tell. https://bpaste.net/show/5e8b3a41998d 2015-12-29T07:08:05Z jasom: dreamaddict: it involves calculating a least-common-multiple of all the primes you've tested so far 2015-12-29T07:08:11Z whiteline quit (Ping timeout: 265 seconds) 2015-12-29T07:08:34Z H4ns: kazlock_: who told you to use keywords for loop clauses? ignore that person. 2015-12-29T07:08:42Z dreamaddict: well here’s what I found so far... 2015-12-29T07:08:50Z jasom: H4ns: pjb was arguing in favor of it a few hours ago 2015-12-29T07:09:12Z dreamaddict: the first prime to be filtered is the square of the “wheel”, so for the 7-wheel that would be 49 2015-12-29T07:09:28Z dreamaddict: the next one would be 7*(the next number in the list), which is 11, which would be 77 2015-12-29T07:09:37Z dreamaddict: the difference there is 28 2015-12-29T07:09:46Z TMM quit (Quit: Ex-Chat) 2015-12-29T07:09:52Z blub: having them highlighted is nice.. 2015-12-29T07:09:59Z H4ns: kazlock_: i find the use of the END variable before it is visibly declared to be confusing. i'm also not sure if for/while/for is actually legal. 2015-12-29T07:09:59Z lisse left #lisp 2015-12-29T07:10:03Z dreamaddict: you can use subtraction to count the distance between numbers until you hit 28, then you stick a NIL in the filter that is being built 2015-12-29T07:10:28Z dreamaddict: there is a pattern to the distance between the numbers that get filtered, it is based off of the previous filter 2015-12-29T07:10:54Z ggole__ quit (Ping timeout: 250 seconds) 2015-12-29T07:11:10Z dreamaddict: if there is a way that the computer can definitively and stupidly know when to “close the circle”, then generating new filters would be not difficult at all, and the whole thing would be only restricted by memory usage or something 2015-12-29T07:11:14Z kazlock_: H4ns: well the expressions assigned for start and end both reference the other one, so I'm not sure how that could be fixed 2015-12-29T07:11:24Z ggole__ joined #lisp 2015-12-29T07:11:35Z kumbiKambi joined #lisp 2015-12-29T07:12:21Z dreamaddict: the thing is, each list of results has a repeating pattern in the difference between consecutive results 2015-12-29T07:12:22Z ski quit (Remote host closed the connection) 2015-12-29T07:12:27Z dreamaddict: so each filter repeats, at some point 2015-12-29T07:12:38Z dreamaddict: if I stare at it for long enough and drink enough coffee I’ll see it :) 2015-12-29T07:13:04Z H4ns: kazlock_: i'm sure that you could figure out a way. as i said, i'm not even sure if your sequence of LOOP clauses is legal, and the fact that you're using a variable before it is defined is an indicator to me that something could not be quite right. 2015-12-29T07:13:04Z jasom: dreamaddict: I suspect that very quickly you will run out of ram even using bit-vectors to store this, much less circular lists 2015-12-29T07:13:49Z dreamaddict: even if I store the lists as number of T’s in between NILs, you are probably right 2015-12-29T07:13:52Z kazlock_: H4ns: I read in Practical Common Lisp that LOOP creates all the clause variables before executing any of the expressions 2015-12-29T07:14:10Z H4ns: kazlock_: ok. well, then it is just me. 2015-12-29T07:14:28Z dreamaddict: still it’s speedy for filtering 2,3, and 5 in any case 2015-12-29T07:14:40Z kazlock_: H4ns: Oh i see, the initialization of start is 0, it doesn't reference end until the second iteration 2015-12-29T07:32:39Z ggole_ joined #lisp 2015-12-29T07:33:47Z tmtwd quit (Ping timeout: 264 seconds) 2015-12-29T07:35:15Z ggole__ quit (Ping timeout: 240 seconds) 2015-12-29T07:35:20Z harish_ quit (Ping timeout: 256 seconds) 2015-12-29T07:39:20Z clique joined #lisp 2015-12-29T07:41:19Z edgar-rft quit (Quit: edgar-rft) 2015-12-29T07:41:29Z beach: kazlock_: I was referring to something like this: http://metamodular.com/split.lisp 2015-12-29T07:41:58Z beach: kazlock_: I find this technique much easier to understand than using LOOP for this kind of problem. 2015-12-29T07:42:20Z jasom: dreamaddict: this seems like a non-arithmetic way of just dividing by a very large composite number 2015-12-29T07:43:05Z jasom: e.g. (zerop (mod maybe-prime (* 2 3 5 7 11 ...))) 2015-12-29T07:44:03Z dreamaddict: probably 2015-12-29T07:44:32Z dreamaddict: but, having explored it, the other algorithms out there make more sense 2015-12-29T07:44:46Z jasom: indeed, it's useful for didactic purposes 2015-12-29T07:44:54Z jasom: I think I tried something similar after learning about prime sieves 2015-12-29T07:45:01Z beach: dreamaddict: Wow, nice dangling participle there. 2015-12-29T07:45:02Z kazlock_: beach: cool, and more lispy than LOOP too. Loop is essentially build from TAGBODY and GO right? 2015-12-29T07:45:24Z beach: kazlock_: It expands to TAGBODY, yes. 2015-12-29T07:45:47Z kazlock_: beach: this works for single character delimeters only, right? 2015-12-29T07:46:15Z jasom: it is not required to, but it typically is built that way 2015-12-29T07:46:18Z beach: kazlock_: Yes. It would be easy to extend, though. I was just trying to show you the technique for the analysis itself. 2015-12-29T07:46:42Z moore33: LOOP is very lispy, just from a different era. 2015-12-29T07:46:43Z jasom: if e.g. your implementation provided an infinite loop primitive you could implement LOOP on top of that 2015-12-29T07:46:50Z jasom: without tagbody or go 2015-12-29T07:47:08Z beach: kazlock_: What jasom says is true, of course. 2015-12-29T07:47:43Z quazimodo quit (Ping timeout: 260 seconds) 2015-12-29T07:48:02Z cods quit (Changing host) 2015-12-29T07:48:02Z cods joined #lisp 2015-12-29T07:48:07Z jasom: but seeing as you need TAGBODY anyways, there's not a compelling reason to do it that way 2015-12-29T07:48:08Z beach: LOOP is definitely very Lispy. It shows the way to build a DSL using macros. 2015-12-29T07:48:48Z clique quit (Ping timeout: 252 seconds) 2015-12-29T07:49:39Z dreamaddict: it appears (to my novice eyes) that the Lispiest thing to do is make Lisp into whatever language best fits what you want to do, not necessarily the one with the most parentheses 2015-12-29T07:51:17Z kumbiKambi quit (Ping timeout: 255 seconds) 2015-12-29T07:51:25Z myrkraverk: How do I test for an #() ; an empty vector? And, more importantly, why didn't I see that on gigamonkeys? Did I skim too fast? 2015-12-29T07:51:53Z beach: You can check that the length is 0. 2015-12-29T07:52:01Z beach: (zerop (length vector)) 2015-12-29T07:52:20Z futpib quit (Ping timeout: 256 seconds) 2015-12-29T07:52:23Z myrkraverk: Hmm, ok. 2015-12-29T07:52:45Z jasom: I too find it annoying that there is no empty-sequence check in the standard library 2015-12-29T07:52:57Z jasom: (zerop (length vector)) is fast, but (zerop (length list)) is not 2015-12-29T07:53:14Z lisse_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-29T07:53:14Z myrkraverk: Much can be said about the C++ standard library, but at least they have ->empty(). 2015-12-29T07:53:18Z beach: But the specification was for a vector. 2015-12-29T07:53:29Z jasom: indeed, for a vector it is fine 2015-12-29T07:53:35Z TMM joined #lisp 2015-12-29T07:54:20Z PuercoPop: jasom: but for list you can do (null list) 2015-12-29T07:55:03Z jasom: PuercoPop: and for a sequence you have to do (if (listp sequence) (null sequence) (zerop (length sequence))) 2015-12-29T07:56:05Z myrkraverk: Yeah, I got bitten by (null foo) not being true for empty vectors. 2015-12-29T07:56:37Z beach: Wow, that's so complicated we had better all convert to C++. 2015-12-29T07:57:19Z myrkraverk: beach: No! Then we'd have to deal with its standard library c; 2015-12-29T07:57:19Z jasom: myrkraverk: emptyp from alexandria is generic for all sequences 2015-12-29T07:57:38Z myrkraverk: jasom: oh, thanks. I'm already using alexandria in this project. 2015-12-29T07:57:39Z jasom: myrkraverk: alexandria is a de-facto expanded standard library for lisp 2015-12-29T07:58:14Z kumbiKambi joined #lisp 2015-12-29T07:58:30Z myrkraverk: Yeah, I take it's kind of like Boost for C++. 2015-12-29T07:58:42Z jasom: myrkraverk: much more conservative than Boost 2015-12-29T07:59:26Z myrkraverk: I meant in terms of being "de-facto standard library" 2015-12-29T07:59:51Z jasom: still it's less controversial; I know a large number of C++ programmers who avoid boost like the plague 2015-12-29T08:01:13Z myrkraverk: I don't avoid it like the plague, but I prefer not to use Boost. 2015-12-29T08:01:15Z H4ns: alexandria is rather tiny, in particular when compared to boost 2015-12-29T08:01:31Z myrkraverk: I don't even like the C++ standard library. 2015-12-29T08:01:47Z H4ns: myrkraverk: right. you mentioned that you hate everything. 2015-12-29T08:02:12Z myrkraverk: H4ns: no, not everything. It's only after I've used it for non trivial projects that I hate something. 2015-12-29T08:02:41Z peppermachete quit (Read error: Connection reset by peer) 2015-12-29T08:02:58Z myrkraverk: Because non-trivial projects (of mine) tend to expose me to the deficiencies of the languages/libraries I'm using. 2015-12-29T08:03:21Z peppermachete joined #lisp 2015-12-29T08:03:55Z ggole_: Hmm, springer has their old books available for free download 2015-12-29T08:03:58Z ggole_: Bunch of lisp stuff in there 2015-12-29T08:05:07Z myrkraverk: ggole_: yeah, I think we were discussing that last night (my time zone) 2015-12-29T08:05:14Z dreamaddict: hey I was looking at some other Lisp/Scheme implementations, possibly in case I want to make a small executable out of some Lisp-type code…is Chicken Scheme any good? 2015-12-29T08:05:19Z dreamaddict: the press seems good 2015-12-29T08:05:50Z tmtwd joined #lisp 2015-12-29T08:06:30Z jasom: ecl and clisp both make small executables and sbcl isn't too terrible with compression 2015-12-29T08:06:57Z jasom: that reminds me, I need to ping the sbcl list about what is up with the lz4 patch 2015-12-29T08:07:16Z dreamaddict: ecl seems like the best option without learning Scheme 2015-12-29T08:09:10Z jasom: beach: was it you or fare who wrote about making fasl's fast? 2015-12-29T08:11:04Z beach: Not me. Must have been Fare then. 2015-12-29T08:11:14Z beach: Wait, I did something about that. 2015-12-29T08:11:43Z beach: mmap, then jump to the code that defines it, finally munmap. 2015-12-29T08:12:00Z beach: Not sure whether the purpose was to make it fast, though. 2015-12-29T08:12:26Z jasom: no this was about deficiencies in the standard that put a limit on how fast a fasl could be 2015-12-29T08:12:40Z beach: OK. Not me then. 2015-12-29T08:13:28Z l04m33 joined #lisp 2015-12-29T08:13:44Z mbuf joined #lisp 2015-12-29T08:14:13Z beach: FASLs are so un-LispOS-y though. 2015-12-29T08:14:28Z jasom: It was probably in his writings on xcvb somewhere 2015-12-29T08:14:43Z beach: I see, yes. 2015-12-29T08:18:35Z bb010g quit (Quit: Connection closed for inactivity) 2015-12-29T08:21:01Z cmack joined #lisp 2015-12-29T08:21:55Z tmtwd quit (Ping timeout: 260 seconds) 2015-12-29T08:23:19Z lisse_ joined #lisp 2015-12-29T08:24:32Z ggole_: Ooh, proceedings for compiler construction 2015-12-29T08:24:35Z ggole_ snaffles 2015-12-29T08:26:00Z cmack quit (Ping timeout: 260 seconds) 2015-12-29T08:26:40Z meiji11 quit (Remote host closed the connection) 2015-12-29T08:28:07Z AlphaAtom joined #lisp 2015-12-29T08:28:38Z AlphaAtom quit (Max SendQ exceeded) 2015-12-29T08:29:22Z AlphaAtom joined #lisp 2015-12-29T08:30:29Z jeti quit (Ping timeout: 246 seconds) 2015-12-29T08:33:00Z blt joined #lisp 2015-12-29T08:34:34Z z0d: ggole_: anything interesting? 2015-12-29T08:35:01Z cadadar joined #lisp 2015-12-29T08:35:12Z lisse_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-29T08:35:23Z eazar001 joined #lisp 2015-12-29T08:36:30Z kumbiKambi quit (Ping timeout: 260 seconds) 2015-12-29T08:40:22Z ggole_: Dunno, haven't read them all yet :) 2015-12-29T08:43:46Z kumbiKambi joined #lisp 2015-12-29T08:45:13Z malbertife joined #lisp 2015-12-29T08:45:14Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-29T08:51:17Z Bicyclidine quit (Quit: quit) 2015-12-29T08:55:54Z harish_ joined #lisp 2015-12-29T08:56:54Z kazlock_ quit (Remote host closed the connection) 2015-12-29T08:58:54Z kumbiKambi quit (Ping timeout: 245 seconds) 2015-12-29T08:59:39Z kumbiKambi joined #lisp 2015-12-29T09:00:18Z huza joined #lisp 2015-12-29T09:04:08Z Kazlock joined #lisp 2015-12-29T09:09:50Z bcoburn_y quit (Ping timeout: 272 seconds) 2015-12-29T09:10:07Z shookees joined #lisp 2015-12-29T09:10:45Z pwnie joined #lisp 2015-12-29T09:12:10Z shookees quit (Client Quit) 2015-12-29T09:12:38Z tmtwd joined #lisp 2015-12-29T09:22:35Z sysfault quit (Ping timeout: 240 seconds) 2015-12-29T09:23:46Z cibs quit (Ping timeout: 272 seconds) 2015-12-29T09:25:12Z cibs joined #lisp 2015-12-29T09:25:46Z NaNDude quit (Ping timeout: 240 seconds) 2015-12-29T09:28:57Z NaNDude joined #lisp 2015-12-29T09:29:35Z BitPuffin|osx quit (Ping timeout: 260 seconds) 2015-12-29T09:32:15Z blt quit (Ping timeout: 240 seconds) 2015-12-29T09:32:56Z ramky joined #lisp 2015-12-29T09:33:09Z blt joined #lisp 2015-12-29T09:34:45Z beach: Writing tests based on a coverage report is very reassuring. 2015-12-29T09:35:17Z beach: Look at the non-green lines. Write a test for it. Run the tests, Iterate. 2015-12-29T09:39:42Z happy-dude quit (Quit: Connection closed for inactivity) 2015-12-29T09:39:52Z ramky quit (Read error: Connection reset by peer) 2015-12-29T09:40:13Z huza quit (Quit: WeeChat 0.3.8) 2015-12-29T09:43:41Z mishoo_ joined #lisp 2015-12-29T09:44:11Z XhostX joined #lisp 2015-12-29T09:45:16Z mishoo quit (Ping timeout: 265 seconds) 2015-12-29T09:48:39Z XhostX: good morning people 2015-12-29T09:49:42Z XhostX: There somebody help me? 2015-12-29T09:50:49Z ramky joined #lisp 2015-12-29T09:50:57Z mtl: XhostX: we will if you tell us what need help with 2015-12-29T09:51:05Z mtl: what you* 2015-12-29T09:51:16Z XhostX: sorry 2015-12-29T09:51:46Z XhostX: ok i want to built a depth function with double recursion 2015-12-29T09:52:35Z moore33 wonders if it is a crime against nature to use LOOP and MAPC in the same form. 2015-12-29T09:53:16Z mtl: double recursion? as in the ackermann function? 2015-12-29T09:53:43Z XhostX: in my university course the professors cannot permit to use the loop 2015-12-29T09:53:50Z XhostX: they want only recursion 2015-12-29T09:54:05Z kumbiKambi quit (Ping timeout: 260 seconds) 2015-12-29T09:54:07Z XhostX: cannot allow 2015-12-29T09:54:20Z XhostX: sorry for my bad english 2015-12-29T09:54:45Z mtl: XhostX: which function are you trying to implement, what are its properties 2015-12-29T09:54:52Z moore33: XhostX: Is this to find the depth of a tree, where the nodes are the car and cdr of cons cells? 2015-12-29T09:55:43Z XhostX: its a function that count all level of depth of a list 2015-12-29T09:57:14Z myrkraverk: Is there a way to continue loop execution early, from within a do (this) ? Like the continue keyword in C++. 2015-12-29T09:57:40Z flip214: myrkraverk: with LOOP and ITERATE there is. 2015-12-29T09:57:46Z flip214: clhs do 2015-12-29T09:57:46Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_do_do.htm 2015-12-29T09:58:31Z H4ns: DO has an implicit tagbody, so GO can be used. i'd avoid DO, though. 2015-12-29T09:58:36Z XhostX: in my university course the professors DENY to use the loop statement or other iterations 2015-12-29T09:58:47Z XhostX: They allow only recursion 2015-12-29T09:58:51Z myrkraverk: Oh, sorry, I meant (LOOP ... DO (this)) 2015-12-29T09:59:07Z flip214: H4ns: but there's no way to get the label of the iterating or test code, is there? 2015-12-29T09:59:29Z flip214: of course, you could add a label right at the end, and jump there. 2015-12-29T09:59:35Z flip214: clhs loop 2015-12-29T09:59:35Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_loop.htm 2015-12-29T10:00:01Z moore33: XhostX: What a dick. 2015-12-29T10:00:26Z XhostX: moore33:why? 2015-12-29T10:00:30Z aap_ is now known as aap 2015-12-29T10:00:42Z H4ns: myrkraverk: i do think so, but i don't remember how labels are used in LOOP 2015-12-29T10:00:55Z H4ns: flip214: using an explicit tag for would be the right way to do it. 2015-12-29T10:01:06Z mtl: (loop named foo) 2015-12-29T10:01:15Z mtl: names the tagbody itself I think 2015-12-29T10:01:25Z mtl: lets you RETURN-FROM the loop at least 2015-12-29T10:01:41Z H4ns: mtl: which is not what was asked for :) 2015-12-29T10:01:52Z mtl: yeah, i was just skimming 2015-12-29T10:02:04Z moore33: XhostX: It's a bit of a joke; I can understand that your prof wants to teach recursion, but iteration is an important part of Common Lisp. 2015-12-29T10:03:27Z quazimodo joined #lisp 2015-12-29T10:03:52Z XhostX: moore33: i know that the iteration is important but my prof explicitly voids my project exam if i use iteration for scrolling a list 2015-12-29T10:03:55Z mtl: what he should be teaching is when recursion and iteration are equivalent and when they are not 2015-12-29T10:04:06Z Guest20174 quit (Ping timeout: 240 seconds) 2015-12-29T10:06:20Z moore33: mtl: You can put your main loop clauses inside a conditional to avoid performing it. Another nonanswer :) 2015-12-29T10:06:29Z moore33: s/it/them 2015-12-29T10:06:48Z XhostX: the main reason is that: our prof teaches to us the pure functional programming 2015-12-29T10:06:56Z H4ns: in common lisp? 2015-12-29T10:07:03Z moore33: XhostX: How dull. 2015-12-29T10:07:19Z XhostX: so is not allowed memory's collateral effects 2015-12-29T10:07:40Z moore33: XhostX: We say "side effects" in English. 2015-12-29T10:07:45Z Guest20174 joined #lisp 2015-12-29T10:07:46Z XhostX: sorry 2015-12-29T10:08:33Z XhostX: h4ns: yes in ANSI Common Lisp 2015-12-29T10:09:00Z H4ns: i'd say that is a rather poor choice. 2015-12-29T10:09:30Z H4ns: like sending someone to the candy shop and have them buy only unsugared nuts. 2015-12-29T10:09:40Z H4ns: i mean, nuts are good, but there is CANDY! :D 2015-12-29T10:10:10Z scymtym joined #lisp 2015-12-29T10:12:40Z Guest20174 quit (Ping timeout: 245 seconds) 2015-12-29T10:13:07Z XhostX: back to us 2015-12-29T10:14:08Z Mon_Ouie joined #lisp 2015-12-29T10:14:23Z XhostX: i want to use the let function to associate to symbol "x" the car of the list 2015-12-29T10:15:13Z XhostX: but when i load the lisp file with the function the REPL returns this error 2015-12-29T10:15:36Z XhostX: illegal function call 2015-12-29T10:15:56Z mtl: XhostX: put your code in a pastebin 2015-12-29T10:16:01Z XhostX: (LET ((X (CAR LST)))) 2015-12-29T10:17:47Z XhostX: http://pastebin.com/shN2X8PV 2015-12-29T10:18:42Z lurker joined #lisp 2015-12-29T10:18:47Z beach: XhostX: There is no code in the body of the LET. 2015-12-29T10:19:41Z beach: XhostX: And you are attempting to call a function name 1, but that is not possible in Common Lisp. 2015-12-29T10:19:52Z beach: (cond ... (atom x) (1 ...)) 2015-12-29T10:20:01Z beach: Er, (cond ... ((atom x) (1 ...))) 2015-12-29T10:20:27Z mtl: yeah the cond form is outside the let 2015-12-29T10:20:31Z mtl: move it inside 2015-12-29T10:20:51Z mtl: and replace the 1 with 1+ or (+ 1 or whatever you intended 2015-12-29T10:21:33Z XhostX: so i should move the cond inside the let or viceversa? 2015-12-29T10:21:34Z beach: XhostX: What editor are you using for writing this code? 2015-12-29T10:21:39Z XhostX: aquamacs 2015-12-29T10:21:50Z cmack joined #lisp 2015-12-29T10:21:59Z beach: Is that what your teacher told you to use? 2015-12-29T10:22:02Z XhostX: and slime inside with sbcl 2015-12-29T10:22:10Z beach: OK. 2015-12-29T10:22:16Z beach: Then you need to work on your indentation. 2015-12-29T10:22:29Z jchmrt quit (Ping timeout: 255 seconds) 2015-12-29T10:22:31Z z0d: let the editor work on your indentation 2015-12-29T10:22:38Z beach: XhostX: When you want people to review your code, make sure it is properly indented. 2015-12-29T10:22:46Z beach: Right, what z0d says. 2015-12-29T10:22:48Z XhostX: He tells to use LispWorks or other instruments 2015-12-29T10:23:01Z beach: SLIME is fine. 2015-12-29T10:23:27Z mtl: XhostX: yeah i.e (let ((...)) (cond ...)) 2015-12-29T10:23:31Z jchmrt joined #lisp 2015-12-29T10:23:40Z beach: But if you put your cursor on the line that starts with ((atom lst) and hit TAB or C-i, you should see that this line is not correctly indented. 2015-12-29T10:24:00Z mtl: and not (let ((...))) (cond ...) like you have 2015-12-29T10:24:28Z Guest20174 joined #lisp 2015-12-29T10:24:36Z tmtwd quit (Ping timeout: 250 seconds) 2015-12-29T10:24:37Z beach: XhostX: (let ((x (car lst)))) as you have it means: create a binding for the local variable X and initialize it to (CAR LST). Then do nothing and destroy that binding. 2015-12-29T10:25:01Z XhostX: ok 2015-12-29T10:25:03Z beach: XhostX: Do you know any other language like C? 2015-12-29T10:25:04Z XhostX: thanks 2015-12-29T10:25:10Z XhostX: yes 2015-12-29T10:25:20Z beach: So what you did was { int x;} 2015-12-29T10:25:21Z XhostX: C C++ and C# 2015-12-29T10:25:36Z XhostX: and Java 2015-12-29T10:25:41Z beach: Or rather {int x = car(lst);} 2015-12-29T10:26:15Z cmack quit (Ping timeout: 240 seconds) 2015-12-29T10:28:20Z XhostX: i've tabbed my code at the point mentioned but the tabulation is not changed 2015-12-29T10:28:38Z beach: Then your buffer is not in Lisp mode. 2015-12-29T10:31:41Z XhostX: the buffer is (Lisp adoc [COMMON-LISP USER sbcl]) 2015-12-29T10:32:09Z malbertife quit (Ping timeout: 265 seconds) 2015-12-29T10:32:40Z beach: Strange. 2015-12-29T10:32:47Z beach: I have no good explanation for that. 2015-12-29T10:33:27Z XhostX: i can send you a screen shot? 2015-12-29T10:34:19Z beach: Sure. Show it to everyone here. It is not certain that I can find the problem by looking at a screen shot. 2015-12-29T10:34:23Z mtl: just pastebin your new code 2015-12-29T10:34:37Z mtl: it should indent right if it's parenthesised right 2015-12-29T10:34:40Z mtl: if not, it won't 2015-12-29T10:35:26Z beach: mtl: I don't think there was anything in the code to justify that indentation. 2015-12-29T10:35:39Z Kazlock quit (Read error: Connection reset by peer) 2015-12-29T10:36:56Z jackdaniel: well, let has null body 2015-12-29T10:37:03Z jackdaniel: if you mean http://pastebin.com/shN2X8PV 2015-12-29T10:37:13Z jackdaniel: s/null/empty/ 2015-12-29T10:37:27Z jackdaniel: good morning :) 2015-12-29T10:38:18Z jackdaniel: oh, somebody pointed this out 2015-12-29T10:39:26Z beach: Hello jackdaniel. The empty body should not affect the indentation of the COND clauses. 2015-12-29T10:39:38Z beach: Let me copy it into a Lisp buffer and see... 2015-12-29T10:39:47Z jackdaniel: yes, you're right. I missed the context (read backlog after that) 2015-12-29T10:40:08Z jackdaniel: s/backlog/the backlog/ 2015-12-29T10:42:12Z XhostX: https://plus.google.com/u/0/102270866890785987465/posts/KB3MgirCd6c?hl=it&pid=6233653925273984226&oid=102270866890785987465 2015-12-29T10:42:53Z z0d: the let form is wrong 2015-12-29T10:43:22Z z0d: should be ((x (car lst))) 2015-12-29T10:43:54Z iddqd quit (Quit: Connection closed for inactivity) 2015-12-29T10:44:05Z beach: XhostX: Now you are saying: First create a binding for X and initialize it to (CAR LST), then create a binding for the local variable COND and initialize it to the result of evaluating ((NULL X)...) which is an illegal function call in Common Lisp. 2015-12-29T10:44:19Z beach: XhostX: You can tell, because COND is aligned under X. 2015-12-29T10:45:30Z beach: Perhaps the only problem in the paste was a difference between how TABs are shown in the code and in the paste bin. 2015-12-29T10:45:57Z XhostX: http://pastebin.com/eTUjiMvQ 2015-12-29T10:46:24Z beach: I think I found the indentation problem :) 2015-12-29T10:46:44Z Zhivago: Using tabs for indentation is usually the first problem. :) 2015-12-29T10:50:30Z beach: XhostX: Why do you have two closing parentheses at the end of the line that starts with (let ... in your screen shot but not in the paste? 2015-12-29T10:53:30Z XhostX: may be i can't select correctly the code 2015-12-29T10:58:07Z XhostX: beach: i found the error 2015-12-29T10:58:16Z XhostX: this is the new pastebin 2015-12-29T11:00:02Z XhostX: http://pastebin.com/vYsr1iiy 2015-12-29T11:01:38Z beach: Congratulations. 2015-12-29T11:02:01Z loke: beach: No thanks. Just look at the ads. 2015-12-29T11:03:15Z loke: And why do you take the CAR of LST and _then_ check if lst is atom? 2015-12-29T11:03:59Z loke: The proper way would be to do (CHECK-TYPE LST LIST) in the beginning of the function and get rid of the COND altogether. 2015-12-29T11:07:24Z XhostX: for this: '( a (b ((c d) e) f) g) 2015-12-29T11:08:21Z Karl_Dscc joined #lisp 2015-12-29T11:09:16Z XhostX: also if you call depth in this form: 2015-12-29T11:09:35Z XhostX: (idepth 'a) 2015-12-29T11:10:04Z anti-freeze joined #lisp 2015-12-29T11:10:31Z XhostX: is an error so i check if lst is a list or not 2015-12-29T11:10:35Z beach: XhostX: As you can see, I have not looked at your logic at all, only the syntax and indentation so far. 2015-12-29T11:10:56Z anti-freeze quit (Remote host closed the connection) 2015-12-29T11:11:04Z zygentoma joined #lisp 2015-12-29T11:11:47Z dreamaddict: usually with a function like this, I found myself in the habit of starting it first thing with (when (listp lst (REST OF FUNCTION))) 2015-12-29T11:12:12Z dreamaddict: or (when (listp lst)…) 2015-12-29T11:12:22Z beach: That is not terribly good style. 2015-12-29T11:12:36Z dreamaddict: because…if lst is an atom, you’ll throw an error at the let, right? 2015-12-29T11:12:37Z loke: dreamaddict: And simply returning NIL when the function is not a list is the correct thing to do? 2015-12-29T11:13:25Z beach: dreamaddict: For one thing, you are returning an incorrect value rather than signaling an error. 2015-12-29T11:13:50Z beach: dreamaddict: For another, WHEN should be used only in a context where no value is needed. 2015-12-29T11:15:27Z beach: WHEN should be read as "If the condition is true, do this, otherwise do nothing"; Not as "if this condition is true, return the value of this, otherwise return NIL". 2015-12-29T11:15:37Z anti-freeze joined #lisp 2015-12-29T11:15:47Z dreamaddict: I guess I didn’t think it was that big of a deal, as long as NIL cannot signify a result that the function might return legitimately 2015-12-29T11:15:59Z attila_lendvai joined #lisp 2015-12-29T11:15:59Z attila_lendvai quit (Changing host) 2015-12-29T11:15:59Z attila_lendvai joined #lisp 2015-12-29T11:16:11Z beach: It *is* a big deal to pretend that everything is fine when it isn't. 2015-12-29T11:16:44Z beach: It means the incorrect value can propagate to other code, making it that much harder to find the problem. 2015-12-29T11:17:22Z beach: You should always try to catch problems as early as possible, and clearly indicate that they are problems by signaling an error condition. 2015-12-29T11:18:33Z dreamaddict: right…in my incorrect coding adventures, I was using NIL in functions as a way to signal incorrect input in functions that would never return NIL as a result from valid input 2015-12-29T11:18:53Z beach: And that is a very bad idea. 2015-12-29T11:18:53Z dreamaddict: obviously that is no habit for production code, or anything that anyone else is going to use 2015-12-29T11:19:25Z beach: Nor for yourself, because it is going to be much harder to find the problem when this NIL value has propagated to callers and callers of callers. 2015-12-29T11:19:54Z XhostX quit (Quit: This computer has gone to sleep) 2015-12-29T11:20:48Z dreamaddict: well, at least throwing errors in Lisp is easy compared to other languages 2015-12-29T11:24:41Z XhostX joined #lisp 2015-12-29T11:25:45Z XhostX: thanks to all for the help 2015-12-29T11:26:59Z XhostX: i'm going to launch we'll talk later. bye 2015-12-29T11:29:30Z XhostX quit (Client Quit) 2015-12-29T11:32:00Z beach: Get ready for countdown and lunch. :) 2015-12-29T11:34:53Z varjagg joined #lisp 2015-12-29T11:36:04Z beach: dreamaddict: I must correct you again. In Common Lisp errors are SIGNALED and not THROWN. THROW is a Common Lisp function for non-local transfer of control and it has nothing to do with errors. 2015-12-29T11:36:10Z kumbiKambi joined #lisp 2015-12-29T11:36:36Z dreamaddict: forgive me for using terminology from another programming language 2015-12-29T11:36:43Z beach: Never. :) 2015-12-29T11:37:17Z dreamaddict: one day I’ll utter something and it will be right, and until then I’m going to eat your words I guess :P 2015-12-29T11:37:42Z fsmunoz joined #lisp 2015-12-29T11:37:55Z dreamaddict: in any case I do prefer the error SIGNALING in Lisp over other languages that I have used 2015-12-29T11:38:33Z beach agrees. 2015-12-29T11:41:19Z dlowe: lisp terminology has had many decades of divergent evolution with which to confuse people. 2015-12-29T11:41:50Z pbgc joined #lisp 2015-12-29T11:41:56Z Zhivago: Although in this case, it isn't the terminology. 2015-12-29T11:42:24Z Joreji joined #lisp 2015-12-29T11:42:51Z Zhivago: What CL does it to separate the signal handler and the non-local transfer phases which are composed together in an exception throw. 2015-12-29T11:43:12Z Zhivago: A bit like C would do, if C had non-local transfer that was actually usable. 2015-12-29T11:45:44Z yuankode joined #lisp 2015-12-29T11:45:49Z dreamaddict: what I wonder is: how did Java get so widespread, and yet it seems “awkward” to distribute a runtime environment with a Lisp application? 2015-12-29T11:46:10Z dreamaddict: really, when you think about it, it’s not that weird, and the Lisp environment is even smaller than Java 2015-12-29T11:46:42Z myrkraverk: I guess it's because not enough people were writing applets in Lisp, in the 90s. 2015-12-29T11:47:11Z dreamaddict: but I search for how to distribute a Lisp executable, and everyone is all, “50MB Hello World wtf”…when really, most of that is a one-time download, or could be if it were thought of that way 2015-12-29T11:47:30Z dreamaddict: VHS vs. Betamax, as one of my friends put it 2015-12-29T11:48:35Z myrkraverk: Ah, no porn in Lisp, then. 2015-12-29T11:48:59Z Zhivago: Java has a lot of good tooling and a structure that is suitable for corporate dronework. 2015-12-29T11:49:16Z dreamaddict: “a structure that is suitable for corporate dronework” 2015-12-29T11:49:28Z dreamaddict: seems to be the consensus from every criticism/analysis of the issue that I’ve read so far 2015-12-29T11:49:54Z dkcl joined #lisp 2015-12-29T11:50:07Z myrkraverk: Yeah, Java has, from the start, been meant for an army of mediocre programmers. 2015-12-29T11:50:07Z Zhivago: So it's unsurprising that it gets used a lot by corporate drones, and since corporations have the money ... 2015-12-29T11:50:34Z dreamaddict: the point being made that more defined/structured/enslaving languages have the advantage of being able to be uniformly taught and conformed to 2015-12-29T11:50:37Z dreamaddict: yeup 2015-12-29T11:50:42Z myrkraverk: And the people who control Java have so far resisted adding any features that'll make experts (me) happy. 2015-12-29T11:51:08Z Zhivago: What features would make you happy? 2015-12-29T11:51:12Z dreamaddict: it’s a shame, I never actually *enjoyed* developing code in a language until I tried Lisp 2015-12-29T11:51:14Z dlowe: Haskell is pretty structured and I don't see corporate america embracing it :) 2015-12-29T11:52:00Z kobain joined #lisp 2015-12-29T11:52:41Z myrkraverk: Zhivago: one, operator overloading. If I'm going to have a matrix class, I want it to behave like a number. 2015-12-29T11:52:47Z myrkraverk: at least most of the time. 2015-12-29T11:53:28Z jgrant is now known as jsgrant 2015-12-29T11:53:51Z myrkraverk: two, multiple inheritance. I'm tired of jumping through hoops because Java doesn't have it (or rather was, I don't do Java these days) 2015-12-29T11:54:12Z myrkraverk: Proabbly others I've forgotten about. 2015-12-29T11:54:31Z myrkraverk: Oh, and a bytecode compiler that does at least basic optimisations. 2015-12-29T11:54:33Z kobain quit (Max SendQ exceeded) 2015-12-29T11:55:37Z myrkraverk: Multiple inheritance is something I don't want often, but when I want it, I *really* want it. And not just for the heck of it. 2015-12-29T11:56:33Z Zhivago: myrk: Hmm, I think I'll put you down as being essentially out of touch and delusional. :) 2015-12-29T11:57:11Z myrkraverk: Zhivago: if you insist. 2015-12-29T11:57:40Z myrkraverk: but which of the three points makes you think that? 2015-12-29T11:57:58Z Zhivago: Well, the comment about bytecode compilers is the most obvious one. 2015-12-29T11:58:21Z Zhivago: And then you can roll back to MI and see interfaces or mixins via spring for the second. 2015-12-29T11:58:28Z myrkraverk: Zhivago: oh, so you want all your error handling code being duplicated in a function, instead of put at the end by the compiler? 2015-12-29T11:58:29Z ebrasca joined #lisp 2015-12-29T11:58:58Z Zhivago: What are you talking about? 2015-12-29T11:59:25Z myrkraverk: Zhivago: I am talking about C++ compilers aggregating throws into the tail of the function. 2015-12-29T11:59:43Z myrkraverk: Zhivago: The Java compiler doesn't, because it doesn't optimise - at all. Or didn't few years ago. 2015-12-29T11:59:57Z EvW joined #lisp 2015-12-29T12:00:03Z myrkraverk: Zhivago: What do you mean by MI? 2015-12-29T12:00:24Z Zhivago: Your claim is that there were no optimizing java compilers as of a few years ago? 2015-12-29T12:01:16Z kobain joined #lisp 2015-12-29T12:01:29Z myrkraverk: Zhivago: when I was using Java, the default (Sun) compiler didn't optimize at all. And I didn't find (quickly) other compilers that did. I mean, the part that compiles Java into bytecode. 2015-12-29T12:01:40Z Joreji quit (Ping timeout: 250 seconds) 2015-12-29T12:01:44Z kobain quit (Max SendQ exceeded) 2015-12-29T12:02:02Z kobain joined #lisp 2015-12-29T12:02:04Z Zhivago: Do you have a particular year in mind? 2015-12-29T12:02:13Z myrkraverk: Yes, I know there are Java implementations that compile into native code, rather than bytecode, or were at the time, but that's not what I'm talking about. 2015-12-29T12:02:17Z myrkraverk: 2011 2015-12-29T12:02:37Z p_l: myrkraverk: that's probably because optimizations caused slower code with HotSpot VM 2015-12-29T12:02:37Z myrkraverk: 2010/2011 - more accurately. 2015-12-29T12:03:03Z myrkraverk: p_l: so, none at all was the answer? Really? 2015-12-29T12:03:27Z p_l: HotSpot had to "reverse" a lot of the optimizations previously applied to bytecode to acquire information necessary to properly optimize 2015-12-29T12:04:06Z mordocai quit (Ping timeout: 240 seconds) 2015-12-29T12:04:07Z myrkraverk: Oh, yeah, I guess that kind of makes sense, but I'm sure some basic optimizations can work with hotspot. 2015-12-29T12:04:11Z p_l: I believe the general effect with optimizing JIT in JVMs was to move optimization to runtime 2015-12-29T12:04:21Z myrkraverk: Yeah. 2015-12-29T12:04:34Z Zhivago: And you're ignoring hotspot as an optimizer, it seems. 2015-12-29T12:04:59Z p_l: myrkraverk: some optimizations can be done, like removing common subexpressions and the like, but as I said, most of low-level optimization moved to HotSpot 2015-12-29T12:05:09Z myrkraverk: Zhivago: I'm not ignoring it, I just want a combo. 2015-12-29T12:05:43Z jackdaniel: cleaning already clean flat won't make it twice as clean :) 2015-12-29T12:05:48Z p_l: myrkraverk: I'm not sure you can really optimize that much in Java->bytecode part without possibly screwing up further optimization 2015-12-29T12:06:18Z p_l: also, there are a lot of possible gains in optimizations unrelated to application code itself 2015-12-29T12:06:32Z p_l looks now at J9 with questioning stare 2015-12-29T12:06:33Z myrkraverk: p_l: so, aggregating throws to a tail of a function is something that interfers with hotspot? I find that extremely hard to believe. 2015-12-29T12:06:46Z mordocai joined #lisp 2015-12-29T12:07:18Z p_l: myrkraverk: if it screws with ability to trace which part exactly causes a stack-unwinding... 2015-12-29T12:07:18Z ck_ quit (Quit: dist upgrade D-8 -- .oO( http://xkcd.com/349/ )) 2015-12-29T12:07:54Z p_l: also, I suspect they might have decided that reversibility of bytecode compilation was worth it in long term 2015-12-29T12:08:16Z myrkraverk: p_l: you can do it without losing that information, yes. 2015-12-29T12:08:45Z p_l: myrkraverk: with class file format change definitely, not sure if they could do it well without it 2015-12-29T12:08:52Z myrkraverk: *nod* 2015-12-29T12:09:58Z myrkraverk: Nowadays, I don't use Java because it's a security issue. 2015-12-29T12:10:26Z p_l: Sometimes compatibility is more important than pure efficiency, especially when said compatibility is what allows you to take Excelsior JET to generate native binary ;) 2015-12-29T12:10:48Z p_l: myrkraverk: eh, the real issue was browser interface and the like. Browsers are hell on earth 2015-12-29T12:11:04Z myrkraverk: p_l: at $work, Java is on the list of things not to use, ever. 2015-12-29T12:11:39Z myrkraverk: Because of security concerns - remote exploits and the like. 2015-12-29T12:11:43Z p_l waits for similar rules about out-of-control JS, unfortunately it might be too late 2015-12-29T12:12:07Z myrkraverk: *nod* 2015-12-29T12:12:46Z myrkraverk: Afaict, we're not using any server side JS. 2015-12-29T12:13:22Z p_l: myrkraverk: server side is not a problem, treat it as any other application 2015-12-29T12:13:42Z p_l: the same thing that makes java a security problem (the exact same thing) is what makes JS a security problem - browsers 2015-12-29T12:13:49Z lnostdal_ joined #lisp 2015-12-29T12:14:56Z p_l: you know, the things that load&execute unverified code from unverified sources without even ensuring someone didn't switch around the servers they download from, all the time, sometimes downloading as much as 20MB of code for a website 2015-12-29T12:15:54Z myrkraverk: *nod* 2015-12-29T12:16:18Z Jesin quit (Quit: Leaving) 2015-12-29T12:16:18Z myrkraverk: And then there's also this: http://www.pcworld.com/article/3004633/business-security/thousands-of-java-applications-vulnerable-to-nine-month-old-remote-code-execution-exploit.html 2015-12-29T12:16:31Z myrkraverk: Though, in this case, it's hard to blame Oracle only. 2015-12-29T12:16:58Z p_l: myrkraverk: in this case, it's effect of using insecure deserialization 2015-12-29T12:17:01Z myrkraverk: Which is why I'm very, very conservative in libraries/tools I use for outside facing applications. 2015-12-29T12:17:08Z myrkraverk: Yeah. 2015-12-29T12:17:31Z lnostdal quit (Ping timeout: 265 seconds) 2015-12-29T12:17:40Z p_l: you know, like JSON, which was insecure-uber-alles till people had to get rid of its original reason for existence and implement it manually ;P 2015-12-29T12:17:47Z z0d: yeah, blame Sun, too! 2015-12-29T12:18:02Z p_l: z0d: in this case, blame Apache 2015-12-29T12:18:33Z mbuf quit (Quit: rcirc on GNU Emacs 24.5.2) 2015-12-29T12:18:33Z myrkraverk: And everyone else using it, including Oracle, for not paying attention for 9 months. 2015-12-29T12:19:11Z p_l: myrkraverk: a lot of those applications are written by people who don't even know you can exploit that, and won't know for next decade 2015-12-29T12:19:26Z myrkraverk: *nod* 2015-12-29T12:19:28Z p_l: so-called "line of business" applications 2015-12-29T12:19:42Z p_l: you can't fix societal issue, which is what it truly is 2015-12-29T12:19:58Z myrkraverk: For everything that faces the outside world, I build in layers of security. 2015-12-29T12:20:00Z myrkraverk: *nod* 2015-12-29T12:20:37Z myrkraverk: So I try to think what happens if layer X is bypassed, or used, and how that can affect layer Y. 2015-12-29T12:21:01Z p_l: deserializers had been screwed up by programmers since the dawn of time, even for formats that had fully secure design (remember the ASN.1 bug in many applications?) 2015-12-29T12:22:11Z p_l: and ASN.1 had been designed to be explicitly "external" format that had predictable parsing, not something that is essentially reading a memory dump into core 2015-12-29T12:22:39Z cmack joined #lisp 2015-12-29T12:23:09Z myrkraverk: I've never used ASN.1 and don't remember the bug (before my time maybe?) 2015-12-29T12:23:45Z z0d: SNMP uses ASN.1 2015-12-29T12:24:31Z myrkraverk: Ok. I've never written code to read or write ASN.1; to clarify. 2015-12-29T12:25:35Z p_l: myrkraverk: few years ago, it turned out that several different network equipement codebases had parser bugs that allowed, afaik, even RCE in few cases 2015-12-29T12:26:28Z myrkraverk: oh, I see. 2015-12-29T12:27:15Z cmack quit (Ping timeout: 240 seconds) 2015-12-29T12:27:32Z p_l: on the other hand, I wonder how many "popular" (especially open source) implementations implement things like partial decode :/ 2015-12-29T12:28:12Z myrkraverk: C: 2015-12-29T12:34:19Z sysfault joined #lisp 2015-12-29T12:36:36Z whiteline joined #lisp 2015-12-29T12:37:31Z kumbiKambi quit (Ping timeout: 260 seconds) 2015-12-29T12:37:57Z p_l: myrkraverk: I only found this obvious ability when I looked into Erlang's ASN.1 compiler, which is quite obvious because Erlang comes from the same environment that specced ASN.1 in the first place and had much less tolerance for BS bugs 2015-12-29T12:38:34Z myrkraverk: I see. 2015-12-29T12:39:23Z p_l: and thus ability to extract few fields without decoding the whole thing into memory was obvious and important functionality 2015-12-29T12:45:02Z XhostX joined #lisp 2015-12-29T12:49:32Z dreamaddict: anyone have a favorite audio library for CL? 2015-12-29T12:49:51Z dreamaddict: for playing MP3s and such 2015-12-29T12:50:51Z flip214: dreamaddict: there was some discussion about FFI to ffmpeg or so, IIRC. 2015-12-29T12:51:02Z dreamaddict: ok 2015-12-29T12:51:03Z flip214: http://www.cliki.net/audio 2015-12-29T12:51:19Z dreamaddict: I was looking through there 2015-12-29T12:51:37Z dreamaddict: but I guess the best answer is to use FFI with another library 2015-12-29T12:51:49Z myrkraverk: What do I use to compare collections? In particular #(1 2) with #(1 2) and get true? 2015-12-29T12:53:11Z moore33: myrkraverk: EVERY 2015-12-29T12:55:18Z myrkraverk: What about a version that returns false if one sequence is longer than the other? 2015-12-29T12:55:44Z myrkraverk: unilke (every #'= #(1 2) #(1 2 3)) 2015-12-29T12:56:20Z moore33: You can write that. 2015-12-29T12:56:20Z AlphaAtom joined #lisp 2015-12-29T12:56:42Z myrkraverk: I guess. 2015-12-29T12:57:08Z schjetne quit (Ping timeout: 250 seconds) 2015-12-29T12:57:26Z Joreji joined #lisp 2015-12-29T12:57:55Z zupoman joined #lisp 2015-12-29T12:58:51Z axion: myrkraverk: equalp 2015-12-29T12:59:54Z myrkraverk: Of course, I was sure it was included c; 2015-12-29T13:07:02Z moore33 quit (Quit: Leaving) 2015-12-29T13:10:55Z Nikotiini joined #lisp 2015-12-29T13:11:46Z cadadar quit (Quit: Leaving.) 2015-12-29T13:14:13Z Jonsky joined #lisp 2015-12-29T13:15:04Z eudoxia joined #lisp 2015-12-29T13:15:42Z puchacz joined #lisp 2015-12-29T13:19:17Z lnostdal_ quit (Quit: Invest and trade anonymously: https://goo.gl/Hw81yy) 2015-12-29T13:20:24Z kumbiKambi joined #lisp 2015-12-29T13:21:20Z sz0 joined #lisp 2015-12-29T13:23:37Z phoe_krk quit (Quit: http://phoe-krk.tumblr.com/) 2015-12-29T13:28:51Z pbgc quit (Quit: Computer has gone to sleep.) 2015-12-29T13:29:12Z grouzen quit (Read error: Connection reset by peer) 2015-12-29T13:32:19Z XhostX quit (Quit: This computer has gone to sleep) 2015-12-29T13:32:40Z badkins joined #lisp 2015-12-29T13:33:35Z anti-freeze quit (Remote host closed the connection) 2015-12-29T13:34:20Z ramky quit (Ping timeout: 245 seconds) 2015-12-29T13:36:40Z Jonsky quit (Quit: rcirc on GNU Emacs 24.5.1) 2015-12-29T13:36:46Z constantinexvi quit (Ping timeout: 240 seconds) 2015-12-29T13:38:05Z brucem quit (Ping timeout: 260 seconds) 2015-12-29T13:38:34Z zymurgy quit (Ping timeout: 256 seconds) 2015-12-29T13:38:36Z trn quit (Ping timeout: 264 seconds) 2015-12-29T13:38:41Z GGMethos quit (Ping timeout: 260 seconds) 2015-12-29T13:39:08Z |3b| quit (Ping timeout: 256 seconds) 2015-12-29T13:42:07Z Karl_Dscc quit (Remote host closed the connection) 2015-12-29T13:47:19Z FreeBirdLjj quit (Remote host closed the connection) 2015-12-29T13:49:48Z TDT joined #lisp 2015-12-29T13:50:24Z ThePhoeron quit (Ping timeout: 255 seconds) 2015-12-29T13:50:34Z anti-freeze joined #lisp 2015-12-29T13:56:00Z XhostX joined #lisp 2015-12-29T13:57:55Z EvW quit (Ping timeout: 240 seconds) 2015-12-29T13:58:04Z constantinexvi joined #lisp 2015-12-29T13:58:35Z GGMethos joined #lisp 2015-12-29T13:59:09Z brucem joined #lisp 2015-12-29T13:59:11Z XhostX quit (Client Quit) 2015-12-29T14:00:38Z pbgc joined #lisp 2015-12-29T14:01:14Z happy-dude joined #lisp 2015-12-29T14:03:02Z zymurgy joined #lisp 2015-12-29T14:03:15Z dougk_ quit (Ping timeout: 240 seconds) 2015-12-29T14:03:34Z ebrasca quit (Remote host closed the connection) 2015-12-29T14:05:52Z trn joined #lisp 2015-12-29T14:07:20Z constantinexvi quit (Ping timeout: 250 seconds) 2015-12-29T14:08:38Z brucem quit (Ping timeout: 250 seconds) 2015-12-29T14:08:48Z trn quit (Excess Flood) 2015-12-29T14:08:56Z zymurgy quit (Ping timeout: 246 seconds) 2015-12-29T14:09:58Z constantinexvi joined #lisp 2015-12-29T14:10:13Z brucem joined #lisp 2015-12-29T14:10:40Z zotherstupidguy joined #lisp 2015-12-29T14:11:03Z trn joined #lisp 2015-12-29T14:11:51Z trn quit (Excess Flood) 2015-12-29T14:13:06Z trn joined #lisp 2015-12-29T14:13:36Z ThePhoeron joined #lisp 2015-12-29T14:13:52Z trn quit (Excess Flood) 2015-12-29T14:14:35Z TDT quit (Quit: TDT) 2015-12-29T14:15:06Z trn joined #lisp 2015-12-29T14:15:17Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-29T14:15:59Z trn quit (Excess Flood) 2015-12-29T14:16:23Z dougk_ joined #lisp 2015-12-29T14:18:15Z trn joined #lisp 2015-12-29T14:19:01Z trn quit (Excess Flood) 2015-12-29T14:21:13Z trn joined #lisp 2015-12-29T14:22:20Z trn quit (Excess Flood) 2015-12-29T14:23:16Z zymurgy joined #lisp 2015-12-29T14:23:36Z cmack joined #lisp 2015-12-29T14:24:13Z warweasle joined #lisp 2015-12-29T14:24:33Z CEnnis91 joined #lisp 2015-12-29T14:25:08Z brucem quit (Changing host) 2015-12-29T14:25:08Z brucem joined #lisp 2015-12-29T14:26:56Z Jesin joined #lisp 2015-12-29T14:27:44Z ThePhoeron quit (Ping timeout: 255 seconds) 2015-12-29T14:27:55Z cmack quit (Ping timeout: 240 seconds) 2015-12-29T14:28:00Z Yuuhi joined #lisp 2015-12-29T14:32:27Z LiamH joined #lisp 2015-12-29T14:39:50Z Jesin quit (Ping timeout: 250 seconds) 2015-12-29T14:42:41Z phoe_krk joined #lisp 2015-12-29T14:43:55Z pbgc quit (Quit: Computer has gone to sleep.) 2015-12-29T14:44:55Z mvilleneuve joined #lisp 2015-12-29T14:47:05Z gravicappa joined #lisp 2015-12-29T14:49:00Z cadadar joined #lisp 2015-12-29T14:50:27Z ThePhoeron joined #lisp 2015-12-29T14:50:50Z XhostX joined #lisp 2015-12-29T14:52:29Z zymurgy quit (Ping timeout: 255 seconds) 2015-12-29T14:53:08Z Jesin joined #lisp 2015-12-29T14:54:31Z GGMethos quit (Ping timeout: 260 seconds) 2015-12-29T14:55:28Z Jesin quit (Client Quit) 2015-12-29T14:57:20Z nisstyre quit (Ping timeout: 256 seconds) 2015-12-29T14:57:48Z Jesin joined #lisp 2015-12-29T14:58:19Z prxq joined #lisp 2015-12-29T14:58:33Z quazimodo quit (Read error: Connection reset by peer) 2015-12-29T14:58:39Z quazimod1 joined #lisp 2015-12-29T14:58:39Z quazimodo joined #lisp 2015-12-29T14:59:55Z larme quit (Ping timeout: 240 seconds) 2015-12-29T15:00:32Z grouzen joined #lisp 2015-12-29T15:00:56Z frankS2 quit (Ping timeout: 240 seconds) 2015-12-29T15:01:15Z splittist quit (Ping timeout: 240 seconds) 2015-12-29T15:02:20Z frankS2 joined #lisp 2015-12-29T15:04:26Z splittist joined #lisp 2015-12-29T15:04:32Z ThePhoeron quit (Ping timeout: 250 seconds) 2015-12-29T15:04:51Z Trystam is now known as Tristam 2015-12-29T15:06:26Z phoe_krk quit (Quit: http://phoe-krk.tumblr.com/) 2015-12-29T15:07:08Z GGMethos joined #lisp 2015-12-29T15:07:22Z anti-freeze: Hi everyone, so I'm using clojurescript with boot and everything was working just dandy until about 2 hours ago, then figwheel shat itself. Has anyone seen this error before? https://www.refheap.com/113206 2015-12-29T15:07:46Z anti-freeze: Sorry, wrong channel 2015-12-29T15:10:23Z eudoxia quit (Quit: Leaving) 2015-12-29T15:10:55Z phadthai quit (Ping timeout: 240 seconds) 2015-12-29T15:11:44Z noark9 joined #lisp 2015-12-29T15:11:55Z Mon_Ouie quit (Quit: WeeChat 1.3) 2015-12-29T15:12:50Z phadthai joined #lisp 2015-12-29T15:13:34Z pbgc joined #lisp 2015-12-29T15:13:36Z eudoxia joined #lisp 2015-12-29T15:13:49Z AlphaAtom joined #lisp 2015-12-29T15:15:52Z AlphaAtom quit (Max SendQ exceeded) 2015-12-29T15:16:06Z noark9 quit (Remote host closed the connection) 2015-12-29T15:16:36Z AlphaAtom joined #lisp 2015-12-29T15:17:09Z AlphaAtom quit (Max SendQ exceeded) 2015-12-29T15:18:27Z AlphaAtom joined #lisp 2015-12-29T15:19:09Z XhostX quit (Quit: This computer has gone to sleep) 2015-12-29T15:20:01Z AlphaAtom quit (Max SendQ exceeded) 2015-12-29T15:20:17Z XhostX joined #lisp 2015-12-29T15:21:20Z Jesin quit (Ping timeout: 260 seconds) 2015-12-29T15:21:28Z luis is depressed about how his inbox gets incoming email about various OSS projects at much higher rate than he can reply. :( 2015-12-29T15:22:41Z AlphaAtom joined #lisp 2015-12-29T15:22:43Z AlphaAtom quit (Client Quit) 2015-12-29T15:23:30Z kushal quit (Quit: Leaving) 2015-12-29T15:23:54Z LiamH: luis: speaking of which... I sent an email about the path to the hdf5 header files/library not being found. 2015-12-29T15:23:59Z kushal joined #lisp 2015-12-29T15:24:48Z LiamH: You had given some thoughts on which I would like some clarification. 2015-12-29T15:25:43Z AlphaAtom joined #lisp 2015-12-29T15:26:12Z nisstyre joined #lisp 2015-12-29T15:27:01Z larme joined #lisp 2015-12-29T15:27:42Z ThePhoeron joined #lisp 2015-12-29T15:29:40Z lisse_ joined #lisp 2015-12-29T15:31:25Z TMM quit (Quit: Ex-Chat) 2015-12-29T15:35:36Z yvm: oGMo, are you here? I probably have an issue with c2ffi similar to #6 in your github repo. c2ffi itself built ok, but keep fail while trying to process a file containing size_t type variables. 2015-12-29T15:36:13Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-29T15:36:14Z oGMo: yvm: what are you trying to process? 2015-12-29T15:36:37Z yvm: /usr/include/xf86drmMode.h 2015-12-29T15:37:21Z EvW joined #lisp 2015-12-29T15:37:23Z yvm: ~/stand/c2ffi/build/src/c2ffi -x c -A x86_64-pc-linux-gnu -o xf86drmMode.spec -i/usr/include -i/usr/include/libdrm/ -i/usr/include/x86_64-linux-gnu/ -M xf86drmMode-macrodefs.c /usr/include/xf86drmMode.h 2>errors 2015-12-29T15:37:27Z AlphaAtom joined #lisp 2015-12-29T15:39:00Z oGMo: yvm: erk .. i get an sisue about an invalid decl .. fixing 2015-12-29T15:39:04Z oGMo: "issue" 2015-12-29T15:39:36Z yvm: Ok. Thank you. 2015-12-29T15:44:34Z k-stz joined #lisp 2015-12-29T15:45:00Z kumbiKambi quit (Remote host closed the connection) 2015-12-29T15:45:51Z oGMo: yvm: though note, it appears you should create a header which #include "xf86drm.h" \ #include "xf86drmMode.h", and c2ffi will process that 2015-12-29T15:46:41Z mishoo__ joined #lisp 2015-12-29T15:47:35Z ThePhoeron quit (Ping timeout: 264 seconds) 2015-12-29T15:48:01Z XhostX quit (Quit: This computer has gone to sleep) 2015-12-29T15:48:41Z mishoo_ quit (Ping timeout: 246 seconds) 2015-12-29T15:51:43Z pbgc quit (Quit: Computer has gone to sleep.) 2015-12-29T15:53:18Z oGMo: yvm: i've pushed a fix, but unless you include the proper things (it looks like mostly stdint.h) you'll just get a lot of "" output 2015-12-29T15:53:32Z oGMo: but it won't assert/abort now 2015-12-29T15:56:03Z lisse_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-29T16:00:27Z Karl_Dscc joined #lisp 2015-12-29T16:05:19Z pbgc joined #lisp 2015-12-29T16:06:10Z luis: LiamH: that e-mail is in the middle of other 50 similar emails. :) 2015-12-29T16:07:47Z luis: LiamH: https://github.com/cffi/cffi/pull/78 is an attempt at fixing your problem but it still has some issues (also in that 50 mail pile). Meanwhile, you can use CFFI 0.16.1 which is what Quicklisp has and doesn't have that bug. 2015-12-29T16:11:17Z LiamH: luis: Thanks, but my experience is that current HEAD (newer than 0.16.1) doesn't work. Do you mean I need to revert to 0.16.1 to make it work? 2015-12-29T16:11:48Z XhostX joined #lisp 2015-12-29T16:12:29Z attila_lendvai quit (Read error: Connection reset by peer) 2015-12-29T16:12:40Z GGMethos quit (Ping timeout: 260 seconds) 2015-12-29T16:14:21Z attila_lendvai joined #lisp 2015-12-29T16:14:21Z attila_lendvai quit (Changing host) 2015-12-29T16:14:21Z attila_lendvai joined #lisp 2015-12-29T16:14:27Z GGMethos joined #lisp 2015-12-29T16:15:16Z attila_lendvai: luis: answered at: https://github.com/cffi/cffi/pull/83/files#r48546058 I'll continue with integrating the new revision of errno into the main system 2015-12-29T16:15:48Z B joined #lisp 2015-12-29T16:15:56Z eudoxia_ joined #lisp 2015-12-29T16:16:11Z B is now known as Guest92434 2015-12-29T16:16:20Z cmack joined #lisp 2015-12-29T16:16:30Z eudoxia quit (Read error: Connection reset by peer) 2015-12-29T16:18:33Z luis: attila_lendvai: watch out for that GNU strerror_r thingie. That commit I mention suggests that strerror_r is actually a macro in glibc. :-/ 2015-12-29T16:19:34Z luis: if all this turns out to be too much trouble, then perhaps the answer is "use Osicat". :-/ 2015-12-29T16:20:00Z luis: Or add errno to cffi-sys and ask each Lisp to implement it properly. 2015-12-29T16:22:47Z attila_lendvai: luis: but this errno thing is really an OS issue. I mean in cffi-sys it'll be just duplicated on sbcl/linux and sbcl/windows, etc... no? 2015-12-29T16:22:52Z ThePhoeron joined #lisp 2015-12-29T16:23:07Z attila_lendvai: unless of course some definition is a macro, which can be a showstopper 2015-12-29T16:24:10Z OrangeShark joined #lisp 2015-12-29T16:24:20Z _sjs quit (Ping timeout: 260 seconds) 2015-12-29T16:24:45Z anti-freeze quit (Remote host closed the connection) 2015-12-29T16:26:17Z djh_ is now known as djh 2015-12-29T16:29:29Z hiroakip joined #lisp 2015-12-29T16:29:44Z attila_lendvai: such a simple thing as errno and strerror, and so messed up... maybe we should delegate it to cffi-sys and use whatever the implementations can help with 2015-12-29T16:32:58Z Guest92434 quit (Ping timeout: 252 seconds) 2015-12-29T16:36:46Z constantinexvi quit (Ping timeout: 240 seconds) 2015-12-29T16:37:14Z phax joined #lisp 2015-12-29T16:38:06Z anti-freeze joined #lisp 2015-12-29T16:39:06Z constantinexvi joined #lisp 2015-12-29T16:39:30Z rpg joined #lisp 2015-12-29T16:39:47Z lisse_ joined #lisp 2015-12-29T16:40:05Z LiamH: luis: 0.16.1 fails to load hdf5-cffi for me 2015-12-29T16:40:29Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-29T16:40:30Z Karl_Dscc quit (Remote host closed the connection) 2015-12-29T16:41:54Z AlphaAtom joined #lisp 2015-12-29T16:42:39Z hiero joined #lisp 2015-12-29T16:44:35Z ThePhoeron quit (Ping timeout: 276 seconds) 2015-12-29T16:44:40Z eudoxia_ quit (Quit: Leaving) 2015-12-29T16:45:15Z pwnie quit (Quit: = "") 2015-12-29T16:46:02Z pwnie joined #lisp 2015-12-29T16:48:51Z rpg quit (Quit: rpg) 2015-12-29T16:49:29Z EvW quit (Ping timeout: 255 seconds) 2015-12-29T16:51:04Z wmeddys joined #lisp 2015-12-29T16:54:20Z francogrex joined #lisp 2015-12-29T16:58:44Z _sjs joined #lisp 2015-12-29T17:02:30Z zymurgy joined #lisp 2015-12-29T17:04:37Z sjl joined #lisp 2015-12-29T17:06:19Z pwnie quit (Ping timeout: 260 seconds) 2015-12-29T17:11:07Z trn joined #lisp 2015-12-29T17:11:07Z luis: attila_lendvai: yeah, messed up indeed. Delegation to cffi-sys is the approach of PR #31, and even that is messed up if we want to cater to ACL. 2015-12-29T17:11:25Z luis: LiamH: why? 2015-12-29T17:13:11Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-29T17:13:24Z phax quit (Quit: phax) 2015-12-29T17:14:10Z LiamH: luis: same reason, it can't find path to library. However, I do have modification to hdf5-cffi, so that may be why I get different results. 2015-12-29T17:14:25Z LiamH: foreign library I mean 2015-12-29T17:14:33Z AlphaAtom joined #lisp 2015-12-29T17:16:29Z sjl quit (Ping timeout: 255 seconds) 2015-12-29T17:17:14Z wmeddys quit (Remote host closed the connection) 2015-12-29T17:18:21Z futpib joined #lisp 2015-12-29T17:19:23Z malbertife joined #lisp 2015-12-29T17:19:57Z hiero left #lisp 2015-12-29T17:21:08Z pwnie joined #lisp 2015-12-29T17:24:26Z voidengineer-w joined #lisp 2015-12-29T17:26:02Z voidengineer-w: Are any of you using lisp to do scripting work or bash/ruby/python? 2015-12-29T17:27:12Z jackdaniel uses lisp for scripting 2015-12-29T17:27:43Z anderoonies joined #lisp 2015-12-29T17:28:16Z mathi_aihtam joined #lisp 2015-12-29T17:28:39Z ThePhoeron joined #lisp 2015-12-29T17:29:24Z voidengineer-w: I'm studying to get a job as a sysadmin and have been reading again and again that I need to do a lot of scripting. I love lisp so wasn't sure if I could use it as such without getting fired from future employers. lol 2015-12-29T17:30:01Z myrkraverk: voidengineer-w: I use sbcl with hashbangs. I guess that could be called scripting, but I'm not exactly doing sysadmin tasks with it. 2015-12-29T17:30:42Z mordocai: voidengineer-w: Depends on your place of employment. You'll either be fired or un-fireable. 2015-12-29T17:30:44Z jackdaniel: voidengineer-w: I think you should ask your employer if these scripts are for delivery (he will probably refuse) 2015-12-29T17:30:59Z jackdaniel: it's a good fit for automatic your daily tasks though 2015-12-29T17:31:12Z voidengineer-w: that's what I was thinking 2015-12-29T17:31:14Z mordocai: jackdaniel has the technically correct idea. Less fun for me to live vicariously through though 2015-12-29T17:31:24Z myrkraverk: Or crunching through data (what I'm doing) 2015-12-29T17:32:25Z voidengineer-w: so I guess I'll dig into a bit of python then 2015-12-29T17:34:20Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-29T17:34:46Z MetaHater joined #lisp 2015-12-29T17:35:10Z mordocai: Ruby is more lisp like and also acceptable for sysadmin work 2015-12-29T17:35:19Z myrkraverk: Reading the clhs for POSITION, I don't get what the :key and :test arguments are all about. Is there a better description of this function somewhere? 2015-12-29T17:35:21Z MetaHater: Is there something like typed/racket or typed clojure, but for CL? 2015-12-29T17:35:39Z francogrex quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2015-12-29T17:36:10Z mordocai: voidengineer-w: the above message from me was for you btw, forgot to put your name in it 2015-12-29T17:36:20Z jackdaniel: myrkraverk: correct element is tested like that: (if (funcall test (funcall key element)) …) 2015-12-29T17:36:51Z jackdaniel: key is function used to prepare element, while test is a testing function 2015-12-29T17:36:59Z voidengineer-w: That's what I was thinking about Ruby but wasn't sure 2015-12-29T17:37:08Z voidengineer-w: I had heard it had similarities to CL 2015-12-29T17:37:26Z voidengineer-w: Which would make it more favorable since lisp fits my brain so much better 2015-12-29T17:37:31Z jackdaniel: myrkraverk: these are standard key elements (repeating in numer of functions) 2015-12-29T17:38:14Z myrkraverk: Ok, so if I need to supply my own test function, :test, I can also supply my own element transformation, :key. 2015-12-29T17:38:16Z myrkraverk: right? 2015-12-29T17:38:20Z jackdaniel: yes 2015-12-29T17:39:25Z eazar001 quit (Quit: WeeChat 1.3) 2015-12-29T17:40:26Z AlphaAtom joined #lisp 2015-12-29T17:40:44Z vlatkoB quit (Remote host closed the connection) 2015-12-29T17:41:44Z Petit_Dejeuner: voidengineer-w: You might want to take a look at some of the Schemes as a scripting language. 2015-12-29T17:42:36Z mordocai: Petit_Dejeuner: voidengineer-w: That's likely to have the same reaction as common lisp in the sysadmin space IMO. 2015-12-29T17:43:25Z eazar001 joined #lisp 2015-12-29T17:44:25Z Petit_Dejeuner: mordocai: I might be naive, but I thought it might be easier to squeeze in. 2015-12-29T17:44:32Z voidengineer-w: I would use common lisp before touching scheme 2015-12-29T17:44:56Z Petit_Dejeuner: ...write your scripts in elisp. 2015-12-29T17:45:00Z voidengineer-w: lisp is much more robust 2015-12-29T17:45:11Z mordocai: Petit_Dejeuner: Idk, in general in my experience sysadmins are even more touchy about only using things that the other sysadmins know 2015-12-29T17:45:21Z jackdaniel: Petit_Dejeuner: I believe that the problem is "familiarity" of the other devs to the language 2015-12-29T17:45:25Z sysfault quit (Ping timeout: 260 seconds) 2015-12-29T17:45:49Z jackdaniel: and lisp may be sequeezed nicely (just using interpreter for instance) 2015-12-29T17:46:06Z jackdaniel: or multicall binaries 2015-12-29T17:46:12Z jackdaniel: ecl has small executable sizes 2015-12-29T17:46:57Z futpib_ joined #lisp 2015-12-29T17:50:03Z futpib quit (Ping timeout: 265 seconds) 2015-12-29T17:50:38Z MetaHater: Has anyone implemented gradual typing yet? 2015-12-29T17:50:53Z jasom: voidengineer-w: check out inferior-shell for some handy scripting (though you can get a long way just using uiop) 2015-12-29T17:50:56Z ThePhoeron quit (Ping timeout: 250 seconds) 2015-12-29T17:51:06Z psy_ joined #lisp 2015-12-29T17:51:22Z Petit_Dejeuner: MetaHater: It sounds like something most languages support. 2015-12-29T17:51:44Z Walex2: so if I mention Guile will everybody whine? :-) 2015-12-29T17:51:44Z voidengineer-w: ok, I will jasom 2015-12-29T17:52:00Z Petit_Dejeuner: https://en.wikipedia.org/wiki/Gradual_typing#Examples 2015-12-29T17:52:04Z Petit_Dejeuner: MetaHater: ^ 2015-12-29T17:52:15Z lisse_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-29T17:52:27Z MetaHater: Petit_Dejeuner: i couldn't find anything CL related, tough. 2015-12-29T17:52:54Z Petit_Dejeuner: MetaHater: Oh duh. I didn't realize you were talking about CL. 2015-12-29T17:52:56Z Walex2: GAGAAAAH! That "gradual typing" thing leaves me appalled as usual by using the wrong concepts and eespecially terminology 2015-12-29T17:53:28Z Walex2: and the general idea of "gradual typing" is known in Lispworld as "type annoations". 2015-12-29T17:54:02Z MetaHater: are they considered at compiletime, or just useless runtime hints? 2015-12-29T17:54:08Z karswell quit (Ping timeout: 256 seconds) 2015-12-29T17:54:11Z attila_lendvai: luis: is there some specific reason why load-foreign-library calls close-foreign-library? 2015-12-29T17:54:21Z Walex2: the terminology is grossly wrong, because the type of a variable is "variable", or else if would not be a variable. 2015-12-29T17:54:42Z Walex2: MetaHater: IIRC several compilers take advantage of "type annotations" to generate static code 2015-12-29T17:55:13Z mordocai: MetaHater: per http://stackoverflow.com/questions/12676228/type-predicates-over-types sbcl uses type annotations for compile time errors but ccl and lispworks do not. 2015-12-29T17:55:15Z attila_lendvai: luis: I get undefined alien warnings from sbcl when something gets reloaded and the use-foreign-library form initiates going through an unload/reload cycle 2015-12-29T17:55:16Z Walex2: what people call "type of a variable is a "predicate on a variable's potential value" 2015-12-29T17:55:17Z jackdaniel: Walex2: but it's implementation and declaration dependant if they check them at runtime 2015-12-29T17:55:17Z MetaHater: i care more about static analysis and denoting contracts via the type system. 2015-12-29T17:55:24Z shka joined #lisp 2015-12-29T17:55:25Z rick-monster joined #lisp 2015-12-29T17:55:27Z jackdaniel: ie calling function with arguments of not-fitting types 2015-12-29T17:55:35Z mordocai: MetaHater: all modern implementations seem to use them to optimize code. 2015-12-29T17:55:46Z mordocai: Well, sbcl, ccl, and lispworks anyway. idk about clisp 2015-12-29T17:56:04Z mlrutherford joined #lisp 2015-12-29T17:57:49Z eudoxia joined #lisp 2015-12-29T17:57:58Z XhostX quit (Quit: This computer has gone to sleep) 2015-12-29T17:58:01Z Walex2: BTW because I got into that discussion with some colleagues I have started writing an introduction to variables, assignment and type predicates here: http://www.sabi.co.uk/Notes/progrVarsAndAssign.html 2015-12-29T17:58:21Z shka: Walex2: thanks 2015-12-29T17:58:43Z shka: i was struggling to figure out how lisp type system works 2015-12-29T17:59:11Z Walex2: shka: the Lisp type system works the same as that of all other "algorithmic" languages... 2015-12-29T17:59:27Z Walex2: shka: with the difference that it is mostly-latent 2015-12-29T17:59:39Z shka: Walex2: type hierarchy is tangled 2015-12-29T17:59:47Z Walex2: shka: "latent" here means that most variables don't have a type predicate/constraint. 2015-12-29T17:59:53Z jasom: also due to what appears to be an oversight, types may not form a lattice 2015-12-29T18:00:07Z Walex2: shka: jasom: those are details... 2015-12-29T18:00:08Z EvW joined #lisp 2015-12-29T18:00:24Z Walex2: can be quite annoying details though 2015-12-29T18:00:33Z luis: attila_lendvai: I don't remember! Does git blame help? 2015-12-29T18:00:43Z attila_lendvai looks 2015-12-29T18:00:51Z anderoonies quit (Quit: Textual IRC Client: www.textualapp.com) 2015-12-29T18:01:08Z luis: GitHub's gui does not seem to have a recursive blame 2015-12-29T18:01:10Z jasom: also lisp has types that provably cannot be universaly calculated at compile time 2015-12-29T18:01:24Z reb``: Walex2: An important difference is that type declarations are promises made by the programmer to the compiler about the kinds of values that variables or slots may hold. 2015-12-29T18:01:28Z Walex2: shka: if you really want to get Lisp types Sonya Keene's book on CLOS is a fantastic resource; at least it was fantastic to me, because it made me understand OO and types in general in one way I was not aware of. 2015-12-29T18:01:43Z shka: i know 2015-12-29T18:01:50Z shka: best book on clos availble 2015-12-29T18:02:16Z Walex2: reb``: preaching to the choir here :-) 2015-12-29T18:02:38Z smokeink quit (Remote host closed the connection) 2015-12-29T18:02:46Z attila_lendvai: luis: this is the last, but I don't know how to go back in history behind that: https://github.com/cffi/cffi/commit/c85af5d07196277df874227bac479fb2acc041c2 2015-12-29T18:02:47Z Walex2: shka: then I will reveal to you a marvelous insight that I had decades ago, and that books clarified. 2015-12-29T18:02:56Z reb``: If you have not done so, also read The Art of the Metaobject Protocol. 2015-12-29T18:03:00Z TDT joined #lisp 2015-12-29T18:03:02Z Walex2: shka: whether you want it or not. 2015-12-29T18:03:23Z Walex2: reb``: that's more about the mechanisms, and gets a bit lost here and there. 2015-12-29T18:04:12Z sysfault joined #lisp 2015-12-29T18:04:22Z shka: Walex2: as I said I struggled to understand what was going on 2015-12-29T18:04:24Z shka: though 2015-12-29T18:04:29Z shka: it was before ;-) 2015-12-29T18:04:33Z MetaHater quit (Quit: Page closed) 2015-12-29T18:04:39Z attila_lendvai: fe[nl]ix: maybe you remember? why does load-foreign-library call close-foreign-library? 2015-12-29T18:04:48Z Walex2: shka: in languages like C (and Lisp...) a simple rule gives *all* the benefits of "inheritance" and in effect OO (with overloading/dynamic dispatching): the ability to name a field of a structure with any unique "path" in the substructure. 2015-12-29T18:05:02Z luis: attila_lendvai: this is the commit https://github.com/cffi/cffi/commit/eb1bf4a9cc3a1e12cfa66e216a977465d2667892 2015-12-29T18:05:13Z Walex2: that is the ability to omit any subfield names tha are not necessary to identify a field. 2015-12-29T18:05:41Z Walex2: so instead of a.b.c and a.b.d one can write a.c and a.d (if that's unique). 2015-12-29T18:05:49Z luis: attila_lendvai: I'm guessing fe[nl]ix wanted to be able to hack on some C library then just load it again to access the updated C code 2015-12-29T18:05:50Z Walex2: so instead of a.b.c and a.b.d one can write a.c and a.d (if that's unambigous). 2015-12-29T18:06:02Z Joreji quit (Ping timeout: 256 seconds) 2015-12-29T18:06:20Z Walex2: that plus overloading/dispatching ('defmethod') 2015-12-29T18:06:48Z attila_lendvai: luis: my guess also, but that'd be nicer to be done with something explicit 2015-12-29T18:07:29Z jasom: Walex2: Or as they said in my undergrad class on OO: is-a is a special case of has-a 2015-12-29T18:07:30Z luis: attila_lendvai: dlopen() does some reference counting, IIRC, not sure if this plays nicely with that. 2015-12-29T18:07:34Z Walex2: BTW there are some languages in which constraints on variables include other things than the type of the value, but also more general things, like predicates on the value 2015-12-29T18:07:54Z Walex2: jasom: no it is no, in programming languages it is exactly the same thing. 2015-12-29T18:08:09Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-29T18:08:12Z attila_lendvai: luis: oh, maybe that's why he did that... would be nice to have comments at non-intuitive parts of the codebase 2015-12-29T18:08:27Z mordocai: MetaHater left, so sad 2015-12-29T18:08:28Z jasom: Walex2: is-a is the case where you both are has-a *and* implement the interface thereof 2015-12-29T18:08:40Z mordocai: Started this convo and just left 2015-12-29T18:09:08Z Walex2: jasom: is-a and has-a are ontological concepts, and pertain to modeling. A lot of time in compsci has been wasted because of pointless handwaving like "is-a is the case where you both are has-a *and* implement the interface thereof 2015-12-29T18:09:52Z Walex2: jasom: plus another pet peeve of mine is that almost nobody implements interfaces as first class entities. 2015-12-29T18:10:17Z jasom: Walex2: the primary difference between duck typing and classic OO typing is that is-a is no longer a special case of has-a; merely the interface need be implemented 2015-12-29T18:10:31Z attila_lendvai: luis: yeah, most probably that's why, because there's not any infrastructure in cffi tracking nested dlopen calls, so the only safe way with the current cffi-sys api is to try to close it and ignore errors 2015-12-29T18:10:46Z Walex2: jasom: the point I was making above is that there is no such thing as OO typing. 2015-12-29T18:11:02Z omilu quit (Ping timeout: 276 seconds) 2015-12-29T18:11:07Z phoe_krk joined #lisp 2015-12-29T18:11:12Z Walex2: jasom: it is a useless concept on which so many papers and books have been written. 2015-12-29T18:11:14Z omilu joined #lisp 2015-12-29T18:11:23Z attila_lendvai: luis: but if there's a thread messing with ffi calls while something gets reloaded, then that'll break. not a big thing though... 2015-12-29T18:11:33Z luis: attila_lendvai: re comments, definitely! Sometimes it only becomes obvious that some parts are non-intuitive when it's too late. ;-) 2015-12-29T18:11:39Z jasom: Walex2: it may be of dubious value, but it clearly is such a thing 2015-12-29T18:11:41Z Walex2: jasom: I admit that's a bit of a radical point of view... 2015-12-29T18:12:22Z Walex2: jasom: there is such a thing only if one wants to engage in nominalism and create distinctions for the sake of it. 2015-12-29T18:12:31Z luis: attila_lendvai: comments can be dangerous too, because sometimes they go out of sync with the code. ;-) 2015-12-29T18:12:39Z \var joined #lisp 2015-12-29T18:12:51Z luis: But, yeah, at the very least the commit message should clarify what's going on here. 2015-12-29T18:12:52Z jasom: Walex2: or if you want to talk about typing in languages that implement heirarchal object trees 2015-12-29T18:12:58Z jasom: (or lattices for that matter) 2015-12-29T18:12:59Z luis: bad fe[nl]ix, bad fe[nl]ix :) 2015-12-29T18:13:40Z attila_lendvai is recording a comment 2015-12-29T18:13:44Z Walex2: jasom: consider the CLOS case: 'defmethod' as overloading/dispatching is entirely sufficient 2015-12-29T18:14:36Z jasom: Walex2: but Java and C++ exist; you can't just ignore that even if they found a very poor local maximum for their type system. 2015-12-29T18:14:37Z Walex2: jasom: hierarchical object trees/lattices is one of those things that exist only because, I think, of a mistake. 2015-12-29T18:15:25Z Walex2: jasom: sure, one cannot ignore them, but one can say that they have a needlessly complicated semantics in which some concepts like "inheritance" should not exist. 2015-12-29T18:16:06Z Walex2: jasom: if they had that simple "abbreviatio" rule. 2015-12-29T18:16:26Z Walex2: jasom: and dynamic dipatching on arguments like 'defmethod' 2015-12-29T18:17:44Z Walex2: jasom: consider C++: if you had the ability to omit intermediate sbustruct names, kept 'friend' and were able to declare at least one argument of function as 'virtual' you could do everything you can do in C++ today. 2015-12-29T18:18:13Z Walex2 is about one of his pet peeves :-) 2015-12-29T18:18:53Z LiamH: attila_lendvai: Where is hu.dwim.walker? http://dwim.hu/project/hu.dwim.walker gives a page not found. 2015-12-29T18:19:33Z attila_lendvai: LiamH: bah, that crappy site... http://dwim.hu/darcsweb/darcsweb.cgi 2015-12-29T18:19:51Z Walex2: there is/was a LISP-like (LISP-2 more precisely) language called POP-2 with some amazing ideas, and one of them was that in it 'a.f(b)' and 'f(a,b)' could be used regardless. 2015-12-29T18:20:06Z attila_lendvai: as much as I prefer darcs, github is so useful that I'm thinking about moving the repos over to git 2015-12-29T18:20:46Z jasom: Walex2: you still have the issue of when you have two members that include in them the same class; right now C++ can handle this with multiple-inheritence 2015-12-29T18:21:14Z LiamH: attila_lendvai: I was going to say, darcs - wow, didn't know anybody left using it. 2015-12-29T18:21:26Z Walex2 reckons that only in #LISP one can find someone who uses DARCS 2015-12-29T18:21:45Z Walex2: jasom: no, that's preciselye the case where my simple rule makes everything simple. 2015-12-29T18:21:46Z jasom: Walex2: it was very popular in haskell at one point too, so I bet there are haskellers still using it 2015-12-29T18:21:56Z nyef: Aren't darcs and git basically a fourier transform apart? One of them tracks changes and represents concrete versions in terms of the changes, and the other tracks concrete versions and represents changes in terms of the concrete versions? 2015-12-29T18:22:05Z attila_lendvai: LiamH: someone is actually working on a darcshub: http://hub.darcs.net/hu.dwim/hu.dwim.walker 2015-12-29T18:22:08Z jasom: Walex2: right now it is unambiguous so long as neither intermediate class overrides the parent class 2015-12-29T18:22:13Z ajf- joined #lisp 2015-12-29T18:22:15Z jasom: Walex2: what would happen in your case? 2015-12-29T18:22:33Z LiamH: I don't suppose there's a "git darcs" command, is there? 2015-12-29T18:23:28Z Walex2: jasom: you just make names less ambiguous :-) 2015-12-29T18:23:30Z attila_lendvai: nyef: prett much, but easy out of order (un)pulls are very useful. and the UI... the git UI... 2015-12-29T18:23:38Z Walex2: nyef: that's a very interesting view. 2015-12-29T18:23:49Z luis cheers for Attila's imminent move to GitHub 2015-12-29T18:23:54Z snits joined #lisp 2015-12-29T18:24:09Z Walex2: attila_lendvai: mentioning UIs in #LISP is a bit out of tune :-) 2015-12-29T18:24:54Z PuercoPop: dreamaddict: checkout https://github.com/ahefner/mixalot it is used by https://github.com/ahefner/shuffletron 2015-12-29T18:25:12Z LiamH: luis: Is the transformation from "thinking about" to "imminent" based on more information than we have from reading this discussion? 2015-12-29T18:25:20Z attila_lendvai: luis: but it feels like a betrayal! I've been using darcs from the early 2000's... 2015-12-29T18:25:22Z jasom: Walex2: no, I am talking about diamond inheritence in C++; how is that covered by your idea? 2015-12-29T18:25:45Z Walex2: jasom: yes of course. 2015-12-29T18:25:54Z mlrutherford: hey guys! quick question: im looking to package up lisps for the Solus operating system repository. Which Lisps would be best to include in this distro? 2015-12-29T18:26:01Z attila_lendvai: LiamH: luis has been planting the idea in my head... :) 2015-12-29T18:26:07Z warweasle quit (Quit: restart emacs) 2015-12-29T18:26:24Z jasom: mlrutherford: sbcl, ccl, clisp, ecl 2015-12-29T18:26:43Z jasom: mlrutherford: those are the 4 big libre implementations 2015-12-29T18:26:43Z warweasle joined #lisp 2015-12-29T18:26:46Z LiamH: attila_lendvai: Ah, so there's a history I was not aware of. 2015-12-29T18:26:56Z jackdaniel: cmucl too 2015-12-29T18:27:03Z Walex2: jasom: except that 'diamond inheritance' is a concept that is an artifact of the very idea of "inheritance" 2015-12-29T18:27:04Z jasom: right cmucl, how could I forget! 2015-12-29T18:27:27Z jackdaniel is happy you didn't forget ecl ^_^ 2015-12-29T18:27:37Z AlphaAtom joined #lisp 2015-12-29T18:27:49Z mlrutherford: jasom, jackdaniel thanks y'all! We're building up our repos and I didnt want to exclude the Lisp crowd :-) 2015-12-29T18:28:07Z jackdaniel: mlrutherford: that's really good. What is Solus though? 2015-12-29T18:28:31Z jackdaniel: oh, linux distribution (me dgg'ed) 2015-12-29T18:28:31Z Walex2: jasom: so in a different and simpler approach "diamond inheritance" is not going to happen, but something equivalent that actually makes sense. 2015-12-29T18:28:48Z LiamH: Gitlab and github are similar; I prefer gitlab. Also we have a private gitlab server deployed at work, so the familiarity is helpful when using gitlab.common-lisp.net. 2015-12-29T18:29:37Z Walex2: jackdaniel: ECL is one of my favourites. I used to know the author and he is particularly brilliant. 2015-12-29T18:29:50Z mlrutherford: ECL sounds really cool actually 2015-12-29T18:30:07Z mordocai loves gitlab mainly because free software. 2015-12-29T18:30:11Z Walex2: mlrutherford: it just works, and gets you binaries that you can anything you want with. 2015-12-29T18:30:14Z mordocai: Gitlab CI is also nice 2015-12-29T18:30:15Z PuercoPop: LiamH: when browsing from mobile, there are not similar at all. Gitlab takes a long time to load and is jittery when scrolling. 2015-12-29T18:30:29Z jackdaniel: you mean Jose Garcia-Ripoll, or Giuseppe Attardi ? 2015-12-29T18:30:45Z jackdaniel: Walex2: ↑ 2015-12-29T18:30:55Z Walex2: jackdaniel: Attardi. 2015-12-29T18:31:01Z LiamH: PuercoPop: Oh, I see. I never browse from mobile. 2015-12-29T18:31:15Z jasom is the weird one that prefers phabricator 2015-12-29T18:31:50Z Walex2: jasom: ah thanks for mentioning that. 2015-12-29T18:32:20Z Walex2 is behind the times, as punching cards takes a lot of time :-) 2015-12-29T18:32:51Z Bicyclidine joined #lisp 2015-12-29T18:33:26Z luis: By all means choose gitlab over github. GitHub definitely needs competition. It's worrisome to depend on a single (non open source) vendor. 2015-12-29T18:33:46Z Walex2: as to #LISP and UI, let me do a poll: anybody here using a LISP system with a GUI that looks like InterLisp or Symolics/LM GUIs? 2015-12-29T18:33:48Z mlrutherford: ^agreed 2015-12-29T18:34:05Z luis uses Gitorious at work. I hope it's upgraded to Gitlab sometime this decade. :-/ 2015-12-29T18:34:19Z sheilong joined #lisp 2015-12-29T18:34:20Z kdas_ joined #lisp 2015-12-29T18:34:28Z mlrutherford: I only use Github as a resume 2015-12-29T18:34:37Z sz0 quit (Quit: Bye.) 2015-12-29T18:35:32Z LiamH: luis: I thought gitorious was dead. Merged into gitlab or something? 2015-12-29T18:35:44Z kushal quit (Ping timeout: 276 seconds) 2015-12-29T18:36:05Z jackdaniel: gitlab bought gitorious I think 2015-12-29T18:36:34Z LiamH: Yeah, that's what I recall. Though I guess they didn't merge the software. 2015-12-29T18:37:41Z Xach_: even if they did, it's possible for old installations of such things to linger forever 2015-12-29T18:38:17Z LiamH: Xach_: Oh yes, that's what I figured was the case with luis at work. 2015-12-29T18:38:20Z jackdaniel: mlrutherford: there is also ABCL 2015-12-29T18:38:31Z mlrutherford: jackdaniel, thats the Java one? 2015-12-29T18:38:34Z jackdaniel: yes 2015-12-29T18:38:48Z mlrutherford: jackdaniel, cool, ill add it to the TODO list :-) 2015-12-29T18:39:07Z jasom: mlrutherford: that one should be easy, as it's distributed as a .jar file 2015-12-29T18:40:49Z Karl_Dscc joined #lisp 2015-12-29T18:41:00Z mlrutherford: jasom, thats nice :D makes my job easier 2015-12-29T18:41:29Z ThePhoeron joined #lisp 2015-12-29T18:42:25Z jackdaniel: also gcl is active and libre (gnu common lisp), but it's not ansi compliant yet 2015-12-29T18:43:16Z rick-monster: hi I have noticed an odd discrepancy between quicklisp :fft library and bordeaux/napa-fft. 2015-12-29T18:43:16Z eudoxia: ehhhh 2015-12-29T18:43:22Z eudoxia: there's no real point to adding GCL 2015-12-29T18:43:22Z lisse_ joined #lisp 2015-12-29T18:43:40Z rick-monster: it almost seems as :fft contains a sign error - has anyone else run into this? 2015-12-29T18:47:36Z Bicyclidine: a sign error? 2015-12-29T18:47:52Z rick-monster: the test I ran is to compare the ffts of sine and cos between the three libraries. Not only does :fft come out at a different scale to the others, but it seems to invert the sign of the real part of the fft 2015-12-29T18:49:26Z nzambe quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2015-12-29T18:50:00Z Bicyclidine: there's a bunch of different scale conventions, napa-fft has like three available. dunno about signs 2015-12-29T18:51:32Z Yuuhi quit (Remote host closed the connection) 2015-12-29T18:53:21Z nzambe joined #lisp 2015-12-29T18:53:32Z Zotan quit (Remote host closed the connection) 2015-12-29T18:53:35Z brucem quit (Ping timeout: 240 seconds) 2015-12-29T18:54:01Z Zotan joined #lisp 2015-12-29T18:56:35Z brucem joined #lisp 2015-12-29T18:57:09Z TDT quit (Quit: TDT) 2015-12-29T18:57:09Z attila_lendvai quit (Read error: Connection reset by peer) 2015-12-29T18:59:01Z attila_lendvai joined #lisp 2015-12-29T18:59:01Z attila_lendvai quit (Changing host) 2015-12-29T18:59:01Z attila_lendvai joined #lisp 2015-12-29T18:59:32Z cadadar quit (Quit: Leaving.) 2015-12-29T19:01:27Z trn quit (Quit: quit) 2015-12-29T19:04:47Z rpg joined #lisp 2015-12-29T19:06:13Z moore33 joined #lisp 2015-12-29T19:06:24Z ThePhoeron quit (Ping timeout: 245 seconds) 2015-12-29T19:08:04Z ajf- quit (Ping timeout: 250 seconds) 2015-12-29T19:09:26Z gravicappa quit (Remote host closed the connection) 2015-12-29T19:11:15Z mathi_aihtam quit (Quit: mathi_aihtam) 2015-12-29T19:16:02Z mathi_aihtam joined #lisp 2015-12-29T19:16:25Z zymurgy quit (Ping timeout: 245 seconds) 2015-12-29T19:18:44Z Nikotiini quit (Remote host closed the connection) 2015-12-29T19:19:06Z Guest20174 quit (Ping timeout: 240 seconds) 2015-12-29T19:19:11Z Nikotiini joined #lisp 2015-12-29T19:20:40Z zymurgy joined #lisp 2015-12-29T19:20:55Z mathi_aihtam quit (Ping timeout: 265 seconds) 2015-12-29T19:21:05Z lisse_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-29T19:25:09Z Joreji joined #lisp 2015-12-29T19:25:28Z mathi_aihtam joined #lisp 2015-12-29T19:25:50Z Bicyclidine quit (Ping timeout: 250 seconds) 2015-12-29T19:27:00Z Guest20174 joined #lisp 2015-12-29T19:27:46Z Bicyclidine joined #lisp 2015-12-29T19:29:35Z EvW quit (Ping timeout: 264 seconds) 2015-12-29T19:31:53Z anti-freeze quit (Remote host closed the connection) 2015-12-29T19:35:28Z EvW joined #lisp 2015-12-29T19:36:20Z TDT joined #lisp 2015-12-29T19:36:53Z eudoxia quit (Quit: Leaving) 2015-12-29T19:41:36Z trn joined #lisp 2015-12-29T19:41:49Z anti-freeze joined #lisp 2015-12-29T19:42:02Z anti-freeze quit (Remote host closed the connection) 2015-12-29T19:46:35Z sweater joined #lisp 2015-12-29T19:46:59Z sweater is now known as Guest20317 2015-12-29T19:51:35Z puchacz quit (Quit: Konversation terminated!) 2015-12-29T19:55:24Z brucem quit (Changing host) 2015-12-29T19:55:24Z brucem joined #lisp 2015-12-29T19:57:43Z ThePhoeron joined #lisp 2015-12-29T19:58:42Z mlrutherford is now known as mlr|eating 2015-12-29T20:02:06Z Einwq joined #lisp 2015-12-29T20:04:01Z ajf- joined #lisp 2015-12-29T20:04:39Z TDT quit (Quit: TDT) 2015-12-29T20:05:17Z earl-ducaine joined #lisp 2015-12-29T20:05:53Z ebrasca joined #lisp 2015-12-29T20:06:12Z anti-freeze joined #lisp 2015-12-29T20:09:28Z phoe_krk quit (Quit: http://phoe-krk.tumblr.com/) 2015-12-29T20:09:37Z anti-freeze quit (Remote host closed the connection) 2015-12-29T20:10:17Z cadadar joined #lisp 2015-12-29T20:12:57Z rpg quit (Remote host closed the connection) 2015-12-29T20:13:05Z rpg joined #lisp 2015-12-29T20:13:56Z ggole_ quit 2015-12-29T20:14:40Z zygentoma quit (Ping timeout: 256 seconds) 2015-12-29T20:14:59Z anti-freeze joined #lisp 2015-12-29T20:21:20Z ThePhoeron quit (Ping timeout: 265 seconds) 2015-12-29T20:25:46Z lisse_ joined #lisp 2015-12-29T20:28:10Z zygentoma joined #lisp 2015-12-29T20:28:32Z mlr|eating is now known as mlrutherford 2015-12-29T20:37:04Z pjb: dlowe: your formulation is erroneous. It's the other languages who have had decades of divergent evolution with whcih to confuse the world. LISP was there first. (Unless you're talking about FORTRAN). 2015-12-29T20:40:45Z Walex2: pjb: arguably LISP-2 was there first :-) 2015-12-29T20:41:33Z Walex2: pjb: LISP 1.5 was IIRC a slightly later intermediate step on the way to LISP-2 2015-12-29T20:42:29Z Walex2: also probably JOSS, the first scripting language, was there before FORTRAN 2015-12-29T20:43:24Z Walex2: just checked on Wikipedia, JOSS is from 1963. 2015-12-29T20:46:02Z Walex2: naahhh misremembered LISP1 was before LISP1 obviously. 2015-12-29T20:48:33Z XhostX joined #lisp 2015-12-29T20:50:45Z AlphaAtom quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2015-12-29T20:51:46Z hiroakip quit (Ping timeout: 272 seconds) 2015-12-29T20:52:43Z AlphaAtom joined #lisp 2015-12-29T20:53:51Z XhostX quit (Read error: No route to host) 2015-12-29T21:01:50Z varjagg: lisp 1.5 used plists for symbol and function values 2015-12-29T21:01:59Z varjagg: and as such was lisp-2 2015-12-29T21:02:41Z varjagg: or did you mean a project with that name? 2015-12-29T21:04:45Z voidengineer-w quit (Remote host closed the connection) 2015-12-29T21:05:19Z lurker quit (Quit: leaving) 2015-12-29T21:06:20Z joneshf-laptop quit (Ping timeout: 272 seconds) 2015-12-29T21:09:13Z pbgc quit (Quit: Computer has gone to sleep.) 2015-12-29T21:14:59Z ThePhoeron joined #lisp 2015-12-29T21:15:18Z shka quit (Ping timeout: 256 seconds) 2015-12-29T21:15:57Z Joreji quit (Ping timeout: 265 seconds) 2015-12-29T21:17:02Z eazar001 quit (Quit: WeeChat 1.3) 2015-12-29T21:17:13Z luni joined #lisp 2015-12-29T21:19:47Z freehck quit (Remote host closed the connection) 2015-12-29T21:21:12Z badkins quit 2015-12-29T21:24:48Z AlphaAtom quit (Quit: Textual IRC Client: www.textualapp.com) 2015-12-29T21:25:15Z urandom__ joined #lisp 2015-12-29T21:26:24Z Karl_Dscc quit (Remote host closed the connection) 2015-12-29T21:29:46Z phoe_krk joined #lisp 2015-12-29T21:31:04Z luni quit (Ping timeout: 252 seconds) 2015-12-29T21:31:59Z eazar001 joined #lisp 2015-12-29T21:32:32Z gabriel-artigue joined #lisp 2015-12-29T21:39:35Z eazar001 quit (Quit: WeeChat 1.3) 2015-12-29T21:39:35Z attila_lendvai quit (Read error: Connection reset by peer) 2015-12-29T21:39:56Z pbgc joined #lisp 2015-12-29T21:40:49Z Jesin joined #lisp 2015-12-29T21:41:29Z ThePhoeron quit (Ping timeout: 246 seconds) 2015-12-29T21:41:37Z attila_lendvai joined #lisp 2015-12-29T21:41:37Z attila_lendvai quit (Changing host) 2015-12-29T21:41:37Z attila_lendvai joined #lisp 2015-12-29T21:42:59Z Jesin quit (Client Quit) 2015-12-29T21:43:00Z attila_lendvai quit (Read error: Connection reset by peer) 2015-12-29T21:43:38Z eazar001 joined #lisp 2015-12-29T21:43:41Z eazar001 quit (Client Quit) 2015-12-29T21:43:56Z attila_lendvai joined #lisp 2015-12-29T21:43:56Z attila_lendvai quit (Changing host) 2015-12-29T21:43:56Z attila_lendvai joined #lisp 2015-12-29T21:46:59Z warweasle quit (Remote host closed the connection) 2015-12-29T21:47:04Z Jesin joined #lisp 2015-12-29T21:49:27Z keix joined #lisp 2015-12-29T21:55:15Z badkins joined #lisp 2015-12-29T21:56:22Z malbertife quit (Quit: Leaving) 2015-12-29T21:56:43Z phoe_krk quit (Quit: http://phoe-krk.tumblr.com/) 2015-12-29T21:56:55Z malbertife joined #lisp 2015-12-29T21:57:02Z Xach joined #lisp 2015-12-29T21:58:05Z Xach_ quit (Ping timeout: 245 seconds) 2015-12-29T21:58:06Z lisse_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) 2015-12-29T21:58:25Z phoe_krk joined #lisp 2015-12-29T21:59:47Z phoe_krk quit (Client Quit) 2015-12-29T22:04:31Z phoe_krk joined #lisp 2015-12-29T22:05:27Z mvilleneuve quit (Quit: This computer has gone to sleep) 2015-12-29T22:08:09Z voidengineer quit (Remote host closed the connection) 2015-12-29T22:11:37Z phoe_krk quit (Quit: http://phoe-krk.tumblr.com/) 2015-12-29T22:11:48Z kazlock joined #lisp 2015-12-29T22:12:31Z ebrasca quit (Remote host closed the connection) 2015-12-29T22:12:37Z ebrasca` joined #lisp 2015-12-29T22:14:02Z jasom: in sldb, is there a way to get the value that is bound to a gensym in the backtrace? 2015-12-29T22:14:22Z Walex2: varjagg: the original LISP1 was based on lambda calculus, but was meant to be replaced by an ALGOL-like syntax language (m-expressions) called LISP 2. LISP 1.5 was supposed to be the "p-code" of LISP 2.... 2015-12-29T22:14:24Z jeti joined #lisp 2015-12-29T22:14:33Z jasom: i.e. I have #:G1274 = #(#) and I want to perform operations on that hash-table 2015-12-29T22:14:54Z Walex2: varjagg: http://www-formal.stanford.edu/jmc/history/lisp/node3.html 2015-12-29T22:16:09Z Walex2: varjagg: actually, LISP 2 was before LISP 1 but was not quite designed yet "The programs to be hand-compiled were written in an informal notation called M-expressions intended to resemble FORTRAN as much as possible. Besides FORTRAN-like assignment statements and go tos, the language allowed conditional expressions and the basic functions of LISP. Allowing recursive function definitions required no new notation from the function definitions allowed in FORTRAN I 2015-12-29T22:16:25Z phoe_krk joined #lisp 2015-12-29T22:16:29Z nyef: jasom: (sb-kernel:make-lisp-obj #x100892a9a3) might work in a pinch? 2015-12-29T22:16:46Z nyef: There's probably a more-principled mechanism as well, but that's an easy hack. 2015-12-29T22:16:53Z Walex2: reading that the inteded syntax of LISP 1 itself was meant to be FORTRAN-like is quite funny 2015-12-29T22:17:26Z attila_lendvai quit (Ping timeout: 240 seconds) 2015-12-29T22:17:30Z jasom: nyef: thanks 2015-12-29T22:18:11Z edgar-rft joined #lisp 2015-12-29T22:21:26Z pwnie quit (Quit: = "") 2015-12-29T22:22:48Z phoe_krk quit (Quit: http://phoe-krk.tumblr.com/) 2015-12-29T22:23:18Z White_Flame: Hmm, reading the link above, 2nd to last paragraph, it seems like even McCarthy bemoaned the use of the empty list as the false truth value 2015-12-29T22:24:22Z moore33: He was wrong 2015-12-29T22:25:05Z White_Flame: I wonder what his opinion on (eq 'nil '()) and (symbolp '()) being T was 2015-12-29T22:27:06Z Guest20174 quit (Ping timeout: 240 seconds) 2015-12-29T22:28:28Z AntiSpamMeta quit (Ping timeout: 272 seconds) 2015-12-29T22:29:04Z XachX quit (Ping timeout: 187 seconds) 2015-12-29T22:30:24Z eazar001 joined #lisp 2015-12-29T22:30:48Z Guest20174 joined #lisp 2015-12-29T22:31:21Z warweasle joined #lisp 2015-12-29T22:31:55Z cmack quit (Ping timeout: 240 seconds) 2015-12-29T22:32:48Z ThePhoeron joined #lisp 2015-12-29T22:34:04Z phoe_krk joined #lisp 2015-12-29T22:36:15Z futpib_ quit (Ping timeout: 240 seconds) 2015-12-29T22:36:23Z moore33 quit (Quit: Leaving) 2015-12-29T22:38:15Z eazar001 quit (Quit: WeeChat 1.3) 2015-12-29T22:39:56Z eazar001 joined #lisp 2015-12-29T22:40:38Z zygentoma quit (Ping timeout: 246 seconds) 2015-12-29T22:42:05Z zupoman quit (Remote host closed the connection) 2015-12-29T22:42:14Z eazar001 quit (Client Quit) 2015-12-29T22:43:51Z eazar001 joined #lisp 2015-12-29T22:44:29Z eazar001 quit (Client Quit) 2015-12-29T22:44:39Z AntiSpamMeta joined #lisp 2015-12-29T22:45:59Z eazar001 joined #lisp 2015-12-29T22:48:56Z eazar001 quit (Client Quit) 2015-12-29T22:50:59Z eazar001 joined #lisp 2015-12-29T22:53:07Z zygentoma joined #lisp 2015-12-29T22:53:45Z White_Flame: "One can even conjecture that LISP owes its survival specifically to the fact that its programs are lists, which everyone, including me, has regarded as a disadvantage." - John McCarthy 2015-12-29T22:53:56Z White_Flame: um... ? 2015-12-29T22:54:39Z LiamH quit (Quit: Leaving.) 2015-12-29T22:56:09Z fsmunoz: IIRC the use os lists and sexps was not a design goal, it was actually meant to "evolve" to M-expr latter, but that time never came since (some) programmers seemed to take good advantage of s-expr. 2015-12-29T22:56:18Z anti-freeze quit (Read error: Connection reset by peer) 2015-12-29T22:56:20Z ThePhoeron quit (Ping timeout: 260 seconds) 2015-12-29T22:56:50Z White_Flame: That was in the Conclusions section of the paper, looking back on the success of Lisp. Strange that he still considered code-as-lists to be a disadvantage 2015-12-29T22:57:19Z eazar001 quit (Quit: WeeChat 1.3) 2015-12-29T22:57:29Z White_Flame: or maybe I'm reading the tense wrong and "has regarded" means past only 2015-12-29T22:57:31Z blub: its not in the present tense 2015-12-29T22:57:35Z White_Flame: ok 2015-12-29T22:58:19Z anti-freeze joined #lisp 2015-12-29T22:58:21Z Jonsky joined #lisp 2015-12-29T22:58:49Z eazar001 joined #lisp 2015-12-29T23:00:55Z pwnie joined #lisp 2015-12-29T23:01:17Z malbertife quit (Quit: Leaving) 2015-12-29T23:12:42Z joneshf-laptop joined #lisp 2015-12-29T23:13:17Z k-stz quit (Remote host closed the connection) 2015-12-29T23:14:36Z arademaker joined #lisp 2015-12-29T23:17:00Z gabriel-artigue quit (Read error: Connection reset by peer) 2015-12-29T23:17:26Z gabriel-artigue joined #lisp 2015-12-29T23:17:59Z arademaker: LoL page 81: I really didn't get why dangerous-use-of-bq preserves the data between calls. 2015-12-29T23:24:03Z AntiSpamMeta quit (Remote host closed the connection) 2015-12-29T23:24:49Z AntiSpamMeta joined #lisp 2015-12-29T23:24:55Z Jonsky quit (Quit: rcirc on GNU Emacs 24.5.1) 2015-12-29T23:31:17Z Guest20174 quit (Ping timeout: 265 seconds) 2015-12-29T23:32:08Z oleo_: destructive-splicing + non-freshly generated lists..... 2015-12-29T23:32:49Z PuercoPop: arademaker: from what I can see, it is up to the implementation what to do as the author is modifying quoted literals. 2015-12-29T23:32:58Z oleo_: that one creates cyclic structures, destructive-splicing + freshyl-generated list == no problem <- no problem 2015-12-29T23:34:15Z oleo_: arademaker: it doesn't preserve the data between calls...... 2015-12-29T23:34:41Z oleo_: arademaker: it preserves it only for the first call.....successive calls create cyclic structures..... 2015-12-29T23:36:55Z phoe_krk quit (Quit: http://phoe-krk.tumblr.com/) 2015-12-29T23:37:01Z oleo_: arademaker: if the data also gets recreated at each call then there's no risk of creating cyclic structures upon successive calls and that is realized in safer-use-of-bq 2015-12-29T23:39:28Z arademaker: oleo_: yes, but why the second call creates a cyclic structure and not a fresh one? 2015-12-29T23:40:56Z Petit_Dejeuner quit (Ping timeout: 256 seconds) 2015-12-29T23:41:13Z bugrum joined #lisp 2015-12-29T23:41:26Z dkcl quit (Remote host closed the connection) 2015-12-29T23:41:49Z Guest20174 joined #lisp 2015-12-29T23:42:17Z oleo_: because '(a b c) is a literal (i.e. not a call creating a list), and destructively modifying lists and thereby introducing cycles is a thing you already should have learned..... 2015-12-29T23:43:06Z oleo_: '(a b c) stands for (a b c), (list 'a 'b 'c) stands for create a list (a b c) on each call..... 2015-12-29T23:44:12Z arademaker: oleo_: ok sorry if that is the wrong place to ask questions. But I don't know another forum for discuss LoL ideas. 2015-12-29T23:44:51Z oleo_: (list.....) is guaranteed to give you fresh lists so calling (list 'a 'b 'c) may seem like it does give you the same list (a b c) twice but the memory where those two live is totally different..... 2015-12-29T23:45:14Z oleo_: so actually those are not the same list memory wise..... 2015-12-29T23:45:15Z pillton: arademaker: You are welcome to ask questions here. This is the right place. 2015-12-29T23:45:51Z arademaker: oleo_: i understand the literal vs 'creating a list call'. Yes, sure the (list ...) examples create a fresh each time. 2015-12-29T23:46:01Z oleo_: if you call the above (list 'a 'b 'c) twice i meant.... 2015-12-29T23:46:14Z resttime joined #lisp 2015-12-29T23:46:26Z lisse_ joined #lisp 2015-12-29T23:46:40Z arademaker: sure, ok. But the other case '(a b c) creates a literal in a given memory location. why this place is preserved between calls. 2015-12-29T23:46:41Z arademaker: ? 2015-12-29T23:46:42Z PuercoPop: I just with the *other* LoL was more popular 2015-12-29T23:46:52Z oleo_: and there are other functions which create fresh structures each time you call'em ... 2015-12-29T23:47:16Z arademaker: PuercoPop: *other* LoL? 2015-12-29T23:47:26Z oleo_: cause it is a literal, data with a certain memory associated with it, everytime you do fiddle with it you fiddle with the same memory location..... 2015-12-29T23:47:27Z dwchandler: let over lambda? 2015-12-29T23:47:38Z sheilong quit (Quit: WeeChat 1.3) 2015-12-29T23:48:06Z oleo_: so destructively modifying the same memory location amounts to changing pointers...... 2015-12-29T23:48:20Z oleo_: for list structures i.e...... 2015-12-29T23:48:23Z PuercoPop: arademaker: Land of Lisp. It is a nice book and goes from the novice to generating SVGs from macros 2015-12-29T23:48:54Z PuercoPop: oleo_: I may be wrong, but doesn't this apply to this case? http://www.lispworks.com/documentation/HyperSpec/Body/03_ga.htm 2015-12-29T23:48:58Z arademaker: PuercoPop: I know. thanks for the reference. I have already read it. 2015-12-29T23:50:18Z ACE_Recliner joined #lisp 2015-12-29T23:50:28Z huza joined #lisp 2015-12-29T23:50:39Z jasom: arademaker: what may happen (the implementation has a lot of freedom here since you are doing something illegal) is that the tail of the literal '(b c d) is set to '(e) 2015-12-29T23:50:58Z arademaker: It is new to me that a literal created once is kept alive even between calls. The literal, in this case, was created in the lexical scope of the function. It call of that function should create is own env. 2015-12-29T23:51:17Z jasom: arademaker: literals are created whenever the compiler wants from read-time on 2015-12-29T23:51:40Z nyef: What about the OTHER other LoL, Lisp on Lines? 2015-12-29T23:51:40Z jasom: arademaker: which is well before the lexical scope even exists 2015-12-29T23:52:13Z arademaker: nyef: land of lisp he said. 2015-12-29T23:52:42Z PuercoPop: nyef: from that LoL I would like more stuff like mao 2015-12-29T23:53:00Z nyef: Mmm. A very different MAO than SBCL's M-A-O. 2015-12-29T23:53:10Z jasom: arademaker: this literal is created as soon as this is read in. The compiler is free to make copies of it or not. 2015-12-29T23:53:30Z White_Flame: '(a b c) does not "create a literal in a given memory location" at runtime. The reader has this one instance of a list, and the code refers to that instance 2015-12-29T23:53:36Z oleo_: it probably just keeps a pointer to its location..... 2015-12-29T23:53:40Z White_Flame: s/runtime/function call time/ 2015-12-29T23:53:47Z PuercoPop: arademaker: he is talking about this https://github.com/drewc/lisp-on-lines 2015-12-29T23:53:55Z oleo_: aha 2015-12-29T23:54:47Z dwchandler: Great. Land of Lisp. Let Over Lambda. Lisp On Lines. Great. lololol 2015-12-29T23:54:58Z arademaker: PuercoPop: yes, I know lisp on lines 2015-12-29T23:55:22Z jasom: arademaker: consider '(foo bar baz) and (foo bar baz) 2015-12-29T23:55:46Z arademaker: ok 2015-12-29T23:55:49Z jasom: arademaker: in both cases a list (foo bar baz) is created at read time; in one case when you evaluate it you get that list, in the other case you call the function 2015-12-29T23:56:13Z phoe_krk joined #lisp 2015-12-29T23:56:47Z jasom: all quoting does is effect evaluation of the form, not when the form is created 2015-12-29T23:57:22Z Xach quit (Ping timeout: 256 seconds) 2015-12-29T23:57:24Z arademaker: White_Flame: so if I write '(a b c) twice in the REPL, the reader would have two different instances of that list, right? 2015-12-29T23:57:31Z White_Flame: yes 2015-12-29T23:58:07Z White_Flame: and if you have '(a b c) twice in a source code file, there would be two different instances of that list shape 2015-12-29T23:58:20Z White_Flame: if you only have it once, then that is a single literal list instance 2015-12-29T23:58:38Z cadadar quit (Quit: Leaving.) 2015-12-29T23:58:47Z White_Flame: exactly the same as the problem with mutating string literals in C, if that's your background 2015-12-29T23:58:50Z jasom: (eql '(a b c) '(a b c)) ; => nil 2015-12-29T23:59:01Z Beetny joined #lisp 2015-12-29T23:59:11Z Bicyclidine: but the compiler can make the two instances into one if it feels like it. so don't alter literals 2015-12-29T23:59:38Z arademaker: White_Flame: perfect. I think I got it, in the dangerous-use-of-bq function the reader was called just once and that is why for this literal only one instance exists. right?