00:05 (quit) danbrown: Remote host closed the connection 00:07 (join) danbrown 00:21 (join) Naith 00:25 (join) helpMeIM-Falling 00:25 helpMeIM-Falling: hi all 00:26 helpMeIM-Falling: I'm an absolute beginner to Racket and am having trouble grasping what it actually IS 00:26 helpMeIM-Falling: Can someone provide a succinct definition? 00:27 helpMeIM-Falling: Hrmm ... it doesn't seem like anyone is at their kb ... 00:36 (quit) helpMeIM-Falling: Quit: Page closed 01:08 (join) Lajla 01:13 offby1: nobody here but us zombie processes. 01:13 offby1: it's a collection of related programming languages, and an IDE for them all. 01:14 offby1: racket-lang.org should explain 01:53 (quit) asumu: Read error: Connection reset by peer 02:04 (quit) danbrown: Remote host closed the connection 02:04 eli: offby1: He's long gone... 05:47 (join) masm 06:06 (join) neilv 06:17 (quit) jao: Ping timeout: 255 seconds 06:27 (quit) Naith: Quit: Naith 06:34 (join) mceier 06:58 (join) jao 07:29 (join) b-man_ 08:02 (join) hanDerPeder 08:32 (quit) masm: Quit: Leaving. 08:46 (quit) hanDerPeder: Quit: hanDerPeder 08:50 (join) hanDerPeder 09:03 (quit) b-man_: Ping timeout: 240 seconds 09:27 (join) MayDaniel 09:38 (quit) MayDaniel: 09:54 (join) asumu 10:00 (nick) samth_away -> samth 10:19 (quit) hanDerPeder: Quit: hanDerPeder 10:55 (quit) asumu: Read error: Connection reset by peer 11:02 (join) anRch 11:04 (quit) neilv: Quit: Leaving 11:23 (join) MayDaniel 11:27 (join) danbrown 11:28 (quit) danbrown: Remote host closed the connection 11:46 (quit) anRch: Quit: anRch 12:00 (quit) MayDaniel: 12:57 (join) danbrown 13:03 (join) jon5 13:03 (quit) jon5: Client Quit 13:04 (join) jon5 13:05 (quit) jon5: Client Quit 13:06 (join) jon5 13:06 (nick) jon5 -> jonrafkind 13:06 (quit) jonrafkind: Remote host closed the connection 13:07 (join) jonrafkind 13:13 (join) MayDaniel 13:17 (join) anRch 13:25 jonrafkind: samth, matthew said he would merge gr2 very soon 13:25 jonrafkind: he might do it today.. im not sure 13:28 (quit) jao: Ping timeout: 252 seconds 13:29 samth: jonrafkind, ah 13:30 (quit) danbrown: Remote host closed the connection 13:41 (join) danbrown 13:56 (quit) jonrafkind: Quit: Ex-Chat 13:57 (join) jonrafkind 14:00 (quit) sstrickl: Quit: sstrickl 14:03 (join) carleastlund 14:04 (join) hanDerPeder 14:07 (join) jao 14:13 clklein: If I were writing a macro like (if e then e else e), is there any reason to compare the third and fifth positions using more than symbol equality? 14:13 jonrafkind: the 'then' and 'else' ? 14:13 clklein: yea 14:14 clklein: In other words, why does syntax-case do what it does with literals? 14:14 jonrafkind: well in that case it probably doesnt matter since you are just concerned with the position of things 14:14 jonrafkind: but if you had (if e ... then e ... else e ...) 14:14 jonrafkind: then it would matter if 'else' was compared symbolically 14:14 clklein: ahhh 14:14 jonrafkind: (let ([else 5]) (if 1234 then 5678 else else)) 14:15 clklein: that makes sense 14:15 jonrafkind: syntax-case is wierd in that it will compare things using free-identifier=? if they are bound otherwise it will fall back to symbolic comparisons, or something like that 14:15 jonrafkind: syntax-parse is better in this regard, it only uses free-identifier=?, never symbolic comparison 14:17 samth: jonrafkind, > (free-identifier=? #'this-isnt-bound #'this-isnt-bound) 14:17 samth: #t 14:17 jonrafkind: oh 14:17 samth: they both use the same comparison predicate 14:17 samth: it's just that syntax-parse rejects unbound literals 14:17 samth: clklein, there are a number of reasons 14:18 samth: first, the behavior jonrafkind described 14:18 samth: second, you want to be able to control visibility w/ scope 14:18 samth: third, it's nice to be able to rename/prefix identifiers 14:18 clklein: samth: Do you have examples of 2 and 3? 14:19 clklein: I think I understand what you mean, just not why you'd want to do those things. 14:20 samth: for example, TR's type constructors are identifiers, and so you can deal properly with prefixing, conflicts w/ other libraries, etc 14:20 clklein: But do you match against specific ones in syntax-case or syntax-parse? 14:20 samth: i don't know what you mean 14:20 samth: the type parser recognizes them by free-identifier=? 14:21 clklein: Do you write patterns that expect specific (perhaps renamed) types? 14:21 samth: which is the behavior of literals in both syntax-case and syntax-parse 14:22 samth: for example, you could provide `All' under the name `forall', and it would still work 14:22 clklein: I understand why you want free-identifier=? and the other binding-aware equality checks, but I'm having troulbe imagining cases where I'd want syntax-case or syntax-parse to treat literals that way 14:23 samth: but those *are* literals 14:25 samth: another example is the `class' macro, which recognizes `public', etc 14:25 clklein: Do you use patterns that contain the literal 'All' or do you just have a (free-identifier=? #'All something) somewhere? 14:25 samth: the former 14:26 clklein: OK, then I see why literals in pattern behave the way they do 14:26 samth: that's what literals are - identifier comparisons 14:26 samth: but in general, you don't really want the symbolic behavior 14:27 clklein: I know, but I was wondering why they aren't something else 14:27 samth: mostly because you shouldn't want that something else 14:28 clklein: Here's the example that motivated this question. 14:28 jonrafkind: making literals bound identifiers is somewhat annoying.. see shririam's posts about the require forms 14:29 clklein: Matthias suggested that Redex should let you define non-terminals like this: (M N ::= (M N) (λ (x) M) etc) 14:29 clklein: instead of ((M N) (M N) (λ (x) M) etc) 14:29 jonrafkind: ah thats a good change! 14:30 clklein: Why should `define-language' care what binding you have for ::=? 14:30 jonrafkind: syntax-parse would make that easy.. (nt:id ... equals-thing pattern ...) 14:30 jonrafkind: (M N ::= ::=) 14:30 jonrafkind: what if ::= is a non-terminal name? 14:31 clklein: Yea, there are a couple ambiguities. 14:31 clklein: (Also, what if it' a production.) 14:31 jonrafkind: (prefix-in redex: redex) (M N ::= redex:::= ...) 14:32 clklein: That's hideous, but I see your point. 14:33 jonrafkind: ha yes, it is rather rare when you have to rename literal identifiers but it can happen 14:33 samth: probably the colon isn't a good idea in this particular case 14:33 jonrafkind: right 14:33 clklein: What I don't like, though, is that `define-language' won't work right if someone happens to have a different binding for ::= 14:33 jonrafkind: thats the entire point of using free-identifier=? 14:34 jonrafkind: that it will work right no matter what 14:34 clklein: What? 14:34 samth: if they have a different binding, then they're specifying that they don 14:34 carleastlund: clklein, if they have a different binding for ::=, what behavior is "right"? 14:34 clklein: Won't it just not matching 14:34 samth: 't want that behaviror 14:34 jonrafkind: oh you mean if the user does (define ::= ...) and then tries to use `define-language' ? 14:35 clklein: carleastlund: I'm saying the ::= binding is irrelevant; it's just fluff syntax thrown in because people don't like parens 14:35 clklein: jonrafkind: right 14:35 carleastlund: clklein: You are wrong. 14:35 clklein: carleastlund: thanks for the explanation 14:35 jonrafkind: rofl 14:35 carleastlund: Because it eats up namespace that could be used for, say, nonterminals, it is meaningful and not just fluff. 14:36 carleastlund: If there's a reason someone might want to rename it, it should be a binding and act like one. 14:36 carleastlund: Programming to hard-coded constants is a pain, whether they're numbers, strings, or symbols. 14:36 jonrafkind: either a) the user knows what they are doing and expects rebindings to work or b) the user defined a literal and didn't realize it, and now things dont work and they have no idae why 14:37 jonrafkind: the error messages are particularly frustrating because tehy dont say "didnt match because literal identifiers are bound in different places" 14:37 carleastlund: They only "have no idea why" if you code *terrible* error messages into define-language. 14:37 jonrafkind: it just doesnt match and you are left to figure out why 14:37 clklein: I udnerstand that it lets you play tricks to allow ::= as a non-terminal or a production, but I'd be surprised if anyone ever used that feature. It seems more likely that someone will accidentally have a different ::= binding and be confused about why they're getting a `define-language' syntax error. 14:38 clklein: jonrafkind: exactly 14:38 carleastlund: Okay, I was wrong there, it's only if Ryan coded terrible error messages into syntax-parse. Which I already know he did, so you win on that point. 14:38 carleastlund: ;) 14:38 jonrafkind: coding your own error messages is very tedious, afaik 14:38 jonrafkind: i mean you would have to partially match the pattern and then decide if the literal is the thing not being matched 14:39 jonrafkind: but maybe syntax-parse could detect when literal's are symbolically the same but not bound to the same thing and issue a warning or something.. 14:39 clklein: The motivation here is to catch stupid errors like writing (n m number) instead of ((n m) number). I'm worried that doing the Right Thing just introduces another potential pitfall. 14:39 carleastlund: That would be a really good feature. 14:40 jonrafkind: clklein, ive had that problem a few times 14:41 clklein: jonrafkind: Yea, I agree we should do something to prevent it. I'm just not sure if the comparing to ::= based on binding is the right solution. 14:41 carleastlund: At this point the best I can say is that if you go with the flow of syntax-parse, you'll have the same kind of pitfalls as everything else in Racket, as opposed to inventing your own independent macro convention. 14:41 clklein: Admittedly, having an unintentional ::= binding is probably much less likely that messing up the current syntax. 14:41 jonrafkind: i tend to agree with you, im not fully convinced that having identifiers for all bindings is the best thing ever, but most syntax people will agree that it is.. 14:41 carleastlund: If you don't want a binding there, why not make it a keyword? Like #:= ? 14:42 carleastlund: Then it can never be bound. 14:42 clklein: hrm 14:42 jonrafkind: that seems like a hack in this case 14:43 carleastlund: You can always just use (~literal ::=) in syntax-parse if you really want, you know. 14:43 carleastlund: Or is it ~datum? Something. There is a way. 14:43 clklein: Oh, wait, the usual approach would be to provide a ::= binding, not expect ::= to be unbound, right? 14:44 carleastlund: Right. 14:44 carleastlund: Bind ::= to something that raises a syntax error when used as an expression. 14:44 carleastlund: In fact, syntax-parse requires this. 14:44 clklein: So a user isn't likely to have a different ::= binding if they have define-language 14:44 jonrafkind: it just requires it to be bound 14:44 carleastlund: Yes, to be bound, not to be an error. 14:44 jonrafkind: syntax-parse requires literals to be bound.. 14:45 carleastlund: clklein, correct 14:45 jonrafkind: ok so it works because redex is not a #lang 14:45 clklein: right 14:45 jonrafkind: if it was #lang redex, then you could do (define ::= ...) 14:45 clklein: those are silently clobbered 14:45 jonrafkind: somehow that seems like a fragile solution, but whatever 14:46 jonrafkind: whats the reasoning for allowing #lang things to be overridden anyway 14:46 carleastlund: Because there's no such thing as (only-in #lang racket [foo bar baz]). 14:47 carleastlund: Requires don't need shadowability because you can mangle them however you like; #lang bindings need to be shadowable if the user is to have any flexibility with them. 14:47 jonrafkind: seems like people should do (define (my+ ...) (provide (rename-out ([my-+ +]))) 14:48 jonrafkind: and then define their own #lang with the bindings they care about 14:48 jonrafkind: but i guess thats too much work.. 14:49 carleastlund: Defining a #lang is, in my opinion, heavyweight because it requires a lang/ directory and a reader.ss file in addition to the actual definition. 14:50 carleastlund: You can't just define it in-place. If I just want to rebind "cond" to a version that errors on fall-through, I shouldn't have to create all that extra stuff. 14:50 clklein: samth, jonrafkind, carleastlund: Thanks for the help! 14:52 jonrafkind: hm gr2 is somewhat slower than gr1, does anyone think its faster? 14:53 samth: gr2 is known to be slower 14:53 (join) _ryanc_ 14:54 jonrafkind: gr1 is already slow enough that I dont like to use drscheme.. gr2 being slower will completely kill it for me 14:54 samth: _ryanc_, clklein would like an explanation of why literals should be bound (and compared for identifier equality) :) 14:54 samth: what's typically slow for you in drracket? 14:54 samth: also, try turning off debugging 14:55 clklein: _ryanc_: Not really :) 14:56 clklein: The only piece that's too slow for me is search (specifically, the oval drawing if Robby's correct) 14:56 clklein: but I can deal 14:56 samth: clklein, i wish he would just forget the fancy graphics and highlight like every other text editor 14:56 jonrafkind: moving around the editor is slow 14:56 _ryanc_: clklein, I've been trying to figure out that earlier bug you send me (about expr/c), and I still have no idea what's causing it. 14:57 jonrafkind: the whole screen blinks when i scroll down one line 14:57 (join) Naith 14:58 _ryanc_: samth, do you have a build from today (master branch)? 14:59 samth: _ryanc_, no, but i could get one quickly 14:59 clklein: _ryanc_: It's OK. I can't remember I needed it :) I'm thankful for the fix to my ...+ problem, though. 15:00 samth: jonrafkind, that's a bug 15:00 _ryanc_: the program you sent me yesterday that made drracket hang no longer does... but I don't know if it's something I changed or some ambient change 15:00 samth: i'll try it out soon 15:00 jonrafkind: samth, do you see the same behavior? 15:01 (quit) anRch: Quit: anRch 15:02 samth: jonrafkind, no 15:03 _ryanc_: jonrafkind, I see no flickering, if you mean gr1, fwiw 15:03 jonrafkind: gr1 = no flickering, gr2 = flickering 15:07 carleastlund: jonrafkind, what OS? 15:10 carleastlund: In gr2 on Mac I see no flickering. 15:11 samth: _ryanc_, it still hangs 15:18 jonrafkind: linux, ubuntu 15:18 jonrafkind: my graphics card is fairly weak 15:19 samth: jonrafkind, i'm also on ubuntu w/ a weak graphics card, and it doesn't flicker 15:22 _ryanc_: samth, ok thanks 15:29 (nick) Lajla -> islaam 15:30 (nick) islaam -> His_Shadow 15:34 clklein: _ryanc_: Should Section 8.5 of the syntax docs define attr-id (as used in ~bind patterns)? It seems to be the same as attr-arity-decl in the define-syntax-class grammar. 15:36 clklein: (but I only discovered that from an error message that prompted me to specify the bound attribute's depth) 15:39 jonrafkind: samth, what kind of video card do you have? 15:40 _ryanc_: clklein, yes, it's actually an attr-arity-decl; I'll fix the docs 15:41 samth: jonrafkind, Radeon HD 4350 15:41 jonrafkind: i have an xpress 200, which I think its weaker 15:43 clklein: _ryanc_: thanks 15:44 samth: yeah, jonrafkind, that appears to suck 15:44 jonrafkind: yea ;p 15:44 samth: but it still shouldn't blink 15:44 jonrafkind: ok great 15:44 (join) Fare 15:45 clklein: When did graphics card start to matter for non-video game programs? 15:45 clklein: I missed that transition. 15:46 jonrafkind: computers work in the quantum world where the future is actually the past 15:46 jonrafkind: so things get slower the more into the future you go 15:46 tewk: clklein: I don't think its the graphics cards, its the programming language "racket" 15:46 jonrafkind: oooh low blow 15:47 clklein: Maybe we should go back to Scheme. 15:47 Fare: can I accelerate nethack with a good graphics card? 15:48 clklein: That was faster, right? 15:48 tewk: That would definitely speed it up :( 15:48 clklein: At least this "why the name change" document will be easier to write. 15:49 tewk: I think we should reintroduce uppercase forms "LET" "LAMBDA", that will make it faster. 15:49 clklein: I'll need to verify this with some unrealistic microbenchmarks, but that sounds right. 15:52 carleastlund: I think the only way video cards actually matter is compatibility -- that is, Jon's video card almost certainly has the performance for *editing text*, but if the rendering commands are not issued just right, it does dumb things like flickering. I used to see this all the time with web browsers under Windows. You know, way back when I actually had a Windows machine. 15:52 (quit) MayDaniel: 15:53 clklein: carleastlund: So you're saying we don't need to re-change the name? 15:53 carleastlund: We should have named it "S++" or "JavaScheme". Then it would have been widely adopted. 15:54 clklein: Oooh, JavaScheme is a good one. 15:54 carleastlund: Heh. "Racket on Rails". 15:55 clklein: Though, these days, JavaScriptScheme might tie us to a more popular ship 15:55 carleastlund: "ECMAScheme" 15:57 Fare: Make it "Runners on Rackets" or "Rifleman on Rackets", and you can have some winter sports logo. 15:57 _ryanc_: it appears to be friday again 15:57 carleastlund: Every darn week... 15:57 Fare: ... and then you die 15:58 _ryanc_: I don't know, I seem to recall weeks with two, even three fridays in them. 15:59 Fare: ryan: moving fast along the date change line? 16:01 carleastlund: I didn't say only once every week. 16:37 (join) masm 17:02 (join) MayDaniel 17:14 (quit) samth: Quit: Ex-Chat 17:19 (quit) _ryanc_: Quit: Leaving 17:54 (quit) danbrown: Remote host closed the connection 17:56 (join) samth 17:56 samth: jeapostrophe, drdr is down again 18:00 Fare: can restarting drdr be automated? 18:01 samth: i doubt it 18:01 samth: if it could tell it was down, it wouldn't be down :) 18:03 Fare: ever heard of demonizers / monitoring processes? 18:03 samth: it'd not down-down 18:03 samth: it's just not updating 18:04 jonrafkind: thunderbird is broken, whats robby's email address 18:04 samth: robby@eecs.northwestern.edu 18:04 jonrafkind: thanks 18:05 samth: and/or http://lmgtfy.com/?q=robby+findler+contact 18:08 jonrafkind: i was too distruaght at seeing './thunderbird; Segmentation fault' to think clearly 18:08 carleastlund: or speel correctly 18:08 jonrafkind: if you want something crazy like broccoli, ill kill you 18:10 carleastlund: Yeah, "broccoli" is a hard one. The Chinese food vendors where I went to college didn't sell "Beef w/ Broccoli", they sold "Beep Bocoli". It tasted about the same, though. 18:10 jonrafkind: i think its pineapple, oh wel 18:10 jonrafkind: arnolds pizza shop, no? 18:11 carleastlund: I would not expect a place called "Arnold's Pizza Shop" to sell either "Beef w/ Broccoli" or "Beep Bocoli", to tell you the truth. 18:12 jonrafkind: http://www.youtube.com/watch?v=UVA7MDQr1Nc 18:12 jonrafkind: welcome to 2001 or so 18:14 carleastlund: I see. 18:14 carleastlund: I must admit, I have never tried a pepperoni-and-bullets pizza. 18:17 (nick) samth -> samth_away 18:18 samth_away: jeapostrophe, can we do better than this: http://www.reddit.com/r/lisp/comments/e1p9t/a_reddit_clone_with_lispworks_in_20_minutes_and/ ? 18:18 rudybot: http://tinyurl.com/23vpglj 18:21 jonrafkind: id like to see a video of the errors you guys make and how you fix them 18:25 carleastlund: I think a video of me fixing bugs would look a lot like the "Angry German Kid" video. 18:28 (quit) jonrafkind: Ping timeout: 264 seconds 18:34 (quit) samth_away: Quit: Ex-Chat 18:43 (quit) MayDaniel: Read error: Connection reset by peer 18:46 (quit) Fare: Quit: Leaving 18:54 (quit) mceier: Quit: leaving 18:55 (join) jeapostrophe_ 18:55 jeapostrophe_: help! 18:55 jeapostrophe_: i ctrl-c'd git and now i can't pull/fetch/rebase 18:55 jeapostrophe_: what do i do? 18:58 (quit) martinhex: Remote host closed the connection 18:58 jeapostrophe_: eli: tewk: help? 18:59 carleastlund: Look up commands under "man git". The "git fsck" command may be your friend. 18:59 (join) martinhex 19:03 jeapostrophe_: i renamed my master, cloned the master again, then delete my old one 19:04 jeapostrophe_: luckily i had no changes 19:04 jeapostrophe_: phew 19:11 (quit) Naith: Quit: Naith 19:25 (quit) jeapostrophe_: Quit: jeapostrophe_ 19:59 (join) jeapostrophe_ 20:33 (quit) jeapostrophe_: Quit: jeapostrophe_ 20:37 (join) jeapostrophe_ 21:06 (quit) pygospa: Disconnected by services 21:06 (join) TheRealPygo 21:11 (quit) masm: Quit: Leaving. 22:08 (quit) jeapostrophe_: Quit: jeapostrophe_ 22:33 (join) lewis1711 22:36 lewis1711: is there a racket mode for emacs? 22:39 carleastlund: Not specifically, but many people use Quack mode; it is a Scheme mode you can find easily online and it supports Racket quite well. 22:40 carleastlund: Where by "find easily" I mean: http://www.neilvandyke.org/quack/ 22:40 carleastlund: :) 22:40 lewis1711: sounds good 22:52 (join) jeapostrophe_ 22:55 (quit) jeapostrophe_: Client Quit 22:55 (quit) carleastlund: Quit: carleastlund 23:18 (join) askhader 23:18 askhader: Are there no racket libraries that make easy the requesting of files from webservers? 23:22 (part) lewis1711 23:55 offby1: sure there are 23:57 offby1: rudybot: doc get-pure-port 23:57 rudybot: *offby1: your scheme sandbox is ready 23:57 rudybot: *offby1: no docs for a current binding, but provided by: net/url 23:57 offby1 rolls eyes 23:57 offby1: rudybot: eval (require net/url) 23:57 rudybot: *offby1: Done. 23:57 offby1: rudybot: doc get-pure-port 23:57 rudybot: *offby1: http://docs.plt-scheme.org/net/url.html#(def._((lib._net%2Furl..rkt)._get-pure-port))