00:41 (join) neilv 00:41 (quit) neilv: Changing host 00:41 (join) neilv 01:17 jonrafkind: how do you insert a line break in scribble? 01:18 Lajla: You should insert it before or after it. 01:18 Lajla: Not in between 01:18 Lajla: that would be infix. 01:22 jonrafkind: ah linebreak 01:28 (quit) parcs: Read error: Connection reset by peer 01:29 (join) parcs 01:29 jonrafkind: well that didnt work 01:29 jonrafkind: another wonderful error! 01:30 (quit) parcs: Read error: Connection reset by peer 01:31 (join) parcs 01:59 (quit) mheld: Quit: mheld 03:35 (quit) Yann1: Read error: Operation timed out 03:36 (join) Yann1 03:40 (quit) jonrafkind: Ping timeout: 250 seconds 04:27 (quit) coldhead: Read error: Operation timed out 04:28 (join) coldhead 05:06 (quit) parcs: Ping timeout: 240 seconds 05:07 (join) parcs 05:39 (quit) neilv: Quit: Leaving 05:55 (join) tv|z 05:56 (part) tv|z 07:21 (join) neilv 07:21 (quit) neilv: Changing host 07:21 (join) neilv 07:22 neilv: looks like, in the scribble emacs mode, the eldoc help can't always fit practically: http://i.imgur.com/tSydj.png 07:23 (quit) _danb_: Ping timeout: 260 seconds 08:13 (join) mceier 08:24 neilv: i think, for eldoc, i'll have to do it something like this screenshot. http://i.imgur.com/stNpF.png 08:24 neilv: there will be an explicit command for showing quick-reference help that includes the name, type, and default value of each argument 08:39 (quit) certainty: Read error: Connection reset by peer 08:46 (quit) parcs: Read error: Connection reset by peer 08:50 (join) MayDaniel 08:50 (join) parcs 09:11 neilv: and the final version is the least flashy-looking. :) http://i.imgur.com/hgwEt.png 09:46 (quit) MayDaniel: Read error: Connection reset by peer 10:04 (join) jonrafkind 10:10 Tasser: what's out there as reference? One where you lookup a function name based on what it should do... 10:13 jonrafkind: well the docs are at docs.racket-lang.org 10:13 jonrafkind: if you want to google search it use the site: thing that google provides 10:36 Tasser: is there a kind of drracket plugin for vim/emacs/eclipse ? 10:38 jonrafkind: there is a mzscheme plugin for vim, and theres quack for emacs 10:38 jonrafkind: mzscheme is the old version of racket 10:39 Tasser: sounds like it's generally recommended to use drracket? 10:40 jonrafkind: yea 10:41 Tasser: well, the editor sucks ;-) 10:41 jonrafkind: you get some nice tools with drracket too, like a debugger and 'check syntax' 10:41 jonrafkind: i wrote a vim plugin for drracket if you like that sort of thing 10:41 Tasser: go on 10:41 jonrafkind: http://planet.racket-lang.org/display.ss?package=vi.plt&owner=kazzmir 10:42 jonrafkind: its not 100% compatible but I use it occasionally 10:42 Tasser: best way to install it? 10:44 jonrafkind: type (require (planet kazzmir/vi:1:11/tool)) into the drracket interactions window 10:44 jonrafkind: then restart drracket 10:45 Tasser: require: not a valid planet path; should be: (require (planet STRING (STRING STRING NUMBER NUMBER))) 10:46 jonrafkind: what version of drracket do you have 10:46 Tasser: drracket: unknown switch: --version 10:46 Tasser: hmmm 10:46 jonrafkind: anyway, try this line (require (planet "tool.ss" ("kazzmir" "vi.plt" 1 11))) 10:46 jonrafkind: thats the "old" planet format 10:46 Tasser: 5.0.2 10:46 jonrafkind: i think thats new enough 10:47 jonrafkind: very strange 10:47 Tasser: that's the newest stable 10:48 Tasser: read: illegal use of "." 10:48 Tasser: setup-plt: error: during making for /kazzmir/vi.plt/1/11 (Vi mode) 10:48 Tasser: setup-plt: read: illegal use of "." 10:49 jonrafkind: bleh 10:51 Tasser: but seems to work 10:53 Tasser: what am I doing wrong with those 'let' ? http://pastie.org/1440280 10:54 rapacity: that doesn't look like scheme 10:54 rapacity: or racket 10:54 jonrafkind: change let to define 10:54 jonrafkind: also operators are prefix, not infix 10:54 jonrafkind: (< height width) 10:54 jonrafkind: instead of (height < width) 10:54 Tasser: duh 10:55 Tasser: Module Language: there can only be one expression in the definitions window 10:56 jonrafkind: wtf 10:56 Tasser: (fixed all the above stuff) 10:56 neilv: add a "#lang" line at the top 10:56 jonrafkind: #lang racket 10:56 Tasser: jonrafkind, your vi mode doesn't support O 10:56 jonrafkind: yea its missing a bunch of stuff 10:58 (join) MayDaniel 10:58 (quit) MayDaniel: Changing host 10:58 (join) MayDaniel 10:58 Tasser: what's the difference of (require 2htdp/image) and (require " 10:58 Tasser: 2htdp/image") 10:59 (join) mheld 10:59 jonrafkind: with quotes it means try to load a local filename 10:59 jonrafkind: without the quotes it refers to an internal library 11:00 Tasser: what's the difference of the argument data type? 11:00 jonrafkind: 2htdp/image is a symbol, "2htdp/image" is a string 11:11 Tasser: what's a symbol? 11:13 jonrafkind: its sort of like a string but its immutable 11:13 Tasser: same as a 11:13 Tasser: Symbol in Ruby? 11:13 jonrafkind: I think so 11:13 Tasser: stupid enter key 11:14 jonrafkind: usually you have to write 'f in racket to get a symbol 11:14 jonrafkind: but `require' is a macro so it can get the symbol without forcing you to write the ' 11:15 Tasser: can I change a Symbol into a function? 11:15 Tasser: aka ('+ 2 3) 11:16 jonrafkind: to go from a symbol to values you need to use eval usually 11:16 jonrafkind: but generally you shouldn't do such things 11:16 Tasser: Values? 11:17 jonrafkind: like from the symbol '+ to the actual procedure + 11:17 jonrafkind: rudybot: eval '+ 11:17 rudybot: jonrafkind: your sandbox is ready 11:17 rudybot: jonrafkind: ; Value: + 11:17 Tasser: so a value is somewhat of a named lambda? 11:18 jonrafkind: i guess 'value' is the wrong name here, a symbol is a value too 11:18 jonrafkind: a value is anything that can be stored in a variable, basically 11:18 Tasser: oke 11:18 Tasser: basically an object in an OO language? 11:19 jonrafkind: yea 11:20 neilv: working through a book is the best way to start to learn racket 11:20 Tasser: neilv, yeah, and spice it up with some IRC 11:24 neilv: ok, that works 11:27 Tasser: ich nehm die stadt sonst 11:28 bremner: jaja aber bitte Englisch hier 11:29 Tasser: uhm, duh. Wrong tab 11:31 offby1: rudybot: t8 de en ich nehm die stadt sonst 11:31 rudybot: *offby1: I'll take the city otherwise 11:31 offby1: rudybot: now please explain that 11:31 rudybot: *offby1: I think bremnder is right though: "When a non-free program or system is well known, you can mention it in passing—that is harmless, since users who might want to use it probably already know about it. For instance, it is fine to explain how to build your package on top of some widely used non-free operating system, or how to use it together with some widely used non-free program." 11:32 bremner: good grief. my mispelled nick follows me around. 11:33 offby1 laughs cruelly 11:57 (quit) jonrafkind: Read error: Operation timed out 12:00 (join) Yann3 12:00 (quit) Yann1: Read error: Operation timed out 12:15 (join) anRch 12:46 (quit) coldhead: Remote host closed the connection 12:49 (join) coldhead 12:49 (quit) anRch: Quit: anRch 12:59 (join) MayDaniel_ 13:02 (quit) MayDaniel: Ping timeout: 250 seconds 13:03 (join) anRch 13:10 (join) epochwolf|2 13:21 (quit) MayDaniel_: Read error: Connection reset by peer 13:46 (quit) epochwolf|2: Read error: Connection reset by peer 13:47 (join) epochwolf|2 14:03 (quit) anRch: Quit: anRch 14:03 (join) stis 14:26 (join) MayDaniel 14:52 (join) mwolfe 14:59 (quit) MayDaniel: Read error: Connection reset by peer 15:30 (quit) epochwolf|2: Ping timeout: 255 seconds 15:43 (join) masm 15:48 (join) samth 15:48 samth: clklein, ping 16:01 clklein: pong 16:03 samth: a couple redex questions 16:04 samth: (a) lack of support for consing in patterns/term constructors is v. annoying 16:05 samth: (b) you should look at this paper: http://www4.in.tum.de/~urbanc/Publications/esop-11.pdf 16:05 samth: clklein, as above 16:08 samth: i guess those weren't really questions 16:11 clklein: samth: (b) looks interesting from the abstract. One of the things that stopped me from trying to improve Redex's support for binders is that the usually solutions don't seem all that convenient for anything except lambda-like binders. 16:13 samth: their system is apparaently similar to what Ott does 16:13 samth: it passes my test, which is that it works for `letwreck' 16:13 samth: which i suppose we've now actually added to the core in the form of `->' 16:14 samth: rather `->i' 16:14 samth: also, i want to specify multiple #:source arguments to redex-check 16:14 clklein: I don't know letwreck. My test has been whether it can express something like `define', where the scope is "sideways" 16:17 clklein: I don't see any obstacles to extending #:source. If your sources are reduction relations, maybe you can union them 16:17 clklein: in the meantime 16:17 samth: letwreck looks like ->i, where you specify which of the variables are in scope for each clause 16:17 Tasser: someone cares to explain why (null? '()) is true? 16:17 Tasser: oh 16:17 Tasser: nevermind. 16:18 samth: clklein, it's from two metafunctions, so i can't union them 16:18 samth: what about consing? 16:20 clklein: I always encode pairs as lists of length two. 16:20 clklein: I take it you don't like that because they print kind of ugly 16:20 samth: this isn't really pairs 16:21 samth: say you have a continuation which is a list of frames 16:21 samth: and you want to push a new one on 16:21 samth: on paper, the rule would look like: 16:21 samth: -> 16:22 samth: in redex, you have to rewrite it as: 16:22 samth: -> 16:23 clklein: I would do this: (--> (c e k) (c' e' (f k))) 16:23 clklein: that's what I meant by replacing pairs with length-two lists 16:24 samth: ah 16:24 samth: so that's ok for continuations, but sucks for environments 16:24 clklein: The downside is that you end up with lots more parens in the term 16:24 samth: b/c you can use the neat lookup-in-the-middle pattern matching tricks 16:25 clklein: oh right, then you can't do ((x_0 v_0) ... (x_i v_i) (x_i+1 v_i+1) ...) 16:25 clklein: right 16:25 clklein: hrm 16:25 samth: it would be nice if you just supported (a . b) for this 16:26 clklein: How would it typeset? 16:26 clklein: a :: b maybe? 16:26 samth: yeah, that's how it is in this paper 16:27 clklein: I guess we could make it configurable too. 16:28 clklein: Should (p . q) be a pattern too? 16:30 clklein: I don't immediately see the harm. 16:31 clklein: I like this idea. I'll give it a try. 16:37 samth: yeah, (p . q) should be a pattern 16:40 (join) martin_hex 16:40 (quit) martinhex: Disconnected by services 16:40 (nick) martin_hex -> martinhex 16:45 clklein: Wait a minute. Can't you already do this now? 16:48 samth: no, it rejects dotted pairs 16:48 clklein: in patterns, but it seems to work in term templates 16:49 samth: yes, it does 16:50 clklein: Probably doesn't typeset right, though 16:52 samth: yeah 16:53 clklein: I'll try to fix that, at the very least 17:01 samth: i personally care more about the patterns 17:02 clklein: really? 17:03 clklein: They don't help in your example, do they? 17:10 clklein: oh, nevermind. I see. 17:31 eli: samth: You pinged me a few days ago? 17:31 samth: yes, can you move the commit notification to this channel? 17:32 (join) chturne 17:33 eli: samth: I don't care much about it, but do other people want that? 17:33 eli: (Also for bug notifications, right?) 17:33 samth: we could take a survey, but that doesn't seem that productive 17:33 samth: i was just thinking the commits notes 17:34 samth: the bug notification is (at least currently) limited to developers 17:34 samth: so it makes sense to split it that way 17:36 Tasser: what's the difference between a hash table and a dictionary? 17:36 eli: samth: Splitting will require some work, since the code just reports everything in a single channel. 17:37 samth: eli, the commits are done by github 17:37 eli: Ah, right. 17:37 samth: so it should be really easy 17:37 eli: I shouldn't even have looked in the bot's code. 17:37 (quit) Yann3: Read error: Connection reset by peer 17:39 (join) Yann1 17:41 (join) PLT_Notify 17:41 PLT_Notify: racket: master Robby Findler * 66f6f04 (1 files in 1 dirs): improve the drawing of the menu popup when it is yellow and the mouse is over it 17:41 PLT_Notify: racket: master Robby Findler * da9c34c (1 files in 1 dirs): use the new refresh-now method 17:41 PLT_Notify: racket: master Robby Findler * 49952e5 (1 files in 1 dirs): adjust scribble's in-drracket html generator button to use the sandbox so user code cannot corrupt drracket. ... 17:41 PLT_Notify: racket: master commits cdd099f...49952e5 - http://bit.ly/guwKcz 17:41 (part) PLT_Notify 17:41 eli: samth: There. 17:42 samth: eli, thanks! 17:42 samth: also, i have a much bigger favor to ask you, eli 17:43 samth: which is to respond to my email about PLT files 17:43 eli: What's the subject? 17:43 eli: (My mailbox is a mess.) 17:44 samth: "Setting up scribble documentation in a .plt archive" 17:44 samth: you're the only person i know with experience w/ plt files 17:45 (quit) masm: Quit: Leaving. 17:46 eli: samth: The issue about the lack of indexing is probably due to running setup only on your collection, and not on scribblings/main, which is what does the indexing. 17:46 eli: So you should probably add a ++setup flag for that too. 17:47 samth: but it doesn't build the documentation at all 17:47 eli: As for the fact that no documentation is built when the plt file is installed, I have no idea why that doesn't happen. 17:48 samth: the lack of indexing is only an extra problem when i do something that I can't ask the students to do 17:48 eli: The setup code was messy, and it's generally getting worse. 17:48 samth: tewk, ping 17:49 eli: I'm pretty sure that the ++setup thing would resolve your second problem; the first one is obviously more important anyway. 17:49 eli: samth: BTW, did you try to install the plt file from both raco and drr? 17:50 eli: (...and got the same problem in both?) 17:50 samth: at some point i tried it w/ raco, but maybe not will the full set of options to build the plt file 17:50 samth: so i will try that again when i get a chance 17:51 eli: It'll help to try both, since they might be invoking things differently. 17:56 samth: clklein, it would also be nice to have built-in support for sets 17:58 clklein: samth: Yes, finite maps too. 18:05 (join) somnium 18:06 (join) MayDaniel 18:11 offby1: Tasser: did you get an answer? 18:11 Tasser: offby1, more or less 18:12 offby1: good. (I didn't see one in the scrollback) 18:12 offby1: anyway, my answer would be: hash tables are one particular (very popular) implementation of dictionaries. 18:12 Tasser: offby1, read it 18:13 samth: clklein, there's something pretty great about writing down a theorem about galois connections and having redex check it 18:13 Tasser: offby1, yep, read that in the docs 18:37 (quit) mwolfe: Remote host closed the connection 18:43 (quit) mheld: Quit: mheld 18:53 samth: clklein, ping 19:03 clklein: samth: pong 19:03 (join) epochwolf|2 19:03 (quit) epochwolf|2: Changing host 19:03 (join) epochwolf|2 19:04 samth: clklein, i have a transition system that's defined as a fixed point of a transition function 19:04 samth: which should be what redex is good at 19:05 samth: the problem is that the components are tuples of sets rather than sets of tuples 19:05 samth: so i'm unsure how to model it 19:07 clklein: I don't understand. 19:08 samth: ok, i'll try again 19:08 samth: imagine we have a cek machine 19:08 clklein: k 19:08 samth: we can think of a collecting semantics for this as being the lfp of a function that takes a set of configurations, and steps each element 19:09 samth: redex is great at modeling this sort of thing -- finding that lfp is built in 19:10 samth: the function, we'll call it F, has the signature F : P() -> P() 19:10 samth: where P is the powerset function 19:10 samth: so far so good? 19:11 samth: clklein, ^ 19:11 clklein: Still thinking. 19:12 samth: the function F is just (lambda (l) (apply append (map apply-reduction-relation l))) 19:13 clklein: I'm trying to figure out what the lfp is 19:13 samth: least fixed point 19:13 clklein: of this particular function i mean 19:14 clklein: (what it represents) 19:14 samth: if the inital configuration is , then the lfp is the set of all reachable configurations 19:14 samth: basically every element of the `traces' graph 19:15 clklein: so this is all wrt a particular seed configuration? 19:16 samth: the function F is independent of the initial configuration, it's just the transfer function 19:17 clklein: I don't see why F even has a lfp 19:18 clklein: Wait, wouldn't the empty set be the lfp? 19:18 samth: we work around that by adding back the initial state every time 19:19 clklein: so F is parameterized by a seed state 19:19 samth: yeah 19:19 samth: i guess that's the best way to think about it 19:20 clklein: K, got it now. Sorry it took so long :) 19:20 samth: ok, so that's the setup 19:20 clklein: so sets of tuples is easy. But you want tuples of sets? 19:20 samth: right 19:21 samth: so imagine we have F' : -> 19:22 samth: where a \in F(B) if some choice from each component of B gives you a 19:23 clklein: OK, I see how this would come with abstract interpretation. 19:23 samth: if you want a more fully worked out example, you can look at figure 5 here: http://www.irisa.fr/celtique/jensen/ICFP09-ANFCFA.pdf 19:24 samth: so, it's easy in redex to map -> P() 19:24 samth: where each component in the result is a singleton set 19:24 samth: but then you want to flatten it all back together 19:26 clklein: Do you map -> P() with a rule that picks any element of each component and reduces the choice? 19:27 clklein: Err, no, that would be -> P() I think 19:27 samth: yes, and you just wrap a list around the result to get the bigger signature 19:31 clklein: a list around each component in the result? 19:31 samth: yeah 19:31 samth: and what i want to to flatten everything 19:32 samth: i suppose i could define it with one relation, and then another one that calls `apply-reduction-relation' 19:36 clklein: One relation takes a to a set of tuples, where each component is a singleton set, and another one that defines a tuple of sets by pairwise unions? 19:38 clklein: err, maybe that second one isn't right. 19:39 samth: the second one isn't right 19:40 samth: wait, no, it is right 19:40 clklein: heh 19:40 clklein: I'm starting to think it depends on how you understand what I meant by the second one. I'm not longer sure :) 19:47 clklein: Is the second one actually a function? 19:49 clklein: Oh, even if it is, you still want to define it as reduction relation so you can do something like traces to compute the lfp-like thing. I think. 19:52 (quit) stis: Remote host closed the connection 19:55 clklein: Anyway, not really sure if I helped, but that was interesting. I'll try to read the paper soon. 20:04 samth: hmm 20:05 samth: yes, i want to define it as a reduction relation for exactly that reason 20:12 (join) offby1` 20:14 (quit) offby1: Ping timeout: 240 seconds 20:37 (quit) MayDaniel: Read error: Connection reset by peer 20:56 (quit) mceier: Quit: leaving 21:07 (quit) parcs: Ping timeout: 240 seconds 21:08 (join) parcs 21:21 (quit) martinhex: Ping timeout: 250 seconds 21:27 (join) mheld 21:50 (join) martinhex 21:51 (join) mwolfe 22:33 (quit) epochwolf|2: Quit: Linkinus - http://linkinus.com 23:28 (quit) samth: Ping timeout: 255 seconds