00:00:32 segv- [~mb@95-91-242-54-dynip.superkabel.de] has joined #lisp 00:00:41 -!- ASau [~user@p54AFE4F4.dip0.t-ipconnect.de] has quit [Ping timeout: 245 seconds] 00:01:54 It did prompt me to better support gzipped downloads, so there's a bright side 00:02:05 -!- oanufriev [~user@109.87.32.226] has quit [Remote host closed the connection] 00:02:29 zajn [~zajn@108.205.50.54] has joined #lisp 00:03:23 -!- fmeyer [~fmeyer@187.37.84.191] has quit [Ping timeout: 260 seconds] 00:03:41 -!- zajn [~zajn@108.205.50.54] has quit [Client Quit] 00:04:16 zajn [~zajn@108.205.50.54] has joined #lisp 00:04:45 -!- zajn [~zajn@108.205.50.54] has quit [Client Quit] 00:05:19 zajn [~zajn@108.205.50.54] has joined #lisp 00:09:10 -!- joneshf-laptop [~joneshf@128.120.117.249] has quit [Ping timeout: 260 seconds] 00:10:03 -!- zajn [~zajn@108.205.50.54] has quit [Ping timeout: 265 seconds] 00:11:35 -!- senj [~senj@unaffiliated/senj] has quit [Quit: Sleep Now] 00:11:50 DataLinkDroid [~DataLinkD@1.149.21.20] has joined #lisp 00:13:25 I didn't suspect slashed systems would be that bad. They were already possible with asdf2, just not a widely used (or completely portable) construct. 00:13:48 what was the path from there to gzipped downloads? 00:14:19 innertracks [~Thunderbi@c-24-17-64-212.hsd1.wa.comcast.net] has joined #lisp 00:15:24 asdf.lisp being half a megabyte prompted that 00:17:18 -!- urandom__ [~user@ip-84-119-32-80.unity-media.net] has quit [Quit: Konversation terminated!] 00:19:17 Bloat — yes, ASDF has grown a lot. But it does a lot more, too, and has a lot more comments and docstrings. I don't think there's much I could remove from ASDF without breaking some of the essential functionality. 00:19:46 it's just that "essential" has grown to include dumping an executable. 00:20:21 which was just a step away from asdf-bundle, needed for ECL anyway. 00:20:38 I think that should be done in a library instead. 00:20:39 but pulled in a whole lot of runtime support 00:21:37 -!- sheilong [~sabayonus@unaffiliated/sheilong] has quit [Quit: Konversation terminated!] 00:21:46 Sgeo [~quassel@ool-44c2df0c.dyn.optonline.net] has joined #lisp 00:22:02 maybe. But if you're going to use that library anyway, it might as well be included by asdf. 00:22:50 One big incentive to make it part of asdf was so as to offer standard hooks for image dump and restore events — if it's an optional library, people will start each using their own, and the point is lost. 00:23:10 That could be said of any library. 00:23:24 -!- Vivitron`` [~Vivitron`@c-50-172-44-193.hsd1.il.comcast.net] has quit [Ping timeout: 245 seconds] 00:23:39 The benefit is to a few users but the cost is to all users. 00:23:51 -!- jdoles [~jdoles@unaffiliated/jdoles] has quit [Ping timeout: 272 seconds] 00:23:57 not as much: because in this case, the order of evaluation at startup matters, if you have multiple libraries that use such service. You can't mix and match basic runtime functionality like that. 00:24:41 but yes, making things portable justified beefing up all the pathname and filesystem library 00:25:02 doing run-shell-command right justified importing and beefing up run-program 00:25:07 etc. 00:25:18 jdoles [~jdoles@unaffiliated/jdoles] has joined #lisp 00:25:45 making all these regression tests pass on all implementation was hell. 00:25:49 I'm sure a rationalization can be found for every personally needed feature that becomes part of a widely-used general application. I would have drawn the line differently. 00:26:00 -!- segv- [~mb@95-91-242-54-dynip.superkabel.de] has quit [Ping timeout: 265 seconds] 00:26:08 every hacker draws the line differently, that's personality. 00:26:23 -!- Code_Man` [~Code_Man@2a02:1205:5000:5390:223:54ff:fe38:82c2] has quit [Remote host closed the connection] 00:26:30 I look forward to a set of personal needs more in line with my tastes driving things forward. 00:26:50 Ethan- [~Ethan-@60-248-176-37.HINET-IP.hinet.net] has joined #lisp 00:27:00 the only was to do it is to write the code, unhappily — and you've been doing it brilliantly with quicklisp, so far (congrats again) 00:27:08 only way 00:27:23 I hope that at least uiop proves useful to you. 00:29:17 -!- clintm [~clintm@174-24-221-146.tukw.qwest.net] has quit [Read error: Connection reset by peer] 00:30:12 I suppose that part of my design for uiop was driven by a "do it right" philosophy wrt to the library, as opposed to danb's "minimal thing that works in the general case but has plenty of blunt edges". 00:30:18 segv- [~mb@95-91-242-54-dynip.superkabel.de] has joined #lisp 00:31:34 same with the internal refactoring of asdf/defsystem itself, not just uiop. 00:34:33 s/general/common/ 00:34:44 -!- zz_karupanerura is now known as karupanerura 00:34:48 -!- KaiQ [~localhost@p578FC0B5.dip0.t-ipconnect.de] has quit [Quit: Leaving] 00:34:52 jaccas [~pjfcl@3.182.108.93.rev.vodafone.pt] has joined #lisp 00:37:09 -!- wall [~wall@ip92-101-209-85.onego.ru] has quit [Ping timeout: 245 seconds] 00:37:55 wall [~wall@ip92-101-209-85.onego.ru] has joined #lisp 00:39:23 (lisp-stripper:count-lisp-locs (directory "~/cl/asdf/build/asdf*.lisp")) => from 790 lines of actual code in 1.85 to 1436 in 1.369, 2511 in 2.000, 3296 in 2.26, 6751 in 2.27, 7959 in 3.0.3, 8064 in 3.1.x. 00:40:36 in the "Mythical Man Month", Fred Brooks argues that if it takes time X to write the code, it will take 3X to debug it, and 10X to debug and document it — he might have added that the code will grow accordingly. 00:40:59 I believe I'm par for the course. 00:46:55 endou [~paul@188.165.96.106] has joined #lisp 00:47:47 -!- karupanerura is now known as zz_karupanerura 00:48:43 Vivitron [~Vivitron@c-50-172-44-193.hsd1.il.comcast.net] has joined #lisp 00:50:49 cluedin [~clue@71-219-174-234.dvnp.qwest.net] has joined #lisp 00:50:54 -!- cluedin [~clue@71-219-174-234.dvnp.qwest.net] has left #lisp 00:51:26 -!- chenjf [~chenjf@59.34.191.160] has left #lisp 00:51:44 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 245 seconds] 00:53:06 -!- tensorpudding [~tensorpud@99.102.66.78] has quit [Ping timeout: 245 seconds] 00:54:11 -!- stepnem [~stepnem@77.78.117.8] has quit [Ping timeout: 250 seconds] 00:54:32 -!- innertracks [~Thunderbi@c-24-17-64-212.hsd1.wa.comcast.net] has quit [Quit: innertracks] 00:54:43 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Read error: Connection reset by peer] 00:55:21 araujo [~araujo@gentoo/developer/araujo] has joined #lisp 00:55:28 He also talks about the second system effect 00:55:29 -!- lduros [~user@fsf/member/lduros] has quit [Ping timeout: 245 seconds] 00:56:18 -!- quazimodo [~quazimodo@d110-33-232-150.bla801.nsw.optusnet.com.au] has quit [Ping timeout: 260 seconds] 00:57:19 yes. asdf3 probably has a bit of that. 01:00:27 tensorpudding [~tensorpud@99.102.66.78] has joined #lisp 01:00:42 although, for me that would really be XCVB, not ASDF3. 01:01:20 -!- Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/] 01:01:49 ASDF3 is more like the adult form of ASDF1. 01:02:03 jbarker [~jbarker@18.189.79.180] has joined #lisp 01:02:54 XCVB is the not-completely-settled experimental design for a better system that does everything ASDF does and more and better. 01:03:39 though isn't there stuff in asdf3 that hasn't made it to xcvb yet? 01:05:09 -!- tensorpudding [~tensorpud@99.102.66.78] has quit [Ping timeout: 265 seconds] 01:05:20 Harag [~Thunderbi@105.184.33.8] has joined #lisp 01:05:53 oh yes, plenty. I stopped working on XCVB several months before ASDF3 happened, and it was already missing some features from late ASDF 2.2x such as around-compile wrappers with compile-check's. 01:06:44 -!- harish [~harish@175.156.197.152] has quit [Ping timeout: 245 seconds] 01:07:00 On the other hand, XCVB does deterministic parallel cross-compilation, with fine-grained compile-time vs compile-load-time vs load-time vs runtime dependencies 01:08:20 The ASDF TODO file has ideas on how to bring that to ASDF modulo a transition period, with some backward compatibility mode. 01:09:03 Fare: cross-compilation? So it can invoke a different lisp executable? 01:09:11 yes 01:09:32 -!- ggherdov_ [sid11402@gateway/web/irccloud.com/x-xwwfothbgxldfgvg] has quit [Changing host] 01:09:32 ggherdov_ [sid11402@unaffiliated/ggherdov] has joined #lisp 01:09:32 -!- ggherdov_ [sid11402@unaffiliated/ggherdov] has quit [Changing host] 01:09:32 ggherdov_ [sid11402@gateway/web/irccloud.com/x-xwwfothbgxldfgvg] has joined #lisp 01:09:42 -!- ggherdov_ is now known as ggherdov 01:10:18 rpg [~rpg@198-74-7-110.fttp.usinternet.com] has joined #lisp 01:11:46 ASDF can't do that right now, but there's no reason why that couldn't be added — except for the fact that it requires a staged protocol somewhat incompatible with how ASDF extensions are written. So to fully take advantage of it without breaking anything, extensions would have to be modified. On the other hand, there are few extensions, and perform methods typically don't do much to the object graph, so in the cross compiler, you could load ASDF, 01:11:46 and define fake operation and component objects with canned output-files and input-files results, without the rest of the graph present. 01:12:34 -!- Denommus [~user@unaffiliated/denommus] has quit [Quit: going home] 01:13:02 thus you can reuse the existing perform method without O(total system size) setup in each cross-compiler only O(dependency depth). 01:14:04 alternatively, google is going to open source its build system later this year, and it will have support for common lisp. Hopefully. 01:14:09 CatMtKing [~CatMtKing@108-224-122-111.lightspeed.irvnca.sbcglobal.net] has joined #lisp 01:14:19 -!- Vivitron [~Vivitron@c-50-172-44-193.hsd1.il.comcast.net] has quit [Ping timeout: 260 seconds] 01:14:23 Fare: ... seriously? 01:14:29 tensorpudding [~tensorpud@99.102.66.78] has joined #lisp 01:14:46 -!- segv- [~mb@95-91-242-54-dynip.superkabel.de] has quit [Ping timeout: 252 seconds] 01:21:29 -!- zz_karupanerura is now known as karupanerura 01:26:37 zRecursive [~czsq888@183.13.194.91] has joined #lisp 01:28:15 guardianx [guardian@202-173-162-14.dyn.iinet.net.au] has joined #lisp 01:31:47 -!- hitecnologys [~hitecnolo@178.74.89.133] has quit [Quit: hitecnologys] 01:35:17 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Remote host closed the connection] 01:36:17 innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has joined #lisp 01:36:22 harish [~harish@27.104.201.128] has joined #lisp 01:36:34 arubin [~textual@99-114-192-172.lightspeed.cicril.sbcglobal.net] has joined #lisp 01:38:07 -!- wall [~wall@ip92-101-209-85.onego.ru] has quit [Ping timeout: 260 seconds] 01:38:59 -!- guardianx [guardian@202-173-162-14.dyn.iinet.net.au] has quit [Ping timeout: 252 seconds] 01:39:24 guardianx [guardian@dsl-58-7-44-19.wa.westnet.com.au] has joined #lisp 01:42:37 sandbender1512 [~none@CPEc8fb26470b29-CMc8fb26470b26.cpe.net.cable.rogers.com] has joined #lisp 01:43:35 is there a pre-cooked function that'll give me a lambda which returns an infinite sequence of ints between 0 and (x - 1), which resets to zero after hitting the max? 01:44:32 ie: this: (defun cycle (count) (let ((i 0)) (lambda () (setq i (+ i 1)) (if (= i count) (setq i 0)) i))) 01:45:17 no. 01:45:32 Why ask this question? I don't get it. 01:45:41 pillton: you never know. 01:46:10 I'm a bit of a noob so don't know the 'standard lib' for CL very well... would rather not write my own boilerplate if what I need exists 01:46:14 less error prone if nothing else ;) 01:46:26 There's a pre-cooked function to return -1 if its argument is negative, 1 if its argument is positive, and 0 if it is zero. If you didn't already know about it you might think you have to write it yourself. 01:46:51 -!- percopal [~percopal@63.65.76.38] has quit [Quit: percopal] 01:47:34 araujo [~araujo@gentoo/developer/araujo] has joined #lisp 01:47:42 endou [~paul@188.165.96.106] has joined #lisp 01:47:53 should I not be asking simple stuff like that in here? I can keep it to #clnoobs if that's not kosher but that channel seems pretty inactive 01:48:43 sandbender1512: I don't think it is a bad question, but it will also be good to get familiar with the standard functions. at some point you get a feel for what is *likely* to be part of the standard. 01:49:49 -!- Praise [~Fat@unaffiliated/praise] has quit [Read error: Operation timed out] 01:50:22 yeah I'm working on it, the HyperSpec is a permanent resident in my browser at the moment 01:51:30 just not always easy to get a feel, I figured that seemed like something which might be there :) 01:51:33 -!- harish [~harish@27.104.201.128] has quit [Ping timeout: 265 seconds] 01:51:37 And once you're done familiarizing with clhs, get accointed with libraries such as alexandria and cesarum. 01:51:46 -!- scottj [~scott@206.212.250.58] has left #lisp 01:52:02 *looks up those libs* 01:52:30 (ql:quickload '(:alexandria :com.informatimago.common-lisp.cesarum)) 01:53:00 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 265 seconds] 01:53:11 many use alexandria and few use cesarum, but pjb wrote cesarum so I assume that is why he mentions it. 01:53:33 Also alexandria was burnt down, and cesarum built over its cenders. 01:53:37 pjb, Xach: thx 01:53:54 lol 01:54:27 nice lib etymology, I like that ;) 01:56:35 what's the uagae of cesarum ? 01:57:00 It collects my various library functions and utilities. 01:57:47 if by usage you mean documentation: http://www.informatimago.com/develop/lisp/doc/hierarchical-package-index.html 01:57:54 Xach: I don't think it is a bad question either, but he answered it. 02:10:15 -!- karswell [~user@58.168.90.146.dyn.plus.net] has quit [Ping timeout: 272 seconds] 02:11:34 -!- jaccas [~pjfcl@3.182.108.93.rev.vodafone.pt] has quit [Quit: Saindo] 02:13:31 -!- slyrus [~chatzilla@173-228-44-92.dsl.static.sonic.net] has quit [Ping timeout: 245 seconds] 02:18:22 harish [harish@nat/redhat/x-cchutenodsuqjabm] has joined #lisp 02:20:07 -!- guardianx [guardian@dsl-58-7-44-19.wa.westnet.com.au] has quit [Remote host closed the connection] 02:23:27 pjb`: you write so many libraries, with extensive docs 02:23:45 do you write many CL applications? 02:24:08 I mean are the libs required by your job, or it's a hobby? 02:32:34 -!- vkrest_ [~vkrest@mpk-nat-7.thefacebook.com] has quit [Remote host closed the connection] 02:33:11 vkrest [~vkrest@2620:0:1cfe:18:ed11:f846:2fe0:e50] has joined #lisp 02:34:47 p_l: seriously what? 02:34:48 -!- antonv [5daba1b0@gateway/web/freenode/ip.93.171.161.176] has quit [Ping timeout: 245 seconds] 02:37:53 -!- klltkr [~klltkr@unaffiliated/klltkr] has quit [Quit: My MacBook has gone to sleep. ZZZzzz] 02:38:07 -!- vkrest [~vkrest@2620:0:1cfe:18:ed11:f846:2fe0:e50] has quit [Ping timeout: 265 seconds] 02:38:56 pjb`, nice stuff you have in cesarum 02:39:30 -!- sandbender1512 [~none@CPEc8fb26470b29-CMc8fb26470b26.cpe.net.cable.rogers.com] has quit [Ping timeout: 252 seconds] 02:39:58 isn't an llrbtree the same as a 2-3 B-tree? 02:44:36 -!- drmeister [~drmeister@pool-71-175-2-214.phlapa.fios.verizon.net] has quit [Remote host closed the connection] 02:44:56 *Fare* reads some sbcl-devel message, finds that his fare-quasiquote's pretty-printer is also slightly broken for quasiquoted vectors, and fixes it. 02:45:47 I can't fix `(#3(a ,@b)) nicely without a big refactoring, so it will show as `(,`#3(a ,@b)) 02:46:14 -!- billstclair [wws@clozure-FA2B40FB.dsl1.rtr.chat.fpma.frpt.net] has quit [Connection reset by peer] 02:46:35 Quiz: what should `#3(1 ,@'(2 3)) return? 02:46:38 -!- prxq [~mommer@x2f68e04.dyn.telefonica.de] has quit [Ping timeout: 246 seconds] 02:46:38 -!- billstclair [~billstcla@unaffiliated/billstclair] has quit [Read error: Connection reset by peer] 02:47:17 and what is the length of that vector the length of which was syntactically specified to be 3 ? 02:48:26 endou [~paul@188.165.96.106] has joined #lisp 02:49:16 drmeister [~drmeister@pool-71-175-2-214.phlapa.fios.verizon.net] has joined #lisp 02:49:43 drmeister, what is `#3(1 ,@'(2 3)) to your implementation? 02:50:27 (interesting that cmucl and sbcl disagree) 02:52:45 -!- endou [~paul@188.165.96.106] has quit [Read error: Operation timed out] 02:52:53 #( 1 ,@'(2 3) ,@'(2 3) ) 02:53:30 What should it do? 02:55:59 It should be #(1 2 3) right - that's not what mine does. 02:57:21 -!- yrdz [~p_adams@unaffiliated/p-adams/x-7117614] has quit [Quit: WeeChat 0.4.2] 02:57:33 DarthShader [~DarthShad@192-0-232-239.cpe.teksavvy.com] has joined #lisp 02:57:57 From the example in CLHS you would think so. 02:58:23 but what does "spliced" into place mean? 02:59:31 prxq [~mommer@x2f69235.dyn.telefonica.de] has joined #lisp 02:59:37 Hey guys. I decided to learn lisp. Should I go with scheme or common lisp if all I want is get the "full experience" of a different programming paradigm? 03:00:23 common lisp is the greatest and best lisp in the world. 03:02:06 drmeister, let's say that implementations disagree on the right result, and the CLHS seems underspecified. 03:02:27 Are there any big diffences between cmucl and sbcl ? 03:02:31 DarthShader, this is a common lisp channel, but scheme is nice too — it's just a different language 03:02:50 zRecursive: sbcl can be rebuilt from scratch from source 03:02:52 zRecursive, sbcl is actively maintained by more than one person. That's a big one. 03:02:56 -!- nugnuts [~nugnuts@pool-74-105-21-221.nwrknj.fios.verizon.net] has quit [Quit: Leaving] 03:03:08 oh okay, thanks 03:03:11 Fare: We've chatted about this before - I never updated my backquote processor 03:03:13 sbcl supports amd64, cmucl doesn't 03:03:39 Xach: so i should use sbcl instead of cmucl, thx 03:03:51 I just updated mine a bit, but it doesn't pretty-print the `#3(...) case as nicely as I'd like. 03:03:58 do both variants support all the fun stuff I won't see in most other languages? 03:04:00 zRecursive: I think that is preferable most of the time. 03:04:37 DarthShader: both have relatively uncommon and interesting features worth learning in their own right and on their own terms. 03:04:43 DarthShader, what kind of things are you interested in writing, and what kind of people do you enjoy socializing with? 03:05:43 DarthShader, Common Lisp is a good Lisp. As are Racket, Clojure, Gambit Scheme, Chicken Scheme. Different languages and communities, though. 03:06:04 I'm doing it for CS theory. I heard that "lisp" supports AST modification, which I'm pretty curious about 03:06:17 more like generation than modification. 03:06:28 and all those lisp variants do it. 03:06:33 oh okay, cool 03:06:57 I suppose Racket is fanciest for this kind of things -- see #racket -- and Common Lisp simplest and most barebones. 03:07:22 if you want simplicity in your AST, stay here. If you want fancy, go to #racket. 03:07:39 and both variants should have higher-order functions, foldl's / foldr's, etc? 03:08:00 okay, makes sense 03:08:05 yes, but if you love higher-order functions, you'll probably prefer the scheme community. 03:08:32 communities, I mean — racket included. 03:08:44 I see. I like them in haskell fwiw 03:09:15 You can do them in CL, too, but they are less colloquial, maybe because you need an explicit funcall 03:09:27 alright then, racket it is. Thanks for the help! 03:09:30 -!- rpg [~rpg@198-74-7-110.fttp.usinternet.com] has quit [Quit: rpg] 03:09:34 scheme and clojure are more geared toward functional programming. 03:09:57 and also because historically, CL didn't guarantee proper tail calls (though in practice, you have them in most implementations) 03:10:00 and racket is a variant of scheme, right? 03:10:06 yes. 03:10:19 DarthShader: CL is much practical than Scheme 03:10:27 drmeister, proper tail calls — what do you say? 03:10:40 don't care about practicality atm, this is just a learning excercise 03:10:52 zRecursive, than Scheme, yes. But than a specific Scheme implementation? Maybe, maybe not. 03:10:54 I'm knocking "need-to-know" languages off my list 03:11:06 forth and haskell are checked off, lisp is what I'm on now 03:11:31 in Scheme even more so than CL, pick a one implementation and stick to it, or else it's madness. 03:11:32 Fare: For me it's largely an LLVM optimization issue. 03:11:33 Fare: but i heard of few scheme applications? For CL, there are maxima, stumpwm,etc. 03:11:38 in CL, it's not madness, just a huge PITA. 03:12:01 drmeister, does LLVM support PTC correctly, these days? efficiently? 03:12:25 zRecursive, there are plenty of Scheme applications, for sure, though I'm not the one to ask. 03:12:42 Fare: Dunno - I haven't looked at it closely. I'm tied up with garbage collection. 03:12:53 what about GC? 03:13:04 clojure comes with persistant (immutable) data structures, and the promoted style is to avoid mutating whenver possible. so I'd say it is the most functional of the general purpose lisps. though some may disagree, it does not have TCO for example because of JVM limitations 03:13:06 Fare: really ? i always regard Scheme as teaching language 03:13:09 how are you dealing with GC, interruptions, and LLVM temporary variables? 03:13:14 Fare: I'm implementing GC. 03:13:29 the standard answer is usually some kind of safe points without such variables. 03:13:35 -!- cpc26 [~cpc26@fsf/member/cpc26] has quit [Ping timeout: 272 seconds] 03:14:10 frx: my CL lisp-interface-library also has immutable data structures, though fewer of them at the moment. 03:14:42 frx: and racket also has plenty of them in its libraries. Dunno about other schemes — Racket made cons immutable by default. 03:15:02 CL has CLOS, which is way ahead of what you'll get with Scheme. 03:15:11 -!- Xach [~xach@pdpc/supporter/professional/xach] has left #lisp 03:16:48 Fare: Guile has goops too 03:16:54 Regarding PTC and JVM, I'm reminded of that Jan 10 tweet by @bigthingist: Full java interop is a terrible restriction to place on a language. My heart bleeds for Clojure & Scala: slept with dogs & woke with fleas. 03:17:45 -!- sirdancealot [~sirdancea@194.228.11.172] has quit [Quit: Ragequit] 03:17:56 zRecursive, yes, and Racket has swindle, and tinyclos is portable, etc. — they all tend to be slower, less fancy and/or buggier, though. 03:18:19 and not integrated with the rest of the language and libraries. 03:18:34 -!- theos [~theos@unaffiliated/theos] has quit [Disconnected by services] 03:18:38 yeah 03:18:50 defining methods on print-object ==> WIN! 03:19:04 theos [~theos@unaffiliated/theos] has joined #lisp 03:19:26 -!- oxum [~oxum@122.164.15.186] has quit [Quit: ...] 03:21:29 There is a legend of scheme, chezscheme. but it is too expensive ! 03:21:42 Fare: I always define methods on PRINT-OBJECT. I don't feel like winning when I do though :-) 03:21:56 drmeister: Last time I looked, LLVM supported specifying tail calls, but it was not some optimization that it did by itself. (IOW, it's doesn't help with the gap between languages that require TCE as a feature from languages that "might" do that as an optimization, when convenient.) 03:22:39 Fare: Swindle is a bit more sophisticated than CLOS, but it's definitely slower. (And of course, less integrated with other stuffs.) 03:23:34 eli: I haven't looked at it too closely. It's something I'll deal with in the future. 03:23:59 motionman [~motionman@unaffiliated/motionman] has joined #lisp 03:24:05 In that case you'll need to face that exact gap... 03:24:25 scheme is overall slower than CL, except chezscheme. 03:24:55 Don't conflate language and implementation. 03:25:58 Fare: nice open source news. blaze was the only build system I've used that I didn't end up despising 03:26:12 zRecursive: comparing speeds is mostly nonsensical (but last time I compared allegro and racket, for some bogus value of "compared", things didn't look good for the alisp side.) 03:27:05 nugnuts [~nugnuts@pool-74-105-21-221.nwrknj.fios.verizon.net] has joined #lisp 03:29:14 -!- motionman [~motionman@unaffiliated/motionman] has left #lisp 03:32:40 vkrest [~vkrest@76-244-38-58.lightspeed.sntcca.sbcglobal.net] has joined #lisp 03:33:07 -!- vkrest [~vkrest@76-244-38-58.lightspeed.sntcca.sbcglobal.net] has quit [Remote host closed the connection] 03:33:45 vkrest [~vkrest@173.252.71.189] has joined #lisp 03:34:59 -!- JuanDaugherty [~Ren@cpe-198-255-198-157.buffalo.res.rr.com] has quit [Ping timeout: 265 seconds] 03:36:10 -!- Harag [~Thunderbi@105.184.33.8] has quit [Ping timeout: 252 seconds] 03:39:41 jsnell: so you despise ASDF? 03:40:02 jsnell: a lot of work to do before blaze is opensourceable. 03:40:09 but later this year, we hope 03:41:02 I used to despise ASDF. Then I reimplemented it a few times. :-/ 03:44:36 -!- jaimef [jaimef@166.84.6.60] has quit [Excess Flood] 03:44:37 it's a single-language solution, doing any customization always seemed very painful to me, as was doing anything more complicated than :serial t 03:45:03 so yeah, definitely didn't love asdf, and don't love it now 03:45:26 -!- CatMtKing [~CatMtKing@108-224-122-111.lightspeed.irvnca.sbcglobal.net] has quit [Quit: This computer has gone to sleep] 03:45:59 optikalmouse [~omouse@69-165-245-60.cable.teksavvy.com] has joined #lisp 03:46:04 of course the dependency problem isn't just up to the build system, and being very focused on a single language has its benefits 03:47:53 -!- Fare [fare@nat/google/x-elenyjacrrusfapv] has quit [Ping timeout: 272 seconds] 03:52:34 jaimef [jaimef@dns.mauthesis.com] has joined #lisp 03:52:40 -!- innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has quit [Ping timeout: 252 seconds] 03:53:13 -!- nand1 [~user@c-71-202-128-245.hsd1.ca.comcast.net] has quit [Remote host closed the connection] 03:54:04 In the end, it all boils down to something like make, plus machine readable declarations sufficient for automatic analysis work. 03:54:46 -!- zRecursive [~czsq888@183.13.194.91] has left #lisp 03:55:41 (Which is where make failed) 03:58:44 Atrumx [~Atrumx@unaffiliated/fivedeltasix] has joined #lisp 04:00:31 CatMtKing [~CatMtKing@108-224-122-111.lightspeed.irvnca.sbcglobal.net] has joined #lisp 04:01:36 kushal [~kdas@fedora/kushal] has joined #lisp 04:02:00 yacks [~py@103.6.159.103] has joined #lisp 04:02:59 -!- CatMtKing [~CatMtKing@108-224-122-111.lightspeed.irvnca.sbcglobal.net] has quit [Client Quit] 04:05:04 fmeyer [~fmeyer@187.37.84.191] has joined #lisp 04:05:19 oxum [~oxum@122.164.168.5] has joined #lisp 04:10:01 vkrest_ [~vkrest@76-244-38-58.lightspeed.sntcca.sbcglobal.net] has joined #lisp 04:10:04 -!- vkrest_ [~vkrest@76-244-38-58.lightspeed.sntcca.sbcglobal.net] has quit [Remote host closed the connection] 04:10:45 -!- cory786 [~cory@162.sub-70-194-194.myvzw.com] has quit [Ping timeout: 265 seconds] 04:10:50 vkrest_ [~vkrest@173.252.71.189] has joined #lisp 04:11:14 -!- vkrest [~vkrest@173.252.71.189] has quit [Ping timeout: 265 seconds] 04:15:48 -!- fmeyer [~fmeyer@187.37.84.191] has quit [Read error: Connection reset by peer] 04:16:04 -!- jpfuentes2 [~jacques@pool-173-53-102-185.rcmdva.fios.verizon.net] has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz] 04:19:44 -!- nugnuts [~nugnuts@pool-74-105-21-221.nwrknj.fios.verizon.net] has quit [Quit: Leaving] 04:20:38 ggole [~ggole@106-69-84-122.dyn.iinet.net.au] has joined #lisp 04:24:00 -!- rszeno [~rszeno@79.114.98.253] has quit [Quit: Leaving.] 04:31:29 -!- Atrumx [~Atrumx@unaffiliated/fivedeltasix] has quit [Ping timeout: 240 seconds] 04:37:57 -!- oleo [~oleo@xdsl-87-79-194-227.netcologne.de] has quit [Read error: Operation timed out] 04:38:42 oleo [~oleo@xdsl-78-35-187-180.netcologne.de] has joined #lisp 04:40:29 Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has joined #lisp 04:46:16 Harag [~Thunderbi@105-236-187-173.access.mtnbusiness.co.za] has joined #lisp 04:47:12 -!- arubin [~textual@99-114-192-172.lightspeed.cicril.sbcglobal.net] has quit [Quit: Textual IRC Client: www.textualapp.com] 04:49:58 endou [~paul@188.165.96.106] has joined #lisp 04:52:01 WarWeasle [~Kaltara@172.242.21.170] has joined #lisp 04:54:39 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 245 seconds] 04:55:06 slyrus [~chatzilla@107.201.5.56] has joined #lisp 05:05:29 -!- drmeister [~drmeister@pool-71-175-2-214.phlapa.fios.verizon.net] has quit [Remote host closed the connection] 05:08:57 kdr2` [~user@222.91.184.33] has joined #lisp 05:09:57 -!- kdr2` [~user@222.91.184.33] has left #lisp 05:12:01 -!- Jordan_ [~jordan@207-181-215-42.c3-0.hnc-ubr1.chi-hnc.il.cable.rcn.com] has quit [Read error: Connection reset by peer] 05:17:56 drmeister [~drmeister@pool-71-175-2-214.phlapa.fios.verizon.net] has joined #lisp 05:19:08 -!- kpreid [~kpreid@50-196-148-101-static.hfc.comcastbusiness.net] has quit [Quit: Quitting] 05:19:29 kpreid [~kpreid@50-196-148-101-static.hfc.comcastbusiness.net] has joined #lisp 05:22:52 -!- yacks [~py@103.6.159.103] has quit [Quit: Leaving] 05:24:00 -!- Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has quit [Read error: Operation timed out] 05:24:08 Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has joined #lisp 05:28:04 foreignFunction [~niksaak@ip-4761.sunline.net.ua] has joined #lisp 05:28:06 -!- slyrus [~chatzilla@107.201.5.56] has quit [Ping timeout: 245 seconds] 05:30:50 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #lisp 05:31:29 -!- sellout- [~Adium@174-16-117-96.hlrn.qwest.net] has quit [Quit: Leaving.] 05:33:37 -!- DataLinkDroid [~DataLinkD@1.149.21.20] has quit [Quit: Disconnecting -- bye] 05:37:10 sellout- [~Adium@174-16-117-96.hlrn.qwest.net] has joined #lisp 05:37:50 yacks [~py@103.6.159.103] has joined #lisp 05:39:31 slyrus [~chatzilla@107.201.5.56] has joined #lisp 05:41:42 -!- MrWoohoo [~MrWoohoo@pool-74-100-140-127.lsanca.fios.verizon.net] has quit [Quit: ["Textual IRC Client: www.textualapp.com"]] 05:41:43 -!- kliph [~user@unaffiliated/kliph] has quit [Ping timeout: 260 seconds] 05:48:28 gravicappa [~gravicapp@ppp91-77-160-15.pppoe.mtu-net.ru] has joined #lisp 05:48:52 CatMtKing [~CatMtKing@108-224-122-111.lightspeed.irvnca.sbcglobal.net] has joined #lisp 05:50:41 endou [~paul@188.165.96.106] has joined #lisp 05:55:26 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 260 seconds] 06:01:31 -!- zacharias [~aw@unaffiliated/zacharias] has quit [Ping timeout: 272 seconds] 06:02:36 sdemarre [~serge@91.180.79.21] has joined #lisp 06:03:36 innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has joined #lisp 06:04:11 joneshf-laptop [~joneshf@c-98-208-36-36.hsd1.ca.comcast.net] has joined #lisp 06:05:42 -!- innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has quit [Remote host closed the connection] 06:05:57 zacharias [~aw@unaffiliated/zacharias] has joined #lisp 06:09:59 -!- jbarker [~jbarker@18.189.79.180] has quit [Remote host closed the connection] 06:10:26 jbarker [~jbarker@18.189.79.180] has joined #lisp 06:12:52 angavrilov [~angavrilo@217.71.227.190] has joined #lisp 06:13:47 -!- oxum [~oxum@122.164.168.5] has quit [Quit: Bye..] 06:14:02 oxum [~oxum@122.164.168.5] has joined #lisp 06:14:49 jack_rabbit [~jack_rabb@c-50-148-124-212.hsd1.il.comcast.net] has joined #lisp 06:14:56 -!- CatMtKing [~CatMtKing@108-224-122-111.lightspeed.irvnca.sbcglobal.net] has quit [Quit: Leaving] 06:14:58 -!- jbarker [~jbarker@18.189.79.180] has quit [Ping timeout: 265 seconds] 06:19:37 Is there a macro to lexically do a USE-PACKAGE? 06:19:46 wall [~wall@ip92-101-209-85.onego.ru] has joined #lisp 06:20:02 -!- Harag [~Thunderbi@105-236-187-173.access.mtnbusiness.co.za] has quit [Remote host closed the connection] 06:20:20 nug700 [~nug700@184-98-219-15.phnx.qwest.net] has joined #lisp 06:20:37 That is problematic due to how it interacts with the reader. 06:20:46 You would want a reader macro, I guess. 06:24:14 -!- wall [~wall@ip92-101-209-85.onego.ru] has quit [Ping timeout: 245 seconds] 06:25:30 ramkrsna [~ramkrsna@122.169.13.250] has joined #lisp 06:25:30 -!- ramkrsna [~ramkrsna@122.169.13.250] has quit [Changing host] 06:25:30 ramkrsna [~ramkrsna@unaffiliated/ramkrsna] has joined #lisp 06:30:11 yeah, everything else would be too late. 06:31:06 remembering the external symbols, doing USE-PACKAGE, checking for new symbols, BODY, unintern the new symbols again... something like that 06:33:17 Harag [~Thunderbi@105-236-187-173.access.mtnbusiness.co.za] has joined #lisp 06:37:15 roscareyes [uid25044@gateway/web/irccloud.com/x-iabzwrutnxuxjlqg] has joined #lisp 06:38:49 -!- sdemarre [~serge@91.180.79.21] has quit [Ping timeout: 252 seconds] 06:39:19 -!- roscareyes [uid25044@gateway/web/irccloud.com/x-iabzwrutnxuxjlqg] has quit [K-Lined] 06:41:07 wall [~wall@ip92-101-209-85.onego.ru] has joined #lisp 06:45:39 -!- andreh [~andreh@189.27.16.35.dynamic.adsl.gvt.net.br] has quit [Ping timeout: 260 seconds] 06:51:24 endou [~paul@188.165.96.106] has joined #lisp 06:53:18 -!- oxum [~oxum@122.164.168.5] has quit [Ping timeout: 260 seconds] 06:55:18 -!- Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has quit [Write error: Connection reset by peer] 06:55:59 Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has joined #lisp 06:55:59 does cl-interpol have something for line contination? ie. ignore next newline and following whitespace? 06:56:06 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 245 seconds] 06:56:34 Fare [fare@nat/google/x-jpshzghhhyqlxyzk] has joined #lisp 06:56:51 qsun_ [~qsun@27-32-60-26.static.tpgi.com.au] has joined #lisp 06:57:20 jewel [~jewel@105-236-88-77.access.mtnbusiness.co.za] has joined #lisp 06:57:20 -!- qsun [~qsun@27-32-60-26.static.tpgi.com.au] has quit [Ping timeout: 252 seconds] 06:57:21 -!- Pullphinger [~Pullphing@c-24-13-69-42.hsd1.il.comcast.net] has quit [Ping timeout: 252 seconds] 06:57:21 -!- angavrilov [~angavrilo@217.71.227.190] has quit [Read error: Operation timed out] 06:57:22 angavrilov_ [~angavrilo@217.71.227.190] has joined #lisp 06:58:15 -!- Mon_Ouie [~Mon_Ouie@subtle/user/MonOuie] has quit [Ping timeout: 260 seconds] 06:59:14 -!- gravicappa [~gravicapp@ppp91-77-160-15.pppoe.mtu-net.ru] has quit [Remote host closed the connection] 07:00:36 n0n0 [~n0n0___@2602:306:c410:500:9d63:4b08:8c06:d8f] has joined #lisp 07:02:27 -!- Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has quit [Read error: Operation timed out] 07:03:09 probably. i mean hell, format does. 07:03:59 -!- LtCrData [~LtCrData@host109-148-126-76.range109-148.btcentralplus.com] has quit [Read error: Operation timed out] 07:04:10 Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has joined #lisp 07:04:37 -!- cmatei [~cmatei@78.96.108.146] has quit [Read error: Operation timed out] 07:04:55 -!- Tristam [~Tristam@bodhilinux/team/Tristam] has quit [Read error: Operation timed out] 07:05:13 LtCrData [~LtCrData@host109-148-126-76.range109-148.btcentralplus.com] has joined #lisp 07:05:27 Tristam [~Tristam@bodhilinux/team/Tristam] has joined #lisp 07:06:22 cmatei [~cmatei@78.96.108.146] has joined #lisp 07:08:11 -!- Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has quit [Ping timeout: 245 seconds] 07:19:46 -!- slyrus [~chatzilla@107.201.5.56] has quit [Ping timeout: 245 seconds] 07:20:29 slyrus [~chatzilla@107.201.5.56] has joined #lisp 07:22:50 -!- theos [~theos@unaffiliated/theos] has quit [Disconnected by services] 07:23:20 theos [~theos@unaffiliated/theos] has joined #lisp 07:23:56 -!- Watcher7 [~w@108.218.1.96] has quit [Quit: h] 07:29:26 -!- kcj [~casey@unaffiliated/kcj] has quit [Ping timeout: 245 seconds] 07:29:34 -!- n0n0 [~n0n0___@2602:306:c410:500:9d63:4b08:8c06:d8f] has quit [Ping timeout: 265 seconds] 07:33:14 -!- vkrest_ [~vkrest@173.252.71.189] has quit [Remote host closed the connection] 07:35:32 mishoo [~mishoo@93.113.190.121] has joined #lisp 07:41:13 Bike: didn't find anything. 07:42:03 does SBCL have a random state per-thread? 07:42:14 kcj [~casey@unaffiliated/kcj] has joined #lisp 07:44:05 n0n0 [~n0n0___@2602:306:c410:500:b07d:c7cc:ed04:52f8] has joined #lisp 07:44:17 Beetny [~Beetny@ppp118-208-153-211.lns20.bne1.internode.on.net] has joined #lisp 07:47:50 -!- kushal [~kdas@fedora/kushal] has quit [Read error: Connection reset by peer] 07:51:29 jerrychow [~jerrychow@58.245.253.218] has joined #lisp 07:51:42 -!- yacks [~py@103.6.159.103] has quit [Quit: Leaving] 07:52:00 mvilleneuve [~mvilleneu@LLagny-156-36-4-214.w80-14.abo.wanadoo.fr] has joined #lisp 07:52:12 endou [~paul@188.165.96.106] has joined #lisp 07:55:46 -!- jerrychow [~jerrychow@58.245.253.218] has quit [Client Quit] 07:58:25 is there a equivalent to the C preprocessor macro #define? to make a symbol just an alias of another symbol 07:58:50 kanru: symbol-macro 07:58:51 mrSpec [~Spec@unaffiliated/mrspec] has joined #lisp 07:59:08 jtza8 [~jtza8@105-236-27-170.access.mtnbusiness.co.za] has joined #lisp 07:59:24 ISTR that there was something in *features* when used as "#!/usr/bin/sbcl --script" ... 07:59:26 flip214: unfortunately symbol-macro couldn't be used inside let binding 07:59:59 sure it could. 08:01:33 Ragnaroek [~chatzilla@195.180.2.195] has joined #lisp 08:02:07 -!- mathrick [~mathrick@94.144.63.221] has quit [Read error: Connection reset by peer] 08:02:54 flip214: maybe you could do an extremely ugly hack by ending lines with @nil 08:03:25 (symbol-macrolet ((*alias* *origin*)) (let ((*origin* nil)) (let ((*alias* t)) *origin*))) you still get NIL 08:04:49 that's because let bindings shadow macro bindings. 08:05:28 kushal [~kdas@fedora/kushal] has joined #lisp 08:06:15 -!- Harag [~Thunderbi@105-236-187-173.access.mtnbusiness.co.za] has quit [Quit: Harag] 08:07:48 yes, so it's not a real alias :( 08:08:34 in that it doesn't do completely blind search-replace, i guess 08:09:42 -!- nug700 [~nug700@184-98-219-15.phnx.qwest.net] has quit [Quit: bye] 08:10:00 -!- arigoins [~ari@174-28-35-120.albq.qwest.net] has quit [Quit: Leaving] 08:10:41 jbarker [~jbarker@18.189.79.180] has joined #lisp 08:11:07 varjagg [~eugene@122.62-97-226.bkkb.no] has joined #lisp 08:15:48 -!- jbarker [~jbarker@18.189.79.180] has quit [Ping timeout: 265 seconds] 08:20:11 Shinmera [~linus@xdsl-188-155-176-171.adslplus.ch] has joined #lisp 08:20:42 arenz [~arenz@37.17.234.1] has joined #lisp 08:21:44 Davidbrcz [~david@140.142.25.93.rev.sfr.net] has joined #lisp 08:22:42 yacks [~py@122.179.37.189] has joined #lisp 08:26:53 kvsari [~kvsari@119-173-226-24.rev.home.ne.jp] has joined #lisp 08:27:06 oxum [~oxum@122.165.89.11] has joined #lisp 08:33:10 amaron [~amaron@cable-178-148-241-98.dynamic.sbb.rs] has joined #lisp 08:33:12 -!- Davidbrcz [~david@140.142.25.93.rev.sfr.net] has quit [Ping timeout: 245 seconds] 08:33:14 -!- Bike [~Glossina@gannon-wless-gw.resnet.wsu.edu] has quit [Quit: lone sleepy shite] 08:37:35 dfceaef_ [de45dc38@gateway/web/freenode/ip.222.69.220.56] has joined #lisp 08:37:51 -!- dfceaef_ [de45dc38@gateway/web/freenode/ip.222.69.220.56] has left #lisp 08:43:40 shridhar [Shridhar@nat/redhat/x-qljxmccvhuexgnfh] has joined #lisp 08:43:53 -!- KDr2 [~KDr2@222.91.184.33] has quit [Read error: Connection reset by peer] 08:44:59 -!- Vutral [ss@mirbsd/special/Vutral] has quit [Ping timeout: 240 seconds] 08:46:31 Okasu [~1@unaffiliated/okasu] has joined #lisp 08:51:21 Vutral [~ss@mirbsd/special/Vutral] has joined #lisp 08:53:51 kanru: what are you trying to do? I mean beyond the example you just showed. 08:55:48 paul0 [~paul0@187.112.207.120] has joined #lisp 08:57:29 -!- kirin` [telex@gateway/shell/anapnea.net/x-zqlvekzdpspvkpqe] has quit [Ping timeout: 272 seconds] 08:58:19 -!- harish [harish@nat/redhat/x-cchutenodsuqjabm] has quit [Ping timeout: 265 seconds] 09:00:49 KDr2 [~KDr2@117.22.152.45] has joined #lisp 09:02:32 prxq: mimic the defvaralias form in emacs-lisp, which could be used to maintain backward compatibility when rename symbols 09:02:34 -!- KDr2 [~KDr2@117.22.152.45] has quit [Max SendQ exceeded] 09:03:32 KDr2 [~KDr2@117.22.152.45] has joined #lisp 09:04:50 -!- KDr2 [~KDr2@117.22.152.45] has quit [Max SendQ exceeded] 09:04:58 defalias and make-obsolete are easy, but defvaralias seems tricky 09:05:33 seangrove [~user@c-69-181-197-122.hsd1.ca.comcast.net] has joined #lisp 09:05:34 KDr2 [~KDr2@117.22.152.45] has joined #lisp 09:07:25 i see. Well, I don't know how to do that either. 09:10:02 -!- kcj [~casey@unaffiliated/kcj] has quit [Ping timeout: 260 seconds] 09:11:08 ck`` [~ck@dslb-094-219-236-112.pools.arcor-ip.net] has joined #lisp 09:14:21 MrWoohoo [~MrWoohoo@pool-74-100-140-127.lsanca.fios.verizon.net] has joined #lisp 09:19:17 Janiczek [~Janiczek@415b-r11688.campus.osu.cz] has joined #lisp 09:22:10 -!- mishoo [~mishoo@93.113.190.121] has quit [Ping timeout: 260 seconds] 09:22:10 -!- joneshf-laptop [~joneshf@c-98-208-36-36.hsd1.ca.comcast.net] has quit [Ping timeout: 260 seconds] 09:23:37 joneshf-laptop [~joneshf@c-98-208-36-36.hsd1.ca.comcast.net] has joined #lisp 09:26:15 prxq: define-symbol-macro 09:27:25 kcj [~casey@unaffiliated/kcj] has joined #lisp 09:30:45 fe[nl]ix: clhs says "A binding for a symbol macro can be shadowed by let or symbol-macrolet." 09:31:41 machindo [~machindo@host109-152-1-59.range109-152.btcentralplus.com] has joined #lisp 09:31:48 that's correct 09:31:52 fe[nl]ix: that's the point: define-symbol-macro is not working 09:32:05 for that intended purpose 09:32:40 oh, I didn't see the backlog 09:32:57 I read https://www.gnu.org/software/emacs/manual/html_node/elisp/Variable-Aliases.html 09:33:09 harish [~harish@49.245.153.58] has joined #lisp 09:33:13 a symbol-macro is exactly what that piece of documentation says 09:33:32 an alias in the variable namespace 09:33:36 -!- ck`` [~ck@dslb-094-219-236-112.pools.arcor-ip.net] has quit [Ping timeout: 245 seconds] 09:34:24 it doesn't mention the symbol-plist, for example 09:34:26 -!- joneshf-laptop [~joneshf@c-98-208-36-36.hsd1.ca.comcast.net] has quit [Ping timeout: 245 seconds] 09:34:39 mishoo [~mishoo@93.113.190.121] has joined #lisp 09:35:23 joneshf-laptop [~joneshf@c-98-208-36-36.hsd1.ca.comcast.net] has joined #lisp 09:35:58 though in elisp defvaralias does work with dynamic variables and let binding 09:36:41 -!- n0n0 [~n0n0___@2602:306:c410:500:b07d:c7cc:ed04:52f8] has quit [Ping timeout: 265 seconds] 09:37:52 ck`` [~ck@dslb-094-219-236-112.pools.arcor-ip.net] has joined #lisp 09:40:36 -!- Codynyx [~cody@c-75-72-223-59.hsd1.mn.comcast.net] has quit [Ping timeout: 252 seconds] 09:43:59 stepnem [~stepnem@77.78.117.8] has joined #lisp 09:54:45 -!- harish [~harish@49.245.153.58] has quit [Ping timeout: 248 seconds] 09:57:50 Code_Man` [~Code_Man@2a02:1205:505b:1ad0:223:54ff:fe38:82c2] has joined #lisp 09:58:26 -!- zacharias [~aw@unaffiliated/zacharias] has quit [Quit: Bye!] 09:58:32 -!- mishoo [~mishoo@93.113.190.121] has quit [Ping timeout: 246 seconds] 09:58:38 mishoo [~mishoo@93.113.190.121] has joined #lisp 09:59:53 -!- snits [~snits@inet-hqmc07-o.oracle.com] has quit [Remote host closed the connection] 10:02:11 -!- galdor [~galdor@78.193.58.122] has quit [Ping timeout: 272 seconds] 10:02:35 galdor [~galdor@78.193.58.122] has joined #lisp 10:04:03 -!- karupanerura is now known as zz_karupanerura 10:06:04 snits [~snits@184-98-227-247.phnx.qwest.net] has joined #lisp 10:09:25 ndrei [~avo@83.142.149.227] has joined #lisp 10:11:26 jbarker [~jbarker@18.189.79.180] has joined #lisp 10:16:13 -!- jbarker [~jbarker@18.189.79.180] has quit [Ping timeout: 250 seconds] 10:17:10 przl [~przlrkt@62.217.45.197] has joined #lisp 10:19:23 mc40 [~mcheema@146.255.107.122] has joined #lisp 10:21:36 -!- Janiczek [~Janiczek@415b-r11688.campus.osu.cz] has quit [Quit: rcirc on GNU Emacs 24.3.1] 10:24:17 thats why you use CL 10:27:19 Praise [~Fat@unaffiliated/praise] has joined #lisp 10:30:24 Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has joined #lisp 10:30:38 ogamita [~t@tru75-h02-31-38-72-69.dsl.sta.abo.bbox.fr] has joined #lisp 10:31:49 nipra [~nipra@61.12.27.114] has joined #lisp 10:37:06 JuanDaugherty [~Ren@cpe-198-255-198-157.buffalo.res.rr.com] has joined #lisp 10:38:51 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 265 seconds] 10:54:21 endou [~paul@188.165.96.106] has joined #lisp 10:55:05 KaiQ [~localhost@p578FC908.dip0.t-ipconnect.de] has joined #lisp 10:55:50 -!- kushal [~kdas@fedora/kushal] has quit [Quit: Leaving] 10:56:07 -!- oxum [~oxum@122.165.89.11] has quit [Quit: ...] 10:56:25 zickzackv [~faot@port-92-198-30-130.static.qsc.de] has joined #lisp 10:56:27 theos: I wish a better way to deprecate old symbols 10:57:28 bassclide [~bassclide@118.129.broadband13.iol.cz] has joined #lisp 10:58:28 -!- jtza8 [~jtza8@105-236-27-170.access.mtnbusiness.co.za] has quit [Read error: Operation timed out] 10:58:49 -!- przl [~przlrkt@62.217.45.197] has quit [Read error: Operation timed out] 10:59:26 kanru: https://github.com/sionescu/iolib/blob/master/src/base/defalias.lisp and https://github.com/sionescu/iolib/blob/master/src/base/defobsolete.lisp are the best I could come up with 11:00:59 -!- ndrei [~avo@83.142.149.227] has quit [Ping timeout: 272 seconds] 11:02:40 -!- Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/] 11:03:08 lduros [~user@fsf/member/lduros] has joined #lisp 11:07:40 zacharias [~aw@unaffiliated/zacharias] has joined #lisp 11:10:50 fe[nl]ix: do you want to put them in a separate system? 11:11:27 -!- JuanDaugherty [~Ren@cpe-198-255-198-157.buffalo.res.rr.com] has quit [Quit: Exit IRC/Hiberate] 11:14:19 I suppose I could 11:15:33 -!- wall [~wall@ip92-101-209-85.onego.ru] has quit [Ping timeout: 252 seconds] 11:15:42 JuanDaugherty [~juand@cpe-198-255-198-157.buffalo.res.rr.com] has joined #lisp 11:18:37 I could help :) 11:26:44 przl [~przlrkt@62.217.45.197] has joined #lisp 11:27:11 fsvehla [~fsvehla@h081217030130.dyn.cm.kabsi.at] has joined #lisp 11:27:39 -!- frx [~a@93-138-116-131.adsl.net.t-com.hr] has quit [] 11:28:36 frx [~a@93-141-0-215.adsl.net.t-com.hr] has joined #lisp 11:28:51 wall [~wall@ip92-101-198-59.onego.ru] has joined #lisp 11:29:18 -!- fsvehla [~fsvehla@h081217030130.dyn.cm.kabsi.at] has quit [Client Quit] 11:30:40 jbarker [~jbarker@18.189.79.180] has joined #lisp 11:31:44 -!- przl [~przlrkt@62.217.45.197] has quit [Ping timeout: 245 seconds] 11:34:53 -!- hyperbor1ean is now known as hyperboreean 11:37:53 -!- bjz [~bjz@125.253.99.68] has quit [Read error: Connection reset by peer] 11:38:09 bjz [~bjz@125.253.99.68] has joined #lisp 11:38:11 -!- drewc [~drewc@S0106c8d71945c789.vn.shawcable.net] has quit [Ping timeout: 245 seconds] 11:39:03 przl [~przlrkt@62.217.45.197] has joined #lisp 11:42:29 -!- bjz [~bjz@125.253.99.68] has quit [Ping timeout: 246 seconds] 11:43:25 -!- Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has quit [Read error: Connection reset by peer] 11:44:22 bjz [~bjz@125.253.99.68] has joined #lisp 11:44:38 Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has joined #lisp 11:45:18 oxum [~oxum@122.164.15.186] has joined #lisp 11:47:21 -!- ramkrsna [~ramkrsna@unaffiliated/ramkrsna] has quit [Ping timeout: 245 seconds] 11:49:25 add^_ [~user@m213-101-23-176.cust.tele2.se] has joined #lisp 11:51:18 InvalidCo [~invalidco@dsl-lhtbrasgw2-54f824-20.dhcp.inet.fi] has joined #lisp 11:52:22 could anyone explain why progn passes all values (and not just the first one) while prog1 and prog2 need a special version (multiple-value-prog1)? 11:52:43 ndrei [~avo@83.142.149.227] has joined #lisp 11:53:03 InvalidCo: because prog1 and prog2 need to store and save the result. 11:53:35 InvalidCo: multiple values in CL are an optimization: the values returned are stored in registers or some other fast access memory. 11:53:59 (Of course, the designers of CL never imagined 8080 processors with only 2 registers would be such a success). 11:54:46 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 245 seconds] 11:54:57 -!- drmeister [~drmeister@pool-71-175-2-214.phlapa.fios.verizon.net] has quit [Remote host closed the connection] 11:54:57 InvalidCo: so for terminal functions, the results don't have to be moved to some other place: they just lie in their registers and operators return. 11:56:17 But for non terminal results, like prog1 prog2, you have to store those results in an allocated list (or a vector, but there's no cl:values-vectors function). 11:57:11 -!- KaiQ [~localhost@p578FC908.dip0.t-ipconnect.de] has quit [Quit: Leaving] 11:59:28 ck [~ck@dslb-094-219-236-112.pools.arcor-ip.net] has joined #lisp 12:00:26 AntiSpamMeta_ [~MetaBot@AntiSpamMeta/.] has joined #lisp 12:00:26 -!- AntiSpamMeta [~MetaBot@AntiSpamMeta/.] has quit [Killed (leguin.freenode.net (Nickname regained by services))] 12:00:26 -!- AntiSpamMeta_ is now known as AntiSpamMeta 12:01:50 przl_ [~przlrkt@62.217.45.197] has joined #lisp 12:02:57 -!- ck`` [~ck@dslb-094-219-236-112.pools.arcor-ip.net] has quit [Ping timeout: 265 seconds] 12:03:01 -!- machindo [~machindo@host109-152-1-59.range109-152.btcentralplus.com] has quit [Quit: machindo] 12:03:37 Harag [~Thunderbi@105.184.33.8] has joined #lisp 12:04:03 ramkrsna [~ramkrsna@122.170.44.162] has joined #lisp 12:04:09 -!- ramkrsna [~ramkrsna@122.170.44.162] has quit [Changing host] 12:04:09 ramkrsna [~ramkrsna@unaffiliated/ramkrsna] has joined #lisp 12:04:24 -!- ggole [~ggole@106-69-84-122.dyn.iinet.net.au] has quit [Ping timeout: 265 seconds] 12:04:50 ggole [~ggole@124-169-207-29.dyn.iinet.net.au] has joined #lisp 12:04:57 -!- przl [~przlrkt@62.217.45.197] has quit [Ping timeout: 272 seconds] 12:05:48 -!- eigenlicht [~eigenlich@unaffiliated/eigenlicht] has quit [Ping timeout: 252 seconds] 12:06:58 ogamita: oh 12:07:43 thanks! 12:08:03 eigenlicht [~eigenlich@unaffiliated/eigenlicht] has joined #lisp 12:09:24 hitecnologys [~hitecnolo@178.74.89.133] has joined #lisp 12:12:35 -!- eigenlicht [~eigenlich@unaffiliated/eigenlicht] has quit [Ping timeout: 246 seconds] 12:16:55 eigenlicht [~eigenlich@unaffiliated/eigenlicht] has joined #lisp 12:17:28 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Remote host closed the connection] 12:18:26 -!- yrk [~user@pdpc/supporter/student/yrk] has quit [Ping timeout: 250 seconds] 12:21:31 -!- kcj [~casey@unaffiliated/kcj] has quit [Ping timeout: 245 seconds] 12:21:55 jtza8 [~jtza8@105-236-27-170.access.mtnbusiness.co.za] has joined #lisp 12:23:11 -!- fikusz [~fikusz@catv-89-132-137-62.catv.broadband.hu] has quit [Ping timeout: 250 seconds] 12:25:09 -!- eigenlicht [~eigenlich@unaffiliated/eigenlicht] has quit [Ping timeout: 248 seconds] 12:25:13 -!- wall [~wall@ip92-101-198-59.onego.ru] has quit [Ping timeout: 272 seconds] 12:25:54 -!- Sgeo [~quassel@ool-44c2df0c.dyn.optonline.net] has quit [Read error: Connection reset by peer] 12:26:53 Sgeo [~quassel@ool-44c2df0c.dyn.optonline.net] has joined #lisp 12:26:56 fikusz [~fikusz@catv-89-132-137-62.catv.broadband.hu] has joined #lisp 12:27:21 eigenlicht [~eigenlich@unaffiliated/eigenlicht] has joined #lisp 12:29:19 askatasuna [~askatasun@181.30.10.50] has joined #lisp 12:29:39 harish [~harish@175.156.197.152] has joined #lisp 12:30:35 -!- jbarker [~jbarker@18.189.79.180] has quit [Remote host closed the connection] 12:32:09 -!- Beetny [~Beetny@ppp118-208-153-211.lns20.bne1.internode.on.net] has quit [Ping timeout: 245 seconds] 12:32:10 -!- ndrei [~avo@83.142.149.227] has quit [Read error: Operation timed out] 12:36:41 ndrei [~avo@83.142.149.227] has joined #lisp 12:36:43 Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has joined #lisp 12:45:41 -!- eigenlicht [~eigenlich@unaffiliated/eigenlicht] has quit [Ping timeout: 245 seconds] 12:45:45 sirdancealot [~koo5@194.228.11.172] has joined #lisp 12:47:01 -!- przl_ [~przlrkt@62.217.45.197] has quit [Ping timeout: 248 seconds] 12:48:03 endou [~paul@188.165.96.106] has joined #lisp 12:50:53 przl [~przlrkt@62.217.45.197] has joined #lisp 12:53:13 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 265 seconds] 12:53:23 -!- naryl2 [~weechat@46.182.24.168] has quit [Ping timeout: 252 seconds] 12:55:23 jbarker [~jbarker@18.189.79.180] has joined #lisp 12:56:50 endou [~paul@188.165.96.106] has joined #lisp 13:00:26 Mon_Ouie [~Mon_Ouie@subtle/user/MonOuie] has joined #lisp 13:04:10 -!- kvsari [~kvsari@119-173-226-24.rev.home.ne.jp] has quit [Quit: leaving] 13:04:26 jpfuentes2 [~jacques@pool-173-53-102-185.rcmdva.fios.verizon.net] has joined #lisp 13:11:01 -!- yacks [~py@122.179.37.189] has quit [Read error: Operation timed out] 13:11:43 machindo [~machindo@cpc3-stav5-0-0-cust131.17-3.cable.virginm.net] has joined #lisp 13:12:07 vaporatorius [~vaporator@194.Red-79-150-121.dynamicIP.rima-tde.net] has joined #lisp 13:14:56 -!- jtza8 [~jtza8@105-236-27-170.access.mtnbusiness.co.za] has quit [Remote host closed the connection] 13:18:56 -!- ndrei [~avo@83.142.149.227] has quit [Ping timeout: 245 seconds] 13:21:33 -!- amaron [~amaron@cable-178-148-241-98.dynamic.sbb.rs] has quit [Ping timeout: 252 seconds] 13:24:20 Denommus [~user@unaffiliated/denommus] has joined #lisp 13:26:10 Xach [~xach@pdpc/supporter/professional/xach] has joined #lisp 13:26:43 KaiQ [~localhost@p578FC908.dip0.t-ipconnect.de] has joined #lisp 13:33:37 segv- [~mb@95-91-242-54-dynip.superkabel.de] has joined #lisp 13:34:57 -!- ramkrsna [~ramkrsna@unaffiliated/ramkrsna] has quit [Remote host closed the connection] 13:35:15 knob [~knob@66-50-170-63.prtc.net] has joined #lisp 13:35:18 -!- Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has quit [Ping timeout: 252 seconds] 13:36:05 -!- knob [~knob@66-50-170-63.prtc.net] has left #lisp 13:40:12 -!- varjagg [~eugene@122.62-97-226.bkkb.no] has quit [Quit: Leaving] 13:43:48 cpc26 [~cpc26@fsf/member/cpc26] has joined #lisp 13:44:53 scampbell [~scampbell@mail.scampbell.net] has joined #lisp 13:45:54 -!- daimrod [daimrod@sbrk.org] has quit [Remote host closed the connection] 13:46:10 daimrod [daimrod@sbrk.org] has joined #lisp 13:47:54 jdz [~jdz@212.36.34.246] has joined #lisp 13:47:59 -!- przl [~przlrkt@62.217.45.197] has quit [Ping timeout: 245 seconds] 13:50:02 -!- Adlai [~Adlai@unaffiliated/adlai] has quit [Ping timeout: 260 seconds] 13:51:21 amaron [~amaron@cable-178-148-241-98.dynamic.sbb.rs] has joined #lisp 13:52:08 liqu0rice [~niklas@brln-4dbc24d5.pool.mediaWays.net] has joined #lisp 13:53:09 alvin` [~user@49.147.36.50] has joined #lisp 13:53:36 Adlai [~Adlai@unaffiliated/adlai] has joined #lisp 13:55:03 nugnuts [~nugnuts@pool-74-105-21-221.nwrknj.fios.verizon.net] has joined #lisp 13:57:08 -!- nugnuts [~nugnuts@pool-74-105-21-221.nwrknj.fios.verizon.net] has quit [Client Quit] 13:57:55 Acherontius [~user@204.116.186.34] has joined #lisp 14:00:55 Poenikatu [~kvirc@host-89-242-64-109.as13285.net] has joined #lisp 14:00:55 -!- Poenikatu [~kvirc@host-89-242-64-109.as13285.net] has quit [Changing host] 14:00:55 Poenikatu [~kvirc@pdpc/supporter/bronze/poenikatu] has joined #lisp 14:01:20 Newbie here. Is there a lisp idiom similar to Python's enumerate? I want to iterate over the contents of a list while also getting the index of the item for each iteration. Currently, I'm just using dolist and then getting the index with position. Is there a better way? 14:02:22 alvin`: (loop for item in list for index from 0 do (...)) 14:02:52 ahhh. Ok thanks :) 14:03:51 I'm reading Peter Seibel's PCL and am having trouble distinguishing dynamic variables from lexical variables. The example given in Chapter 6 (Variables) shows that a (let... form shadows a global variable in the same say as a local variable. So what's the difference? 14:05:19 Poenikatu: code outside the lexical scope of the LET can access the LET-bound value. that does not happen with lexical variables (hence the term "lexical") 14:05:21 Saying (let ((*x* 20)) (foo)) shadows the global variable *x* just as if the *x* in the let form were a lexical variable 14:05:25 *where 14:05:44 No, that's not the case. FOO could not see the binding if it was a lexical variable. 14:06:01 alvin`: your initial solution is plain wrong: (let ((l '(1 2 3 1 2 3 1 2 3))) (dolist (i l) (print (list i (position i l))))) 14:06:09 And it would be extremely uncommon form to name a lexical variable like a special variable with **s 14:06:10 Xach: Ok. I'll try that in the REPL 14:06:28 alvin`: so you didn't want a better way, you wanted a _correct_ way. 14:06:34 Poenikatu: there's no syntactic difference between lexical and special variables 14:06:41 just a naming convention 14:07:02 I understand that, it's the semantics that's got me muddled 14:07:44 Poenikatu: if you had (defun foo () (print x)), you would get some kind of feedback about an undefined variable X. 14:07:53 -!- DarthShader [~DarthShad@192-0-232-239.cpe.teksavvy.com] has left #lisp 14:08:01 and (let ((x 42)) (foo)) would not print 42, it would signal an error. 14:08:23 fe[nl]ix: you mean there's no lexical difference. There's a big syntactic difference: special variables have syntactically a defparameter or defvar form before the let for, or have a let form of the form (let ((*var* 42)) (declare (special *var*)) ) which is quite different, syntactically from a mere (let ((var 42) ). 14:08:24 That's assuming you have not created a special variable X 14:09:04 ogamita: ah, i didn't think about duplicates in the list. thanks for pointing that out. 14:09:11 fe[nl]ix: and precisely, the point of *x* is to introduce a lexical difference. 14:09:40 even if only at the conventional level. 14:09:44 that's not syntax 14:10:05 davazp [~user@221.Red-79-153-99.dynamicIP.rima-tde.net] has joined #lisp 14:11:38 jtza8 [~jtza8@105-237-80-164.access.mtnbusiness.co.za] has joined #lisp 14:11:52 fe[nl]ix: exactly. 14:12:35 There's no taste difference between red and blue. 14:13:17 Xach: Concerning your remark about (defun foo () (print x)). Peter says that if you decide to assign a new value to *standard-output*, then all functions within that binding form would see/.use the new value, but after the binding form, the value of *standard-output* would revert to the old value. Apart from the (let using a starred name, I don't see any difference from a lexical variable 14:13:44 so I say something, then you tell me I'm wrong and one sentence later "exactly" 14:13:46 fuck you 14:13:58 Poenikatu: the difference is in the name being made special via some earlier evaluation. 14:14:00 sohail_ [~sohail@75-119-248-79.dsl.teksavvy.com] has joined #lisp 14:14:05 fe[nl]ix: Were you talking to me? 14:14:13 Poenikatu: e.g. with defparameter or defvar. that alters how the system treats that name in future evaluations. 14:14:23 *standard-output* is a standard special variable 14:14:31 Poenikatu: no, that was for ogamita 14:16:02 Xach: Yes, I understand that. But suppose I have two nested "let"s, with the outer using the name *xyz* which is NOT defined globally. Then, if the inner "let" also binds *xyz* to a value, that binding shadows the outer binding. 14:16:41 First, you would not use a name with *s in it, because that convention is reserved for global special variables. 14:17:03 Second, that's an example of a nested lexical binding. 14:17:26 It is not uncommon, and its effects are not visible outside the lexical scope of the LET forms. 14:17:48 Xach: Yes, so Peter says in PCL, but the point is that using *xyz* in a nested let form shadows the outer binding whether it was defined globally or not. 14:18:19 Please don't write variable names with *s unless you are referring to global special variables. 14:18:33 And yes, that is a true statement in PCL. 14:18:41 I'm not sure where the "but" comes in. 14:18:48 Xach: I understand, and I shall not use starred names unless they are global. 14:19:20 I sometimes write functions like (defun foo (thing) (let ((thing (canonical-version-of thing))) ...)) 14:19:32 Xach: My point is that the shadowing of the global value does not appear to be any different from shadowing of a lexical variable 14:19:56 -!- nipra [~nipra@61.12.27.114] has quit [Quit: Leaving.] 14:20:10 Poenikatu: the difference is in visibility. In a special variable, the shadowing is visible outside the lexical scope (in e.g. called functions), but in lexical shadowing it is not visible anywhere else. 14:20:12 Poenikatu: nested LET forms shadow where the variable in question is lexical or special 14:20:44 that's the whole point, to have uniform (re)binding 14:21:10 It is shadowing in both cases. 14:21:40 Poenikatu: what Xach say :) 14:21:45 *says 14:21:51 fe[nl]ix: Xach: I don't want to appear pedantic. All I am trying to do is to understand the difference between dynamic and lexical variables. 14:22:26 Poenikatu: I don't think appearing pedantic when discussing such things is a bad thing. It is important to thoroughly understand it to use Common Lisp effectively. 14:22:57 Common Lisp the Language, 2nd edition, has a passage on scope and extent that I remember helping me understand the issues better. I'll try to find it. 14:23:03 Xach: Thank you. I simply don't understand what is special about global variables 14:23:25 it is not the globality of them 14:23:34 Xach: I have the text of CLtL2. I'll do a search for scope 14:23:37 http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node43.html is it. maybe it is helpful. 14:24:14 Poenikatu: do you mean "special" as in different from lexical variables? or "special" as in useful? 14:24:25 it is the nature of the binding: whether the binding is visible to code that is within it textualy (literally visible within the brackets), or code that is called by it during execution 14:24:37 Xach: The former 14:24:50 In that case, it is all about visibility. 14:25:40 FOO cannot refer to a lexical binding from its caller, but it can freely refer to a special variable from the system, which might be influenced by a caller with a binding. 14:25:42 -!- Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has quit [Read error: Connection reset by peer] 14:25:55 And influencing specials is very handy and common. 14:25:55 nugnuts [~nugnuts@pool-74-105-21-221.nwrknj.fios.verizon.net] has joined #lisp 14:26:26 Krystof: Hold on. AFAIK we're talking about a single-threaded REPL. That means that there is only one form being evaluated at any given moment. So forms defined outwith the LET can only access the global variable which has been shadowed within the LET if they are called within the LET. Isn't that so? 14:26:46 przl [~przlrkt@62.217.45.197] has joined #lisp 14:26:54 Kromitvs [~quassel@mcqueen.rnl.ist.utl.pt] has joined #lisp 14:26:59 Yes. 14:28:31 Threads introduce more details to the semantics of global special variables, but you can ignore that for now. 14:28:38 they can only access the shadowing binding while the binding is in existence 14:28:57 Xach: Krystof: fe[n]ix: So what is the difference between the two kinds of variable apart from the global significance? 14:29:22 for "special" variables, the binding's existence is "dynamic" -- it ends when the execution of the program goes "past" the end of the binding form (the LET) 14:29:50 Krystof: But one can say that about a binding of a lexical variable 14:29:57 no, one can't 14:30:15 in (let ((x 0)) (defun add-one () (incf x))) 14:30:25 the binding of X continues to exist indefinitely 14:30:42 successive calls to (ADD-ONE) modify the same binding 14:30:49 Krystof: But surely that's a closure? 14:30:52 the binding has indefinite extent 14:31:24 Does that mean closures can only be used with lexical variables? 14:31:33 yes, it is a lexical closure, which is why the binding's existence does not end, which is why on cannot say that the binding ends when the execution of the program goes past the end of the binding form 14:31:53 -!- przl [~przlrkt@62.217.45.197] has quit [Ping timeout: 246 seconds] 14:31:56 right, you can't close over a dynamic binding, because the dynamic binding ceases to exist at the end of the binding form 14:32:18 if we had a globally dynamic *x* and we wrote (let ((*x* 0)) (defun add-one () (incf *x*))) 14:32:23 Krystof: Ah. Now I see a definite difference. Thanks a lot. 14:32:26 then calling (ADD-ONE) would probably be an error 14:32:42 but we could make it not be an error if we called (let ((*x* 17)) (ADD-ONE)) 14:32:46 and that would return 18 14:32:57 Krystof: I'll try that at the REPL 14:35:14 Poenikatu: the difference between dynamic binding and lexical binding, is that with dynamic binding you must consider WHEN things occur (in time while executing), while with lexical binding you must consider WHERE things occurs (on the paper/source file). 14:35:28 (the thing that made it click for me, if I remember back all those decades, was sorting out the difference between scope and extent) 14:35:31 Krystof: When I input (let ((*x* 0)) ... ) SBCL informed me that it was using the lexical binding rather than the dynamic binding even though *x* conformed to a special variable 14:35:46 Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has joined #lisp 14:35:47 as I said, "if we have a globally dynamic *x*" 14:35:57 you can make such a globally dynamic *x* using (defvar *x*) 14:35:59 Poenikatu: yes, sbcl verbose warnings are nice sometime. 14:36:39 ustunozgur [~ustunozgu@85.110.19.2] has joined #lisp 14:37:25 Poenikatu: "past" is an overloaded word in English (as all English words). It can mean beyond some space (where), or after some time (when). 14:37:45 True 14:37:58 -!- liqu0rice [~niklas@brln-4dbc24d5.pool.mediaWays.net] has quit [Quit: leaving] 14:37:58 ogamita: the best explanation for the difference between dynamic binding and lexical binding was given by Abraham Lincoln: "If you call a tail a leg, how many legs has a dog? Five? No! Calling a tail a leg doesn't make it a leg." 14:38:03 Don't confuse it, to make sense of Krystof's sentence you must understand his "past" as temporal, in the past, WHEN the evaluation of that let form is finished. 14:38:13 OldContrarian [~user@c-ef9de155.42-1-64736c10.cust.bredbandsbolaget.se] has joined #lisp 14:38:46 -!- snits [~snits@184-98-227-247.phnx.qwest.net] has quit [Read error: Operation timed out] 14:39:03 Poenikatu: you could lexically be inside the let form, while dynamically have finished evaluating it. 14:39:15 -!- jbarker [~jbarker@18.189.79.180] has quit [Remote host closed the connection] 14:39:20 How? 14:39:53 (defvar *x* 1) (defvar *f*) (let ((*x* 2) (y 3)) (setf *f* (lambda () (list *x* y)))) #|finished|# (funcall *f*) --> 1; 3 14:39:54 snits [~snits@inet-hqmc05-o.oracle.com] has joined #lisp 14:40:11 jbarker [~jbarker@18.189.79.180] has joined #lisp 14:40:13 Here, after the let form is finished, we call the lambda which is lexically inside that finished let form. 14:40:17 kirin` [telex@gateway/shell/anapnea.net/x-aajmmacveusfclrf] has joined #lisp 14:40:49 The dynamic binding is finished, when we call the lambda bound to *f*, *x* is bound to 1. But lexically, y is still bound to 3 , and *f* returns 1 and 3 instead of 2 and 3. 14:41:25 y has been captured (enclosed) by the closure created by the lambda form inside the let. But dynamic bindings are not enclosed. 14:41:44 dynamic bindings escape thru the 4th dimension: time. 14:42:30 eigenlicht [~eigenlich@unaffiliated/eigenlicht] has joined #lisp 14:44:04 -!- jbarker [~jbarker@18.189.79.180] has quit [Remote host closed the connection] 14:51:30 -!- sellout- [~Adium@174-16-117-96.hlrn.qwest.net] has quit [Quit: Leaving.] 14:51:45 cory786 [~cory@CK-Laptop.wifi.utoledo.edu] has joined #lisp 14:55:25 ogamita: I've just tried your example at the REPL. So, even though the function assigned to *f* is defined within the LET, the *x* used by that function uses the value of *x* at the time of the call, rather than the value at the time of definition 14:55:40 -!- mrSpec [~Spec@unaffiliated/mrspec] has quit [Quit: mrSpec] 14:57:24 kondratyev [~kondratye@gw.mat.uc.pt] has joined #lisp 14:58:19 God forbid we mention stacks when explaining these things! 14:58:36 innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has joined #lisp 14:58:40 bhyde: You don't have to bring him into it 14:58:46 -!- Mon_Ouie [~Mon_Ouie@subtle/user/MonOuie] has quit [Ping timeout: 250 seconds] 15:00:15 The point is, I see no difference between scope and extent. The code that is in a file, when it is being executed, is really no different from the source. I don't understand what extent adds to the concept of scope 15:00:30 er what 15:01:22 Surely, scope affects the coding of a program, but extent is the same translated to a time basis. 15:02:00 scope is binding, extent is accessibility, basically 15:02:40 -!- add^_ [~user@m213-101-23-176.cust.tele2.se] has quit [Remote host closed the connection] 15:02:53 oGMo: Ok, but the extent is simply the execution equivalent of the scope. 15:03:16 (let ((x 1)) x) .. the scope of X is the LET block, the extent of the value is indefinite 15:03:44 Poenikatu: you are wrongthinking, fix it 15:04:11 oGMo: In what way? If I refer to x in another function, an error will be called. In what way is the extent indefinite? 15:04:34 because thta's not extent, it's scope 15:05:19 oGMo: That's all very well, fix it. I'm trying to understand CL. It appears that extent only occurs at run-time, whereas scope occurs at compile-time 15:06:11 billstclair [~billstcla@p-68-237-141-68.dsl1.rtr.chat.fpma.frpt.net] has joined #lisp 15:06:11 -!- billstclair [~billstcla@p-68-237-141-68.dsl1.rtr.chat.fpma.frpt.net] has quit [Changing host] 15:06:11 billstclair [~billstcla@unaffiliated/billstclair] has joined #lisp 15:06:23 Poenikatu: careful; CL "times" are very specific and often confusing to newcomers; and it's always runtime 15:06:54 add^_ [~user@m213-101-23-176.cust.tele2.se] has joined #lisp 15:09:04 oGMo: What is? When I write a CL program, if I reference a variable defined in a LET, then that reference must be within the LET. And that applies to both global and lexical variables (I'm presuming that the LET has a definition of the name used for the global variable) 15:09:05 as an example, you may run a block such as the above and capture the value, then read, eval, compile, and call another function, passing it that value 15:10:19 I can see that VALUES have inifinite extent, but only global variables have infinite extent 15:10:32 Poenikatu: don't think of variables, think of symbols bound to values or not; variables aren't a "space" for a thing as per C that goes away 15:11:09 -!- zacharias [~aw@unaffiliated/zacharias] has quit [Ping timeout: 272 seconds] 15:11:11 if the binding goes away, the value does not; whether the value goes away depends on whether it has dynamic or indefinite extent 15:11:14 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Quit: Leaving.] 15:11:25 attila_lendvai [~attila_le@5.76.185.228] has joined #lisp 15:11:25 -!- attila_lendvai [~attila_le@5.76.185.228] has quit [Changing host] 15:11:25 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #lisp 15:12:02 ahungry [~null@66.184.106.97] has joined #lisp 15:12:09 ndrei [~avo@83.142.149.227] has joined #lisp 15:12:09 zacharias [~aw@unaffiliated/zacharias] has joined #lisp 15:12:30 I have to admit that IRC ain't so brilliant when it comes to trying to argue a particular topic. Occasional remarks, yes. Argument, no 15:12:30 -!- reeed_ is now known as reeed 15:13:21 if you're trying to argue something you're doing the wrong thing; this is all very well-defined and either you change the way you think to fit CL's model, or you bang your head against the wall until you do 15:13:37 I can see that I shall have to read and re-read Practical Common Lisp until the meaning of global variables sinks into my comprehension 15:14:25 oGMo: You misunderstood my use of the word "argument". I use the original sense, not the modern sense 15:14:42 there are a lot of subtle implications and things that result from CL's model, so if you don't understand these things, later things will be more confusing 15:14:50 -!- alvin` [~user@49.147.36.50] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 15:14:58 oGMo: Yes, I agree 15:15:35 Poenikatu: well if one thing seems confusing, it's probably because you're working under false assumptions elsewhere ;) 15:16:13 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 272 seconds] 15:16:13 mts_ [~mts@rrcs-24-97-165-124.nys.biz.rr.com] has joined #lisp 15:17:18 oGMo: or because the thing is indeed confusing. E.g., CL's equality :) 15:17:29 Denommus: how is that confusing 15:17:32 oGMo: Perhaps it would make things a bit clearer when I say that for the last 18 years I've been actively trying to rescuscitate what is really an obsolete language: Algol 68 (not to be confused with Algol 60). In that language, scope is well-defined and a binding can be local or global. Whether the values bound are local or global depends on other things. 15:17:38 or, what specifically are you referring to 15:17:48 oGMo: the way EQUAL behaves with vectors 15:18:39 two vectors are EQUAL if they are EQ, unless it's a bit vector or string, then they are EQUAL if every element is EQUAL, recursively 15:18:43 Denommus: how is that confusing, it's well-defined 15:18:53 and there aren't like a hundred cases, there's 2 15:18:56 oh, it's very well defined, but it's counter-intuitive 15:18:58 "there are two" 15:19:39 Poenikatu: right, so, you're thinking in terms of that, and you should think in terms of CL 15:19:43 -!- Code_Man` [~Code_Man@2a02:1205:505b:1ad0:223:54ff:fe38:82c2] has quit [Remote host closed the connection] 15:20:10 scope is well-defined in CL too, but it may differ from what you're used to 15:20:30 oGMo: Yes, probably, but shedding the mental practices of 50 years ain't that easy 15:21:08 Poenikatu: global variables are dynamically scoped instead of lexically scoped. It's just that, there's nothing mysterious about it 15:21:29 -!- Ethan- [~Ethan-@60-248-176-37.HINET-IP.hinet.net] has quit [Ping timeout: 252 seconds] 15:21:34 also remember bindings are global or _lexical_ in common lisp 15:21:46 "global" 15:22:40 Denommus: So you say, but I am finding it difficult to comprehend the difference between scope and extent 15:22:49 you actually can have global lexical variables and local dynamic variables, but it's a bit harder to get them right, and they are less useful (that is, they have less use-cases) 15:23:16 clintm [~clintm@001e52f0de2b.click-network.com] has joined #lisp 15:23:18 "global lexical" variable doesn't make sense :P 15:23:37 Poenikatu: it's simple: a dynamically scoped variable will have the value of where it was called. A lexically scoped will have the value of where it was defined 15:24:12 "global variable n. a dynamic variable or a constant variable." 15:24:23 (constant variable makes me chuckle) 15:24:45 oGMo: how doesn't it make sense? Most languages use global lexically scoped variables 15:24:49 Denommus: that is a terrible way to think about it 15:25:01 and no it won't, because you can setf lexical variables 15:25:22 Denommus: i am beginning to think you're confused 15:25:44 this is about CL, not most languages 15:26:07 oGMo: I'm not confused. There are ways to DECLARE a global variable as lexical, it is just not the default behavior 15:26:44 quick! without introducing new bindings, how can you tell the difference between a global dynamic and a global lexical? 15:26:45 Poenikatu: e.g. (let ((x 5)) (defun foo () x)). If "x" is lexical, then (let ((x 7)) (foo)) will eval to 5. If "x" is dynamically scoped, it will eval to 7 15:27:10 ok now you're very confused 15:27:36 if you can't tell the difference without introducing new bindings, then how can you say whether the global binding itself is lexical or dynamic? 15:27:51 przl [~przlrkt@62.217.45.197] has joined #lisp 15:27:58 because there is no "global lexical" 15:28:34 -!- bassclide [~bassclide@118.129.broadband13.iol.cz] has quit [Remote host closed the connection] 15:28:44 I'm not asking you, I'm being Socratic towards Denommus 15:28:50 sellout-1 [~Adium@c-67-176-62-45.hsd1.co.comcast.net] has joined #lisp 15:29:19 bassclide [~bassclide@118.129.broadband13.iol.cz] has joined #lisp 15:29:20 (but yes) 15:30:10 Krystof: I'm thinking 15:30:41 Krystof: I have no idea 15:31:36 oGMo: what about this? http://stackoverflow.com/questions/17225378/fake-global-lexical-variables-in-common-lisp 15:32:41 -!- przl [~przlrkt@62.217.45.197] has quit [Ping timeout: 245 seconds] 15:34:33 endou [~paul@188.165.96.106] has joined #lisp 15:34:53 i think the url explains it well enough :P 15:34:55 jbarker [~jbarker@18.189.122.95] has joined #lisp 15:35:12 Denommus: if you can't tell the difference, then saying the binding itself is one or the other doesn't really make sense 15:35:23 (or "what _about_ symbol-macros?") 15:35:46 Do any of the major lisp implementations store any of symbol-{value,function,plist,name,packages} outside of a single data record; for example in N hash tables? 15:36:18 Krystof: actually you can, (eval 'x) 15:36:22 Krystof: well, I thought lexic binding or dynamic binding was all about... binding 15:36:53 -!- scampbell [~scampbell@mail.scampbell.net] has quit [Remote host closed the connection] 15:38:32 -!- Sgeo [~quassel@ool-44c2df0c.dyn.optonline.net] has quit [Read error: Connection reset by peer] 15:38:37 aftershave [~textual@h-238-41.a336.priv.bahnhof.se] has joined #lisp 15:38:40 bhyde: symbol-value can be stored on the symbol object, as well as in thread-local storage 15:38:47 Denommus: Your remark addressed to me is clear: I understand that and I understand that that is the principal difference between a global variable and a lexical variable apart from the difference in scope 15:39:17 Poenikatu: what don't you understand? 15:39:40 yrk [~user@vtelinet-216-66-104-9.vermontel.net] has joined #lisp 15:39:57 -!- yrk [~user@vtelinet-216-66-104-9.vermontel.net] has quit [Changing host] 15:39:58 yrk [~user@pdpc/supporter/student/yrk] has joined #lisp 15:40:06 i don't think lexical variables don't have a symbol-value. 15:40:49 Denommus: just to be clear, would a "lexical global" from another language be like a toplevel static variable in C, global in scope, but only accessible to that lexical file? 15:42:02 reading the reddit link from that stackoverflow link, I can see why people say lispers have social problems 15:42:07 bhyde: (let ((a 3)) (symbol-value 'a)) will fail, if a is not declared special. A purely lexical binding does not set symbol-value 15:42:22 normanrichards [~textual@mobile-166-147-064-224.mycingular.net] has joined #lisp 15:42:57 White_Flame: depends on how the code is organized, doesn't it? JavaScript is global-global 15:43:05 -!- machindo [~machindo@cpc3-stav5-0-0-cust131.17-3.cable.virginm.net] has quit [Quit: machindo] 15:43:14 White_Flame: oh - i know :)  which is why I say that lexical variables don't have a symbol-value; they have a value sure, just no symbol-value 15:43:15 dlowe: hm? 15:43:55 There's just a lot of pointless bile in the discussion: http://www.reddit.com/r/lisp/comments/9pfs6/rondam_ramblings_global_variables_done_right/ 15:43:58 bhyde; ok. you started with "I don't think", so it actually said the opposite 15:44:48 dlowe: doubtless heh 15:44:53 -!- clintm [~clintm@001e52f0de2b.click-network.com] has quit [Quit: clintm] 15:46:19 i really really like dynamic scope though .. i wanted it before i knew what it was 15:46:21 White_Flame: a tentative prefix enables others to refine the statement, it doesn't negate it :) 15:46:27 (and before I knew CL) 15:46:36 -!- sellout-1 is now known as sellout 15:46:42 kliph [~user@unaffiliated/kliph] has joined #lisp 15:46:59 -!- davazp [~user@221.Red-79-153-99.dynamicIP.rima-tde.net] has quit [Ping timeout: 260 seconds] 15:47:18 yeah, Common Lisp's dynamic scope is the most useful implementation of both dynamic binding and global variables 15:47:21 oGMo: same here. I use it heavily for thread-local side-band information 15:47:25 much better than, say, how Emacs Lisp does 15:47:32 well, I'm going to lunch 15:47:58 White_Flame: yeah, pretty much any "contextual" information 15:47:59 bhyde: It's directly interpreted as "I think lexical symbols have a symbol-value" ;) 15:48:29 as opposed to, say, Erlang, where you're always passing gigantic state structures around 15:48:37 If I was writing an implementation from scratch these days I'd be tempted to almost entirely eliminate the contigous block of storage typically allocated for a symbol  so does anybody do that? 15:49:33 Poenikatu: global/local and dynamic/lexical are orthogonal concepts. You can have the four cases (global dynamic) (global lexical) (local dynamic) and (local lexical). 15:49:47 bhyde: the only thing I really see applicable for the chopping block is the plist 15:50:17 Poenikatu: and a function can refer to a local lexical variable, outside of the extent of the let for that bound that variable (as long as this function is a closure that enclosed that local lexical variable). 15:50:34 Just see my example above. This is what *f* does with y. 15:51:03 White_Flame: you mean the symbol-plist? i thought that was mostly faked nowadays anyway 15:51:21 yep 15:51:34 *bhyde* lovez his symbol-plists ;) 15:51:41 machindo [~machindo@host109-152-1-59.range109-152.btcentralplus.com] has joined #lisp 15:51:42 ogamita: Yes, I undestand, just, what a closure is and I now understand that a local definition of a global variable cannot be used in a closure. 15:51:47 bhyde: I've head about this kind of implementation strategy. I don't know if modern implementations do it. 15:51:48 *understand 15:51:49 clintm [~clintm@001e52f0de2b.click-network.com] has joined #lisp 15:52:12 local definition of a global variable? 15:52:38 symbol-name and symbol-package are pretty dead memory at runtime, nice to get them out of the caches 15:53:00 bhyde: definitely. And you can compress symbol-names . 15:53:20 ogamita: In a LET form, if one of the variable definitions uses the name of a global variable, then any initial value within the LET is unavailable outside the LET (provided that we're talking about a globally-defined variable) 15:53:28 i'd move 'em into a hash table that can be paged out 15:53:46 Poenikatu: wait what 15:53:56 Poenikatu: don't confuse value and binding! 15:54:23 (defvar *x* 42) (print (let ((*x* 1)) *x*)) 15:54:28 White_Flame: "(let ((a 3)) (symbol-value 'a)) will fail, if a is not declared special." is wrong: (setf (symbol-value 'a) 42) (let ((a 3)) (list a (symbol-value 'a))) --> (3 42) ; no failure. 15:54:40 ogamita: yes, true 15:54:53 Poenikatu: what kind of global variable? A global special or a global lexical? 15:54:59 -!- machindo [~machindo@host109-152-1-59.range109-152.btcentralplus.com] has quit [Client Quit] 15:55:28 Poenikatu: I've told you, global/local and dynamic=special/lexical are orthogonal concepts. 15:56:01 Poenikatu: extent is probably better described like this: (print (let ((x (make-some-object))) (declare (dynamic-extent x)) x)) => crash (or something undefined) 15:56:28 _then_ the _value_ is not available, provided the declare was honored 15:56:30 bhyde: another simple idea is to have the backing symbol structure contain the symbol-value and a pointer to a structure containing the rest of the data elsewhere 15:56:36 (it need not be) 15:57:05 The thing with dynamic-extent, is that it applies to the _value_ bound to the variable. 15:57:13 "described" = "demonstrated" 15:57:45 oGMo: I have just keyed your (defvar *x* 42) example into the REPR and it produces 1 as value and 1 on standard output 15:57:58 yes, extent is about the _value_, scope is about the _symbol_ (or at least close enough for this discussion) 15:58:06 White_Flame: yeah, lots of possiblities  so I wonder if anybody does any of these. being considerate of the cache has become so damn important recently 15:58:16 *REPL 15:58:17 Poenikatu: precisely; 1 was available outside 15:58:42 oGMo: Only because it was the value of the LET 15:58:49 the _value_ of *x* as bound by the LET was available outside the LET 15:58:52 Poenikatu: notice that fixnum values are probably not allocated on the heap, so a crash would be hard to exhibit. 15:59:03 Poenikatu: but if you try with (make-array 10000), it may occur. 15:59:05 anyhow, in a highly optimized compile a critical difference between symbols and lexical variables is that you don't need to allocate any space for the symbols outside of the extents when it is live 15:59:08 Poenikatu: ...right, so... 15:59:39 ogamita: You're talking at cross-purposes. I'm not talking about crashes or arrays. Try someone else :-) 15:59:47 sandbender1512 [~none@CPEc8fb26470b29-CMc8fb26470b26.cpe.net.cable.rogers.com] has joined #lisp 16:00:29 Poenikatu: you said "any initial value of the LET is unavailable outside the LET" which that example with 1 shows is incorrect 16:01:27 oGMo: Yes, I accept that exception. I was really referring to a function which is evaluated *after* the LET has completed 16:01:31 -!- paul0 [~paul0@187.112.207.120] has quit [Ping timeout: 245 seconds] 16:02:29 Poenikatu: print is a function 16:03:40 -!- hitecnologys [~hitecnolo@178.74.89.133] has quit [Read error: Operation timed out] 16:04:21 -!- joneshf-laptop [~joneshf@c-98-208-36-36.hsd1.ca.comcast.net] has quit [Ping timeout: 272 seconds] 16:04:46 Yes, I can see that my assertion was incorrect, but only because I was not thinking about the return value (what I have for many years called the "yield") lf a binding form. 16:04:57 *of 16:05:01 Poenikatu: you need to separate the symbol, *x* (which is an object itself), from the value it may be bound to at some time (e.g. 1 or 42 or some-other-object) .. and the difference between whether a binding exists (e.g., *x* to 1) and the continued existence of the _value_ it's bound to 16:05:43 oGMo: Yes, I agree, but I have no difficulty with that. 16:06:18 the scope of *x* is the scope of the binding; the extent of the value is at what point it may be referenced 16:06:40 _it_ meaning _the value_, not *x* 16:06:40 JuanitoJons [~jreynoso@177.224.106.173] has joined #lisp 16:08:08 Ok. Let me make a small comment. CL is the first language I have met where the identifier of a name exists at run-time. That is, identifiers (or, in CL parlance, symbols) exist at run-time 16:08:42 And when I use the word "name", I mean, in CL parlance, variable 16:08:47 senj [~senj@unaffiliated/senj] has joined #lisp 16:08:47 yup 16:08:51 it's hardly rare 16:09:10 Lexical variables don't have names "at runtime" (modulo debugging info). 16:09:12 jsnell: That depends on your experience 16:10:17 jsnell: As an ex-mainframe programmer, identifiers/symbols which existed at run-time simply did not happen. And at that time, C++, Java, Python, etc had not been invented 16:10:36 paul0 [~paul0@187.112.207.120] has joined #lisp 16:11:08 Lisp invented them pretty early, though 16:11:20 jsnell: However, I digress. I am trying to LEARN CL, rather than debate it. I'm trying to understand EXTENT as opposed to SCOPE. 16:11:35 anything with a dynamic linker, including C, will have the concept of dynamic symbol lookup 16:12:00 jsnell: That's at link time, not run time 16:12:03 Poenikatu: extent is the lifetime of a value. scope is the accessability of a variable 16:12:04 yes but that's a lot less in your face heh 16:12:45 Poenikatu: sortof, you can always use dl* functions to link at runtime and look up the value of a symbol 16:12:46 Poenikatu: so haven't met dynamic linking in other languages either, then? :-P 16:13:18 but that impacts the definition of the language less (but not totally, i.e. extern) 16:14:10 dlowe: jsnell: I was reared, in computer terms, on assembler and COBOL and learned Algol 68. I first heard of Lisp in 1988 when I was reading for my doctorate; but now, I am *determined* to learn CL 16:15:31 Anyway, my past experience is irrelevant here except insofar as it conditioned me. dlowe: Your remark about the difference in extent and scope is useful 16:15:57 Extent isn't really crucial to grasping the nature of CL: you could easily pass it over and not miss it. 16:16:01 It's just an optimisation. 16:17:05 dlowe: I've just checked with Wiktionary and it is as I thought: accessibility 16:17:14 Poenikatu: Say, for instance, that in C, you have a global variable containing a (int *), and within a function, you set it to a variable declared within that function. The result is undefined because even though the variable has global *scope*, the value has dynamic *extent* 16:18:44 In lisp, we also have dynamic and lexical *binding* 16:19:00 dlowe: Yes, I agree with your example 16:19:52 Where dynamic refers to a state dependent on the current call stack, and lexical refers to a state dependent on placement within the source. 16:19:53 dlowe: Please persevere with me: I realise that this is difficult for me. 16:21:22 dlowe: Unfortunately, I regard a source as simply the static definition of a program which is converted to a dynamic image; but maybe I am using static and dynamic differently from the CL usage of dynamic 16:21:38 yes. dynamic isn't the opposite of static in this context 16:21:46 -!- ndrei [~avo@83.142.149.227] has quit [Read error: Operation timed out] 16:23:41 One of the hurdles in lisp is 50 years of linguistic drift regarding basic programming concepts. 16:23:49 In Seible's PCL, he makes the point that the star naming convention is important due to the difference between lexical and dynamic binding 16:24:35 Well, the thing being argued about just recently is that in common lisp, dynamic binding and dynamic scope go together in a package called "special" 16:24:51 I quote "it'd be bad news if you used a name for what you thought was a lexical variable and that variable happened to be globally special." 16:25:25 I just don't see why 16:25:27 generally 16:25:50 -!- jbarker [~jbarker@18.189.122.95] has quit [Remote host closed the connection] 16:26:03 The binding form for lexical and dynamic variables is the same, but the semantics are not. 16:26:05 Poenikatu: suppose the global was "standard-output" and you didn't realize it was a special, and (let ((standard-output ...)) ... 16:26:05 -!- clintm [~clintm@001e52f0de2b.click-network.com] has quit [Quit: clintm] 16:26:12 So it is easy to become confused and do the wrong thing. 16:26:16 jbarker [~jbarker@18.189.122.95] has joined #lisp 16:26:27 Poenikatu: then anything referring to it to, say, print, would possibly write over your file or error because it wasn't a stream etc 16:26:30 -!- mvilleneuve [~mvilleneu@LLagny-156-36-4-214.w80-14.abo.wanadoo.fr] has quit [Quit: This computer has gone to sleep] 16:27:11 oGMo: When the binding form was being executed, the value that standard-output was globally bound to would be shadowed by the local definition, right? 16:27:12 przl [~przlrkt@62.217.45.197] has joined #lisp 16:27:13 it's "good practice" so you don't get bitten rather than it will screw over your code always 16:27:59 Poenikatu: right, but since the scope is indefinite, anything you call would see your new binding 16:28:20 -!- zacharias [~aw@unaffiliated/zacharias] has quit [Quit: Bye!] 16:28:26 -!- shridhar [Shridhar@nat/redhat/x-qljxmccvhuexgnfh] has quit [Quit: shridhar] 16:28:27 this is highly useful, but good practice is to use earmuffs so it's obvious 16:28:38 mathrick [~mathrick@94.144.63.231] has joined #lisp 16:29:03 oGMo: The scope of what? 16:29:21 Poenikatu: the scope of the binding of standard-output in the example above 16:29:48 oGMo: Yes, but which binding? The global one or the other in the binding-form? 16:29:50 shridhar [Shridhar@nat/redhat/x-ybmvjzjirgatqdwk] has joined #lisp 16:30:37 if you haven't, try (defvar *x* 'foo) (defun print-x () (print *x*)) (defun let-x (x) (let ((*x* x)) (print-x))) (let-x 'bar) 16:30:37 -!- jbarker [~jbarker@18.189.122.95] has quit [Ping timeout: 250 seconds] 16:32:53 oGMo: I get BAR as both value and side-effect 16:32:54 this is all about scope of course, extent is really peripheral 16:32:59 Poenikatu: right 16:33:21 print returns what it prints 16:33:28 oGMo: Yes, I understand the scope aspect. It's extent that I find elusive 16:33:35 -!- ustunozgur [~ustunozgu@85.110.19.2] has quit [Remote host closed the connection] 16:33:37 but, do you see how one function changes the binding and another function sees the change? 16:33:56 Poenikatu: well extent is utterly tangential there 16:34:09 ustunozgur [~ustunozgu@li283-143.members.linode.com] has joined #lisp 16:34:35 oGMo: Bear with me while I put your one-liner into properly indented CL forms. 16:34:55 well don't bother because it doesn't really demonstrate extent 16:35:08 only indefinite scope 16:35:24 mech422 [~steve@ip68-2-159-8.ph.ph.cox.net] has joined #lisp 16:35:34 really in CL there is just "indefinite extent" (an object will live until it's no longer referenced) or "dynamic extent" (it lives on the stack until that frame goes away) 16:35:50 has nothing to do with variables 16:36:29 variables are just a way (far from the only way) to reference an object 16:36:59 Twipply [~Twipply3@cpc17-mapp10-2-0-cust179.12-4.cable.virginm.net] has joined #lisp 16:37:00 -!- vaporatorius is now known as Vaporatorius 16:37:39 Poenikatu: int* foo() { int c = 42; return &c; } would be bad, right? 16:37:43 Well, lifetime and scope are not the same thing 16:37:54 ggole: i did not mention scope 16:37:57 i said extent 16:38:00 and extent is not scope 16:38:21 You said "indefinite scope" 16:38:22 -!- normanrichards [~textual@mobile-166-147-064-224.mycingular.net] has quit [Read error: Connection reset by peer] 16:38:28 percopal [~percopal@63.65.76.38] has joined #lisp 16:38:32 i said that above 16:39:11 oGMo: Yes, I understand your example with print-x and let-x. That simply shows the shadowing of the value of a global variable 16:39:19 Poenikatu: with the C example, 42 has dynamic _extent_, i.e. it's stack allocated, and trying to use it outside its frame is bad 16:39:21 But there's no such thing as indefinite scope 16:39:27 Lifetimes can be indefinite: scope cannot be 16:39:29 ggole: you are wrong 16:39:50 oGMo: Not bad, just impossible :-) 16:40:00 -!- innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has quit [Quit: innertracks] 16:40:05 Poenikatu: just think of "dynamic extent" as "stack allocated" and "indefinite extent" as "heap allocated" and you should be fine for most purposes 16:40:21 Hi! I'm just starting a lisp tutorial that has me doing stuff like (+ 1 2)...I _thought_ that was just creating a list, but thats (list 1 2 3)..so what do the outer () do ? 16:40:32 -!- nugnuts [~nugnuts@pool-74-105-21-221.nwrknj.fios.verizon.net] has quit [Quit: Leaving] 16:40:39 oGMo: Fine, that's just fine. I'm used to that from Algol 68 16:40:57 Poenikatu: well if you understand that, you pretty much understand the difference between scope and extent 16:41:08 -!- cross [~cross@spitfire.i.gajendra.net] has quit [Quit: leaving] 16:41:41 Poenikatu: the terms in lisp are kinda weird because they have a long history and don't always match up with "newer" terms 16:42:09 oGMo: what's an example of indefinite scope in CL? 16:42:10 mech422: the reader sees ( and reads the list (+ 1 2) then it gets eval'd 16:42:13 -!- kpreid [~kpreid@50-196-148-101-static.hfc.comcastbusiness.net] has quit [Quit: Quitting] 16:42:14 cross [~cross@spitfire.i.gajendra.net] has joined #lisp 16:42:21 ggole: (defvar *x* 1) 16:42:24 *x* has indefinite scope 16:42:42 -!- przl [~przlrkt@62.217.45.197] has quit [Ping timeout: 260 seconds] 16:42:42 oGMo: Thank you. I am considerably reassured. Algol 68 has had LOCAL values and GLOBAL values (ie , stack vs heap allocation) since 1967.I shall now leave IRC and continue my studies of CL via PCL 16:42:59 -!- Poenikatu [~kvirc@pdpc/supporter/bronze/poenikatu] has left #lisp 16:43:03 That's not indefinite, that's global 16:43:10 Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has joined #lisp 16:43:12 innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has joined #lisp 16:43:19 oGMO: so do the () in (hello-world) have any meaning outside of parser fodder ? 16:43:21 -!- innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has quit [Remote host closed the connection] 16:43:25 indefinite means "not definite", not "unending" 16:44:03 nugnuts [~nugnuts@pool-74-105-21-221.nwrknj.fios.verizon.net] has joined #lisp 16:44:12 now you're just making up your own definitions 16:44:16 http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_i.htm#indefinite_scope 16:45:04 if you look up "global variable" and follow the links, you end up at "indefinite scope" after a few hops 16:45:31 -!- cory786 [~cory@CK-Laptop.wifi.utoledo.edu] has quit [Ping timeout: 272 seconds] 16:45:49 -!- KaiQ [~localhost@p578FC908.dip0.t-ipconnect.de] has quit [Remote host closed the connection] 16:46:07 mech422: try (print '(hello world)) 16:46:08 I see: the technical definition in the Hyperspec isn't the usual definition 16:46:27 oGMo: ok - just 1 quote ? 16:46:48 mech422: yes 16:47:23 ggole: also wrong, one definition of "indefinite" is "without exact limits" 16:47:26 ndrei [~avo@83.142.149.227] has joined #lisp 16:47:50 mrSpec [~Spec@unaffiliated/mrspec] has joined #lisp 16:47:55 cory786 [~cory@CK-Laptop.wifi.utoledo.edu] has joined #lisp 16:47:55 Global variables have precisely defined scope. 16:48:11 -!- arenz [~arenz@37.17.234.1] has quit [Read error: Operation timed out] 16:48:44 oGMo: it just printed hello-world twice (didn't run it...) 16:49:20 oGMo: are the outer parens just for grouping args and stuff ... like the parens in foo(bar, baz) ? 16:50:04 err..like the parens in foo(bar, baz) in say 'C' ? 16:50:41 they don't really _do_ anything, they just indicate the parms to a function ? 16:50:45 mech422: no, they cause a list to be read 16:51:31 ahh.. ok... so closer to say '[ 1,2,3]' in Python? 16:51:31 but if you are typing things into the REPL, they are Read, Evaled, and Printed in a Loop ;) 16:51:51 -!- ndrei [~avo@83.142.149.227] has quit [Ping timeout: 260 seconds] 16:51:53 clhs 3.1.2.1.2 16:51:54 Conses as Forms: http://www.lispworks.com/reference/HyperSpec/Body/03_abab.htm 16:51:55 mech422: if in python functions were called by saying [print, 1, 2, 3] then yes 16:51:57 mech422: see: ^^ 16:52:14 mech422: there is no parenthesis in lisp sources. 16:52:39 ok..I'll go google that.. Thanks everyone! 16:52:42 mech422: imagine that you said [print, 1, 2, 3] in python, but if you simply wanted a list, you'd say [print, [quote, [1, 2]]] 16:52:56 mech422: to answer your question succintely, () means apply the operator (call the function when the operator is a function). 16:53:03 in lisp you say (print (quote (1 2))) or more succinctly (print '(1 2)) 16:53:31 oh ok 16:53:31 ndrei [~avo@83.142.149.227] has joined #lisp 16:53:59 Quote isn't like the python [1, 2], though. 16:54:06 mech422: in C, parentheses have _sometimes_ the same meaning than in lisp. 16:54:16 It returns the actual list (or other data structure) that is constructed by the reader. 16:54:20 mech422: compare: foo; with foo(); The arguments have nothing to do with it. 16:54:43 compare: int a,b,c; foo,a,b,c; /*vs.*/ foo(a,b,c); 16:54:47 yeah - I guess I should have said that indicate function application... 16:54:53 () means call the operator. 16:54:54 -!- senj [~senj@unaffiliated/senj] has quit [Quit: Sleep Now] 16:55:30 senj [~senj@unaffiliated/senj] has joined #lisp 16:55:38 cool - I think I got it... 16:55:46 Davidbrcz [~david@140.142.25.93.rev.sfr.net] has joined #lisp 16:55:51 clhs 3.1 16:55:51 Evaluation: http://www.lispworks.com/reference/HyperSpec/Body/03_a.htm 16:55:59 reading this whole section should be instructive. 16:56:27 hehe - I'm on like page 2 of tutorial (hello-world) but I'll give it a shot :-) 16:56:41 ustunozg_ [~ustunozgu@85.110.19.2] has joined #lisp 16:56:45 mech422: notice then that in lisp, there's no optional parentheses. All parentheses are needed, therefore there is the minimum count of parentheses. 16:57:00 mech422: oh, keep it for later then, go on with the tutorial first. 16:57:05 -!- ustunozgur [~ustunozgu@li283-143.members.linode.com] has quit [Read error: Connection reset by peer] 16:57:28 LiamH [~healy@pdp8.nrl.navy.mil] has joined #lisp 17:00:25 yeah - this is looking a bit dense for my first day :-) 17:01:45 Thanks again..back to the tutorial :-) 17:01:51 if Lisp lists and symbols are very new to you, a good book which begins slowly with a good intruduction is Common Lisp A Gentle Introduction To Symbolic Computation 17:02:37 I was going thru Practical Common Lisp from http://www.gigamonkeys.com/book/ 17:02:53 that's a nice book too 17:02:56 I'll check out the other one as well 17:03:29 iirc PCL doesn't get into the mechanics of lisp right away, more of a "type this and you get this" type thing 17:03:44 I agree, they're quite different in their approach 17:04:00 yeah... that was my confusion. I typed this, but then didn't understand that :-P 17:04:09 PCL is especially good to start with if you are already familiar with programming also 17:04:20 if you want the other, "gentle introduction" is the way to go 17:04:26 I think its basically () in python are tuple _constructors_ so I thought () in lisp was a list constructor 17:04:36 mech422: sortof-but-not-really 17:04:54 mech422: it's rather complex and there are a few layers involved 17:05:16 The () in python function calls aren't tuple syntax, though 17:05:21 there are many ways to create lists in lisp of course, but the most basics to look at would be: quote, cons, list, list* 17:05:30 clintm [~clintm@174-24-221-146.tukw.qwest.net] has joined #lisp 17:05:34 the reader sees ( and says "let's read a list!", but there is more to it and various implications etc 17:06:22 e.g., (defun foo () '(1 2)) returns _the same list_ every time, not a new list 17:06:57 that might also be a tricky aspect of lisp at first, the different stages like read-time/compile-time/runtime 17:07:06 Because (1 2) is read only once with that defun. 17:07:19 phadthai: it is one of hte most-glossed-over and least-understood bits of CL imho 17:07:19 phadthai: ahh - CMU has that book available online - cheers! 17:07:21 -!- Ragnaroek [~chatzilla@195.180.2.195] has quit [Ping timeout: 245 seconds] 17:07:48 ogamita: yes and more specifically, it gets _read_ _once_, and the reader is making the list 17:07:54 mech422: oh is it? nice! 17:08:12 oh wow, i'm going to glance through it for old times sake :) 17:08:28 oGMo: http://www.cs.cmu.edu/~dst/LispBook/book.pdf 17:08:35 yeah 17:08:36 see if this helps, mech422 (eval '(+ 10 20)) 17:09:10 that is what lisp reader does, basically. it reads and evaluates lists that represent lisp code 17:10:04 -!- ndrei [~avo@83.142.149.227] has quit [Ping timeout: 245 seconds] 17:10:26 ok... so thats "apply the eval function to the list that results from applying the '+' operator to 10 and 20 " ? 17:10:34 mech422: note the book is probably also rather dated, but 17:11:03 oGMo: thats ok - at the 'hello world' level, it shouldn't matter :-) 17:11:14 mech422: yeah it's still a good intro 17:11:14 kobain [~sambio@unaffiliated/kobain] has joined #lisp 17:11:45 -!- kondratyev [~kondratye@gw.mat.uc.pt] has quit [Quit: Konversation terminated!] 17:11:57 ndrei [~avo@83.142.149.227] has joined #lisp 17:12:04 -!- cory786 [~cory@CK-Laptop.wifi.utoledo.edu] has quit [Quit: Leaving] 17:12:09 Another interesting snippet is (eval (list '+ 10 20)) 17:12:31 It does the same thing, but the list is constructed by the code, not by the reader. 17:12:37 jbarker [~jbarker@18.189.79.180] has joined #lisp 17:12:39 mech422: apply the eval function to the list that results from applying (quote '+ 10 20) 17:12:55 or, apply the eval function to the literal list (+ 10 20) 17:13:16 the single quotes look odd coming from languages that always balance them..what does a single quote do ? 17:13:30 it's a macro for (quote ...) 17:13:50 It returns the data structure constructed by the reader 17:13:53 '(1 2 3) <=> (quote (1 2 3)) 17:14:03 so is "foo bar" a 'shortcut' for (quote foo bar) ? 17:14:18 No, that's a string literal. 17:14:18 no, that's a string 17:14:39 blah..I'd best just go RTFM more :-) 17:14:48 thanks guys, I appreciate the help! 17:14:53 Code_Man` [~Code_Man@2a02:1205:505b:1ad0:223:54ff:fe38:82c2] has joined #lisp 17:14:54 quote only takes 1 argument. It's a pass-through that means it doesn't get evaluated, but basically the literal text of the source code becomes a value 17:15:09 (after going through the reader, etc) 17:16:19 -!- pillton [~user@202-173-162-151.dyn.iinet.net.au] has quit [Ping timeout: 256 seconds] 17:16:57 hmm..I need to read more, I'm not sure how that differs from a literal? neither is evaluated right ? 17:17:28 I just have too many noob questions...I'll go read more and hopefully come back with some more interesting questions ;-) 17:17:29 i would read the book, it's a lot less random-facty 17:17:34 mech422: "foo bar" is a shortcut for (make-array 7 :element-type 'character :initial-contents '(#\f #\o #\o #\space #\b #\a #\r)) 17:17:37 yeah - I think thats a plan 17:17:43 hehe 17:17:57 mech422: well not exactly, "foo bar" is a shortcut for #.(make-array 7 :element-type 'character :initial-contents '(#\f #\o #\o #\space #\b #\a #\r)) 17:18:07 #. indicates that it occurs at read time. 17:18:16 err...yeah...need more coffee to even try and parse that :-) 17:18:41 anyway thanks for all your patience and help, I'll go hit the docs... 17:18:46 #\f is a char literal. everythin else should be more or less self-explanatory 17:19:01 -!- oleo [~oleo@xdsl-78-35-187-180.netcologne.de] has quit [Ping timeout: 245 seconds] 17:19:04 *mech422* tucks tail between legs and runs for door 17:19:36 -!- mech422 [~steve@ip68-2-159-8.ph.ph.cox.net] has left #lisp 17:19:47 oleo [~oleo@xdsl-78-35-176-15.netcologne.de] has joined #lisp 17:19:51 cory786 [~cory@CK-Laptop.wifi.utoledo.edu] has joined #lisp 17:25:10 -!- jtza8 [~jtza8@105-237-80-164.access.mtnbusiness.co.za] has quit [Ping timeout: 260 seconds] 17:25:36 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 245 seconds] 17:25:51 normanrichards [~textual@70.114.215.220] has joined #lisp 17:27:19 marcoecc [~user@ec2-184-73-245-68.compute-1.amazonaws.com] has joined #lisp 17:27:46 przl [~przlrkt@p5792266A.dip0.t-ipconnect.de] has joined #lisp 17:28:14 -!- przl [~przlrkt@p5792266A.dip0.t-ipconnect.de] has quit [Client Quit] 17:28:44 [SLB]` [~slabua@unaffiliated/slabua] has joined #lisp 17:29:10 -!- cory786 [~cory@CK-Laptop.wifi.utoledo.edu] has quit [Quit: Leaving] 17:29:17 urandom__ [~user@ip-88-153-233-157.unitymediagroup.de] has joined #lisp 17:30:33 rszeno [~rszeno@79.114.29.195] has joined #lisp 17:31:24 -!- [SLB] [~slabua@unaffiliated/slabua] has quit [Ping timeout: 252 seconds] 17:31:24 -!- [SLB]` is now known as [SLB] 17:32:12 machindo [~machindo@host109-152-1-59.range109-152.btcentralplus.com] has joined #lisp 17:35:53 -!- ASau` is now known as ASau 17:38:32 -!- Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/] 17:39:01 -!- ogamita [~t@tru75-h02-31-38-72-69.dsl.sta.abo.bbox.fr] has quit [Ping timeout: 252 seconds] 17:39:17 sheilong [~sabayonus@unaffiliated/sheilong] has joined #lisp 17:41:02 -!- shridhar [Shridhar@nat/redhat/x-ybmvjzjirgatqdwk] has quit [Ping timeout: 260 seconds] 17:42:38 -!- mrSpec [~Spec@unaffiliated/mrspec] has quit [Ping timeout: 246 seconds] 17:46:32 yasha [~yasha@unaffiliated/yasha] has joined #lisp 17:47:32 -!- amaron [~amaron@cable-178-148-241-98.dynamic.sbb.rs] has quit [Ping timeout: 246 seconds] 17:51:18 -!- marcoecc [~user@ec2-184-73-245-68.compute-1.amazonaws.com] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 17:52:20 endou [~paul@188.165.96.106] has joined #lisp 17:52:49 -!- jbarker [~jbarker@18.189.79.180] has quit [Remote host closed the connection] 17:53:25 marcoecc [~user@ec2-184-73-245-68.compute-1.amazonaws.com] has joined #lisp 17:56:30 -!- Okasu [~1@unaffiliated/okasu] has quit [Quit: Lost terminal] 17:58:16 -!- senj [~senj@unaffiliated/senj] has quit [Quit: Sleep Now] 17:58:41 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 265 seconds] 17:58:45 senj [~senj@unaffiliated/senj] has joined #lisp 17:59:56 -!- yrk [~user@pdpc/supporter/student/yrk] has quit [Ping timeout: 253 seconds] 18:00:58 jbarker [~jbarker@18.189.122.95] has joined #lisp 18:03:54 -!- cmpitg [~cmpitg@unaffiliated/cmpitg] has quit [Ping timeout: 260 seconds] 18:04:28 -!- jbarker [~jbarker@18.189.122.95] has quit [Remote host closed the connection] 18:06:47 -!- Davidbrcz [~david@140.142.25.93.rev.sfr.net] has quit [Ping timeout: 246 seconds] 18:07:54 dmiles_afk [~dmiles@c-67-189-17-39.hsd1.or.comcast.net] has joined #lisp 18:08:08 Mon_Ouie [~Mon_Ouie@subtle/user/MonOuie] has joined #lisp 18:13:04 -!- aftershave [~textual@h-238-41.a336.priv.bahnhof.se] has quit [Quit: Textual IRC Client: www.textualapp.com] 18:13:13 Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has joined #lisp 18:22:06 drewc [~drewc@S0106c8d71945c789.vn.shawcable.net] has joined #lisp 18:23:43 zacharias [~aw@unaffiliated/zacharias] has joined #lisp 18:27:05 developernotes [~developer@173-29-199-75.client.mchsi.com] has joined #lisp 18:29:23 -!- Mon_Ouie [~Mon_Ouie@subtle/user/MonOuie] has quit [Read error: Operation timed out] 18:29:34 alexherbo2 [~alexherbo@APlessis-Bouchard-154-1-74-175.w90-35.abo.wanadoo.fr] has joined #lisp 18:30:38 -!- clintm [~clintm@174-24-221-146.tukw.qwest.net] has quit [Read error: Connection reset by peer] 18:32:11 -!- Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has quit [Ping timeout: 260 seconds] 18:32:59 -!- Twipply [~Twipply3@cpc17-mapp10-2-0-cust179.12-4.cable.virginm.net] has quit [Quit: Leaving] 18:33:02 -!- ggole [~ggole@124-169-207-29.dyn.iinet.net.au] has quit [] 18:33:21 Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has joined #lisp 18:33:34 -!- developernotes [~developer@173-29-199-75.client.mchsi.com] has quit [] 18:33:48 developernotes [~developer@173-29-199-75.client.mchsi.com] has joined #lisp 18:34:20 - 18:36:01 -!- sellout [~Adium@c-67-176-62-45.hsd1.co.comcast.net] has quit [Quit: Leaving.] 18:39:20 -!- zickzackv [~faot@port-92-198-30-130.static.qsc.de] has quit [Ping timeout: 252 seconds] 18:41:40 sellout- [~Adium@66.185.108.211] has joined #lisp 18:43:18 davazp [~user@221.Red-79-153-99.dynamicIP.rima-tde.net] has joined #lisp 18:48:18 yrk [~user@c-76-24-229-126.hsd1.nh.comcast.net] has joined #lisp 18:48:18 kcj [~casey@unaffiliated/kcj] has joined #lisp 18:48:33 -!- yrk [~user@c-76-24-229-126.hsd1.nh.comcast.net] has quit [Changing host] 18:48:33 yrk [~user@pdpc/supporter/student/yrk] has joined #lisp 18:49:08 -!- normanrichards [~textual@70.114.215.220] has quit [] 18:49:45 -!- ustunozg_ [~ustunozgu@85.110.19.2] has quit [Read error: Connection reset by peer] 18:50:02 ustunozgur [~ustunozgu@85.110.19.2] has joined #lisp 18:51:54 sdemarre [~serge@25.65-64-87.adsl-dyn.isp.belgacom.be] has joined #lisp 18:54:06 -!- machindo [~machindo@host109-152-1-59.range109-152.btcentralplus.com] has quit [Quit: machindo] 18:54:56 endou [~paul@188.165.96.106] has joined #lisp 18:56:01 -!- slyrus [~chatzilla@107.201.5.56] has quit [Ping timeout: 245 seconds] 19:00:25 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 272 seconds] 19:04:54 Alfr [~Unknown@g225179151.adsl.alicedsl.de] has joined #lisp 19:10:57 edgar-rft [~GOD@HSI-KBW-109-193-013-113.hsi7.kabel-badenwuerttemberg.de] has joined #lisp 19:12:33 -!- Harag [~Thunderbi@105.184.33.8] has quit [Ping timeout: 252 seconds] 19:15:07 -!- zacharias [~aw@unaffiliated/zacharias] has quit [Quit: Bye!] 19:15:20 jbarker [~jbarker@18.189.122.95] has joined #lisp 19:15:44 klltkr [~klltkr@unaffiliated/klltkr] has joined #lisp 19:16:25 -!- davazp [~user@221.Red-79-153-99.dynamicIP.rima-tde.net] has quit [Remote host closed the connection] 19:18:01 Ragnaroek [~chatzilla@p549C5BA9.dip0.t-ipconnect.de] has joined #lisp 19:20:03 -!- jbarker [~jbarker@18.189.122.95] has quit [Ping timeout: 272 seconds] 19:20:33 aftershave_ [~textual@h-238-41.a336.priv.bahnhof.se] has joined #lisp 19:22:47 DalekBaldwin [403abc12@gateway/web/freenode/ip.64.58.188.18] has joined #lisp 19:23:36 innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has joined #lisp 19:24:40 machindo [~machindo@cpc3-stav5-0-0-cust131.17-3.cable.virginm.net] has joined #lisp 19:25:47 jbarker [~jbarker@18.189.122.95] has joined #lisp 19:26:03 -!- impulse [~impulse@65.92.154.85] has quit [Quit: leaving] 19:29:43 ls 19:29:58 -!- JuanitoJons [~jreynoso@177.224.106.173] has quit [Quit: Saliendo] 19:31:24 cory786 [~cory@CK-Laptop.wifi.utoledo.edu] has joined #lisp 19:32:37 kaygun [~kaygun@85.96.86.211] has joined #lisp 19:34:29 -!- kliph [~user@unaffiliated/kliph] has quit [Ping timeout: 248 seconds] 19:35:19 ltbarcly [~textual@216.113.168.148] has joined #lisp 19:35:46 -!- jbarker [~jbarker@18.189.122.95] has quit [Remote host closed the connection] 19:36:18 -!- ndrei [~avo@83.142.149.227] has quit [Ping timeout: 260 seconds] 19:39:11 -!- innertracks [~Thunderbi@c-50-159-9-43.hsd1.wa.comcast.net] has quit [Quit: innertracks] 19:39:23 -!- DalekBaldwin [403abc12@gateway/web/freenode/ip.64.58.188.18] has quit [Ping timeout: 245 seconds] 19:42:49 -!- cory786 [~cory@CK-Laptop.wifi.utoledo.edu] has quit [Read error: Operation timed out] 19:44:01 ndrei [~avo@83.142.149.227] has joined #lisp 19:45:41 -!- bobbysmith007 [~russ@firewall-dcd1.acceleration.net] has quit [Read error: Connection reset by peer] 19:45:42 -!- gigetoo [~gigetoo@c83-250-61-4.bredband.comhem.se] has quit [Ping timeout: 245 seconds] 19:45:54 -!- kaygun [~kaygun@85.96.86.211] has quit [Ping timeout: 245 seconds] 19:50:03 gigetoo [~gigetoo@c83-250-61-4.bredband.comhem.se] has joined #lisp 19:52:47 Vivitron [~Vivitron@c-50-172-44-193.hsd1.il.comcast.net] has joined #lisp 19:54:22 endou [~paul@188.165.96.106] has joined #lisp 19:54:57 Codynyx [~cody@c-75-72-223-59.hsd1.mn.comcast.net] has joined #lisp 19:56:04 ThePhoer` [~user@206.191.69.65] has joined #lisp 19:56:51 -!- Vivitron [~Vivitron@c-50-172-44-193.hsd1.il.comcast.net] has quit [Ping timeout: 245 seconds] 19:56:53 -!- ThePhoer` is now known as ThePhoeron` 19:57:41 -!- ThePhoeron [~user@206.191.69.65] has quit [Ping timeout: 245 seconds] 19:58:25 -!- ThePhoeron` is now known as ThePhoeron 19:59:27 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 260 seconds] 20:00:44 vkrest [~vkrest@mpk-nat-7.thefacebook.com] has joined #lisp 20:01:31 -!- jewel [~jewel@105-236-88-77.access.mtnbusiness.co.za] has quit [Ping timeout: 252 seconds] 20:05:37 -!- ozzloy_ is now known as ozzloy 20:06:01 -!- ozzloy [~ozzloy@ozzloy.lifeafterking.org] has quit [Changing host] 20:06:01 ozzloy [~ozzloy@unaffiliated/ozzloy] has joined #lisp 20:07:40 cabaire [~nobody@p5DCD25DC.dip0.t-ipconnect.de] has joined #lisp 20:10:44 hiroakip [~hiroaki@77-20-51-63-dynip.superkabel.de] has joined #lisp 20:16:04 zacharias [~aw@unaffiliated/zacharias] has joined #lisp 20:18:55 -!- ustunozgur [~ustunozgu@85.110.19.2] has quit [Remote host closed the connection] 20:21:33 kaygun [~kaygun@85.96.86.211] has joined #lisp 20:22:53 levenson [~user@broadband-95-84-129-236.nationalcablenetworks.ru] has joined #lisp 20:23:35 bgs100 [~nitrogen@unaffiliated/bgs100] has joined #lisp 20:23:56 -!- ndrei [~avo@83.142.149.227] has quit [Ping timeout: 245 seconds] 20:23:56 -!- moto9 [~ml@p3E9E1883.dip0.t-ipconnect.de] has quit [Read error: Operation timed out] 20:24:01 -!- levenson [~user@broadband-95-84-129-236.nationalcablenetworks.ru] has quit [Client Quit] 20:24:09 joneshf-laptop [~joneshf@128.120.119.169] has joined #lisp 20:26:10 -!- sohail_ [~sohail@75-119-248-79.dsl.teksavvy.com] has quit [Quit: This computer has gone to sleep] 20:27:38 -!- Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has quit [Ping timeout: 260 seconds] 20:27:56 stassats [~stassats@wikipedia/stassats] has joined #lisp 20:28:06 DalekBaldwin [403abc12@gateway/web/freenode/ip.64.58.188.18] has joined #lisp 20:30:39 sohail_ [~sohail@75-119-248-79.dsl.teksavvy.com] has joined #lisp 20:31:21 HG` [~HG@2.30.135.68] has joined #lisp 20:33:59 Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has joined #lisp 20:35:11 slyrus [~chatzilla@70-90-161-58-ca.sfba.hfc.comcastbusiness.net] has joined #lisp 20:39:24 -!- machindo [~machindo@cpc3-stav5-0-0-cust131.17-3.cable.virginm.net] has quit [Quit: machindo] 20:39:34 moto9 [~ml@p3E9E1CB7.dip0.t-ipconnect.de] has joined #lisp 20:40:05 -!- Zhivago [~lys@unaffiliated/zhivago] has quit [Ping timeout: 246 seconds] 20:41:22 I want a macro to assemble a lambda expression from code fragments in its body, and apply the lambda to generate part of its expansion. can I do this without using eval? 20:41:48 if you have a particular aversion to EVAL, there's always COMPILE and COERCE 20:42:15 but they possess all the evil parts of EVAL 20:43:24 DalekBaldwin: why are you trying to do that, though? Macros usually don't execute "runtime" code during their expansion process 20:43:50 you can always expand into MACROLET, but that wouldn't necessary make the code any better/clearer 20:45:07 -!- sohail_ [~sohail@75-119-248-79.dsl.teksavvy.com] has quit [Quit: This computer has gone to sleep] 20:46:39 jbarker [~jbarker@18.189.122.95] has joined #lisp 20:47:28 HG`` [~HG@2.30.131.104] has joined #lisp 20:47:29 it might be something I can accomplish with pattern matching or a symbol-macrolet but I'm not yet sure how general I want it to be 20:47:42 right now I have helper functions like this: (defun process-rules (&rest rules) (loop for rule in rules collect (cons (car rule) (eval `(lambda (name) ,(cadr rule)))))) 20:48:55 -!- HG` [~HG@2.30.135.68] has quit [Ping timeout: 260 seconds] 20:48:56 -!- jpfuentes2 [~jacques@pool-173-53-102-185.rcmdva.fios.verizon.net] has quit [Ping timeout: 245 seconds] 20:49:09 so the macro body can sort of anaphorically use 'name to specify some transformation logic 20:50:36 -!- ltbarcly [~textual@216.113.168.148] has quit [Quit: Computer has gone to sleep.] 20:50:39 jpfuentes2 [~jacques@pool-173-53-102-185.rcmdva.fios.verizon.net] has joined #lisp 20:51:04 -!- jbarker [~jbarker@18.189.122.95] has quit [Ping timeout: 250 seconds] 20:51:53 that generates something like ((:SOMETHING . #)) 20:52:29 -!- ck [~ck@dslb-094-219-236-112.pools.arcor-ip.net] has quit [Read error: Operation timed out] 20:53:02 but if I add another quotation level I can write something like (defun process-rules (&rest rules) ``(,,@(loop for rule in rules collect ``(,',(car rule) ,(lambda (name) ,(cadr rule)))))) 20:53:55 which generates output like `((:SOMETHING ,(LAMBDA (NAME) (DO-SOMETHING-WITH NAME)))) which makes me think I can embed it in a larger macro expansion 20:55:05 endou [~paul@188.165.96.106] has joined #lisp 20:55:51 <_death> why not have the lambda forms in the expansion 20:56:07 -!- Code_Man` [~Code_Man@2a02:1205:505b:1ad0:223:54ff:fe38:82c2] has quit [Remote host closed the connection] 20:57:04 they have no use at runtime 20:57:19 -!- HG`` [~HG@2.30.131.104] has quit [Ping timeout: 260 seconds] 20:57:48 Dalek: (1) use with-foo style 20:58:07 -!- MrWoohoo [~MrWoohoo@pool-74-100-140-127.lsanca.fios.verizon.net] has quit [Quit: ["Textual IRC Client: www.textualapp.com"]] 20:58:13 Dalek: and more generally, keep most of the logic in runtime objects, and have macros only do the purely syntactic transform. 20:58:46 since you have a defun, the only way to have its uneval'd lambda expression be eval'd into a function is to have it called by a macro during expansion time, or eval'ing at runtime 20:59:04 (substitute compile/coerce, etc, to complete the statement) 20:59:33 are you loading your rules at runtime, or is everything defined when you build your app? 20:59:46 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 245 seconds] 21:00:10 build time only. it's strictly for concision and readability 21:00:20 <_death> DalekBaldwin: it's be helpful to understand what you're trying to do 21:00:21 Fare: what part of it should be with-foo-ish? 21:00:39 ndrei [~avo@83.142.149.227] has joined #lisp 21:01:26 as far as the results of a built-up lambda being used at macroexpand time to generate more source code for macroexpand time, I think you're going to be stuck eval'ing 21:02:23 -!- optikalmouse [~omouse@69-165-245-60.cable.teksavvy.com] has quit [Quit: Leaving] 21:02:39 Fare: also, I missed your lispnyc talk, are there slides or video of it? 21:02:59 innertracks [~Thunderbi@c-24-17-64-212.hsd1.wa.comcast.net] has joined #lisp 21:03:26 White_Flame: yeah, I think if I managed to use the second version I'd just be cleverly hiding evals behind the unquotes 21:06:23 Watcher7 [~w@108.218.1.96] has joined #lisp 21:07:07 -!- add^_ [~user@m213-101-23-176.cust.tele2.se] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 21:07:41 ustunozgur [~ustunozgu@212.252.85.81] has joined #lisp 21:10:36 DalekBaldwin, the slides have always been online 21:10:41 there's a video of the rehearsal 21:10:54 https://www.youtube.com/watch?v=kV63Mf5Qb2Q 21:11:42 Usually, you shouldn't be using EVAL at macroexpand-time, but ASDF-FINALIZERS:EVAL-AT-TOPLEVEL 21:11:53 see the Google Common Lisp Style Guide where I explain why. 21:13:00 -!- sdemarre [~serge@25.65-64-87.adsl-dyn.isp.belgacom.be] has quit [Read error: Connection reset by peer] 21:16:03 -!- cabaire [~nobody@p5DCD25DC.dip0.t-ipconnect.de] has quit [Quit: leaving] 21:20:01 -!- Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/] 21:20:29 -!- eigenlicht [~eigenlich@unaffiliated/eigenlicht] has quit [Read error: Operation timed out] 21:21:20 -!- angavrilov_ [~angavrilo@217.71.227.190] has quit [Remote host closed the connection] 21:22:57 -!- hiroakip [~hiroaki@77-20-51-63-dynip.superkabel.de] has quit [Ping timeout: 252 seconds] 21:22:57 Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has joined #lisp 21:26:26 eigenlicht [~eigenlich@unaffiliated/eigenlicht] has joined #lisp 21:30:18 *drewc* is just scrolling back, so only has to say that WITH-foo should expand into CALL-WITH-foo 21:31:50 down with establishment! expand it into not-CALL-WITH-foo 21:32:35 -!- eigenlicht [~eigenlich@unaffiliated/eigenlicht] has quit [Ping timeout: 246 seconds] 21:33:01 lemex [~irc@106.76.166.103] has joined #lisp 21:34:02 (not (call-with-foo (lambda (foo) ....)) 21:34:16 nand1 [~user@c-71-202-128-245.hsd1.ca.comcast.net] has joined #lisp 21:34:43 -!- lemex [~irc@106.76.166.103] has quit [Client Quit] 21:35:30 eigenlicht [~eigenlich@unaffiliated/eigenlicht] has joined #lisp 21:35:53 lemex [~irc@106.76.166.103] has joined #lisp 21:35:59 expanding into call-with only makes sense when it makes things easier, and not religiously applying it everywhere 21:37:09 Atrumx [~Atrumx@unaffiliated/fivedeltasix] has joined #lisp 21:39:26 -!- Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/] 21:39:35 Davidbrcz [~david@140.142.25.93.rev.sfr.net] has joined #lisp 21:39:53 -!- ustunozgur [~ustunozgu@212.252.85.81] has quit [Remote host closed the connection] 21:42:32 -!- Vutral [~ss@mirbsd/special/Vutral] has quit [Quit: Life is too short] 21:46:25 akersof [~akersof@99.0.19.93.rev.sfr.net] has joined #lisp 21:47:04 KaiQ [~localhost@p578FC908.dip0.t-ipconnect.de] has joined #lisp 21:47:15 Vutral [ss@mirbsd/special/Vutral] has joined #lisp 21:49:20 ustunozgur [~ustunozgu@212.252.85.81] has joined #lisp 21:51:43 Bike [~Glossina@gannon-wless-gw.resnet.wsu.edu] has joined #lisp 21:55:19 -!- aftershave_ [~textual@h-238-41.a336.priv.bahnhof.se] has quit [Quit: Textual IRC Client: www.textualapp.com] 21:55:53 endou [~paul@188.165.96.106] has joined #lisp 21:56:25 -!- LtCrData [~LtCrData@host109-148-126-76.range109-148.btcentralplus.com] has left #lisp 21:56:53 -!- lduros [~user@fsf/member/lduros] has quit [Ping timeout: 248 seconds] 21:57:00 LtCrData [~LtCrData@host109-148-126-76.range109-148.btcentralplus.com] has joined #lisp 21:59:25 the thing that makes things easier everywhere is separating syntactic computations from runtime computations 21:59:49 it makes for more debuggable runtime AND much simpler and thus more debuggable expansions 22:00:21 and smaller code footprint 22:00:23 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 250 seconds] 22:00:29 i.e. your expansion just looks like (foo ',bar (lambda (,baz) ,@body) 22:00:46 yes, thus less memory cache stress thus faster code. 22:00:50 -!- zeroish [~zeroish@135.207.141.202] has quit [Remote host closed the connection] 22:01:20 -!- Vaporatorius [~vaporator@194.Red-79-150-121.dynamicIP.rima-tde.net] has quit [Quit: Saliendo] 22:02:23 ehu [ehu@ip167-22-212-87.adsl2.static.versatel.nl] has joined #lisp 22:02:53 i would prefer `(let ((baz (baz-producer))) ,@body) 22:09:26 stassats: sometimes that works, but most of the time, there's wrapping around the let, and that's what foo does. 22:09:53 -!- WarWeasle [~Kaltara@172.242.21.170] has quit [Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )] 22:10:20 Pullphinger [~Pullphing@c-24-13-69-42.hsd1.il.comcast.net] has joined #lisp 22:10:22 also, in more complex patterns, there are variable capture problems that can lead to a lot of gensyms that just disappear if you call a separate function foo 22:10:29 <_death> Fare: usually that's true but sometimes it's harder to separate and the lazy way is just do everything at once 22:10:47 Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has joined #lisp 22:11:04 it's only "lazy" if you're either dumb enough not count the time debugging it or bright enough to always get it right without debugging. 22:11:17 I hate three-comma programmers, because I'm not one of them. 22:11:35 three level of continuations isn't much better 22:12:31 -!- Davidbrcz [~david@140.142.25.93.rev.sfr.net] has quit [Ping timeout: 250 seconds] 22:12:52 <_death> Fare: doesn't mean you have to stuff everything the defmacro.. 22:13:07 <_death> *in 22:14:07 -!- jpfuentes2 [~jacques@pool-173-53-102-185.rcmdva.fios.verizon.net] has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz] 22:14:23 -!- foreignFunction [~niksaak@ip-4761.sunline.net.ua] has quit [Quit: Leaving.] 22:15:31 *Fare* creates this page: http://www.cliki.net/Three%20Comma%20Programmer 22:15:39 -!- alexherbo2 [~alexherbo@APlessis-Bouchard-154-1-74-175.w90-35.abo.wanadoo.fr] has quit [Quit: WeeChat 0.4.3-dev] 22:17:07 so, macro writing macros, how will call-with help? 22:17:19 I've had to debug code from a three-comma programmer. 22:17:20 wyan [~wyan@ec2-54-246-94-212.eu-west-1.compute.amazonaws.com] has joined #lisp 22:17:29 Lots of time wasted. 22:17:41 He could also survive in large spaghetti functions. 22:18:02 Fails to write code for the rest of us mortals. 22:18:57 I strive to write code that would be clear to my ignorant 20-year-younger self. 22:19:29 But of course, the Three-Comma Programmer was already brilliant and three-comma 20 years earlier. 22:19:49 <_death> what, you don't like WITH-ACCUMULATORS? http://paste.lisp.org/display/141165 22:20:15 <_death> :) 22:20:37 <_death> (it's not what I was referring to of course.. comment at top says it all) 22:20:58 jpfuentes2 [~jacques@pool-173-53-102-185.rcmdva.fios.verizon.net] has joined #lisp 22:21:00 I've definitely started abusing commas since I managed to get emacs to colorize macro definitions based on the backquote depth 22:21:52 And then, I'm sure there's a four-comma programmer out there. 22:22:42 And there's a five-comma programmer smiling out there, but he's so autistic no one has ever seen his code. 22:24:16 _death, your with-accumulators looks like it's only two-comma to me, which is pretty reasonable still. 22:24:41 -!- wyan [~wyan@ec2-54-246-94-212.eu-west-1.compute.amazonaws.com] has left #lisp 22:24:53 thankfully now this one is working with a single comma 22:24:58 genericus [~user@71-9-194-123.dhcp.kgpt.tn.charter.com] has joined #lisp 22:24:58 WarWeasle [~Kaltara@172.242.21.170] has joined #lisp 22:25:17 <_death> Fare: I'm not sure about the comma-counting.. you can write it without any commas at all 22:27:56 <_death> Fare: I don't think I have three-comma code here 22:29:03 *drewc* prefers CALL-WITH-* because he is a developer and tries to avoid having too much unchanging stuff done at compile time ... especially when he needs to update the running application over tcp and cannot re-compile everything that may or may not use that macro. 22:29:29 What's the easiest way to create a pipe like stream for communicating between threads. 22:29:43 lparallel queues 22:30:09 <_death> drewc: sure.. I use call-with for simple with- macros 22:31:07 yes, lparallel, though you might need to build upon it. See how I do it in quux-hunchentoot. 22:32:01 -!- slyrus [~chatzilla@70-90-161-58-ca.sfba.hfc.comcastbusiness.net] has quit [Ping timeout: 250 seconds] 22:32:42 Stassats, thanks. This will work nicely 22:32:42 the bigger code is, the more likely it is to change in the future. By splitting the macro in two parts, each part is both less likely to change and less likely to require a recompilation of code using the other when it does change. 22:33:09 WarWeasle: lparallel also provides more high level constructs 22:33:12 (defmacro with-* (&body body) `(call-with-* (lambda (*special*) ... ,@body ...) ...)) 22:33:21 but i find queues to be easier to understand and quite versatile 22:34:00 drewc: with-with? 22:34:14 I'll look into it. I want to use it for an in game repl. 22:34:29 That said, I've written a hundred line macro with nineteen levels of nesting... but no nesting of commas. 22:35:33 I might need to wrap it in gray stream... 22:35:37 zygentoma [~kvirc@dslc-082-083-169-022.pools.arcor-ip.net] has joined #lisp 22:35:48 WarWeasle: A pipe-like stream is not (make-two-way-stream)? I used that the other day and it seems to work/not work ... like most CLHS streams that are not Gray. :) 22:36:13 -!- Nizumzen [~Nizumzen@cpc1-reig5-2-0-cust251.6-3.cable.virginm.net] has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/] 22:36:16 ckoch786 [~ckoch786@ne102616l.eng.utoledo.edu] has joined #lisp 22:37:07 I've played with a simple gray io stream and it seemed to work. 22:37:49 there are no pipes in cl streams 22:37:55 But I'm thinking someone must have solved this before. 22:38:14 and gray streams may not be thread safe enough 22:38:36 what's good style for testing functions that are only meant to aid in macroexpansion? 22:38:46 -!- innertracks [~Thunderbi@c-24-17-64-212.hsd1.wa.comcast.net] has quit [Ping timeout: 260 seconds] 22:38:54 Dalek: unit tests 22:39:00 Can I add locks? 22:39:04 sunwukong [~androirc@catv-86-101-32-210.catv.broadband.hu] has joined #lisp 22:39:12 WarWeasle, only if you're masochistic. 22:39:25 -!- ehu [ehu@ip167-22-212-87.adsl2.static.versatel.nl] has quit [Ping timeout: 252 seconds] 22:39:52 I'm tempted to say, yes. 22:40:14 like, specifically for syntactic style. I have a helper function I use like (process-group '(:barf (:narf nil)) '(herp derp)) which acts on lists of symbols but then I have to remember to quote the arguments when I'm just testing it as a function 22:40:43 Really, pipes should not be hard. 22:41:55 innertracks [~Thunderbi@c-24-17-64-212.hsd1.wa.comcast.net] has joined #lisp 22:42:29 <_death> this shows lazines: http://paste.lisp.org/display/141167 (btw.. it's just an experiment, and I know it's pretty bad.. also, if you mention regular expressions I'll head for the door) 22:42:34 <_death> *laziness 22:45:07 I want to easily test the same s-expressions with helper functions and with the macro as a whole without making it ugly 22:45:59 -!- Fare [fare@nat/google/x-jpshzghhhyqlxyzk] has quit [Ping timeout: 272 seconds] 22:46:10 I guess I can do something like (defmacro with-quoted-args ((function &rest args)) `(,function ,@(loop for arg in args collect `',arg))) 22:46:30 and maybe make a read macro based on that 22:47:24 Zhivago [~lys@1.234.65.131] has joined #lisp 22:48:06 _death: I must be more lazy, for I use local-time:parse-timestring :) 22:48:13 -!- kaygun [~kaygun@85.96.86.211] has quit [Ping timeout: 252 seconds] 22:48:33 -!- lemex [~irc@106.76.166.103] has quit [Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )] 22:49:46 <_death> drewc: :) 22:52:05 -!- zacharias [~aw@unaffiliated/zacharias] has quit [Quit: Bye!] 22:52:13 atgreen [~green@dsl-207-112-126-211.tor.primus.ca] has joined #lisp 22:52:51 slyrus [~chatzilla@70-90-161-58-ca.sfba.hfc.comcastbusiness.net] has joined #lisp 22:53:14 DalekBaldwin: so it is easier for you to remember with-quoted-args over ` ? 22:54:05 (apply #'fun `(,foo ,bar ,baz)) <--- ?? 22:55:14 *drewc* does not like / does not use / may even hate improper use of read macros :D 22:55:29 -!- jpfuentes2 [~jacques@pool-173-53-102-185.rcmdva.fios.verizon.net] has quit [Ping timeout: 245 seconds] 22:56:15 -!- developernotes [~developer@173-29-199-75.client.mchsi.com] has quit [] 22:56:22 -!- sunwukong [~androirc@catv-86-101-32-210.catv.broadband.hu] has quit [Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )] 22:56:34 endou [~paul@188.165.96.106] has joined #lisp 22:57:06 pillton [~user@124-170-82-104.dyn.iinet.net.au] has joined #lisp 22:57:36 -!- mts_ [~mts@rrcs-24-97-165-124.nys.biz.rr.com] has quit [Quit: leaving] 22:57:42 jpfuentes2 [~jacques@pool-173-53-102-185.rcmdva.fios.verizon.net] has joined #lisp 22:57:51 I have a macro that turned into a three-comma one after I realized it wouldn't be as simple as I had initially hoped. I should really get around to refactoring that monstrosity... 22:58:36 -!- Ragnaroek [~chatzilla@p549C5BA9.dip0.t-ipconnect.de] has quit [Ping timeout: 245 seconds] 22:58:37 then again, my first Lisp project was like 30% defmacro type syntax creating ... now it is about 0.1 - 1%, so perhaps I am clueless and like lisp over lisp+(whatever the programmers desires for syntax/special forms/etc). amazing what 10+ years un-teaches you. 22:59:31 <_death> I find that I use macros much more than I used to 22:59:45 -!- ckoch786 [~ckoch786@ne102616l.eng.utoledo.edu] has quit [Remote host closed the connection] 23:00:16 ckoch786 [~ckoch786@ne102616l.eng.utoledo.edu] has joined #lisp 23:01:44 -!- endou [~paul@188.165.96.106] has quit [Ping timeout: 265 seconds] 23:02:00 _death: I am the exact opposite tbh ... I much prefer the semantics of lisp, and common lisp for that matter. That said, I love macros, use def* all the time... but try to avoid creating my own semantics when not needed. 23:02:02 <_death> of course, some modules get along great with a bunch of defuns 23:02:20 kaygun [~kaygun@85.96.86.211] has joined #lisp 23:02:44 -!- ustunozgur [~ustunozgu@212.252.85.81] has quit [Remote host closed the connection] 23:03:05 Vivitron`` [~Vivitron`@c-50-172-44-193.hsd1.il.comcast.net] has joined #lisp 23:03:16 -!- Joreji [~thomas@136-135.eduroam.rwth-aachen.de] has quit [Remote host closed the connection] 23:03:22 ustunozgur [~ustunozgu@212.252.85.81] has joined #lisp 23:03:29 -!- iwilcox is now known as Guest79010 23:03:29 -!- Guest79010 [~iwilcox@unaffiliated/iwilcox] has quit [Killed (pratchett.freenode.net (Nickname regained by services))] 23:03:35 -!- ustunozgur [~ustunozgu@212.252.85.81] has quit [Read error: No route to host] 23:03:44 defun is a macro though! ... (macroexpand '(defun foo ())) works locally :P 23:04:17 iwilcox [~iwilcox@unaffiliated/iwilcox] has joined #lisp 23:04:22 <_death> drewc: I think we're closer in spirit than my statement makes it seem... but for my recent projects I found a lot of use for macros 23:06:47 optikalmouse [~omouse@69-165-245-60.cable.teksavvy.com] has joined #lisp 23:06:54 -!- zygentoma [~kvirc@dslc-082-083-169-022.pools.arcor-ip.net] has quit [Quit: KVIrc 4.1.3 Equilibrium http://www.kvirc.net/] 23:07:29 _death: I have moved the opposite way ... I prefer interface passing style over code-walking/macrofying, and have really come to prefer the verbosity it adds. But, then again, I am a self employed systems developer/architect, so my actual needs are different than in other fields. 23:08:43 -!- fe[nl]ix [~quassel@pdpc/supporter/professional/fenlix] has quit [Remote host closed the connection] 23:08:43 -!- Blkt [~Blkt@2a01:4f8:150:80a1::aaaa] has quit [Remote host closed the connection] 23:08:52 Blkt [~Blkt@2a01:4f8:150:80a1::aaaa] has joined #lisp 23:08:54 fe[nl]ix [~quassel@pdpc/supporter/professional/fenlix] has joined #lisp 23:09:42 -!- Shinmera [~linus@xdsl-188-155-176-171.adslplus.ch] has quit [Quit: ZzzZZ] 23:14:01 drewc: What do you mean by "prefer the verbosity it adds"? 23:15:31 -!- edgar-rft [~GOD@HSI-KBW-109-193-013-113.hsi7.kabel-badenwuerttemberg.de] has quit [Quit: mental process lost because continuation disappeared] 23:17:53 -!- stassats [~stassats@wikipedia/stassats] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 23:18:41 pillton: in my head I was thinking of continuations and how I use them. I used to use ARNESI, which has an interpreter/macro-style CL-alike lang with continuations ... so no more verbose than standard lisp... now I use (mlet* (...) ...) which is more verbose for sure, and less 'pretending to be CL' , but also "easier" to read/understand and ultimately, use. 23:20:02 (imo ... not fact, just a statement etc) 23:20:15 drewc: it allows me to test an entire expression as it would appear in the macro, so there's less fuss in refactoring a good example use of the macro into a bunch of tests 23:20:22 w039 [~s2938@201-19-96-63.user.veloxzone.com.br] has joined #lisp 23:21:58 DalekBaldwin: or : using a macro allows you to use a macro? /confused 23:22:13 -!- w039 [~s2938@201-19-96-63.user.veloxzone.com.br] has quit [Remote host closed the connection] 23:23:10 using a macro allows me to test a helper function that operates on s-expressions by just copying the s-expression as is from an example use of the macro 23:23:49 -!- Watcher7 [~w@108.218.1.96] has quit [Ping timeout: 245 seconds] 23:23:52 and, you do not have to test the test macro you added so the test is a c/p? 23:24:18 I guess, but you only have to write that macro once 23:25:11 -!- kirin` [telex@gateway/shell/anapnea.net/x-aajmmacveusfclrf] has quit [Ping timeout: 245 seconds] 23:25:48 *drewc* is still very confused about what the test is for if a macro is needed for testing and not tested ... but meh, his advice is for himself, so take it as you will. 23:26:21 ustunozgur [~ustunozgu@78.162.254.87] has joined #lisp 23:26:30 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Quit: Leaving.] 23:26:51 -!- mishoo [~mishoo@93.113.190.121] has quit [Ping timeout: 245 seconds] 23:26:56 Code_Man` [~Code_Man@2a02:1205:505b:1ad0:223:54ff:fe38:82c2] has joined #lisp 23:34:17 kirin` [telex@gateway/shell/anapnea.net/x-tfyziozpzqyedfjh] has joined #lisp 23:34:42 -!- jpfuentes2 [~jacques@pool-173-53-102-185.rcmdva.fios.verizon.net] has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz] 23:37:02 Watcher7 [~w@108.218.1.96] has joined #lisp 23:44:51 -!- yasha [~yasha@unaffiliated/yasha] has quit [Quit: yasha] 23:46:59 francogrex [~user@91.182.164.103] has joined #lisp 23:47:17 Hi, tell me what are your thoughts on this? http://www.doc.ic.ac.uk/~phjk/GROW09/papers/01-MELT-Starynkevitch.pdf 23:47:17 francogrex, memo from pjb: integrating it into ccl could be considered, but I'm not sure ccl maintainers would want it, for several reason. One of it, is that it's a source level stepper; they'd probably want an implementation working without transforming the source, but working directly with the binary code generated by ccl. 23:50:29 -!- kaygun [~kaygun@85.96.86.211] has quit [Ping timeout: 245 seconds] 23:50:38 Sgeo [~quassel@ool-44c2df0c.dyn.optonline.net] has joined #lisp 23:51:21 -!- LtCrData [~LtCrData@host109-148-126-76.range109-148.btcentralplus.com] has left #lisp 23:55:53 -!- sellout- [~Adium@66.185.108.211] has quit [Quit: Leaving.] 23:57:21 endou [~paul@188.165.96.106] has joined #lisp 23:57:25 ASau` [~user@p54AFE9F2.dip0.t-ipconnect.de] has joined #lisp