00:00 (join) jeapostrophe 00:11 rekahsoft: how is the documentation on racket-lang.org and planet racket (the reference documentation) generated? i assume something to do with embedding scribble into my code? 00:12 rekahsoft: nevermind..found some good documentation on http://docs.racket-lang.org/scribble/how-to-doc.html 00:20 (quit) lucian_: Ping timeout: 246 seconds 00:38 (quit) jeapostrophe: Quit: jeapostrophe 01:15 (quit) realitygrill: Quit: realitygrill 01:19 eli: lewis1711: There's a hiding policy thing that hides library macros by default. You'll need to disable hiding for the `for' (or completely to see the whole thing.) 01:34 (join) CoolgyFurlough 01:37 CoolgyFurlough: sorry to ask such a noob question, but how do you install racket on Ubuntu 11.04 01:38 CoolgyFurlough: ? 01:41 (quit) CoolgyFurlough: 01:41 jonrafkind: fail 01:41 (join) CoolgyFurlough 01:50 jonrafkind: sup 01:50 jonrafkind: you can compile from source or use a binary installer 01:50 jonrafkind: or use a PPA for ubuntu 01:54 CoolgyFurlough: sorry, i was having trouble with the .sh file 01:54 CoolgyFurlough: then i figured out about chmod 01:54 jonrafkind: or just 'sh blah.sh' 02:13 (quit) jonrafkind: Ping timeout: 240 seconds 02:54 (quit) CoolgyFurlough: 03:42 lewis1711: eli: oh yes so it does. thanks 03:44 (join) masm 03:47 (join) Fulax 04:22 (join) mceier 04:29 (join) tfb 05:07 (join) noelw 06:35 (join) MayDaniel 06:58 (join) jeapostrophe 07:14 (quit) MayDaniel: Read error: Connection reset by peer 07:24 (join) ChibaPet 07:41 (quit) jeapostrophe: Quit: jeapostrophe 07:42 (join) kPb_in 07:53 (join) jeapostrophe 07:55 (quit) DGASAU: Ping timeout: 260 seconds 08:00 (join) DGASAU 08:22 lewis1711: https://gist.github.com/1153948 seems like a bug - this compiles fine if I comment out line 3, which should have no effect on type checking. 08:40 (quit) weirdo: Quit: WeeChat 0.3.6-dev 08:45 (join) weirdo 08:48 (part) lewis1711 08:49 (quit) weirdo: Client Quit 09:31 (quit) jeapostrophe: Quit: jeapostrophe 09:32 (join) jeapostrophe 09:32 (quit) rekahsoft: Ping timeout: 240 seconds 09:32 (join) rekahsoft 09:41 (quit) tfb: Quit: gone 09:41 (join) tfb 10:09 (quit) jeapostrophe: Quit: jeapostrophe 10:36 (join) hussaibi 10:40 (join) dnolen 10:43 (quit) dnolen: Client Quit 11:03 (quit) kPb_in: Quit: kPb_in 11:07 (join) jeapostrophe 11:11 (quit) noelw: Quit: noelw 11:37 (join) dnolen 11:37 (join) RacketCommitBot 11:37 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://bit.ly/oKMFqx 11:37 RacketCommitBot: [racket/master] fix `regexp-match' performance for short matches on long strings - Matthew Flatt 11:37 (part) RacketCommitBot 12:02 tauntaun: Suppose that struct B is a subtype of struct A and that function f takes one argument x, expected to be of type struct A, and performs a functional update on it, returning a value of struct A. Suppose f is actually passed an instance y of struct B. Function f will presumably perform the functional update on the "A part" of y, but I'd like it also to preserve the "B part" of y, so that it returns a B instance. Is this possible in 12:02 tauntaun: Racket? 12:02 tauntaun: (struct-copy seems to say 'no') 12:06 (join) MayDaniel 12:15 (quit) MayDaniel: Read error: Connection reset by peer 12:16 (nick) samth_away -> samth 12:20 samth: tauntaun: that's not in general possible without really gross hacks 12:20 samth: i think this is a limitation of the current struct system that we need to address, but structs are already pretty complicated 12:21 (quit) hussaibi: Ping timeout: 250 seconds 12:22 (join) hussaibi 12:25 tauntaun: samth: I was afraid so (and I agree that structs have gotten a bit complicated). A corollary question: does this mean that I should switch from structs to classes? I'm hoping not, because I'd really like the code to stay referentially transparent as it grows bigger and bigger, and I don't see how that's possible with dynamic method dispatch. 12:26 (join) jonrafkind 12:34 tauntaun: (When I say 'switch', I don't mean change all structs to classes everywhere in the code. I mean only in particular cases.) 12:44 samth: tauntaun: first, i don't see a conflict between referential transparency and classes 12:44 samth: second, i don't see how classes would fix the problem 12:50 (join) lucian 12:50 (quit) hussaibi: Ping timeout: 252 seconds 12:51 samth: rudybot: tell lewis1711 the problem is that `ffi' provides a different binding for `->' 12:51 rudybot: samth: ehrm... sorry for coming back on the issue but... 12:51 samth: rudybot: help 12:51 rudybot: samth: help [], version, quote, source, seen , uptime, t8 ..., init [], eval ..., give ..., apropos ..., desc , doc , later "tell" ... 12:51 samth: rudybot: later tell lewis1711 the problem is that `ffi' provides a different binding for `->' 12:51 rudybot: minion: memo for lewis1711: samth told me to tell you: the problem is that `ffi' provides a different binding for `->' 12:57 (quit) tfb: Quit: sleeping 12:57 (join) sstrickl 13:07 tauntaun: samth: my goal is to be able to change a field value in a supertype. I prefer functional updates, but this implies that each subtype will need its own function to update that same field. Classes prevent the problem because, as you know, the subtypes would need only to inherit one supertype method. 13:07 (join) chturne 13:08 tauntaun: As for referential transparency, I understand the term to mean that the behavior of the program is determined entirely by its text, and it seems to me that this gets broken by method dispatch, which, as you know, is determined only at runtime. 13:10 asumu: tauntaun: How about (if (complicated-but-deterministic-computation) f1 f2)? Is that referentially transparent? 13:12 asumu: I think what method dispatch does do is potentially break modularity, but you don't need methods for that. 13:13 tauntaun: asumu: if complicated-but-deterministic-computation is RT, then it seems to me the answer is yes. 13:13 tauntaun: If I'm wrong, please correct me. 13:14 asumu: Not saying you're wrong. RT isn't rigorously defined so I don't know what it means either. 13:15 tauntaun: asumu: I'm surprised. 13:15 tauntaun: I thought RT means that any function invocation in the program text can be lexically replaced by the function's body. 13:16 tauntaun: So that the program text becomes mathematics. 13:23 tauntaun: asumu: If you know of another definition of RT, please do let me know about it. 13:27 (join) soegaard 13:38 (quit) lucian: Read error: Operation timed out 13:38 (quit) soegaard: Quit: Page closed 13:40 (join) soegaard 14:05 samth: tauntaun: dynamic dispatch is equivalent to refactoring to add a bunch of conditionals -- it's referentially transparent IFF the rest of the language is 14:07 tauntaun: Ah. 14:07 tauntaun: Thanks! 14:08 samth: tauntaun: you need to play some tricks for classes to fix the problem 14:09 tauntaun: samth: Do you mean tricks to perform functional updates? 14:09 samth: ie, you'd have to basically write out all the code duplication that you'd need to implement an updater for (your particular) structs 14:10 tauntaun: OK, so are we converging on the conclusion that it might be better to scrap RT and allow objects to be mutable? 14:10 tauntaun: samth: ^ 14:10 tauntaun: s/better/easier 14:13 samth: tauntaun: no, i'm just saying that either way, there's probably a bunch of boilerplate to write 14:13 samth: avoiding mutation is still usually a good idea 14:14 tauntaun: samth: but mutation obviates boilerplate 14:14 tauntaun: (say that three times real fast) 14:14 samth: yes 14:14 samth: but it leads to other problems 14:15 tauntaun sighs 14:16 tauntaun: samth: The context, btw, is a game. The structs in question represent game agents. I recall your saying once that that is in fact a classic use case for mutation (e.g., agent moves from one room to another, or agent picks up an object). Any further thoughts? 14:17 samth: tauntaun: i don't have much really enlightening to say on the balance between mutation and not 14:17 tauntaun: Actually, at that time you referred me to a pretty good explanation in HtDP. 14:17 tauntaun: I should stop agonizing and bite one bullet or the other. 14:18 samth: yeah, there's only one way to find out 14:19 tauntaun: Anyway, thanks again for the help. 14:19 tauntaun goes away in search of a coin to toss. 14:19 (part) ChibaPet 14:21 (join) bluezenix 14:23 (join) hussaibi 14:23 (quit) chturne: Ping timeout: 240 seconds 14:27 (join) chturne 14:40 (quit) sstrickl: Quit: sstrickl 15:07 (join) MayDaniel 15:22 (join) RacketCommitBot 15:22 RacketCommitBot: [racket] plt pushed 5 new commits to master: http://bit.ly/pGYEHm 15:22 RacketCommitBot: [racket/master] fix optimizer problems with mutability checking, inlining - Matthew Flatt 15:22 RacketCommitBot: [racket/master] configure: make --disable-jit imply --disable-futures - Matthew Flatt 15:22 RacketCommitBot: [racket/master] fix reader graph-notation equivalence - Matthew Flatt 15:22 (part) RacketCommitBot 15:36 (quit) dnolen: Ping timeout: 252 seconds 15:52 (join) dnolen 16:23 (join) bluezenix1 16:26 (quit) bluezenix: Ping timeout: 250 seconds 16:33 jonrafkind: whats the syntax for heredocs in racket 16:34 (quit) rekahsoft: Ping timeout: 246 seconds 16:51 (quit) chturne: Quit: Leaving 16:56 soegaard: jonrafkind: http://docs.racket-lang.org/reference/reader.html?q=here#(idx._(gentag._188._(lib._scribblings/reference/reference..scrbl))) 17:09 (part) shofetim: "ERC Version 5.3 (IRC client for Emacs)" 17:21 (join) lucian 17:29 (join) anRch 17:32 jonrafkind: (system "racket") works but (process "racket") doesn't.. whats the deal? 17:33 jonrafkind: err (process "racket foo") fails 17:36 jonrafkind: ah it does work.. user error 17:36 (quit) jeapostrophe: Quit: jeapostrophe 17:39 stamourv: Lubarsky's second law of cybernetic entomology: I 17:39 stamourv: t's _never_ a compiler bug. 17:39 jonrafkind: what are his other laws 17:39 stamourv: Exception to Lubarsky's second law of cybernetic entomology: Except when you wrote the compiler. 17:39 stamourv: The first one is: There's always _one_ more bug. 17:40 jonrafkind: the first law is definately true 17:41 (join) sstrickl 17:49 (quit) lucian: Read error: Operation timed out 18:11 (join) RacketCommitBot 18:11 RacketCommitBot: [racket] plt pushed 3 new commits to master: http://bit.ly/qzwMLQ 18:11 RacketCommitBot: [racket/master] typo in the description - Eli Barzilay 18:11 RacketCommitBot: [racket/master] Added explicit copyleft page to the website. - Eli Barzilay 18:11 RacketCommitBot: [racket/master] `purify-http-port' returns a new port, so make it close the old one. - Eli Barzilay 18:11 (part) RacketCommitBot 18:13 (quit) soegaard: Ping timeout: 252 seconds 18:20 (quit) anRch: Quit: anRch 18:26 (join) RacketCommitBot 18:26 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://bit.ly/r3bfd5 18:26 RacketCommitBot: [racket/master] allow left-aligned figures - Matthias Felleisen 18:26 (part) RacketCommitBot 18:27 (join) cb` 18:35 ohwow_: If I am in REPL (Geiser currently), is there a way to run all top-level expressions? 18:38 (join) jeapostrophe 18:40 ohwow_: hm nevermind actually 18:41 ohwow_: i have another question actually. I have a module which exports a frame% object. I want to use it as a component in my main module and put it on another frame 18:41 ohwow_: how can I do that? 18:41 ohwow_: I didn't find any set-parent option 18:42 (quit) jeapostrophe: Client Quit 18:43 jonrafkind: actually I think there is some set-parent thing now, i asked for it a while ago 18:45 ohwow_: send: no such method: set-parent for class: frame% 18:45 ohwow_: I read in documenation that the container might be a good choice tho 18:45 ohwow_: :) 18:46 ohwow_: ah, but frame is a top-level-window% while container accepts only sub-window% as a child 18:51 ohwow_: How can I find all classes which implements specific interface? 18:54 jonrafkind: yea haha.. grep.. 18:55 ohwow_: o 18:56 ohwow_: Hm.. I though that this can be quite important feature. It's kinda strange that on a class page you can see which interfaces it is implementing, but not vice versa. I might be wrong tho. 18:56 ohwow_: I asked that on the mailing list 18:56 jonrafkind: yea, java has that on some of its pages (implementing classes x, y, z), i like that feature 19:00 ohwow_: Hm, okay. Basically what I want to do is to write a library (module) which exports a panel/window which can be embedded/used in other programms. However, if I use the frame% class for this (which is preferable, since it can be shown without embeding) I have no way of specifing a parent for it nor I can add it as a child to a panel. When I use pane% or panel% I *must* specify parent when exporting (which I obviously can not do). 19:01 ohwow_: Am I doing something wrong here? I want to basically write what might be called a "GUI component". 19:02 jonrafkind: you could export a function that takes a parent and returns the frame 19:02 jonrafkind: or you could write a mixin 19:02 ohwow_: Hm, that's an interesting solution. 19:02 jonrafkind: so that someone provides a frame and you attach your stuff to it 19:02 jonrafkind: (ohwows-thing my-frame) 19:02 ohwow_: Writing my own class can be a solution to but I really want to export an *object* 19:02 jonrafkind: mixins are quite nice 19:03 jonrafkind: well you know an object isn't really a gui component.. 19:03 ohwow_: ah true 19:03 jonrafkind: is a mixin what you want? 19:03 (join) jeapostrophe 19:04 ohwow_: Well. May I explain my general problem if you have time? 19:04 jonrafkind: i suppose 19:06 ohwow_: Are you familiar with LOGO language/turtles language? Racket has it's own implementation, but I want to write my own just for fan. I want to implement it as a component so I could embedd it and add aditional buttons, for example, for controlling turtles. Here's what I have so far: https://gist.github.com/1134811 19:07 ohwow_: If I would have a mixin I would have to encapsulate (current-turtle) too I guess? 19:07 jonrafkind: you could make hte current turtle a member of the mixin 19:08 ohwow_: Okay, right now I can do (current-turtle (turtle ...)) which would change the parameter 19:08 ohwow_: how that would look if I use a class? 19:09 ohwow_: (I am sorry for being so clueless, I have only basic understanding of Racket's class system. I promise to read it deeply later, but you guys just wrote soooo much code and made lots of awesome features I have to learn all of them) 19:11 jonrafkind: you would just use the turtle member of the class, its just a plain variable 19:20 (quit) MayDaniel: Read error: Connection reset by peer 19:25 ohwow_: ah i see, thanks 19:25 ohwow_: i would look into mixins then 19:29 (quit) dnolen: Ping timeout: 252 seconds 19:40 (quit) DGASAU: Remote host closed the connection 19:55 (join) DGASAU 20:04 (quit) mceier: Quit: leaving 20:06 (join) dnolen 20:17 (quit) jeapostrophe: Quit: jeapostrophe 20:23 (nick) samth -> samth_away 20:33 (quit) jonrafkind: Remote host closed the connection 20:35 (join) SeanDeNigris 20:43 (quit) masm: Ping timeout: 268 seconds 20:54 (join) jeapostrophe 21:12 (nick) elliottcable -> fuuuuuuuuuck 21:15 (nick) fuuuuuuuuuck -> elliottcable 21:22 (quit) jeapostrophe: Quit: jeapostrophe 21:24 (quit) bluezenix1: Quit: Leaving. 21:26 (quit) hussaibi: Ping timeout: 240 seconds 21:27 (join) bluezenix 21:28 (quit) bluezenix: Client Quit 21:30 (join) hussaibi 21:31 (join) hussaibi_ 21:32 (join) kevin01123 21:32 (quit) kevin01123: Remote host closed the connection 21:35 (quit) hussaibi: Ping timeout: 258 seconds 21:40 (quit) martinhex: Ping timeout: 240 seconds 21:43 (quit) hussaibi_: Ping timeout: 276 seconds 21:47 (join) hussaibi 21:56 (join) shofetim 22:11 (join) martinhex 23:44 (join) jonrafkind 23:46 em: This is kind of a strange question, but when you guys make a racket program, sometimes you probably don't want to just run it in drracket. How do you make a racket program that has some sort of standalone interface?