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