00:04 (join) dented42 00:20 (quit) Kaylin: Read error: Connection reset by peer 00:38 (join) jeapostrophe 00:53 (join) egslava 00:53 egslava: Hello! 00:53 egslava: I'm newbie in Racket, but it's look pretty. 00:53 egslava: And yeah, sorry for my English - I'm from Russia. 00:54 egslava: I'm interesting - is there Racket compilator? 00:54 (quit) jeapostrophe: Ping timeout: 244 seconds 00:54 egslava: Or tool,that able to run my racket-program as .exe or elf-file? 00:56 asumu: egslava: Yeah, look up the raco program. 00:57 asumu: egslava: http://docs.racket-lang.org/raco/exe.html 00:57 asumu: There aren't very many people on at this time of night, so ask questions on the mailing list if you don't have luck here. 00:57 asumu: I'm going to sleep soon myself, so good luck. Racket is fun. :) 01:06 egslava: Thanks for the answer! 01:06 egslava: Oh, really. We have 9.00 AM, I forgot, that other country yet sleepping. 01:13 egslava: Heh, I used Raco from DrRacket. But result binaries is too big :( 01:13 egslava: They can use about 12 MB. It is too lot. I think, I should use SBCL in the future. 01:13 egslava: But thanks a lot! 01:18 (join) egslava_ 01:20 (quit) egslava: Ping timeout: 245 seconds 01:24 (quit) yoklov: Quit: bye! 01:26 (join) jonrafkind 01:33 (join) Shambles_ 01:44 (join) dous_ 01:46 (quit) dous: Ping timeout: 246 seconds 02:22 (join) dzhus 02:34 (quit) jonrafkind: Ping timeout: 260 seconds 02:41 (join) mmajchrzak 03:05 (quit) dous_: Remote host closed the connection 03:06 (join) dous 03:15 (join) Demosthenes 03:22 (quit) Demosthenes: Ping timeout: 264 seconds 03:29 (join) Demosthenes 03:45 (quit) dzhus: Remote host closed the connection 03:57 (join) Shvillr_ 03:57 (quit) Shviller: Disconnected by services 03:57 (nick) Shvillr_ -> Shviller 04:05 (quit) dous: Remote host closed the connection 04:15 (quit) egslava_: Ping timeout: 245 seconds 04:21 (quit) mmajchrzak: Ping timeout: 245 seconds 04:29 (quit) dsp_: Read error: Operation timed out 04:31 (join) dsp_ 04:41 (join) gciolli 04:46 (quit) gciolli: Ping timeout: 246 seconds 04:55 (join) gciolli 05:04 (join) dzhus 05:14 (quit) gciolli: Ping timeout: 252 seconds 05:23 (join) bluezenix 05:24 (join) _danb_ 05:32 (join) gciolli 05:36 (quit) gciolli: Ping timeout: 252 seconds 05:54 (join) masm 06:10 (join) bitonic 06:14 (join) dous 06:38 (join) mceier 06:50 (quit) dzhus: Ping timeout: 244 seconds 07:03 (join) dzhus 07:03 (quit) jhemann: Ping timeout: 264 seconds 07:31 (quit) bluezenix: Quit: Leaving. 07:56 (join) djcb````` 07:58 (quit) djcb````: Ping timeout: 244 seconds 08:23 (join) mmajchrzak 09:12 (join) veer 09:31 (join) samth 09:38 (quit) dzhus: Remote host closed the connection 09:50 (join) jeapostrophe 10:12 (quit) duomo: Quit: Leaving... 10:15 (quit) mmajchrzak: Remote host closed the connection 10:25 (join) Skola 10:53 (join) gridaphobe 11:01 (quit) djcb`````: Remote host closed the connection 11:05 (join) bluezenix 11:11 (quit) bitonic: Ping timeout: 276 seconds 11:22 (join) djcb 11:26 (join) djcb` 11:28 (quit) djcb: Ping timeout: 264 seconds 11:39 (quit) veer: Quit: Leaving 11:41 (join) duomo 11:43 (quit) ssbr_: Ping timeout: 246 seconds 11:54 (join) RacketCommitBot 11:54 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/D1bAdw 11:54 RacketCommitBot: [racket/master] streamline chaperoned struct field reference - Matthew Flatt 11:54 (part) RacketCommitBot 12:14 (quit) Skola: Quit: Lost terminal 12:35 (join) gciolli 12:39 (quit) Demosthenes: Read error: Connection reset by peer 12:40 (join) Demosthenes 12:54 (quit) Demosthenes: Read error: Connection reset by peer 12:55 (join) Demosthenes 12:57 (quit) gciolli: Ping timeout: 244 seconds 13:01 (quit) jrslepak: Quit: What happened to Systems A through E? 13:08 (join) jhemann 13:14 (quit) cdidd: Ping timeout: 276 seconds 13:18 (join) basepi 13:19 basepi: so I'm trying to go through a list like '(1 2 3 4 (5 6) 7) and make it into '(1 2 3 4 5 6 7). Is there any way to do this elegantly? 13:19 (join) jrslepak 13:19 basepi: I only want to unwrap a single level, so '(1 2 3 4 (5 (6 7))) would become '(1 2 3 4 5 (6 7)) 13:21 samth: rudybot, append-map 13:21 rudybot: samth: haesbaert, use SRFI 1's APPEND-MAP. 13:21 samth: rudybot, eval append-map 13:21 rudybot: samth: your sandbox is ready 13:21 rudybot: samth: ; Value: # 13:21 basepi: thanks, i'll look into that. 13:22 samth: rudybot, (append-map (lambda (e) (if (list? e) e (list e))) '(1 2 3 4 (5 6) 7)) 13:22 rudybot: samth: ; Value: (1 2 3 4 5 6 7) 13:22 samth: rudybot, (append-map (lambda (e) (if (list? e) e (list e))) '(1 2 3 4 ((5 6) 7))) 13:22 rudybot: samth: ; Value: (1 2 3 4 (5 6) 7) 13:22 samth: basepi, ^ 13:23 basepi: wow awesome, thanks. 13:24 (quit) Demosthenes: Ping timeout: 252 seconds 13:26 (join) Kaylin 13:28 (quit) gridaphobe: Ping timeout: 245 seconds 13:40 (quit) jeapostrophe: Ping timeout: 265 seconds 13:41 (join) gridaphobe 13:43 (join) dnolen 13:45 (join) jonrafkind 13:46 basepi: thanks again, samth. been struggling against this part of my assignment for hours, and a modified version of your code above solved it perfectly. 13:49 (quit) karswell: Read error: Operation timed out 14:01 (quit) _danb_: Ping timeout: 265 seconds 14:16 (join) yoklov 14:26 (join) Demosthenes 14:32 (join) djcb`` 14:34 (quit) djcb`: Ping timeout: 244 seconds 14:38 (quit) Demosthenes: Ping timeout: 240 seconds 14:39 (join) Demosthenes 14:43 (quit) Demosthenes: Client Quit 14:49 cky: Quick question: are places effectively like message-passing in other concurrent systems? (I'm thinking of Erlang in specific.) A quick skim seems to suggest it but I don't want to get the wrong idea. 14:49 (join) errstr 15:21 (quit) duomo: Quit: Leaving... 15:22 (join) jeapostrophe 15:29 (join) duomo 15:42 (quit) Kaylin: Quit: Leaving. 15:58 (quit) jeapostrophe: Ping timeout: 260 seconds 16:04 (join) karswell 16:39 (quit) jamessan: Quit: Coyote finally caught me 16:43 (join) jamessan 16:49 (quit) bluezenix: Quit: Leaving. 17:14 (join) Kaylin 17:14 (join) bluezenix 17:15 chandler: cky: Place channels are a form of message-passing communication, but the comparison to Erlang is perhaps imperfect. 17:25 (join) kingless 17:28 rapacity: there's also support for shared memory vectors between places 17:33 (quit) kingless: Read error: Connection reset by peer 17:33 (join) kingless_ 17:37 (quit) kingless_: Client Quit 17:38 (quit) yoklov: Quit: computer sleeping 17:39 (join) yoklov 17:42 (quit) yoklov: Client Quit 17:48 (quit) mceier: Quit: leaving 17:52 errstr: hello all. 17:52 errstr: in the definition for 'hash-update' it says the 'updater' can be 'any/c', which seems to be any value. I'm trying to do the following, but it complains about the arity... 17:53 errstr: something equivalent to this: (hash-update (hash) 'x (+ 4 1)) 17:53 chandler: what version are you using? the 5.2.1 documentation says the updater is (any/c . -> . any/c) 17:54 errstr: rather ... (hash-update (hash) 'x (+ 4 1) 0) 17:54 errstr: 5.2 17:54 chandler: might be a fixed doc bug 17:55 errstr: so, I'm doing it wrong or I need to upgrade? 17:55 (quit) jonrafkind: Ping timeout: 245 seconds 17:55 chandler: rudybot: eval (hash-update #hash{(x . 1)} 'x add1) 17:55 rudybot: chandler: your sandbox is ready 17:55 rudybot: chandler: ; Value: #hash((x . 2)) 17:55 chandler: The updater has to be a procudure which receives the existing value and returns a new value 17:55 chandler: "procedure" 17:56 chandler: rudybot: eval (hash-update #hash{(x . 1)} 'y add1 0) 17:56 rudybot: chandler: ; Value: #hash((x . 1) (y . 1)) 17:57 errstr: sorry this probably the dumbest question you'll have, but, add1 just adds 1, how do I add any value to the existing one? 17:58 chandler: (lambda (v) (+ v 42)) for instance 17:58 errstr: ah, there we go, thanks. I really appreciate it 17:58 chandler: no problem, hope that helps. 17:59 errstr: yes, it does. thank you. 18:03 samth: cky, places are much like erlang 18:03 samth: with the major difference being that places are effectively separate vms, with separate heaps 18:03 chandler: aren't erlang processes separate heaps too? 18:03 samth: whereas erlang threads are very lightweight 18:04 samth: chandler, no, i don't think so 18:04 samth: chandler, they could be, but i don't think they are 18:04 chandler: I'm pretty sure they are, and that messages are copied between processes 18:05 samth: chandler, well, it all depends what you mean by separate 18:05 chandler: oh, they're not as separate as I thought 18:05 chandler is reading more 18:05 samth: if you mean "there are no pointers from the data owned by one erlang process to another" 18:06 samth: then yes 18:06 chandler: oh, it looks like there's just an exception for a specific type 18:06 samth: if you mean "the erlang/otp vm maintains a separate heap space for each thread" then no, i think 18:07 chandler: I think it does, actually 18:07 samth: there's a paper about places that will know more than me (and probably better compare to erlang) 18:07 samth: http://www.cs.utah.edu/plt/publications/dls11-tsffd.pdf 18:09 chandler: Ah; there's a shared heap for messages, and messages can be allocated directly into the shared heap. Smart. 18:17 (join) yoklov 18:44 (quit) jrslepak: Quit: This computer has gone to sleep 18:56 (quit) gridaphobe: Remote host closed the connection 19:06 (quit) dnolen: Ping timeout: 250 seconds 19:36 (join) Fare 19:37 (join) dnolen 19:53 (join) jonrafkind 19:58 (join) jrslepak 20:02 cky: chandler, samth: Thanks for the neat discussion about places vs Erlang! I'll read that paper. 20:10 (quit) jhemann: Ping timeout: 260 seconds 20:13 (quit) bluezenix: Quit: Leaving. 20:25 (join) lewis1711 20:30 (quit) masm: Quit: Leaving. 20:36 (quit) jrslepak: Quit: This computer has gone to sleep 20:38 (join) jules 20:39 (join) jhemann 20:43 jules: I have a question about contracts. Contracts are for letting two pieces of code that don't trust each other interoperate. For example if Alice wrote a function and Bob uses that function, then Alice wraps the function with her error projection that protects her against malicious inputs given by Bob. Similarly, Bob wraps the function given by Alice with his error projection to protect himself against malicious returned values. 20:43 jules: Is this the right way to think about contracts? 20:46 jules: If so, then it seems to me that the order in which the error projections are applied in the paper "Contracts as Pairs of Projections" in the function guard3 should be the other way around? 20:55 (join) jrslepak 20:58 (join) cdidd 21:00 chandler: jules: I can't answer that question, but I think given the holiday weekend you might want to send that to the user list instead of asking on IRC... 21:03 jules: chandler: ah, right, easter :) thanks for the suggestion, I'll ask it on the mailing list 21:29 asumu: jules: I don't remember all the details of that paper but I can take a look... 21:29 (quit) dented42: Quit: Computer has gone to sleep. 21:32 (part) lewis1711 21:37 asumu: jules: that looks right to me. 21:37 asumu: In the flat case, the order doesn't really matter. 21:38 asumu: In the higher-order case, the client projection should be applied last as it does the function wrapping last. 21:38 asumu: That way, it runs the wrapper of the client (i.e., the argument check) first. 21:45 jules: The server is the guy providing the value, right? 21:46 jules: and the server-projection is the projection that protects the server's integrity? 21:47 jules: However, in the paper, the definition of ho3 is the other way around: the car is called the server-projection, but it protects the integrity of the *client* 21:51 asumu: jules: The server is the guy providing the value, but in the case of a ho contract, that is the function. 21:52 asumu: It's not so much the integrity of the server, but its obligations. 21:52 asumu: The server (providing the function) is obliged to make the function return the right result. 21:52 asumu: Thus, the server projection will check the result. 21:52 jules: I see, so the server-projection protects the client? 21:52 asumu: In a sense, yes. 21:53 asumu: It's about obligation rather than who it protects. 21:53 asumu: (although I suppose it's always both) 21:53 jules: hmm yes 21:55 jules: suppose we did not have a contract library at hand (yet) but Alice wrote a function Int -> Int. She does not want to give Bob the chance to abuse the function, so before she gives it to bob she puts a wrapper around it that checks that the arguments that bob passes are ints. 21:56 jules: Then Bob receives this function, and he puts a wrapper around it that checks that it always returns an int (otherwise his code might misbehave) 21:57 jules: In other words, Alice calls client-projection of (ho int int) on it, and then bob calls server-projection of (ho int int) on it 21:57 jules: so (server-projection (client-projection f)) 21:57 jules: but in the paper it is the other way around 21:58 jules: but perhaps this business of everyone protecting himself is not the right way to think about it? 22:02 asumu: Oh, hmm, actually maybe it'll work either way. 22:03 asumu: It will fail quicker in this order though, I think 22:04 asumu: Oh wait. 22:04 asumu: It might matter in the case where you have even more ho contracts. 22:04 jules: well, if this protection is the right way to think about it, then the client-projection does not provide adequate protection 22:04 jules: (the client-projection of ho) 22:05 jules: because if val is not a procedure, the client-projection (the one that alice calls) passes the value on to bob anyway 22:05 jules: so it might be, say, an array that bob can then proceed to modify, and presumably that was not alice's intention 22:06 (join) _danb_ 22:06 asumu: Actually, shouldn't both projections check that the thing is a procedure? 22:07 jules: I don't know, but the one in that paper only signals an error one way 22:11 asumu: You mean ho_3? 22:11 jules: yes 22:11 asumu: ho_3 appears to do the procedure check in each projection. 22:11 jules: yes, but in the second case it does not raise an error 22:12 asumu: Ah, yes, I missed that. 22:14 asumu: Well, the order in the paper should be fine for that. Since the check only happens at the wrapping time. 22:15 asumu: And since it's call-by-value, the server projection is run first. 22:15 asumu: During wrapping. 22:15 asumu: So the procedure? check that produces blame will happen first. 22:17 jules: right, I can see that it works out in the end, but I still find it strange that the client's protection protects the server 22:17 jules: or in other words: that the server's obligation protects the server 22:18 asumu: Well, it makes sense that the procedure? check fails there since `val` being a function is an obligation of the server. 22:19 asumu: And since the client actually invokes the procedure, the server is protecting the client. 22:20 asumu: The procedure? check in the other case just makes the blame carry through (I think?) 22:20 asumu: Or maybe not, I have to think about that. 22:21 jules: if the server-projection always runs before the client-projection, then why is the check there? 22:21 jules: then the else-branch of the check is dead code? 22:26 jules: It is time to sleep...perhaps tomorrow I can understand the paper. Thanks a lot for your help! 22:27 asumu: jules: Yeah, no problem. Not sure about the else branch but I'll think about it. Good night. 22:30 (quit) jules: Ping timeout: 245 seconds 22:38 (quit) duomo: Quit: Linkinus - http://linkinus.com 23:39 (join) ofthelesser 23:43 (quit) samth: Ping timeout: 246 seconds