00:01 Lajla: Fare, can't make it. 00:01 Lajla: To book a flight just yet. 00:02 Lajla: Fare, what is it? 00:03 Fare: oh well 00:04 Fare: I think I won't go after 00:07 (join) jeapostrophe 00:10 (quit) jeapostrophe: Client Quit 00:30 Lajla: Fare, what's it about? 00:36 Fare: I was wondering if anyone was driving there from Boston, at which point I would have asked for a hike 00:38 Lajla: Fare, yeah, but what is it about. 00:38 Lajla: I'd have to come from the Netherlands though 00:39 Lajla: Fare, do you have a boston accent? 00:40 Fare: does a french accent count? 00:43 Lajla: Fare, sure. 00:43 Lajla: Speak French? 00:44 Fare: bien sur 00:46 (quit) Fare: Quit: Leaving 01:12 (quit) shkk: 02:38 (join) pdelgallego 03:33 (join) masm 03:34 Lajla: eli, tell me again about the day we first met at Stackoverlow. 04:00 (quit) mario-goulart: Remote host closed the connection 04:00 (join) mario-go` 04:12 (join) samth 04:38 (quit) aeouidhtns: Ping timeout: 265 seconds 04:43 (quit) samth: Read error: Connection reset by peer 05:05 (join) hanDerPeder 05:17 (quit) Spewns: Quit: Leaving. 06:43 (quit) mario-go`: Quit: ERC Version 5.3 (IRC client for Emacs) 06:44 (join) mario-goulart 06:56 (quit) pdelgallego: Ping timeout: 246 seconds 07:02 (join) pdelgallego 07:05 (quit) hanDerPeder: Quit: hanDerPeder 07:12 (part) hellmage 07:16 (join) hanDerPeder 07:37 (join) kingping 07:37 kingping: Hello! 08:01 (quit) masm: Quit: Leaving. 08:29 askhader: racketeers are a nostalgic bunch, aren't they? ;-) 08:30 (join) aeouidhtns 08:31 kingping: askhader: So are other schemers I guess ;) Silent warriors. :D 08:31 Lajla: Common lisp rules, I want loops! 08:32 askhader: racket can give you loops. 08:32 Lajla: I was being moderately sarcastic 08:32 askhader: Ah. 08:32 askhader: Is your name pronounced Layla? 08:32 Lajla: askhader, /la:ila/ I guess yeah 08:32 kingping: askhader: Functional ones I suppose ? 08:33 askhader: kingping: well racket isn't purely functional, so we can do even better (/worse/) than that. 08:33 askhader: Is this a common name in the Netherlands? 08:33 Lajla: askhader, no, you can just define something like (while (> k 5) (display k) (set! k (+ k 1))) 08:34 Lajla: askhader, not that I know of. 08:34 askhader: There's nothing functional about that. 08:34 Lajla: askhader, ehh, that was against kingping. 08:34 Lajla: Pardon 08:34 askhader: Not at all. 08:34 Lajla: But you can just macro that and can loops. 08:34 Lajla: You can do it with tail recursion or with continuatoins even. 08:34 askhader: Mhm. 08:35 kingping: Lajla: I'm not tend to use destructive functions though ;] 08:35 Lajla: ((while cond do ...) (let ((cont (call/cc (lambda (x) x)))) (when cond do ... (cont cont)))) 08:35 Lajla: kingping, neither do I, but I'm just showing that you can have loops in Scheme if you want. 08:35 Lajla: A lot of people from CL seem to think it is not possible. 08:36 Lajla: It's more like that you don't need it. 08:36 kingping: Lajla: Yep, I suspected that :] 08:36 askhader: slash want it. 08:36 Lajla: askhader, well, some times the do macro does peep up. 08:37 askhader: Well seeing as I have not messed with continuations at all. 08:37 Lajla: askhader, CALL/CC statement considered harmful. 08:37 askhader: Oh? Charming. 08:38 Lajla: askhader, they make code as unreadable as goto's really. 08:38 Lajla: But it's cool for compiler writing. 08:38 kingping: However I'm trying to decide as to whether to be using either for or for/list with put-u8 which returns "unspecified values". 08:39 kingping: It has side effects. 08:39 Lajla: kingping, well, what I usually do is just compose the entire string funcitonally and output it at the end. 08:39 Lajla: Instead of outputting it in pieces. 08:39 askhader: I learned this via my interactions with haskell's putStrLn 08:39 askhader: In scheme, throwing a display anywhere is just fine =] 08:40 Lajla: Maybe, but I don't do it. 08:40 askhader: Right, but my point is that you can get away with it. 08:40 askhader: Because I think display returns null? 08:40 Lajla: askhader, well, unspecified value. 08:40 Lajla: I think implementations can decide what it returns themselves. 08:41 askhader: Ah I see. 08:41 kingping: Lajla: http://freebsd.pastebin.com/wNe2nqK7 08:41 kingping: (for ([x data]) (put-u8 outpr x)) produces no values. 08:42 Lajla: kingping, I have no idea what for does. 08:42 kingping: Lajla: Iterates over a list ;] 08:43 Lajla: Isn't that for-each? 08:43 kingping: Maybe. 08:43 kingping: I dunno. :D 08:44 kingping: Lajla: Ah, probably `for` is for iterating over many lists in parallel. 08:44 kingping: While `for-each` is for iterating over one list. 08:44 Lajla: kingping, ah, I did not know that. 08:44 kingping: duh 08:45 kingping: Lajla: Yep, that's useful. 08:45 Lajla: Well, to be honest, I only use Racket as an R5RS compile.r 08:45 Lajla: I only use the R5RS mode of racket 08:45 kingping: > (for/list ([i '(1 2 3)] [j '(4 5 6)] [k '(7 8 9)]) (+ i j k)) 08:46 kingping: (12 15 18) 08:46 kingping: "for/list provided from scheme/base, scheme" 08:48 (join) Spewns 08:57 (join) waltermai 08:57 waltermai: does drracket on the mac have no debug stepper? 08:58 (join) jeapostrophe 09:02 (join) jsnikeri` 09:05 (quit) jsnikeris: Ping timeout: 240 seconds 09:05 waltermai: I know it's impolite to repeat questions, but I surely would appreciate any response as to whether or not DrRacket on Mac can debug. there is no button, but some tool called 'the stepper' is loaded according to preferences. 09:10 (quit) abusead: Ping timeout: 260 seconds 09:11 (join) abusead 09:26 (join) b-man 09:47 kingping: How do I write 32 bit integer to a binary output port? 09:55 tewk: kingping: integer->integer-bytes 10:00 kingping: tewk: Thanks tewk! 10:00 kingping: :] 10:03 (quit) waltermai: Remote host closed the connection 10:10 (quit) jeapostrophe: Quit: jeapostrophe 10:28 (join) jsnikeris 10:52 (join) samth 10:53 (quit) kingping: Quit: Bed time. Vale. 11:04 stamourv: tewk: ping 11:05 (quit) b-man: Remote host closed the connection 11:12 tewk: stamourv: pong 11:12 (quit) samth: Read error: Connection reset by peer 11:15 (join) anRch 11:23 (join) shkk 11:23 (join) sstrickl 11:31 (quit) hanDerPeder: Quit: hanDerPeder 11:32 stamourv: tewk: you know the internals of the gc, right? 11:32 (part) jsnikeri`: "ERC Version 5.3 (IRC client for Emacs)" 11:32 (quit) jsnikeris: Quit: ERC Version 5.3 (IRC client for Emacs) 11:33 jay-mccarthy: clklein: more progress with redex state exploration 11:34 tewk: stamourv: yes 11:34 jay-mccarthy: clklein: i've given the arr* over 24 hours to run, but when i make small tweak (using a single hash table for all paths... rather than only a cycle detecting ht) it completes in 2 minutes 11:34 stamourv: tewk: are large objects handled in a special way, or are they moved around like everything else? 11:35 stamourv: I have code that deals with a 1M element vector of complexes, and GC time is about 75-80% of the run time 11:37 tewk: stamourv: they don't move. 11:38 tewk: The 1M vector may be in a big object, but the 1M complexes objects are probably allocated as normal small objects. 11:41 stamourv: ok, so do you think marking all these complexes is what takes time? 11:42 stamourv: or rather, copying them and updating the 1M pointers? 11:43 tewk: Hard to say, but if you modify that vector it is going to get marked during the next GC. and that marking is going to be O(1M) 11:44 stamourv: that vector is modifid all the time, so that's probably it 11:44 stamourv: thanks 11:45 (quit) jao: Ping timeout: 245 seconds 11:47 (join) mgummelt 11:48 mgummelt: Why does the DrRacket Macro Expander result in forms that don't match this fully expanded grammar http://docs.racket-lang.org/reference/syntax-model.html#(part._fully-expanded) 11:48 mgummelt: for example, (lambda (x) x) isn't valid in that grammar 11:49 jay-mccarthy: what are you calling the Macro Expander 11:49 mgummelt: The Macro Stepper rather 11:50 jay-mccarthy: If you turn off Macro Hiding, then press "End", you will get fully expanded code 11:50 mgummelt: Thanks! 11:52 offby1: rudybot: uptime 11:52 rudybot: *offby1: I've been up for three weeks; this tcp/ip connection has been up for one week 11:57 (quit) mgummelt: Ping timeout: 252 seconds 11:59 clklein: jay-mccarthy: I don't understand. What's in your hash table? 11:59 jay-mccarthy: the intermediate terms 11:59 (join) jonrafkind 11:59 jay-mccarthy: that will reduce the same way as the did the first time it explored them 12:00 (quit) anRch: Quit: anRch 12:01 clklein: Still don't understand :) 12:02 jay-mccarthy: http://gist.github.com/498511 12:02 clklein: Don't all terms reduce the same was the second time? 12:02 jay-mccarthy: no it is a non-deterministic computations 12:03 jay-mccarthy: the model is of a multi thread system 12:03 clklein: Oh, and you only follow one of the options each time there's a choice? 12:03 jay-mccarthy: i do a dfs 12:04 jay-mccarthy: eventually i come back and look at the others, but if i find a state i've seen before, i stop 12:04 clklein: I haven't made it through the code yet, but that sounds exactly like what arr* does 12:04 jay-mccarthy: no 12:05 jay-mccarthy: arr* only cares about duplicates on the same path 12:05 jay-mccarthy: and duplicate answers 12:05 clklein: ooooh 12:05 clklein: that is stupid 12:05 jay-mccarthy: you'd have to do both to detect cycles 12:06 jay-mccarthy: so it seems to me the point of arr*'s ht was just to detect cycles 12:06 clklein: Oh, yes. 12:11 clklein: I wonder if storing all the intermediate terms might use a lot of memory 12:11 jay-mccarthy: i think it should be a second function 12:11 jay-mccarthy: it is the difference between 2 minutes and 24+ hours in time 12:11 jay-mccarthy: (also notice that i have the nice generator to get the answers incrementally) 12:12 jay-mccarthy: i think the random one would be useful in the core too 12:12 clklein: Why do you think it should be a separate function? 12:12 jay-mccarthy: or optional argument 12:12 jay-mccarthy: because it might not always be the right thing 12:12 clklein: because of memory usage? 12:13 jay-mccarthy: ya 12:19 clklein: Your trie idea might be worth exploring too 12:19 jay-mccarthy: i still think that would be good 12:19 clklein: to have just one function without extra doodads 12:19 jay-mccarthy: btw, we're modeling MCAPI --- http://www.multicore-association.org/workgroup/comapi.php 12:21 clklein: cool 12:21 clklein: Is the goal to explain the API more precisely or concisely than the existing docs? 12:22 jay-mccarthy: ya the docs are in english, a student made a language for apis like this, wrote mcapi in it, we've implemented that language in redex 12:22 jay-mccarthy: now we can ask questions about the api, by exploring the whole state space 12:22 jay-mccarthy: it's a "golden" implementation 12:23 jay-mccarthy: next he is going to make a c library that communicates with racket through sockets 12:23 jay-mccarthy: so you can compile and test real c programs 12:23 clklein: hah! 12:23 clklein: That's awesome. 12:23 jay-mccarthy: write now it is a major pain to write programs in the redex initial term 12:24 jay-mccarthy: but the c program will take c api calls and turn them into the redex term, etc 12:24 jay-mccarthy: it will be pretty rad 12:24 clklein: definitely 12:24 jay-mccarthy: but even now it is more complete than existing implementations of mcapi 12:25 jay-mccarthy: (this thing that now takes 2 minutes returns 2 different allowed end states, but the existing implementations are buggy and will only ever give one of them) 12:25 clklein: Have you considered testing your golden implementation against existing ones? 12:25 (quit) aeouidhtns: Ping timeout: 265 seconds 12:25 jay-mccarthy: i mention all this because we will be pushing redex pretty hard 12:25 jay-mccarthy: there is only one and it is known to be buggy (above) 12:26 clklein: I ask because I've been (random) testing the Racket VM model against its implementation, and it's been a worthwhile endeavor. 12:28 clklein: But anyway, we've started working on a compiler to turn Redex patterns into Racket matching functions. (The existing matcher is an interpreter, roughly). 12:28 jay-mccarthy: nice 12:28 clklein: It'll be a few months befor we have anything useful, but it should greatly speed up the kinds of programs you're runnign. 12:29 (part) jay-mccarthy 12:29 (join) jay-mccarthy 12:29 (join) samth 12:30 jay-mccarthy: what's the major difficulty? 12:32 clklein: `in-hole' patterns are kind of tricky 12:32 clklein: as are non-linear pattern variables 12:33 jay-mccarthy: are you compiling to racket/match and letting it do complicated work? 12:34 jay-mccarthy: also i can imagine partially compiling to racket/match with (app (interp this-part) inter-results) 12:34 jay-mccarthy: for parts where you still have to use the interpreter 12:34 clklein: We talked about trying to leverage racket/match, but enough things are different that we're not using it right now. 12:35 jay-mccarthy: what's different? 12:35 clklein: sometimes we want all matches, not just the first 12:36 clklein: (first matching clause, I mean) 12:36 jay-mccarthy: i would extend racket/match to allow that rather than make a separate package 12:36 jay-mccarthy: but that's my softeng preference 12:37 jay-mccarthy: bottom line for me is that racket/match SHOULD be perfect for this 12:37 jay-mccarthy: if it isn't, something's wrong with it 12:38 clklein: It also doesn't handle ellipses the way Redex does 12:38 clklein: e.g., `(,x ... ,y ...) 12:38 jay-mccarthy: it is greedy but redex finds all matches 12:38 jay-mccarthy: right? 12:39 clklein: It's more than that I think 12:39 clklein: (match '(a b c d e) [`(,x ... ,y ... ,x ...) x]) 12:40 clklein: Err, maybe I should have used rudybot for that 12:40 clklein: rudybot: (match '(a b c d e) [`(,x ... ,y ... ,x ...) x]) 12:40 rudybot: clklein: hey, sometimes i get emacs convinced that "C-y" is some command that sets a mark. C-h k y confirms it's "yank", do you know why? 12:40 jay-mccarthy: you have to say eval 12:40 clklein: psh, why else would I talk to rudybot :) 12:40 clklein: rudybot: eval (match '(a b c d e) [`(,x ... ,y ... ,x ...) x]) 12:40 jay-mccarthy: to ask it's uptime obvs 12:41 rudybot: clklein: error: with-limit: out of time 12:41 clklein: That's not the answer I expected. Newer versions give `(a b c d e) 12:41 jay-mccarthy: how does that make sense? 12:42 sstrickl: yeah, the repeated x should get bound to null, shouldn't it? 12:43 clklein: yea 12:43 sstrickl: since there's no repetition in the list 12:43 clklein: To be honest, I didn't even know match allowed non-linear pattern variables until a couple weeks ago. 12:45 offby1: rudybot often times out the first time he evals something for someone; I've never figured out why. 12:45 offby1: Perhaps it's compiling something. 12:45 offby1: rudybot: eval (match '(a b c d e) [`(,x ... ,y ... ,x ...) x]) 12:46 rudybot: *offby1: your scheme sandbox is ready 12:46 rudybot: *offby1: ; Value: (a b c d e) 12:47 chandler: That's, uh. That can't make sense. 12:47 offby1: I sure don't understand it. 12:48 askhader: I call it consciousness. 12:49 offby1: maybe the point is: the ,x matches the whole list, and the stuff after the first ellipsis is irrelevant. 12:49 clklein: jay-mccarthy: But anyway, the argument against somehow integrating with racket/match seems less clear than I remember it. I'll talk to Robby again. 12:49 offby1: Sort of a too-greedy match. 12:49 clklein: sounds like a good guess 12:49 sstrickl: samth: are you on? 12:49 samth: yeah, i'm here 12:49 samth: i think that's a known PR 12:49 sstrickl: okay, just as long as you're seeing this 12:50 sstrickl: ok 12:50 (nick) rudybot -> notabothonest 12:50 (nick) notabothonest -> rudybot 12:53 samth: ok, i was wrong, the pr i was thinking of is different 13:01 samth: clklein, can you submit that as a PR? 13:27 (join) bcursor 13:35 (quit) bcursor: Quit: Page closed 13:36 (join) anRch 13:42 (quit) paul_stansifer: Ping timeout: 252 seconds 13:42 (join) hanDerPeder 13:50 (join) Toekutr 14:03 clklein: samth: sure 14:14 samth: clklein, thanks! 14:16 (quit) abusead: Read error: Operation timed out 14:16 (join) abusead 14:50 (join) paul_stansifer 15:09 (join) RyanRN 15:20 (quit) RyanRN: Remote host closed the connection 15:24 (quit) anRch: Quit: anRch 15:27 (quit) rudybot: Read error: Connection reset by peer 15:46 (join) masm 15:56 (join) aeouidhtns 16:10 (quit) shkk: 16:13 offby1 is surprised eli hasn't weighed in 16:13 offby1: he's the "match" expert, isn't he? 16:14 samth: no, i'm the match expert, usually (when it isn't ryan or casey or robby, implementors of other pattern matchers) 16:29 offby1: heh 16:29 offby1: I probably figured it was eli because he introduced me to it 16:32 chandler: I just assume that eli is an expert in everything. It works out more often than not. 16:35 offby1: that too 16:49 (join) rudybot 17:15 (quit) sstrickl: Quit: sstrickl 17:34 (join) b-man 17:49 (quit) jonrafkind: Ping timeout: 276 seconds 18:21 (quit) pdelgallego: Ping timeout: 265 seconds 18:22 (quit) samth: Ping timeout: 265 seconds 18:33 (join) sstrickl 18:48 (quit) Toekutr: Quit: REALITY IS TEARING ITSELF ASUNDER, BUT I MUST RACE 18:53 Lajla: chandler, on a call by need/name model, (let ((x (f))) x) would be a tail call, right? 18:54 Lajla: The x where the entire let evaluates to, that is. 19:01 (quit) hanDerPeder: Quit: hanDerPeder 19:04 (quit) masm: Quit: Leaving. 19:05 (join) hanDerPeder 19:18 (join) Gwyth 19:19 (nick) b-man -> bellani 19:22 (nick) bellani -> eduardo-bellani 19:33 (join) samth 19:52 (quit) samth: Read error: Connection reset by peer 20:26 (quit) hanDerPeder: Quit: hanDerPeder 20:34 (quit) eduardo-bellani: Remote host closed the connection 21:18 offby1 belatedly discovers shriram's P4P 21:50 emma: Racket is the first hit when you just type 'racket' into google 21:51 Lajla: emma, that went fast. 21:51 Lajla: emma, you know, I have a British accent. 21:51 (join) hellmage 21:52 Lajla: But my sense of hairstyling is quite postmodern 21:52 emma: Lajla: Are you actually British? 21:53 Lajla: emma, no, Dutch. 21:53 Lajla: But I sound kind of like a North-east londoner 21:53 Lajla: emma, how do your vast racket skills progress? 21:54 emma: Lajla: when you say things like that I think you must be mocking me :) 21:54 emma: I barely know any scheme yet. 21:55 emma: I've never claimed to know anything either. 21:57 offby1: emma: beware of google's customizations. You should really try that after clearing all your cookies. 21:58 chandler: I have my browser set to clear everything when I quit it, and it's showing up first for me. 21:58 Lajla: emma, aww, sorry, didn't mean to give that impression 21:58 offby1: interesting. 21:59 offby1: I get the Wikipedia entry as my first hit. 21:59 offby1: ... but after clearing my cookies, I see what emma and chandler see :) 22:00 chandler: The excerpt they pick is a bit unfortunate - "Racket makes it easy to use TCP sockets and spawn threads to handle them." 22:00 offby1: Next I'll try tossing my cookies. 22:00 offby1: yeah 22:00 chandler: A more useful short summary than the rather unhelpful "Racket is a programming language." would probably be picked up. Actually, I think there's even a meta tag you can use for this. 22:01 chandler: Indeed, meta name="description" will get picked up if present. 22:06 Lajla: offby1, why did you visit the wiki article that much? 22:07 Lajla: I get all sorts of stuff on tennis and table tennis sportswear, I guess that's because I play that sport 22:08 chandler: Y'all are not cleaning your browsers often enough. 22:15 Lajla: chandler, in fact, I never, AND I use google chrome, imagine how little privacy I enjoy. 22:44 emma: can you use the unix source for Racket to compile from source on Linux? 22:44 bremner: yes 22:44 bremner: it is not hard, but it takes a little while. 22:45 emma: okay thank you 22:45 emma: I just want to have the most recent Racket :) 22:45 bremner: well, there is really only one released version of racket per se. 22:45 emma: I use Ubuntu but the repos still have the older versions 22:45 bremner: yes, that is because debian hasn't done their work for them yet ;) 22:46 emma: yeah the repos still have it by the other name 22:46 bremner: emma: do you know how to build debian packages from source? 22:46 emma: No not quite. 22:46 emma: I might be able to do it with my launchpad page. 22:46 bremner: ok, better to do ./configure && make in the usual style. 22:51 offby1: chandler: My browser has an aluminum-foil catchbasin under it, which is so full with grease that I need to empty it. 23:07 offby1: Resolved: shriram K is a great writer 23:48 Lajla: bremner, what are the advantages of the most recent racket? 23:49 Lajla: Because I just switched to Racket from PLT, and one thing I find annoying is that it produces an error if your code features an unboun symbol 23:49 Lajla: I'm sure you can turn it off. 23:49 Lajla: But I haven't found it yet.