00:02 (topic) eli: Racket -- http://racket-lang.org/ -- Matthew @ FLOSS Weekly on Racket, http://twit.tv/floss167/ -- Come to RacketCon: July 23-24 -- logs @ http://racket-lang.org/irc-logs/ 00:02 eli: jonrafkind: ? 00:02 jonrafkind: Matthew Flatt 00:03 eli: Too long. 00:03 eli: Too long. 00:03 jonrafkind: rofl, fine 00:04 eli: The second one was a typo, I was about to add it. 00:04 jonrafkind: huh 00:04 jonrafkind: about to add Matthew Flatt to the topic? 00:04 eli: Yes. But if it's fine then I'll leave it. 00:30 (quit) JoelMcCracken: Remote host closed the connection 00:30 (join) JoelMcCracken 01:01 (quit) ZachBeta: Ping timeout: 252 seconds 01:01 (quit) JoelMcCracken: Remote host closed the connection 01:02 (join) JoelMcCracken 01:03 (join) ghiu 01:03 (quit) ghiu: Client Quit 01:27 (join) dnolen 01:27 (quit) dnolen: Client Quit 01:33 (join) realitygrill_ 01:34 (quit) realitygrill: Ping timeout: 258 seconds 01:34 (nick) realitygrill_ -> realitygrill 01:45 (quit) Nightwolf: Remote host closed the connection 02:14 (join) hkBst 02:28 (quit) realitygrill: Quit: realitygrill 02:55 (quit) jonrafkind: Ping timeout: 250 seconds 03:16 (join) masm 03:30 (join) Nightwolf 03:35 (quit) Demosthenes: Ping timeout: 240 seconds 03:37 (join) Demosthenes 03:54 (join) dnolen 03:56 eli: hkBst: What's the different spelling? 03:57 hkBst: eli: the dash in the url 03:57 hkBst: hashtables.html vs hash-tables.html 03:57 eli: "Meh"? 03:58 hkBst: eli: sure, just couldn't help noticing :) 03:58 eli: It's actually easy to change, but I'm not sure that it's worth it. 03:58 eli: (eg, old links etc) 03:59 (quit) JoelMcCracken: Ping timeout: 255 seconds 03:59 eli: hkBst: An re your question, what's wrong with `zero?' over the count? 04:01 hkBst: eli: nothing, except that it might be inefficient. The reference seems to say it's not constant time for weak hashes, though I don't know why that should be. 04:02 ohwow: hello 04:04 eli: hkBst: That sounds like a possible typo. 04:04 eli: The link to the caveats, that is. 04:04 eli: I'll reply on the list. 04:04 hkBst: thanks eli :) 04:12 eli: hkBst: See my reply -- 04:12 (quit) dnolen: Quit: dnolen 04:12 eli: specifically, grep for `hash-count' in src/racket and you'll see the function, 04:12 eli: and in the weak case it counts the items that are still alive. 05:00 (join) PLT_Notify 05:00 PLT_Notify: racket: master Eli Barzilay * 9e9ad2f (1 files in 1 dirs): Improve the generation of bug form fields; add a captcha file for future ... - http://bit.ly/lVSfJu 05:00 (part) PLT_Notify 05:36 (join) mceier 05:38 (join) lucian 05:50 (join) MayDaniel 06:03 (quit) masm: Ping timeout: 241 seconds 06:08 (join) masm 06:08 (quit) MayDaniel: Read error: Connection reset by peer 06:10 (quit) lucian: Quit: Ex-Chat 06:10 (join) pistacchio 06:12 (join) lucian 06:17 pistacchio: hi 06:18 pistacchio: how can i explicitly state "the current input port is the keyboard"? 06:40 (quit) ckrailo: Quit: Computer has gone to sleep. 06:57 (quit) Checkie: Ping timeout: 260 seconds 07:00 em: what is an AST? 07:02 bremner_: usually abstract syntax tree 07:02 bremner_: but I don't know specicically in Scheme/Racket 07:06 em: what's an abstract syntax tree do? 07:06 bremner_: it's just a datastructure, usually output from a parser, representing come code/other-structured-text 07:06 ohwow: Well, when you parse a language, you get an abstraction syntax tree which you can evaluate or compile 07:07 bremner_: if you're really curious, you can look at the first few chapters of "Programming Languages, Application and Interpretation"; it's online and in racket 07:07 ohwow: For example, "x = 3*(y-z)" yeilds this tree: http://www.redhat.com/magazine/002dec04/features/gcc/figs/ast.png 07:08 ohwow: Lisp code looks like AST itself 07:08 ohwow: since (+ x y) is just a tree with '+' on top and two branches: 'x' and 'y' 07:36 (quit) pistacchio: Ping timeout: 252 seconds 07:52 (join) jeapostrophe 07:53 (join) samth 07:59 (nick) mario-go` -> mario-goulart 08:06 (quit) aoh: Remote host closed the connection 08:15 (quit) lucian: Remote host closed the connection 08:15 (join) lucian 08:19 (join) Lajla 08:23 (quit) blomqvist: Quit: Heroes die once, Cowards live longer! 08:23 (quit) lucian: Remote host closed the connection 08:24 (join) blomqvist 08:24 (join) aoh 08:36 (join) lucian 09:08 (join) DT`` 09:14 (quit) aoh: Ping timeout: 240 seconds 09:16 (quit) samth: Ping timeout: 255 seconds 09:19 (join) MayDaniel 09:28 (quit) jeapostrophe: Quit: jeapostrophe 09:34 (join) aoh 09:35 hkBst: what's the difference between a sequence and a stream? According to "3.14.2 Streams" in the reference a stream is a kind of sequence that supports functional iteration. But why is the interface for making a struct look like a sequence so different from making it look like a stream? 09:58 (join) PLT_Notify 09:58 PLT_Notify: racket: master Matthew Flatt * 9f1c214 (1 files in 1 dirs): refine comment that is possibly misleading ... 09:58 PLT_Notify: racket: master Matthew Flatt * f3e1cf1 (2 files in 2 dirs): change `hash-count' to take the lock; fix docs 09:58 PLT_Notify: racket: master Matthew Flatt * bbfeb85 (3 files in 3 dirs): mak argument to `make-immutable-hash' optional 09:58 PLT_Notify: racket: master Jose Lopes * 84415dd (1 files in 1 dirs): Fixed bug that prevented from accessing ActiveX components that did not expose type information. ... 09:58 PLT_Notify: racket: master commits 9e9ad2f...84415dd - http://bit.ly/kgLzGS 09:58 (part) PLT_Notify 10:02 (nick) samth_ -> samth 10:03 (join) jeapostrophe 10:16 samth: hkBst, sequences are more general than streams 10:18 samth: in particular, iterating through a sequence may produce side effects 10:19 samth: for example, reading from a network port 10:19 samth: which you can't do "stream-rest" of 10:20 hkBst: samth: but you can make a stream out of each sequence, no? 10:21 (topic) samth: Racket -- http://racket-lang.org/ -- mflatt interview: http://twit.tv/floss167/ -- Come to RacketCon: July 23-24 -- logs @ http://racket-lang.org/irc-logs/ 10:21 (topic) samth: Racket: http://racket-lang.org/ -- mflatt interview: http://twit.tv/floss167/ -- Come to RacketCon: July 23-24 -- logs @ http://racket-lang.org/irc-logs/ 10:21 (topic) samth: Racket: http://racket-lang.org/ -- mflatt interview: http://twit.tv/floss167/ -- Come to RacketCon: July 23-24 -- logs: http://racket-lang.org/irc-logs/ 10:22 samth: hkBst, no, you can't 10:22 samth: well, you could iterate through the whole sequence, build a list, and use that as a stream 10:22 samth: but that isn't usually what you want 10:25 hkBst: samth: so each sequence that can be iterated without side-effects is a stream? 10:29 samth: well, streams are really things created with the racket/stream library 10:29 samth: but that's the idea 10:34 hkBst: samth: if so, I dont get why making a struct be a sequence requires 6 values passed to make-do-sequence and making it be a stream requires instead a vector of 3 procedures. 10:35 hkBst: s/if so, // 10:45 (quit) lucian: Read error: Connection reset by peer 10:46 (join) lucian 10:46 samth: hkBst, streams have a limited api, which supports just `first' and `rest' 10:46 samth: sequences have a more general API 10:46 samth: probably, it could be organized differently, so that you could provide fewer of the procedures 10:58 (quit) hkBst: Read error: Connection reset by peer 10:59 (join) PLT_Notify 10:59 PLT_Notify: racket: master Matthew Flatt * a7ae3b8 (2 files in 2 dirs): fix docs for `multi-in' ... 10:59 PLT_Notify: racket: master Matthew Flatt * fbbb30f (1 files in 1 dirs): try to clarify intent of `#:contracts' in `defform' 10:59 PLT_Notify: racket: master commits 84415dd...fbbb30f - http://bit.ly/l8nWgM 10:59 (part) PLT_Notify 11:16 askhader: Man... I want to write some racket code for work for a change. 11:29 (join) jonrafkind 11:39 (join) asumu 11:51 offby1 laughs cruelly 11:51 offby1: askhader: your workplace allows you to use weird obscure languages? 11:53 askhader: No, just silly pythonic ones. 11:53 askhader: And when I try to exploit the functional features of python I'm not met with happy supervisors. 11:55 askhader: THe same goes for functional javascript. 11:59 em: wow im watching this video. Mathew Flatt is #@$%#@%$ awesome! 12:03 offby1: em: I keep saying: he looks so YOUNG 12:03 em: I assumed he is 12:03 offby1: 40-ish, I'm told 12:03 em: wow that's weird 12:03 em: he looks about 28 12:03 offby1: it's the hair gel. 12:03 em: hehe yeah 12:03 offby1: and the enthusiasm :) 12:15 ohwow: yeah hair gel 12:15 ohwow: i even wrote about his coolness to the mailing list 12:24 em: offby1: there was a plug for your bot in the interview! :) 12:31 (part) jao: "Killed buffer" 12:34 (quit) MayDaniel: Read error: Connection reset by peer 12:35 (join) bbowes 12:38 (part) bbowes 12:41 (join) bbowes 12:54 (quit) lucian: Quit: Ex-Chat 12:55 (join) lucian 13:14 (quit) masm: Read error: Operation timed out 13:23 offby1: I noticed! 13:26 (quit) jeapostrophe: Quit: jeapostrophe 13:28 ohwow: http://stackoverflow.com/questions/1878458/1130-host-localhost-is-not-allowed-to-connect-to-this-mysql-server lol 13:28 rudybot: http://tinyurl.com/422qhrw 13:31 (join) lucian_ 13:33 (join) bugQ 13:33 (quit) lucian: Ping timeout: 252 seconds 13:34 bugQ: well despite minor gripes I have to say that learning racket/scheme has been the least painful of any language so far. 13:41 bugQ: granted I had researched lisp a bit already 13:41 (join) jeapostrophe 13:46 (nick) lucian_ -> lucian 13:47 (part) Lajla: "I am gay for you" 13:51 (join) masm 13:55 (quit) jeapostrophe: Quit: jeapostrophe 13:57 (join) MayDaniel 14:08 (quit) bbowes: Quit: ERC Version 5.3 (IRC client for Emacs) 14:22 em: Suppose a person would like to use racket to collect data in an on going way. Would the smart thing be to write it to a file? 14:22 bremner_: I think so. 14:23 em: in that case, what would be good is if there were ways to write to the top of the file and push everything else down sometimes, and write to the end of the file other times, without having to re-write the whole existing file 14:23 em: does that make sense? 14:25 bremner_: it makes sense, but I don't know a good answer using (non-database) files 14:25 em: i see so that's perhaps tricky with a flat file of text 14:25 bremner_: I think so, mainly the inserting at the beginning 14:26 em: how does a word processor do it? 14:26 bremner_: with a data-structure in memory 14:27 em: yeah i could keep it all in a data structure in memory and maybe just write a file for a backup 14:27 bremner_: that might be easiest. 14:28 em: but can the data structures in racket get very very large? 14:28 em: this could grow to be a lot of data 14:28 bremner_: sure 14:28 ohwow: em: well the stupid way would be to 14:28 ohwow: save data from a file 14:28 ohwow: delete everything from a file 14:28 ohwow: write your data 14:28 ohwow: write your save 14:28 bremner_: em: what is large for you? megabytes is OK, but gigabytes is tough 14:28 em: i want to analyse something that will have 8 different numbers associated with it, every 5 minutes, indefinitely. 14:29 offby1: em: funny that you're asking about collecting data and writing it to a file. rudybot does just that, but I'm slowwwly working to get the data into Amazon's Web Services 14:29 em: actually 16 numbers and a time stamp so i guess 17 different integers every 5 minutes. 14:30 offby1: and this process will run for many days, or weeks, etc 14:30 bremner_: can you just write some kind of index to the front of the line, and sort the file later? 14:30 em: yeah probably. 14:30 offby1: database sounds like the right thing to me -- something that maintains an index for you, so that when you want to pull data out of this mess, it will be quick 14:30 em: offby1: yep 14:30 offby1: that's precisely the problem I have with rudybot! 14:31 em: yeah i want to run it for a couple months at least. 14:31 offby1: getting the data out, actually, is currently fairly easy 14:31 offby1: my real problem is: when the computer on which he runs goes wonky (which happens more often than you'd expect), I sometimes forget to copy the old logs over to the new box. So I want those logs to live "in the cloud" instead of on the local disk, since that way they'll always be available. 14:32 em: makes sense 14:34 offby1: also, I just wanna play with cloud services, 'cuz they're cool :) 14:58 (quit) MayDaniel: Read error: Connection reset by peer 14:59 (quit) DT``: Ping timeout: 276 seconds 15:11 (quit) bugQ: Read error: Operation timed out 15:13 (join) jeapostrophe 15:14 (join) DT`` 15:18 (join) bugQ 15:19 (quit) jeapostrophe: Quit: jeapostrophe 15:21 (join) ghiu 15:23 (join) anRch 15:45 offby1: given a structure, is there an easy way I can get the field names? Ultimately I'd like to be able to write a function that converts the struct to a dict, where the keys are the field names and the values are (of course) the struct's slot values. 15:46 samth: offby1, it's pretty hard, actually 15:46 offby1: bah 15:46 samth: you probably need the static struct info 15:46 offby1: I've written my own (thing->dict), which wasn't hard, of course, but it just seems wrong that I had to write it at all. 15:46 offby1: given that it duplicates the list of field names. 15:47 samth: as you see here: http://docs.racket-lang.org/reference/inspectors.html?q=struct-info#(def._((quote._~23~25kernel)._struct-type-info)) 15:47 samth: the struct type doesn't have field names 15:48 samth: i think this is something we should add to struct types 15:48 offby1: it'd be handy 15:48 offby1: https://github.com/offby1/rudybot/blob/userdb-on-aws/userinfo.rkt#L123 is the specific case I'm working on 15:49 offby1: hm, s/123/120/ for the relevant comment 15:49 samth: it would be pretty easy to write a macro that took static struct info and generated such a procedure 15:49 offby1: really? 15:49 offby1: what'd I have to pay you to write it? :) 15:49 samth: yeah, the field names are in the static info 15:50 offby1: ok, how do i get there here static info? 15:50 offby1: s/there/this/ 15:50 samth: look here: http://docs.racket-lang.org/reference/structinfo.html 15:51 offby1: ah yes, I'd read that page before, but frankly didn't understand it. 15:52 offby1: I suspected it _might_ be relevant, but couldn't figure out what to do with the functions it mentions. 15:52 samth: take a look at this: https://github.com/plt/racket/blob/master/collects/racket/match/parse-helper.rkt#L71 15:52 rudybot: http://tinyurl.com/3wghco6 15:54 offby1: I'm afraid that's too complex for my tiny brain 15:57 (join) tauntaun 15:59 eli: samth: field names are a syntactic thing, putting in the struct types is leaking information in the same way as making lambdas remember their argument names. 16:00 offby1: I'd be happy if this thing only worked for prefab structs 16:01 offby1: eli: I can explain what I'm trying to do: I'd like to easily send a struct type to Amazon's "simple DB" service. To do that, I need to send a sequence of attribute-name/attribute-value pairs. 16:01 offby1: the values can come from the struct's "slots", and I'd like the names to be the field names. 16:02 eli: offby1: prefab structs are even more problematic: 16:02 eli: rudybot: (struct foo (x y) #:prefab) 16:02 rudybot: eli: your sandbox is ready 16:02 rudybot: eli: Done. 16:02 eli: rudybot: (struct bar (xxx yyy) #:prefab) 16:02 rudybot: eli: Done. 16:02 eli: rudybot: (foo 1 2) 16:02 rudybot: eli: ; Value: #s(foo 1 2) 16:02 eli: rudybot: (bar 1 2) 16:02 rudybot: eli: ; Value: #s(bar 1 2) 16:02 eli: So there's no mention of field names at all. 16:02 offby1: true true 16:02 eli: I suspect that what you want is a hash table. 16:03 eli: Perhaps wrapped in some code that makes it look like structs. 16:03 offby1: hmph 16:03 offby1: yeah, that'd probably work. 16:03 eli: But that would be equivalent to writing some `struct->hash' thing. 16:03 offby1: yep 16:03 eli: ...which wouldn't be too hard actually. 16:03 offby1: that'd be ideal. 16:03 eli: You could even do it properly, with a struct property. 16:03 eli: (Similar to a custom printer.) 16:03 offby1: dunno what you mean by that 16:04 offby1: I've barely ever used struct properties 16:04 eli: A custom printer controls how some struct gets printed. 16:04 eli: Your custom thing would control how it gets converted to a hash. 16:04 DT``: wouldn't serialize help here? (just asking) 16:04 offby1: DT``: it might. 16:04 eli: Serialize could help too, of course. 16:04 offby1: I haven't looked into that 16:05 eli: And serializing is trivial if you're dealing with prefab. 16:05 eli: You can serialize with just format: 16:05 eli: rudybot: (format "~s" (foo 1 2)) 16:05 rudybot: eli: ; Value: "#s(foo 1 2)" 16:05 offby1: yes, but as we established: we don't get field names with prefab structs. 16:05 eli: That's fine as long as you read it later with the right prefab definition. 16:05 DT``: eli, then what's the difference between a serializable-struct and a struct with prefab? 16:06 eli: DT``: prefabs are non generative structs. 16:06 (quit) jonrafkind: Read error: Operation timed out 16:06 eli: So, a (struct foo (x y) #:prefab) just creates bindings for `foo', `foo-x', etc. 16:07 eli: But (struct foo (x y)) returns a *new* struct type, always. 16:07 samth: eli, i strongly disagree that field names are syntactic 16:07 eli: So serializing with the latter is more difficult, since the name isn't meaningful; and with the former it's trivial since all you have is the name. 16:07 samth: or rather, that they are necessarily syntactic 16:08 eli: samth: That's a very odd thing to say. I don't know of anything more syntactic than ... names. 16:08 samth: this is a choice the current implementation makes, and i think we should make a different choice 16:08 samth: eli, right now, we have the ability to get names from procedures and other objects, and we can get the name from a struct type 16:08 eli: I'm not saying anything about whether it should or should not be done. at least not now. 16:09 eli: What I *am* saying, is that the decision to not include field names in the type information is completely in line with the decisions to keep argument names out of closure values. 16:09 samth: are you saying that `object-name' is a "leak" in some sense? 16:09 DT``: eli, oh, so if I define a (struct foo (x y) #:prefab) in two different files, it will be the same struct? 16:09 samth: DT``, yes 16:09 eli: samth: Yes, isn't that obvious? 16:09 DT``: makes sense. 16:10 samth: eli, no, it was not obvious 16:10 eli: samth: You can see the leak in action every time someone does (define foo* (letrec ([foo (lambda ...)]) foo)) -- *just* to get the name right. 16:10 samth: since you seemed to find my suggestion bizzare 16:10 samth: whereas it's something Racket does currently 16:11 eli: I don't see where I contradicted myself -- having access to names is leaking; and `object-name' is unsurprisingly an instance of this. 16:11 eli: It's a kind of a necessary evil when it comes to debugging etc. 16:12 eli: Which of course you can claim is true for argument names. (And indeed many had claimed that.) 16:12 samth: you did not explicitly contradict yourself -- you expressed skepticism about a feature, and analogized it to a feature we don't have, making me think that there was a distinction in your mind 16:12 eli: No, I said that the two missing features are extremely similar. 16:12 samth: anyway, there are lots of useful non-debugging applications of having struct field names, and none that i know of for argument names 16:13 samth: however, i think we understand each other now 16:13 eli: In any case, the real danger in that is that it tempts people to rely more and more on these names being more than they are. For example, if you see # you might be tempted to assume that `foo' is bound to it. 16:13 eli: That's "obviously" not going to work, but it's very clear that it won't. 16:14 eli: With struct names the danger is even higher (ie, the many people getting utterly confused about why it's so damn difficult to print struct values in a readable way). 16:14 eli: And with field names it's even more fun than that. 16:14 offby1: I'm thinking ... hash table :) 16:14 samth: personally, i'd like to have (ref v name) 16:15 samth: that works for objects, dicts, and structs 16:15 eli: ...that's a hash table... 16:15 (join) MayDaniel 16:15 eli: All of that is from experience BTW -- CLOS makes it damn tempting to use syntactic values at runtime. 16:15 samth: no, it isn't, any more than vectors are hash tables because they are `dict?' 16:16 eli: What will (ref v blah) do when v is a struct with no blah field? 16:16 (quit) anRch: Quit: anRch 16:17 samth: raise an error 16:17 eli: Which kind of error? 16:17 samth: the same thing (dict-ref #(1 2 3) 'foo) does 16:17 eli: You mean a runtime error? 16:17 samth: yes 16:18 eli: Then you want a hash table. 16:18 samth: no, really, i don't 16:18 samth: i want generic operations 16:20 (join) jonrafkind 16:21 eli: Those generic operations are equivalent in all senses to a hash table. 16:21 eli: The kind of checks and errors, and the runtime overhead. 16:22 eli: You just want the hashes to be limited in having a fixed set of keys, with some of them marked as read-only etc; but it is still the same as a hash table. 16:22 eli: (And even the implementation is likely going to have one; perhaps implemented as an alist.) 16:25 (join) rudybot_ 16:25 samth: why would the implementation need to be a hash table? 16:26 samth: i am suggesting that struct type values should contain a list of symbols in them 16:26 (join) shachaf_ 16:26 samth: that's it 16:26 (join) em_ 16:29 (quit) shachaf: Disconnected by services 16:29 (join) ghiu_ 16:29 (nick) shachaf_ -> shachaf 16:29 eli: You need to do a _lookup_, making it equivalent to a hash. 16:29 (quit) ghiu: Ping timeout: 260 seconds 16:29 (quit) asumu: Ping timeout: 260 seconds 16:29 (quit) em: Ping timeout: 260 seconds 16:29 (quit) rudybot: Ping timeout: 260 seconds 16:29 (nick) ghiu_ -> ghiu 16:29 samth: a lookup where? 16:30 samth: is your claim that objects (in the `racket/class' sense) == hashtables? 16:31 (join) asumu 16:31 eli: A lookup in your generalized `ref'. 16:31 eli: And yes, same deal. 16:32 (join) jeapostrophe 16:33 samth: ok, then you just have a very expansive notion of hash table, and we aren't actually arguing about anything 16:34 (quit) jeapostrophe: Client Quit 16:36 (quit) bugQ: Ping timeout: 240 seconds 16:52 offby1: Gentlemen, you can't fight here. This is the War Room. 16:53 (quit) Demosthenes: Quit: leaving 16:57 (nick) rudybot_ -> rudybot 17:03 (nick) em_ -> em 17:06 (quit) DT``: Ping timeout: 260 seconds 17:09 samth: offby1, best movie ever 17:12 (quit) em: Ping timeout: 244 seconds 17:13 offby1: I don't avoid film references, samth, but I do deny them my ... uh 17:14 (join) em 17:16 samth: offby1 wins the internet for today 17:21 (join) DT`` 17:23 em: I dont know why im bouncing right now. and im not at home so i can't fix it. 17:24 em: is the idea of 'contracts' to make complication easier or better? 17:24 em: oops i mean compliation. 17:25 em: erg.. 17:25 em: Compilation 17:33 (join) ckrailo 17:34 samth: em, mostly no 17:34 samth: contracts are run at runtime 17:40 ghiu: how can i escape html characters? 17:41 samth: in what? 17:41 ghiu: like < -> < 17:42 ghiu: is there any library to get this? 17:42 samth: as in, to automatically do this? 17:42 samth: you can use scribble 17:44 samth: you can also use the `xml' collection, which might be more what you want 17:44 ghiu: scribble 17:44 ghiu: thanks 17:45 ghiu: i'll look there :) 17:47 (join) jeapostrophe 17:51 (quit) mceier: Quit: leaving 17:53 (quit) ghiu: Quit: ghiu 17:53 (quit) jeapostrophe: Quit: jeapostrophe 17:53 offby1: eli: I'm thinking (as I occasionally do) about rewriting rudybot's parser. Does parser-tools/lex seem like a reasonable way to parse the stuff I get from the IRC server? 17:53 offby1: i.e., if it's an awful idea, holler 17:54 (join) RandalSchwartz 17:54 (quit) RandalSchwartz: Changing host 17:54 (join) RandalSchwartz 18:03 samth: offby1, the parser tools are used pretty widely, so i'd expect them to work well 18:03 offby1: it's not a question of "do they work well" -- I assume they do -- but rather "are they the appropriate tool for this particular job". 18:04 offby1: I suspect they might be overkill 18:04 offby1: but am not sure, having never used lex or yacc in anger 18:05 (part) RandalSchwartz 18:08 samth: if it's bigger than a regexp, i'd use the parser tools 18:08 offby1: sounds reasonable. 18:38 (join) mithos28 18:40 asumu: I used the parser tools to implement a toy stack-based language. It was overkill in a way but worked fine. 18:40 asumu: And would've been easier than most other options. 18:41 bremner_: isn't the point of stack based languages that they don't need parsers, just lexers? 18:42 bremner_: not that it matters, of course. 18:45 asumu: Hmm, okay I must be misremembering why I used the parser-tools then. Looking at the code, I see that I just used s-expressions. 18:46 asumu: Okay no, it was for some simple lambda calculi stuff. 18:47 asumu: I did it during the same summer so it blended together in my head. 18:50 (quit) DT``: Ping timeout: 240 seconds 18:54 (join) DT`` 19:01 (join) jeapostrophe 19:05 (quit) jeapostrophe: Client Quit 19:06 (quit) MayDaniel: Read error: Connection reset by peer 19:07 (quit) mithos28: Quit: mithos28 19:17 (quit) askhader: Ping timeout: 258 seconds 19:17 (join) askhader 19:23 (quit) DT``: Ping timeout: 260 seconds 19:36 (join) DT`` 19:36 (join) mithos28 19:41 (quit) mithos28: Client Quit 19:42 eli: offby1: Sounds to me like a definite overkill. 20:09 (quit) lucian: Remote host closed the connection 20:26 (quit) masm: Quit: Leaving. 20:37 (nick) samth -> samth_away 20:43 offby1: aha 20:52 (join) jeapostrophe 20:59 (join) mithos28 21:25 (quit) jeapostrophe: Quit: jeapostrophe 21:26 (quit) mithos28: Quit: mithos28 21:26 (join) mithos28 21:27 (quit) mithos28: Client Quit 21:29 (join) samth 21:31 (join) mithos28 21:33 (quit) mithos28: Client Quit 21:38 (join) mithos28 21:41 (join) realitygrill 22:29 (join) jeapostrophe 22:29 (quit) jeapostrophe: Client Quit 22:34 (join) PLT_Notify 22:34 PLT_Notify: racket: master Robby Findler * b43e956 (4 files in 3 dirs): Redex: added to-lw/stx ... - http://bit.ly/kOefoO 22:34 (part) PLT_Notify 23:12 (join) jeapostrophe 23:18 (quit) jeapostrophe: Quit: jeapostrophe 23:23 (quit) samth: Ping timeout: 255 seconds 23:25 (quit) qha: Ping timeout: 240 seconds 23:29 (join) qha 23:43 (quit) mithos28: Quit: mithos28 23:50 (join) dnolen 23:54 (join) jeapostrophe