00:13 (quit) dnolen: Quit: dnolen 00:18 (quit) common_tragedian: Remote host closed the connection 00:24 (quit) jblz: Remote host closed the connection 00:46 (quit) Fare: Quit: Leaving 00:49 (join) jblz 00:59 (quit) mithos28: Quit: mithos28 01:12 (join) mithos28 01:22 (quit) mithos28: Quit: mithos28 01:39 (quit) acts_as_david: *.net *.split 01:39 (quit) misterm: *.net *.split 01:39 (quit) DT``: *.net *.split 01:39 (quit) mattmight: *.net *.split 01:39 (quit) shachaf: *.net *.split 01:39 (quit) petey-away: *.net *.split 01:39 (quit) cpach: *.net *.split 01:39 (quit) zakwilson: *.net *.split 02:02 (join) mithos28 02:02 (join) misterm 02:02 (join) DT`` 02:02 (join) mattmight 02:02 (join) shachaf 02:02 (join) petey-away 02:02 (join) cpach 02:02 (join) zakwilson 02:05 (join) acts_as_david 02:05 (quit) acts_as_david: Client Quit 02:06 (quit) mithos28: Quit: mithos28 02:15 (quit) masm: Quit: Leaving. 02:36 (join) neilv 02:36 (quit) neilv: Changing host 02:36 (join) neilv 03:08 (quit) neilv: Quit: Leaving 03:50 (quit) qha: Quit: Leaving. 03:50 (join) qha 05:31 (join) lucian 05:45 (join) lucian_ 05:47 (quit) lucian: Ping timeout: 248 seconds 05:50 (quit) lucian_: Ping timeout: 264 seconds 05:53 (join) lucian 05:57 (quit) lucian: Ping timeout: 240 seconds 08:11 (join) vdrab 08:17 (join) masm 08:33 (join) mceier 09:22 (join) MayDaniel 09:26 (quit) masm: Read error: Connection reset by peer 09:28 (join) tauntaun 09:31 (join) dnolen 09:31 (quit) dnolen: Excess Flood 09:31 (join) dnolen 09:32 (join) mithos28 09:38 (join) masm 09:39 (quit) MayDaniel: Read error: Connection reset by peer 09:46 (quit) tauntaun: Ping timeout: 255 seconds 09:49 (quit) mithos28: Quit: mithos28 10:07 (join) mithos28 10:31 (quit) vdrab: Quit: vdrab 10:34 (join) tauntaun 11:00 (quit) mithos28: Quit: mithos28 11:02 (join) mithos28 11:14 (quit) mithos28: Quit: mithos28 11:23 (join) ckrailo 11:30 (join) mithos28 11:41 (join) friscosam 11:52 (join) jonrafkind 11:54 (quit) mithos28: Quit: mithos28 13:08 (join) Fare 13:08 (join) carleastlund 13:21 (quit) Fare: Quit: Leaving 13:27 (join) MayDaniel 13:31 (quit) jblz: Quit: Leaving 13:33 (join) jblz 13:43 (join) lithpr 13:46 (join) lucian_ 13:47 (quit) MayDaniel: Read error: Connection reset by peer 13:48 (join) PLT_Notify 13:48 PLT_Notify: racket: master Kevin Tew * 867ae7f (1 files in 1 dirs): [Places] places enabled builds now use places to build collects - http://bit.ly/eTLZlf 13:48 (part) PLT_Notify 13:59 (quit) tauntaun: Quit: Ex-Chat 14:04 (quit) lithpr: Quit: Leaving 14:04 (quit) jblz: Quit: Leaving 14:08 (join) jblz 14:15 (join) anRch 14:29 (join) lucian__ 14:31 (quit) lucian_: Ping timeout: 255 seconds 14:53 (join) Fare 14:57 (quit) jblz: Quit: Leaving 15:00 (join) jblz 15:12 (quit) anRch: Quit: anRch 15:14 (join) tauntaun 15:16 (join) MayDaniel 15:16 (join) lucian_ 15:17 (quit) lucian__: Ping timeout: 276 seconds 15:18 tauntaun: Is there some way to instantiate an exception with just the one message argument, i.e., without having to think about continuation-marks? 15:19 jonrafkind: cant you just wrap your exception in a function? 15:19 tauntaun: (The exception is a subtype of exn:fail:user.) 15:19 jonrafkind: or probably using a macro wuold be better 15:19 jonrafkind: (raise-my-exception) 15:20 tauntaun: I'm not sure I've explained my question clearly, because wrapping doesn't get rid of the problem. 15:20 tauntaun: Let me spell it out. 15:21 tauntaun: I've defined an exception that is a subtype off exn:fail:user. 15:21 tauntaun: (*of) 15:21 tauntaun: To raise it, I write (raise (exn:fail:user:... )). 15:22 tauntaun: Or is there another way? 15:22 jonrafkind: i guess thats the only way 15:22 tauntaun: Because otherwise, I have to pass the constructor---exn:fail:user:...---two arguments, the second of which is a continuation-marks. 15:22 jonrafkind: so whats wrong with wrapping? 15:22 tauntaun: Wrapping doesn't spare you from having to think about continuation-marks. 15:23 carleastlund: Wrap it in a function that does the continuation mark thing for you. 15:23 jonrafkind: (define-syntax-rule (raise-my-exception blah) (raise (exn:fail:user blah (current-continuation-marks)) 15:23 jonrafkind: (raise-my-exception) ;; look ma, no continuation marks 15:23 tauntaun: 15:23 carleastlund: (define (oops fmt . args) (raise (exn:fail:user (apply format fmt args) (current-continuation-marks))) 15:23 tauntaun: My point is that you have to say "(current-continuation-marks)" in the macro. 15:24 carleastlund: So? 15:24 jonrafkind: yes I don't understand the reluctance to say such a thing 15:25 carleastlund: I guess the answer to your question is no. Exceptions have a continuation mark field. There's no way to leave a field "empty". 15:25 tauntaun: So, you don't have to think about continuation-marks when using raise-syntax-error or raise-user-error. I was wondering if there's another function, like those two, to which I can pass my homegrown exceptions. 15:26 carleastlund: You only have to think about them *once*. Once! Ever! Just write a wrapper. Then never think about them again. 15:26 jonrafkind: is (raise-my-exception) somehow different from (raise-syntax-error) or (raise-user-error) ? 15:27 carleastlund: (define (tauntaun-error exn-constructor fmt args) (raise (exn-constructor (apply format fmt args) (current-continuation-marks)))) 15:27 tauntaun: omg, people, I get the point. 15:27 carleastlund: Then (tauntaun-error exn:fail:user "Oh no, ~s!" 'error-occurred) 15:27 jonrafkind: im trying to understand your point 15:27 clklein: I think he wants racket/base to have a function that's like raise-user-error but also takes an exception constructor as an argument. 15:28 clklein: like tauntaun-error but without his name in it 15:28 tauntaun: clklein: that sounds right. 15:28 tauntaun: Oh no, please keep my name in it. 15:28 carleastlund: Ah. Well, that would be hard, because not all exception constructors take the same number of arguments. 15:28 jonrafkind: yes but it seems like a trivial thing to want 15:28 tauntaun: tauntaun is Gungun for "trivial." 15:29 tauntaun: And for the record, no, it's not so trivial. It spares the user from having to think about continuation-marks. 15:29 jonrafkind: i give up 15:29 tauntaun: But I sense a losing battle here, so thanks for the help. 15:29 carleastlund: (error 'this-is-my-error "I have an error.") 15:30 clklein: carleastlund: Couldn't tauntaun-error take the non-message arguments as a vararg then apply the constructor? 15:30 tauntaun: clklein: my question exactly. 15:31 carleastlund: I stand by my previous answer: no. We have many, many abstractions on top of exceptions, such as error, raise-user-error, raise-syntax-error, and so forth. We're missing this one. It's a one-liner. Writing a one-liner oneself is precisely one line away from having it built in. So we're just one line shy of what you want, which I think is pretty good. You seem to be acting like we're miles away, which is what I find confusing. 15:32 jonrafkind: tauntaun, make a bug for it and maybe it will get in 15:32 clklein: But it's not a one-liner that a newbie will know how to write; they'll first have to figure out what continuation marks are and how to collect them. 15:33 carleastlund: I think I would have gotten your point much sooner if you had said "Yes, that is the function I want, but I want it to be in racket/base. I don't think users should have to write it themselves." I thought you were saying the function was wrong. It was not clear that writing the one-liner yourself was the point of contention. 15:33 carleastlund: I would not point newbies at explicit exception constructors in the first place. 15:33 (quit) ckrailo: Ping timeout: 252 seconds 15:33 clklein: The current situation is a bit like if Java forced you to define your own "throw" method when you define an Exception class. 15:33 tauntaun: clklein: precisely. 15:34 tauntaun: (Precisely to your utterance at minute 32, not minute 33.) 15:34 tauntaun: I have no idea what continuation marks are. 15:34 carleastlund: No, it's a bit like if Java's "throw" took one extra argument. 15:34 tauntaun: I'd love to learn all about them, but I have a deadline to worry about. 15:34 clklein: carleastlund: I was imagining it got that extra argument by calling a method on the exception. 15:35 tauntaun: And I didn't mean to give the impression that I think you're "miles away." I'm aware that it's just a one-liner. But many Racket built-ins are one-liners too. 15:35 clklein: but either way, it would be confusing for beginners to discover that they need to provide a stack trace object 15:35 clklein: to use throw 15:36 carleastlund: That's fine. It was just very unclear you were making a point about API usability. It seemed like a technical request for a function you needed right now, and jonrafkind and I could not see how we had not fulfilled that. 15:36 carleastlund: (thought we had fulfilled that, to eliminate the double negative) 15:36 jonrafkind: carleastlund its ok, you dont have to defend your meta point 15:36 clklein: jonrafkind: but you have to defined that meta-meta-point. 15:37 clklein: begin now. 15:37 jonrafkind: en guarde! 15:37 carleastlund: I'm not defending, I'm clarifying for all involved in case it helps anyone communicate more clearly in the future. 15:37 jonrafkind: :p 15:37 carleastlund: If I were defending, I'd have powered up my orbital death lasers by now. But rest assured, they remain dormant. 15:38 jonrafkind: anyway tauntaun if you make a bug it would help, otherwise ill make one for you 15:38 carleastlund: In any event, I agree that would be a useful function. It'd be a great thing to submit as a planet package until it makes its way into the core. 15:38 tauntaun: jonrafkind: I'm afraid I'm still a bit lost. This is not a bug, AFAICT. If anything it's a tiny request for implementation. 15:39 carleastlund: tauntaun: we use the bug database for all pending requests, even when they're not actually bugs. There is a "change request" option for bug reports. 15:39 tauntaun: OK, let me try it out. 15:40 clklein: But you can't choose that option when you submit the "bug" 15:40 carleastlund: Eh? I've been able to... 15:40 carleastlund: Yes, you definitely can. Mr. clklein is mistaken. 15:40 clklein: carleastlund: Turns out I don't know how to use drop-down menus. 15:40 (join) ckrailo 15:40 carleastlund: clklein: protip, drop them down. 15:40 clklein: Learning them is on my TODO list. 15:41 clklein: carleastlund: I kept clicking them and looking up, but there was no menu to be found! 15:41 carleastlund: ...don't tell me. You store your TODO list as a drop-down menu? 15:41 clklein: There's that problem too. 15:44 (quit) MayDaniel: 15:45 (quit) lucian_: Ping timeout: 260 seconds 15:45 (join) lucian__ 16:01 jonrafkind: carleastlund, I thought you hated planet? 16:02 carleastlund: There are things about the planet infrastructure I find frustrating and inconvenient. But it still functions as a way to share Racket code. 16:24 samth: eli, ping 16:29 (join) mithos28 16:29 (quit) mithos28: Client Quit 16:33 (quit) jblz: Quit: Leaving 16:55 jonrafkind: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.871&rep=rep1&type=pdf great paper on macros 16:55 rudybot: http://tinyurl.com/4qoh3w2 17:01 eli: tauntaun: While there is a point in having such a thing, there is a subtle point there. 17:01 eli: The continuation marks is, roughly, a representation of the current stack trace. 17:02 eli: So a utility function that will grab it will get a value with itself at the top. 17:02 eli: That might be more confusing for the average newbie. 17:02 tauntaun: You mean the wrong continuation mark? 17:02 eli: No, it will have one level. 17:02 tauntaun: Ok, then how about a macro? 17:03 eli: You write (define (foo) (whatever-the-builtin-is-called)), and you get an exception with `whatever-the-builtin-is-called' at the top. 17:03 eli: And that's potentially confusing since you want the top to be your own function. 17:03 tauntaun: Yes, indeed. 17:03 tauntaun: So would a macro work? 17:03 eli: A macro is a way around this, of course, but then you run into the problem of the macro not being a value -- and that has its own pile of newbie confusion. 17:03 eli: That's my guess for the reason that no such function was added at least. 17:04 jonrafkind: eli, what kind of justification is that? a macro is fine for this.. 17:04 tauntaun: Actually eli, this is not quite a newbie issue to begin with. 17:04 eli: (FWIW, the long name of `current-continuation-marks' is an indicator of "you better know what you're doing", so there is certainly a point in doing something easier.) 17:04 tauntaun: Because we're already talking about subtyping the extension struct. 17:05 tauntaun: (...unless structs are considered newbie territory.) 17:05 eli: jonrafkind, tauntaun: my first reaction when I'd try to do something like (apply whatever-the-builtin-is-called stuff) and getting an error would be to complain "why is this a macro?". 17:05 tauntaun: Anyway, I'm fine with writing (current-continuation-marks). I just thought it might be aesthetically nice to have a pampering function. 17:06 eli: (This is unrelated to structs, which you should certainly know about if you're raising home cooked exceptions.) 17:06 jonrafkind: isn't the extreme version of that opinion that we should get rid of almost all macros? 17:06 eli: jonrafkind: No, not really. 17:06 tauntaun: eli: Yes, my point is that if you're going to use structs, then you have to know what macros are anyway. 17:06 eli: jonrafkind: Do you know that single blog post Ryan did 200 years ago about different kinds of macros? 17:07 jonrafkind: ok you have a point about it, but I guess since it can't be a function and its a useful utility, a macro is the best that can be done, even if its confusing for some people 17:07 jonrafkind: maybe i saw it, is it on the plt blog? 17:07 eli: jonrafkind: IIRC, he had unhygienic macros, macros that are almost hygienic (eg, `make-' + a user identifier), and macros that are only changing the flow. 17:07 eli: (No, its on his own blog. Like I said -- ancient.) 17:08 eli: (He also opposes the last kind of macros and claim that you should use thunks for that.) 17:08 jonrafkind: `send' is a macro, for unclear reasons to new people 17:08 jonrafkind: so is `new' 17:08 tauntaun: so is let :) 17:08 eli: (`new', IIRC, is only because of the pre-keyword-argument mechanism.) 17:08 eli: `let' is justified, because it's more than just control flow. 17:09 eli: (Justified according to Ryan.) 17:09 jonrafkind: yes, control flow (let, for, whatever else) is ok, imo 17:09 eli: In any case, this use case for a macro is something completely new. 17:09 eli: It's a macro that is used only to not have a function call. 17:09 samth: jonrafkind, go read the post 17:09 jonrafkind: what post 17:09 friscosam: eli: http://macrologist.blogspot.com/2006/04/macros-parameters-binding-and.html <-- this one? 17:09 eli: And this whole deal about hiding function calls around exceptions (or cont. marks) is iffy. 17:10 eli: friscosam: Yeah, that sounds right. 17:10 eli: It's not the only place that it's iffy -- 17:10 eli: there are times where in my class I'll get an error which is signalled with a source that comes from my class's plugin -- and that's something that I would prefer to hide. 17:11 eli: So the real question is how to design some system where I can write some layers of functions that are excluded from the current marks... 17:11 eli: Something like declaring that some function is a helper for constructing exceptions and therefore it shouldn't be included in the marks by itself. 17:12 tauntaun: ...and? 17:14 jonrafkind: well cant a helper function get the current continuation marks and explciitly take off the last one? 17:14 jonrafkind: at least for making a function that raises an error 17:14 qha: Can you get at the "parent" of the result of current-continuation-marks? 17:14 qha: (Like in Python the Frame objects that make up traceback objects have a f_back field.) 17:14 samth: no 17:16 jonrafkind: oh whoops I thought you could, oh wel 17:17 tauntaun: That blog post must have ruffled some feathers, judging by the number of deleted responses. 17:17 samth: spammers, i bet 17:17 tauntaun: or lispers? 17:17 tauntaun: Doug Hoyte fanatics? 17:20 jonrafkind: its too bad his post doesn't spell out the point of using syntax-parameterize, that you can rename the parameter in a module that wants to use the same name 17:20 eli: tauntaun: ...and it's daycare deadline time soon... 17:21 tauntaun: ? 17:21 eli: jonrafkind: Sure you can have the helper take the current marks explicitly, but then you still have to pass it (current-continuation-marks) 17:21 eli: tauntaun: I'm just in the danger zone now, and need to rush out in the next very few minutes... 17:21 jonrafkind: i was hoping the helper could call (current-continuation-marks) and modify it to look ilke the helper wasnt called at all 17:22 jonrafkind: but maybe you can't do that 17:22 eli: No, it can't do that reliabely. 17:22 eli: Given inlining and such. 17:22 eli: There was one place where I tried to do something similar. 17:22 eli looks 17:22 jonrafkind: well inlining could be disabled for that function, somehow 17:23 eli: Here: collects/drracket/private/rep.rkt 17:23 eli: Look for "checkpoints". 17:24 jonrafkind: an ad-hoc stack-tracing mechanism? 17:24 eli: But IIRC that's working in the opposite direction, it's dropping the bottom part of the trace that comes from drracket. 17:24 eli: "an ad-hoc stack-tracing mechanism"? 17:24 eli: Not really. 17:24 eli: That would be errortrace. 17:24 (join) MayDaniel 17:38 (join) jblz 17:39 tauntaun: Any special considerations (e.g., speed) in using lists as hash keys? 17:39 tauntaun: (Btw, let me know if I've asked too many questions for one day. I'd be happy to observe a quota.) 17:39 (join) mithos28 17:40 jonrafkind: hm, `error' must be a macro, and thats ok 17:40 jonrafkind: as in, its not terribly confusing for new people 17:41 jonrafkind: oh its a procedure.. ok i dont get that. how come it doesnt interfere with the continuation marks? 17:41 jonrafkind: and since thats a procedure, maybe a new form for defining exceptions could be made that also defined a `raise...' form 17:42 (join) lucian_ 17:45 (quit) lucian__: Ping timeout: 276 seconds 17:47 (join) saint_cypher 18:09 (quit) MayDaniel: Read error: Connection reset by peer 18:17 (nick) lucian_ -> lucian 18:34 (join) lithpr 18:34 (quit) lithpr: Client Quit 18:34 (quit) tauntaun: Quit: Ex-Chat 18:37 (quit) lucian: Remote host closed the connection 18:41 (join) tauntaun 18:41 (quit) tauntaun: Read error: Connection reset by peer 18:55 friscosam: it looks like error is special though. I cannot find it defined in collects/racket/* 18:56 friscosam: of course it could be renamed on require/provide and I'm just missing it grepping the source 18:57 (quit) mceier: Quit: leaving 18:57 DT``: it may be a primitive like car and cdr. 18:59 (join) common_tragedian 19:01 samth: friscosam, it's defined primitively in the runtime 19:02 friscosam: yeah I found it in error.c 19:18 Geisteskrankh: Why would error intefere with the continuation marks? 19:19 jonrafkind: if you tried to write (define (helper) (raise (blah) (current-continuation-marks))) you would see `helper' in those marks 19:19 jonrafkind: error doesn't interfere because its defined primitively 19:21 (quit) dnolen: Quit: dnolen 19:22 (join) dnolen 19:24 friscosam: is there (current-continuation-marks-except-top) ? 19:25 (join) tauntaun 19:28 samth: friscosam, no 19:28 samth: see docs here: http://docs.racket-lang.org/reference/contmarks.html 19:29 (quit) carleastlund: Quit: carleastlund 19:35 (join) DT-sama 19:36 DT-sama: /ns ghost dt`` lollo 19:36 DT-sama: 7quit 19:36 DT-sama: . 19:37 (quit) DT``: Ping timeout: 255 seconds 19:40 (quit) DT-sama: Ping timeout: 252 seconds 19:42 (join) DT`` 20:16 (quit) jblz: Remote host closed the connection 20:26 (join) cousin 20:26 cousin: hello? 20:28 cousin: I'm trying to install the racket development software on my Ubuntu 10.10 operating system but I cannot get it to work. Which file am I supposed to download? 20:29 jonrafkind: did you download a file already? 20:29 jonrafkind: you can use the ppa or this file http://download.racket-lang.org/racket-5-1-bin-i386-linux-ubuntu-jaunty-sh.html 20:29 rudybot: http://tinyurl.com/4azep5w 20:30 (quit) dnolen: Quit: dnolen 20:30 cousin: I have already downloaded that file. What do I do with it after it has downloaded? 20:30 jonrafkind: https://launchpad.net/~plt/+archive/racket 20:30 jonrafkind: run it 20:30 jonrafkind: sh blah.sh 20:31 jonrafkind: or chmod +x blah.sh; ./blah.sh 20:34 cousin: When I try top open it I get an error saying the encoding is not recognized 20:34 cousin: Is there some kind of software application I don't have? 20:36 cousin: jonrafkind 20:37 jonrafkind: whats the md5sum of it 20:37 jonrafkind: i get 9724661bf5076134a27403eac4cb9088 20:37 jonrafkind: how are you trying to open the file? 20:38 cousin: i open containing file and double click it 20:38 jonrafkind: try right-clicking on it and choosing 'run in a shell' or something 20:38 jonrafkind: anyway it seems that you are not comfortable with the command line, would you like to install via the ppa instead? it may be a simpler interface for you 20:39 cousin: Is that the link you posted earlier? 20:39 (join) PLT_Notify 20:39 PLT_Notify: racket: master Robby Findler * 466abb9 (1 files in 1 dirs): typo 20:39 PLT_Notify: racket: master Robby Findler * bd3a43d (3 files in 2 dirs): changed some nonnegative-real?'s into (and/c real? (not/c negative?))'s 20:39 PLT_Notify: racket: master Robby Findler * 615bc86 (3 files in 3 dirs): added pdf-bytes+bounds to the docs for file/convertible and then used it ... 20:39 PLT_Notify: racket: master commits 867ae7f...615bc86 - http://bit.ly/eeUGjM 20:39 (part) PLT_Notify 20:40 jonrafkind: yea 20:41 jonrafkind: https://help.ubuntu.com/9.10/add-applications/C/adding-repos.html 20:41 jonrafkind: there are some instructions for adding a ppa 20:43 (quit) ckrailo: Quit: Computer has gone to sleep. 20:44 cousin: jonrafkind 20:44 cousin: I have added the ppa and now the terminal reads 20:44 cousin: [sudo] password for grayson: 20:44 cousin: I can't even enter anything 20:44 jonrafkind: its hiding your password 20:44 jonrafkind: just type it in and press enter 20:45 cousin: oh cool 20:45 cousin: thank you 20:46 (join) jblz 20:47 cousin: jonrafkind 20:47 cousin: Ok now I have the system ready, but I don't know what to do now 20:48 jonrafkind: sudo apt-get update 20:48 jonrafkind: sudo apt-get install racket 20:49 cousin: aha 20:49 cousin: thank you 20:50 (quit) tauntaun: Quit: Ex-Chat 20:52 (quit) cousin: Quit: Page closed 21:23 (quit) jonrafkind: Ping timeout: 255 seconds 21:44 (nick) common_tragedian -> word-magician 22:25 (join) dnolen 22:25 (quit) word-magician: Remote host closed the connection 22:37 (quit) dnolen: Quit: dnolen 23:20 (join) tauntaun 23:31 (quit) masm: Quit: Leaving. 23:47 (quit) tauntaun: Quit: Ex-Chat 23:54 (join) tauntaun