00:26 (quit) nicktick: Ping timeout: 245 seconds 00:29 (quit) sm: Read error: Connection reset by peer 00:30 (join) sm 00:39 (join) nicktick 00:51 (quit) nicktick: Ping timeout: 240 seconds 02:21 (join) nicktick 04:05 (join) masm 04:59 (join) noelw 05:05 noelw: flowwwwwwwwwwwwwwwwwwwwwwwwww! 05:17 (quit) nicktick: Ping timeout: 252 seconds 05:59 (join) etaeta 06:00 etaeta: the links to mailing list pages on http://racket-lang.org/community.html are not working 06:01 etaeta: you can go the pages via the list archives, for example, but the direct links point to the wrong address 06:02 (quit) etaeta: Client Quit 06:55 (join) nicktick 07:09 (quit) nicktick: Quit: ChatZilla 0.9.86 [Firefox 3.6.3/20100405190230] 07:10 (join) nicktick 07:31 (join) cky 08:04 (quit) nicktick: Ping timeout: 276 seconds 08:05 (join) nicktick 09:51 (join) jeapostrophe 10:21 noelw: jeapostrophe, flowww looks interesting. 10:21 jeapostrophe: it works alright so far. could be better 10:22 jeapostrophe: i just got a grant to fund it so i will spend more time on it 10:22 jeapostrophe: the real task is to find the right abstractions and api 10:22 jeapostrophe: my marching orders are "not callbacks, anywhere" 10:23 noelw: Good news on the grant. 10:23 noelw: It is certainly the right direction. I've thought a bit about this and I'm glad someone is working on it 10:24 noelw: Which part of the github repo makes up the planet package refed in the docs? 10:24 noelw: I can't work out what corresponds to (planet byu-plt/flowww:1:0) 10:25 noelw: There is no main.ss or main.rkt I could find 10:25 jeapostrophe: flowwww-lib i think... the docs are made up 10:25 jeapostrophe: look at the examples (fwitter, partner-picker, and frweb/examples) 10:26 jeapostrophe: the two students who worked on the examples (and docs) had never done racket before so they're a little messy 10:27 noelw: Ok, I'll take a look around 10:29 jeapostrophe: you'll be seeing more changes soon-ish too 10:37 (quit) nicktick: Ping timeout: 264 seconds 10:55 samth: where is this flowww of which you speak? 10:56 jeapostrophe: http://github.com/jeapostrophe/flowww 10:56 jeapostrophe: it turns xexprs with frp behaviors into html with flapjax nodes to update from the server 10:56 (join) nicktick 10:58 samth: sounds pretty cool 11:00 jeapostrophe: in theory i could combine it with moby and move the logic to the app as well 11:00 jeapostrophe: the main thing i'm working on right now is allowing behaviors everywhere (like in the rest of a list or the attributes) and figuring out the interface for communication back to the server 11:01 jeapostrophe: the first is just sprucing up flapjax 11:01 jeapostrophe: the second is more interesting 11:01 clklein: A 11:01 samth: when you're done, you should do a screencast :) 11:01 jeapostrophe: without moby i can do everything but it will be slower 11:01 clklein: (sorry, wrong window) 11:01 samth: it's what all the cool kids are doing 11:01 jeapostrophe: :P 11:02 clklein: But maybe "A" is the right grade for flowww's coolness 11:02 jeapostrophe: hah 11:03 jeapostrophe: samth: hopefully matthew will verify that scribble patch and you can be on your way 11:03 noelw: actually, jay should do types. 11:04 jeapostrophe: ? 11:05 noelw: flowww + types 11:05 jeapostrophe: ah 11:06 noelw: I would be very happy to never see a dynamic check fail again 11:06 jeapostrophe: close your eyes 11:06 jeapostrophe: :) 11:06 noelw: :-P 11:06 clklein: Just like a C programmer! 11:07 noelw: I find it hard to program with my eyes closed. 11:07 noelw: I'm a touch typist, but I'm not *that* good 11:07 jeapostrophe: i'm very excited with vincent's fleshing out of the typed api as a side-effect of the optimization work 11:09 stamourv: jeapostrophe: if there's anything missing, let me know 11:09 stamourv: so far, I've mostly added stuff as I needed it to port benchmarks, so there's still a lot of stuff missing 11:55 (quit) jeapostrophe: Quit: jeapostrophe 12:02 (quit) noelw: Quit: Page closed 12:10 (join) jonrafkind 12:37 (quit) nicktick: Ping timeout: 260 seconds 12:51 jay-mccarthy: mario-goulart: you asked about multipart/form-data... 12:53 jay-mccarthy: mario-goulart: that's what 'binding:file' bindings are 12:53 mario-goulart: Hi, jay-mccarthy. Yes. 12:54 mario-goulart: Ah, I see. Thanks for the tip. I'm gonna take a look at it. 13:19 (part) sm 13:25 jonrafkind: what does -A do? 13:25 jonrafkind: for racket 13:25 jonrafkind: -A , --addon : Addon directory at 13:25 jay-mccarthy: addons are libexts 13:25 jay-mccarthy: i 13:26 jay-mccarthy: think at least 13:34 (quit) mario-goulart: Remote host closed the connection 13:36 (join) mario-goulart 13:43 (join) sstrickl 13:50 jonrafkind: which means what 13:51 jay-mccarthy: which means if you don't already care then you shouldn't care 13:51 jonrafkind: \o/ 13:51 jay-mccarthy: libexts are the old way of building ffis 13:51 jay-mccarthy: they create new kernel-like modules 13:52 jay-mccarthy: the openssl collect used to be the one that i would refer to understand them 13:53 jay-mccarthy: now i think the only remaining ones in the core are srpersist, mysterx, and mzcom 13:54 jay-mccarthy: and i believe that paulsteck has a client (or something) that uses those 13:54 jay-mccarthy: the excel type checker that sk made used them too but it has been rotten for a long time 13:55 jay-mccarthy: (i think that was called xelda) 13:57 jay-mccarthy: that #%top thing is wild jonrafkind 13:58 jonrafkind: isnt that like the only reasonable way to do it 14:19 clklein: That inspires me to write my own #%top too, one that binds the last result to `it' like the smlnj repl does (and probably others) 14:23 jonrafkind: eli has his own repl thing I was using for a while, it has whacky features like that, let me see 14:24 bremner: clklein: ghci (haskell) does the it thing too. 14:25 jonrafkind: doesnt seem like eli's interactive thing has `it', but you can look at it anyway: http://www.barzilay.org/misc/interactive.ss 14:28 clklein: bremner: Ah, I see! It doesn't mention that it defined `it' ("val id = 3 : int") so I never noticed. 14:43 mattmight: Does racket have a lib for purely functional (balanced) maps? 14:48 tewk: mattmight: make-immutable-hash 14:48 mattmight: Oh, perfect. 14:54 samth: also, (hash) is the same as (make-immutable-hash) 15:05 mattmight: Hmmm. A sorted map would actually be better, since I'll occasionally need to compare two maps. 15:05 mattmight: So, no sorted maps? 15:07 mattmight: I guess I'll have to hack up something from Okasaki. 15:13 clklein: samth: Is that functional data structures library you mentioned on racket-dev available? 15:16 samth: clklein, not yet 15:16 samth: hopefully soon 15:18 clklein: so Okasaki is mattmight's best bet today? 15:18 samth: i'm not sure what he means by comparing maps 15:19 samth: right now, equal? works on hash tables 15:19 samth: i wouldn't switch to something else unless you're sure that doesn't perform 15:20 (join) tsuru 15:20 sstrickl: Well, you might also want to know whether a given map is a superset of another map (i.e. they agree on all the shared keys, and one map contains a superset of the keys of the other map) 15:20 (part) tsuru: "ERC Version 5.3 (IRC client for Emacs)" 15:21 samth: yeah, i just think if you want maps, use the ones provided, until you're sure they don't perform well 15:23 jay-mccarthy: mattmight: the okasaki maps are implemented on planet 15:24 clklein: We need a better way to search planet. I expected them to be there, looked for several minutes, and eventually concluded that they're not. 15:24 (quit) masm: Quit: Leaving. 15:24 jay-mccarthy: i agree 15:24 jay-mccarthy: planet is horrible in that dept 15:24 samth: there's lots of things we need for planet 15:24 jay-mccarthy: it is too popular for its own good 15:25 samth: it's too popular for the effort we've put in so far 15:26 jay-mccarthy: i still like 'data' despite eli's arg 15:26 samth: me too 15:27 clklein: jay-mccarthy: So which package is it? I see galore used to have finite maps. 15:30 jay-mccarthy: i'm looking... 15:32 jay-mccarthy: my trie package is based on the okasaki paper and you can use an older version of galore 15:32 samth: really, just use hash tables ... 15:32 jay-mccarthy: i think so too 15:33 clklein: I'm just curious where my planet hunting failed. I assumed the old version of galore was too old to run. 15:36 jay-mccarthy: updating them is probably better than rewriting it from scratch 15:39 (join) blake_johnson 15:48 eli: jonrafkind: my thing binds `^' to the last result, `^^' to the one before that, etc. 15:48 eli: And using `#%top' for that isn't good in general, since you'd have to use that specific binding. 15:48 jonrafkind: oh right 15:49 jonrafkind: what 15:49 jonrafkind: you mean (syntax-case (#%top ^) -> do something) ? 15:50 samth: jay-mccarthy, http://drdr.racket-lang.org/20562/collects/teachpack/2htdp/scribblings/2htdp.scrbl ? 15:50 eli: I mean any dependency on the language you might have. This is why my thing works completely at its own repl level, instead of using whatever happens to be available. 15:51 (join) acon 15:51 jay-mccarthy: i think that is a race-condition between 2htdp and batch-io 15:51 samth: oh, that's unfortunate 16:21 samth: eli, ping 16:22 eli: ? 16:22 samth: is there any way to get more control over how things are invoked for the run-nightly-tests script? 16:22 samth: without writing a whole new module? 16:22 eli: Like what? 16:23 samth: like, passing command line arguments 16:23 samth: or calling a function 16:25 eli: I'll try to get to improving that file so it's more easily extended. 16:59 askhader: Does anyone here have experience with authentication using the racket webserver? 16:59 jay-mccarthy: i may have a little 16:59 jay-mccarthy: what are you experiencing? 17:00 askhader: No, I'm just trying to establish an authenticated 'state' for some of my functions. Here is how I think it should work, correct me if I am wrong. Use either basic or digest authentication, save an 'authentic' cookie and then check for that cookie in all functions that require authentication 17:00 askhader: Is this accurate? 17:01 jay-mccarthy: ya, although you probably don't want the ui of basic/digest 17:01 askhader: What can I use instead? 17:01 jay-mccarthy: a form 17:01 askhader: I am using a form 17:02 jay-mccarthy: then that isn't basic/digest 17:02 askhader: Well I thought digest was just The Right Way(TM) 17:02 askhader: So can I authenticate against the mysql db and then issue a cookie? 17:02 jay-mccarthy: yup 17:02 jay-mccarthy: look at this http://github.com/jeapostrophe/m8b/blob/master/id-cookie.rkt and how i use it in the 'go.rkt' file 17:02 askhader: How does the cookie work? I don't actually pass it as an argument to the function do I? I usse it and then check for it independently, no? 17:03 askhader: Thanks 17:05 jay-mccarthy: eli: how come the drr repl doesn't allow @ stx for #lang scribble/base? 17:06 eli: The repl still uses the plain reader -- that's related to my recent replies to robby. 17:08 jay-mccarthy: that's what i thought... i was worried it would use it if it wasn't a whole-body-readers? 17:10 (part) eli: "*sigh*" 17:11 (join) eli 17:11 eli: jay-mccarthy: Well, once drscheme is more well behaved (hopefully Robby agrees with that part), we'll need to implement expression readers too. 17:11 samth: what thread is this? 17:11 jay-mccarthy: a private one 17:11 samth: ah 17:12 jay-mccarthy: i asked because i just implemented the repl submit using his new interface only to realize it was basically useless :) 17:12 eli: The enter thing? 17:12 jay-mccarthy: ya 17:12 eli: How is it useless? 17:13 jay-mccarthy: I type "ancestor(bob, sam)." and i get (#%top-interaction ancestor) (#%top-interaction bob (unquote sam)) 17:13 jay-mccarthy: my reader doesn't get run so i can't do anything with it 17:14 eli: Well, that's not useless -- just doesn't do what you thought it would. 17:14 eli: That's why I talked about using the expression reader. 17:14 jay-mccarthy: it doesn't do what i can do with the tool api 17:14 eli: It would be much saner to use that for both, rather than introduce a third thing. 17:16 jay-mccarthy: i agree 17:18 askhader: jay-mccarthy: Heh I'm having a lot of difficulty with your syntax 17:18 jay-mccarthy: oh? 17:18 askhader: A lot of functions/syntaxes I've not dealt with 17:18 askhader: (contracted ) etc. 17:19 jay-mccarthy: feel free to ask 17:19 askhader: or the . -> . operator, never encountered that either 17:19 eli: jay-mccarthy: Some feebdack at this point re combining both would be good. 17:19 jay-mccarthy: eli: now that i've done this i'm preparing an email 17:19 eli: jay-mccarthy: From the syntax/module-reader point, this just means adding a property that records the expression reader. 17:19 jay-mccarthy: ya 17:19 eli: samth: That commit should make it easy to add stuff. 17:20 eli: samth: And I gave your horrendously slow tests 5 more minutes. 17:21 jonrafkind: Blagojevich, 53, has pleaded not guilty to charges that he schemed to get a large payoff, a high-paying job after he left office or a big campaign contribution in exchange for the Senate seat. He has also pleaded not guilty to conspiring to launch a racketeering scheme using the power of the governor's office. 17:21 jonrafkind: now this is funny 17:26 samth: eli, i can now choose something different for the slow machines 17:26 samth: that will run faster 17:26 samth: if you give me a `slow?' boolean 17:35 eli: samth: Good idea, I'll do that later. 17:36 eli: It will need to skip them usually, but not if it's a release build, and in that case maybe use a larger timeout. 17:54 (quit) acon: Ping timeout: 248 seconds 18:00 (quit) huma: Read error: Connection reset by peer 18:00 (join) huma 18:16 (join) anRch 18:19 (nick) samth -> samth_away 18:53 (quit) sstrickl: Quit: sstrickl 19:06 (quit) anRch: Quit: anRch 19:06 (join) jeapostrophe 19:26 (join) jao 20:05 (quit) jeapostrophe: Quit: jeapostrophe 20:21 (join) jeapostrophe 20:28 (quit) jeapostrophe: Quit: jeapostrophe 20:29 (join) nicktick 20:33 (quit) jonrafkind: Ping timeout: 240 seconds 20:34 (join) clklein_ 20:34 (quit) clklein: *.net *.split 20:34 (quit) bartwe_: *.net *.split 20:35 (quit) nicktick: Quit: ChatZilla 0.9.86 [Firefox 3.6.3/20100405190230] 20:36 (join) nicktick 20:38 (quit) nicktick: Client Quit 20:50 (quit) clklein_: *.net *.split 20:50 (quit) jao: *.net *.split 20:51 (join) clklein_ 20:51 (join) jao 20:53 (join) jeapostrophe 21:03 (join) nicktick 21:38 (join) rapacity 21:58 eli: bremner: ping 22:07 bremner: eli: hi 22:15 eli: bremner: are you the guy from unb? 22:16 bremner: yes 22:16 eli: So I just ran into your thing about our git repo... 22:17 eli: There's a reason that we don't have a linear connection between releases -- it's something that we started with svn and turns out that doing it in git is just as easy. 22:17 eli: Basically, every release starts with creating a branch from the master at the time, and then selected commits are merged into the release branch. 22:18 eli: And finally, that branch turns into the tag for the release. 22:18 eli: I know that things would be slightly easier if all of that happened linearly, but I don't think that there's a good way to do so. 22:19 bremner: I hope you didn't take my post as somehow implying what you were doing is crazy. 22:19 eli: Not at all -- 22:19 eli: It just sounded like you have enough knowledge of it that you might know if there's a way to do things better. 22:20 eli: Since we just moved to git, now would be a good time to revisit how we do it, if there's something to improve. 22:20 eli: BTW, the reason for having that branch is so that development can go uninterrupted for the whole time, instead of suffering through a long period of code freezes. 22:21 eli: It was an essential part in making it possible for us to get to a two-month release cycle. 22:23 bremner: yeah, I don't have practical experience with a project on this scale. Have you considered and rejected the workflows in the "gitworkflows" man page? 22:25 eli: I went through several of them, some are far too complex for a group of git newbies, and some are too simplistic and don't fit a large group of people. 22:25 eli: And there were several that were very close to what we do, too. 22:29 bremner: so you fork off release branches, but don't allways merge them back in? 22:30 eli: They're never merged back in... 22:30 eli: There's nothing to merge really, since the commits on the release branch are always cherry-picked from the master. 22:30 (join) adamvh 22:31 bremner: I see. 22:31 adamvh: Any emacs users out there who could give me some tips about getting started with emacs + racket? 22:31 eli: There were a few cases where there was some change on the release branch that did not come from the master -- but those were very few, in case the code had changed. ("few" as in somewhere around 2-3.) 22:32 eli: adamvh: Any scheme support would work, but you should probably look first for geiser and quack as two packages that fit well. 22:34 adamvh: So I have quack ... if I want to be using racket specifically, should I (setq quack-default-program "/path/to/racket") or "/path/to/mzscheme" or what? 22:34 adamvh: Or, alternatively, is there paredit for DrRacket? 22:36 eli: bremner: BTW, re the different source distributions, it's fine to just use the git repo tree, it just has all the stuff that you won't actually use, but that shouldn't be a problem. (But this is probably clear anyway.) 22:36 bremner: eli: I'll be thinking about workflows in the context of debian packaging, so I'll let you of debian packaging, so I'll let you know if we have any brainstorms. 22:37 eli: That would be good. (Especially if it's in the following month, since we have a meeting in august.) 22:37 eli: adamvh: Either `racket' or `mzscheme' would work fine. 22:38 (quit) nicktick: Ping timeout: 240 seconds 22:38 bremner: eli: yeah, debian is still based on the idea of tarballs. So I'd have to make my own tarball from the tag, excluding some of the same stuff. 22:38 eli: adamvh: As for paredit, it can be used regardless of quack and/or geiser -- and if you want something similar for drracket, then look for "diva scheme". 22:38 bremner: The debian people will meet in person in the first week of August in NYC. 22:39 (join) bartwe_ 22:39 eli: bremner: All the debian people? That would be pretty big, no? 22:39 bremner: yes, it is debconf, so 300-400 debian people. 22:39 eli: Ah. 22:40 eli: Our meeting is about a week later -- so if you have anything then, you can mail me directly. 22:40 bremner: ok, I have your email in git :) 22:40 eli: (I'll be in Israel, so probably not interactive enough for IRCing...) 22:41 eli: Yeah, my email is not really hard to get... 22:41 adamvh: thanks for the tips, eli 22:42 bremner: eli: do you have a mailing list message or something where you lay out the requirements for a workflow? 22:43 eli: bremner: We have a page on that on our internal server. 22:43 bremner: would you mind emailing me a copy? 22:43 eli: Not that it's secret or anything, but it will take time to move everything (I'm still dealing with web page conversions). 22:43 bremner: just text is fine obviously 22:44 eli: Is your email the thing I get to with the "email form" link on your page? 22:45 bremner: sure, or the nick I use here @unb.ca 22:45 eli: Ah, that's actually the same... 22:47 bremner: ah, so the form still works :) 22:47 adamvh: Is there any particular difference between labeling files .rtkl or .scm? 22:48 eli: bremner: OK, sent. I just used the source of the page, which is readable enough. 22:48 bremner: received thanks. 22:48 eli: (BTW, it talks about svn, since it wasn't updated yet, but since we do the same with git it doesn't matter.) 22:48 bremner: and now I'm off to bed. 22:49 eli: Early hacker sleepers are rare... 22:49 eli: adamvh: Not really, 22:49 eli: adamvh: .scm is somewhat more popular for general scheme files whereas plt used .ss for various reasons -- mostly legacy from chez scheme that also uses that. 22:50 eli: With the rename to Racket, we settled on a few different suffixes: 22:50 bremner: eli: well, I am one time zone ahead of boston, but I agree it is still pretty early for a hacker :) 22:50 eli: I can guarantee that in one hour I'll be even more awake than I am now... 22:51 eli: But I'm on the other extreme of no sleep pattern whatsoever... 22:51 eli: adamvh: .rkt is for most code that is in modules, .rktl is for code that needs to be `load'ed, and .rktd is for data files that happen to be in sexpr readable format. 22:52 eli: So .rktl is a bit better, but the distinction between them is new enough that it's not like you'll miss anything if you use any suffix you like. 22:55 adamvh: eli: Thanks. I'm coming from Common Lisp. Out of curiosity, is there a "to racket from CL" document somewhere? 22:56 eli: No, but if you have any questions -- I'm familiar enough with CL to answer... 22:57 (quit) jeapostrophe: Quit: jeapostrophe 22:57 adamvh: I just want to load some libraries and play around at a REPL in emacs, for now 22:58 adamvh: I'm trying to port a parser I wrote in CL 22:59 adamvh: because I think hooking it up to Racket's GUI libraries will probably be easier than messing with CL's Qt bindings 23:00 eli: Well, one thing to keep in mind is that while it's possible to `load' stuff, and to have a long-running repl, that's not the preferred way to go. 23:01 (join) waltermai 23:01 eli: What's the purpose of the parser -- is it some DSL? 23:01 adamvh: There is both a DSL 23:01 adamvh: and a C header file 23:02 adamvh: full of structs that get written to disk 23:02 adamvh: each has its own parser, naturally 23:02 adamvh: So the idea is to parse the C header file at compile time 23:02 adamvh: which was accomplished pretty easily via defmacro 23:03 adamvh: and build up some lisp data structures 23:03 adamvh: while the files written in the DSL get parsed either at compile time or at runtime 23:03 waltermai: I got one of those new lemotes with the mips architecture, currently trying to build racket from source. *fingers crossed* 23:03 eli: Is the C header stuff some machine-generated thing? 23:04 waltermai: noo!!!!! 23:04 adamvh: No, I'm writing a clone of an rpg level editor 23:04 adamvh: I have the source 23:04 adamvh: and it reads and writes binary files 23:04 adamvh: so obviously the C header where the structs are defined 23:05 adamvh: is the best place to go to figure out the format of the binary files that this program reads and writes 23:05 adamvh: my CL program did it pretty easily so the basic strategy is at least viable 23:06 eli: Is it a fixed header, or each file comes with its own header as a kind of a metadata description? 23:06 adamvh: No, there is a fixed header describing the format of these binary files, which is why I read it once at compile time 23:07 adamvh: Basically I have a bunch of macros that generate the code to read and write the binary file format 23:07 adamvh: based on the information in this one header file 23:07 eli: Is the header file changing at all? 23:07 adamvh: Nope, totally static 23:08 adamvh: So, should be totally doable in racket, once I learn my way around (; 23:11 eli: In that case, it might be easier to just drop the parsing of the header completely and just hand-code the reading. 23:11 eli: Shouldn't be too difficult/ 23:11 eli: . 23:12 eli: Unless it's some really big header, to the point that it's impractical to do this manually... 23:12 (join) jeapostrophe 23:15 adamvh: Part of the appeal was the whole "I'm groking this CL thing, I'm writing a program that writes my program" but yes, now that I've done it once that is definitely something I'm considering 23:15 adamvh: Of course my parser was rather primitive 23:15 adamvh: it could only handle structs 23:15 adamvh: not actual C 23:15 adamvh: I just regex searched until I found the structs I needed 23:15 adamvh: (and any structs they depended on) 23:16 adamvh: parsed the structs 23:16 adamvh: and generated the code to read and write the binaries 23:20 eli: adamvh: In that case you can do exactly the same in racket... 23:20 eli: I'd parse it first and make a function tghat creates code, then make the whole thing into a macro. 23:21 adamvh: more or less exactly my workflow in CL, heh 23:21 adamvh: so, say I have some function 23:21 adamvh: get-stuff-from-c-header 23:21 adamvh: and I'm pretty sure it works 23:22 adamvh: what's the racket workflow equivalent 23:22 adamvh: of 23:22 adamvh: just throwing (get-stuff-from-c-header "stuff.h") 23:22 adamvh: in the REPL and seeing if it works 23:22 adamvh: That whole bottom-up 23:23 adamvh: make sure each little piece works 23:23 adamvh: before chucking them all together in a file 23:23 adamvh: was something I really liked about CL 23:23 eli: You'd do roughly the same thing -- make it create the sexprs of the code that you want, 23:24 eli: then you'd need to turn it into a syntax with some (datum->syntax stx ...your sexpr...) 23:24 eli: That latter point can be a little tricky if you deal with bindings, but otherwise it's very similar 23:25 eli: There's also the `mzlib/defmacro' library that gives you a `define-macro' which is similar to CL's `defmacro'. 23:25 adamvh: what do you mean "deal with bindings"? 23:26 eli: If your generated code has bindings -- for example, if you create functions etc. 23:26 adamvh: oh, I see 23:26 adamvh: yes, that was the aim 23:27 adamvh: in CL I had it create a bunch of defmethods 23:27 adamvh: one for each data type and sub data type in this binary format 23:27 adamvh: so in the end I could just call 23:27 eli: Well, if you just create code with it's own bindings then things are pretty easy. 23:28 eli: It can be a little trickier if you generate bindings based on input to the macro. 23:28 adamvh: (binary-read 'overarching-format) 23:28 eli: But it sounds like this is not your case. 23:28 adamvh: I had a macro somewhere that was like 23:28 adamvh: (parse-game-data "global.h") 23:29 adamvh: which expanded into a ton of defmethods 23:29 adamvh: which later allowed me to 23:29 (join) nicktick 23:29 adamvh: (binary-read 'game-data "some_game_data.file") 23:30 adamvh: So are you saying that establishing a bunch of global (or module-global) 23:30 adamvh: function definitions is difficult via macro 23:30 adamvh: ? 23:32 eli: No, that would be the easy case. 23:32 eli: Let me slap some very simple code. 23:37 eli: adamvh: http://tmp.barzilay.org/x 23:37 eli: It's very simplistic, but should be obvious. 23:37 eli: Of course you can do anything inside the macro -- parse the file in any way that is convenient. 23:38 eli: But remember that in racket the syntax level is separate from the runtime level. 23:38 eli: So functions that deal with the parsing need to be define with (define-for-syntax ...) -- or, the easier option, write a module that does the parsing and require that with (require (for-syntax "that-module")) 23:45 (quit) jeapostrophe: Quit: jeapostrophe