00:01 eli: neilv: No idea, but I suspect it isn't. 00:02 eli: neilv: catting a file with a λ fails. 00:16 (join) adu 00:17 (join) jeapostrophe 00:19 neilv: eli: i think i fixed your arrow keys and home and end keys in version 2:2 00:22 neilv: eli: regarding getting the terminal size wrong, i don't yet have a good answer. i will probably have to make a fedora box to see whether xterm is lying about its size 00:28 (quit) jeapostrophe: Ping timeout: 246 seconds 00:28 eli: neilv: Yeah, the arrow keys work, size doesn't. If you point me at the escape sequences I can try to do that (but still, stty does get the right dimensions...) 00:29 neilv: i'm downloading a fedora 17 live cd. i'll try it tomorrow 00:30 neilv: currently, for most ansi-ish terminals, charterm will first try the escape sequence, and only use stty if the escape sequence fails 00:30 neilv: if i don't resolve this tomorrow, i'll just disable the escape sequence code and make it always use stty 00:31 (quit) Kaylin: Quit: Leaving. 00:33 (quit) dzhus: Remote host closed the connection 00:42 (quit) yoklov: Quit: computer sleeping 00:43 neilv: huh. fedora 17 live cd doesn't include xterm 00:43 jonrafkind: blasphemy 00:44 adu: wow 01:01 (join) nilyaK 01:02 (quit) hash_table: Ping timeout: 265 seconds 01:02 (quit) getpwnam: Ping timeout: 265 seconds 01:13 neilv: eli: i think i reproduced the problem with fedora 01:15 (quit) jacius: Remote host closed the connection 01:15 eli: neilv: Is the whole getting-the-width thing something that can be done in a smallish piece of code? 01:16 eli: I considered using that for xrepl, but gave up on the prospect of running some stty on every prompt just for that. 01:16 neilv: eli: i've fixed it. will upload in a few minutes 01:17 eli: neilv: and my question? 01:21 neilv: racket -p neil/charterm:2:3/demo -m 01:21 neilv: i think that fixes screen size 01:24 neilv: eli: the getting-width thing means you write a byte sequence to the tty, then eventually you get back a byte sequence from the tty with the response 01:25 (join) veer 01:25 neilv: eli: there might be keypresses before the response, so you have to parse it and do a little buffer management 01:26 neilv: the demo does it once per second when there is no activity, iirc 01:28 neilv: eli: the control sequence doesn't work within "screen", for unknown reasons 01:31 neilv: eli: one of the next things on my list is to make it easier to do resize detection with the charterm library (you'll be able to provide a callback for the resize event, and you can query the last-known-size at any time) 01:36 (quit) jesyspa: Quit: leaving 01:43 eli: neilv: The question is whether the reply is simple enough (including parsing) that I can write short code for that. 01:44 eli: But actually, it should probably be when the term is in some raw mode which means that I'll need stty anyway, which makes it impractical again. 01:44 (quit) Shambles_: Quit: Leaving. 01:44 neilv: #rx#"\e\\[8;([0-9]+);([0-9]+)t" 01:45 eli: Is that always the same? (How come it didn't work on fedora then?) 01:46 neilv: i was using the wrong instruction. some setups were tolerant; fedora was not 01:46 neilv: the request is: #"\e[18t" 01:47 eli: And does it require switching to a raw mode? 01:47 neilv: aren't you already raw mode? 01:48 eli: No, that's for xrepl (which uses readline). 01:48 neilv: the request and response don't require raw, afaik, but i assume you want raw anyway 01:49 eli: I don't -- I want to do it before showing something on the screen, which means that readline has done its job, and I want to minimize screen-related messes. 01:51 eli: neilv: No, I did a quick experiement: (printf "\e[18t") (flush-output) (read-string 4) 01:51 eli: It spits the results out as if I entered them on the line, and racket gets the string only if I hit enter. But if I C-u it, it gets nothing... 01:51 eli: So it needs to be in raw mode to work. 01:53 (nick) banseljaj -> imami|afk 01:53 neilv: i have to sleep now. thanks for your help with fixing those problems in charterm 01:57 (quit) jonrafkind: Ping timeout: 252 seconds 02:02 (join) wahjava 02:03 (join) Shambles_ 02:04 veer: I am writing list of paths to a file using (write lop out) , but when I try read using (read in) I get error "read: bad syntax `#<' " , when it can read structures why not path ? 02:04 weirdo: try namestrings 02:05 veer: namestrings? you mean string representation of a path 02:06 veer: I was using string before I switched to path 02:06 weirdo: then write a proper serializer 02:07 weirdo: there isn't read syntax for all the types 02:11 veer: I am going to use string rep , it actually does not matter I assume if I use path or string 02:16 eli: veer: Use `path->bytes' on the way out, and `bytes->path' on the way in. 02:17 eli: ("Namestrings" is a CL-ism, BTW.) 02:17 veer: eli: ok, thanks 02:25 veer: yay! finally wrote my first DrRacket plugin : save and restore session (tabs) 02:28 (quit) veer: Read error: Connection reset by peer 02:29 (join) veer 03:01 (join) djcoin 03:19 (join) hkBst 03:19 (quit) hkBst: Changing host 03:19 (join) hkBst 03:50 (join) rbarraud 03:58 (join) mceier 04:00 (quit) mithos28: Quit: mithos28 04:01 (quit) nilyaK: Quit: Leaving. 04:02 (join) rbarraud_ 04:03 (quit) rbarraud: Read error: Connection reset by peer 04:24 (quit) neilv: Ping timeout: 272 seconds 04:39 (quit) BeLucid_: Remote host closed the connection 04:41 (join) MightyFoo 04:41 MightyFoo: fy slithy 04:41 (join) BeLucid 04:43 MightyFoo: well, that was stupid! 04:43 MightyFoo: i might just give up on the week 04:43 (nick) MightyFoo -> tim-brown 05:05 (join) ssbr_ 05:07 (join) bitonic 05:16 (quit) adu: Quit: adu 05:53 (quit) bitonic: Remote host closed the connection 06:00 (quit) SHODAN: Quit: No Ping reply in 180 seconds. 06:01 (join) SHODAN 07:12 (join) gciolli 07:13 (quit) vu3rdd: Ping timeout: 240 seconds 07:16 (quit) gciolli: Client Quit 07:23 (join) dnolen 07:30 (quit) veer: Quit: Leaving 07:41 (join) masm 07:48 (quit) rbarraud_: Ping timeout: 246 seconds 07:54 (quit) Shviller: Ping timeout: 252 seconds 07:55 (join) Shviller 07:56 (join) antithesis 08:07 (join) acarrico 08:10 (quit) ssbr_: Ping timeout: 244 seconds 08:24 (join) ssbr_ 08:42 (join) bitonic 08:45 (quit) ssbr_: Ping timeout: 248 seconds 08:46 (join) ssbr_ 08:48 (join) yoklov 08:50 (join) jeapostrophe 08:50 (quit) jeapostrophe: Changing host 08:50 (join) jeapostrophe 08:50 (quit) ssbr_: Ping timeout: 260 seconds 08:50 (quit) bitonic: Remote host closed the connection 08:51 (quit) yoklov: Client Quit 08:53 (join) bitonic 08:58 (join) getpwnam 08:59 (join) hash_table 09:03 (join) ssbr_ 09:08 (quit) ssbr_: Ping timeout: 252 seconds 09:22 (join) ssbr_ 09:29 (join) samth 09:29 (quit) samth: Changing host 09:29 (join) samth 09:35 (quit) hash_table: Ping timeout: 272 seconds 09:35 (quit) getpwnam: Ping timeout: 272 seconds 09:39 (join) jesyspa 09:44 (quit) ssbr_: Ping timeout: 264 seconds 09:47 (join) ssbr_ 09:54 (quit) mceier: Quit: leaving 09:58 (quit) dnolen: Ping timeout: 255 seconds 10:08 (quit) ssbr_: Ping timeout: 244 seconds 10:11 (join) ssbr_ 10:24 (quit) jimmypk: Ping timeout: 265 seconds 10:29 (join) vu3rdd 10:29 (quit) vu3rdd: Changing host 10:29 (join) vu3rdd 10:34 (quit) ssbr_: Ping timeout: 252 seconds 10:35 (join) ssbr_ 10:36 (join) adu 10:40 (quit) masm: Ping timeout: 246 seconds 10:54 (join) getpwnam 10:54 (join) anRch 10:54 (quit) vu3rdd: Ping timeout: 246 seconds 10:55 (join) hash_table 10:56 (join) nilyaK 11:13 (join) mceier 11:14 stamourv: mithos28: Re dict/contract: asumu is working on contracts for generics, which will likely lead to a replacement for `prop:dict/contract'. 11:15 stamourv: asumu: Can you give mithos28 access to that tree, so he can try your design out? 11:15 stamourv: veer: Near! Is it on PLaneT? 11:15 stamourv: s/Near/Neat/ 11:16 (quit) ssbr_: Ping timeout: 245 seconds 11:20 (quit) jeapostrophe: Ping timeout: 245 seconds 11:23 (join) ssbr_ 11:26 stamourv: jamessan, bremner: I'm looking at the package description for Racket in sid. There are a couple of leftover "{PLT ,}Scheme". 11:26 stamourv: E.g. "PLT Scheme web server", "Typed Scheme", "Lazy Scheme". 11:26 (join) RacketCommitBot 11:26 RacketCommitBot: [racket] plt pushed 4 new commits to master: http://git.io/ENq-Ng 11:26 RacketCommitBot: [racket/master] error-message repair - Matthew Flatt 11:26 RacketCommitBot: [racket/master] doc correction and improvement - Matthew Flatt 11:26 RacketCommitBot: [racket/master] fix `help' docs - Matthew Flatt 11:26 (part) RacketCommitBot 11:30 bremner: stamourv: yes, that's true. Probably TR is not really "example" anymore either. 11:30 (quit) ssbr_: Ping timeout: 245 seconds 11:32 bremner: stamourv: it would be great if you could file a wishlist bug so we don't forget 11:32 bremner: otoh, if you're not set up to do it, I can. 11:40 (join) ssbr_ 11:45 (quit) hkBst: Quit: Konversation terminated! 11:52 (quit) tewk: Quit: leaving 11:54 (quit) antithesis: Remote host closed the connection 12:02 stamourv: bremner: Would I need an account? 12:02 bremner: no, just to be running Debian (and have reportbug set up) 12:03 stamourv: Setting it up. 12:04 bremner: you can tell it to talk directly to the debian smtp server, if you don't have mail setup 12:06 bremner: /usr/share/doc/reportbug/README.Users.gz has the skinny 12:06 stamourv: Ah, great. 12:06 stamourv: The manpage is not the best intro. 12:06 (join) mithos28 12:11 (quit) adu: Quit: adu 12:15 (quit) anRch: Quit: anRch 12:16 stamourv: bremner: Done. 12:16 stamourv: I didn't realize that `reportbug' was interactive. 12:17 stamourv: Once I figured that out, it was easy. 12:17 bremner: great! welcome to the team ;) 12:18 stamourv: I've been a happy debian user for years. I guess it's time to give y'all a bit of help. ;) 12:19 bremner: and I see your bug 12:19 stamourv: I don't know if that's a mistake, but the package page lists both you and jamessan as maintainers, whereas the bugs page only lists you. 12:19 bremner: ah, it's not a big deal. there is this artificial distinction between "Maintainer" and "Uploader" for historical reasons. 12:24 (part) tim-brown: "WeeChat 0.3.8" 12:38 (quit) ssbr_: Ping timeout: 272 seconds 12:52 (quit) djcoin: Quit: WeeChat 0.3.2 12:54 (join) jeapostrophe 12:54 (quit) jeapostrophe: Changing host 12:54 (join) jeapostrophe 13:05 (quit) lusory: Read error: Operation timed out 13:05 (join) ssbr_ 13:06 (join) RacketCommitBot 13:06 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/z_6qig 13:06 RacketCommitBot: [racket/master] Update type of string-join for its new keyword arguments. - Vincent St-Amour 13:06 (part) RacketCommitBot 13:16 (join) jacius 13:29 (join) lusory 13:33 (join) eli 13:38 (quit) ssbr_: Read error: Connection timed out 13:39 (join) RacketCommitBot 13:39 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/6ZIong 13:39 RacketCommitBot: [racket/master] Add #:unless to the for: macros. - Vincent St-Amour 13:39 (part) RacketCommitBot 13:39 (join) RacketCommitBot 13:39 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/7jmBRg 13:39 RacketCommitBot: [racket/master] scheme -> racket - Sam Tobin-Hochstadt 13:39 (part) RacketCommitBot 13:41 (join) ssbr_ 13:46 (quit) ssbr_: Ping timeout: 250 seconds 13:51 (join) ssbr_ 13:54 (quit) bitonic: Remote host closed the connection 13:58 (quit) ssbr_: Ping timeout: 255 seconds 13:59 (join) ssbr_ 14:00 (join) masm 14:05 (join) random_malice 14:05 (join) bro_grammer 14:08 (quit) hash_table: Ping timeout: 240 seconds 14:08 (quit) getpwnam: Ping timeout: 240 seconds 14:11 (join) snearch 14:13 (quit) ssbr_: Ping timeout: 244 seconds 14:13 (join) RacketCommitBot 14:13 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/9XLJuQ 14:13 RacketCommitBot: [racket/master] Split out some small utilities to prepare to reduce dependencies. - Sam Tobin-Hochstadt 14:13 (part) RacketCommitBot 14:33 (join) jonrafkind 14:33 (quit) jonrafkind: Changing host 14:33 (join) jonrafkind 14:42 (join) RacketCommitBot 14:42 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/yJfEqg 14:42 RacketCommitBot: [racket/master] adjust defproc* so that it only shows the white background label once, instead - Robby Findler 14:42 (part) RacketCommitBot 14:52 (join) ssbr_ 14:53 (join) getpwnam 14:53 (join) hash_table 14:56 (quit) bro_grammer: Ping timeout: 264 seconds 14:56 (quit) random_malice: Ping timeout: 264 seconds 14:57 (quit) ssbr_: Ping timeout: 245 seconds 15:10 (join) ssbr_ 15:13 (join) dzhus 15:14 (join) neilv 15:34 (quit) jonrafkind: Ping timeout: 248 seconds 15:37 neilv: this poor person is really picking fights out of his internet weight class 15:38 (quit) ssbr_: Ping timeout: 250 seconds 15:39 neilv: fortunately, the racket community is friendly and welcoming 15:40 (join) ssbr_ 15:41 stamourv: neilv: Who? 15:42 neilv: i just had a tiny bit of coffee, and am babbling 15:43 stamourv: Ah. 15:44 stamourv was hoping to watch a nice flame war. 15:46 asumu: stamourv: sure on the tree thing. Lemme put it on github... 15:47 neilv: i think i'll do something with charterm this evening. i want to make a little console feature that's super-easy to plug into racket server apps 15:50 neilv: one use case: you add (require (planet whatever/console)) and (start-console) to your code, and you have a console that shows you resource usage, lets you quit, kill with debugging info, etc. 15:50 asumu: mithos28, stamourv: https://github.com/takikawa/racket/tree/generics-contracts 15:50 neilv: maybe it will hook into the logger by default too 15:51 neilv: eventually there will be hooks to add your own info displays and commands. but out of the box, it's two lines of code to be using it 15:52 asumu: (although I just broke it so don't clone it yet...) 15:54 asumu: Damn define shadowing. 16:01 (join) jonrafkind 16:01 (quit) jonrafkind: Changing host 16:01 (join) jonrafkind 16:13 (quit) jonrafkind: Ping timeout: 272 seconds 16:20 (quit) ssbr_: Ping timeout: 240 seconds 16:27 (join) RacketCommitBot 16:27 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/HgVmEg 16:27 RacketCommitBot: [racket/master] Fix rmpi argument names, simple map-reduce impl - Kevin Tew 16:27 RacketCommitBot: [racket/master] Fix *channel-get's use of continuations - Kevin Tew 16:27 (part) RacketCommitBot 16:36 (quit) nilyaK: Quit: Leaving. 16:37 neilv: heh. gdb disables address space randomization on linux by default. so if that was the problem with your gc'd intepreter, it wouldn't exhibit when run under gdb 16:48 (join) ssbr_ 16:50 (quit) snearch: Quit: Verlassend 16:55 (join) doomrobo 17:01 (quit) getpwnam: Ping timeout: 248 seconds 17:01 (quit) hash_table: Ping timeout: 248 seconds 17:06 doomrobo: why does the following return a type error? (map (lambda (i) (+ i 1)) (list 1 2)) in typed racket? It says "Expected Number but got Any." I don't see why it can't use the polymorphic value 17:07 (quit) dzhus: Ping timeout: 245 seconds 17:08 bremner: because i needs to be a number 17:08 bremner: maybe use lambda: ? 17:08 (quit) ssbr_: Ping timeout: 265 seconds 17:08 doomrobo: bremner, I haven't been able to find the syntax for lambda: anywhere 17:09 samth: doomrobo: bremner is correct 17:09 samth: rudybot: init typed/racket 17:09 rudybot: samth: your typed/racket sandbox is ready 17:09 samth: rudybot: doc lambda: 17:09 rudybot: samth: http://docs.racket-lang.org/ts-reference/special-forms.html#(form._((lib._typed-racket%2Fbase-env%2Fprims..rkt)._lambda~3a)) 17:09 bremner: it's in the TR reference, isn't it? 17:09 samth: right there 17:09 doomrobo: wow 17:10 doomrobo: (map (lambda: ((i : Number)) (+ i 1)) (list 1 2)) works, thanks 17:11 doomrobo: but why doesn't the lambda: form specify return type? 17:12 samth: doomrobo: you can specify it if you want 17:12 samth: but you don't have to 17:13 samth: rudybot: eval (lambda: ([x : Integer]) : Integer (+ x 7)) 17:13 doomrobo: how? 17:13 rudybot: samth: error: #:1:25: :: bad syntax in: : 17:13 samth: hmm 17:13 doomrobo: yeah, I tried 17:13 samth: i thought you could 17:13 samth: maybe i took that out 17:13 samth: but either way, there's really no point 17:14 doomrobo: isn't there just as much reason to have an explicit return type for lambdas as regular functions? 17:18 stamourv: `define'd functions can be recursive, so you may need their return types to typecheck their body. 17:18 stamourv: That's not the case for `lambda's. 17:18 samth: exactly 17:20 doomrobo: ok 17:24 (join) ssbr_ 17:24 doomrobo: also, this may be very n00by, but how would one practically use a function like apply? 17:29 (quit) ssbr_: Ping timeout: 265 seconds 17:29 samth: doomrobo: like this: 17:29 stamourv: rudybot: (apply append (map range '(1 2 3 4))) 17:29 rudybot: stamourv: your sandbox is ready 17:29 rudybot: stamourv: ; Value: (0 0 1 0 1 2 0 1 2 3) 17:29 samth: rudybot: eval (apply + (list 1 2 3)) 17:29 rudybot: samth: ; Value: 6 17:29 rudybot: samth: ; stdout: "- : Integer [generalized from Positive-Index]\n" 17:29 stamourv: doomrobo: ^ 17:30 samth: rudybot: eval (apply + (list 1 2 3 4 5 6)) 17:30 rudybot: samth: ; Value: 21 17:30 rudybot: samth: ; stdout: "- : Integer [generalized from Positive-Integer]\n" 17:30 doomrobo: why can't you just do: 17:30 doomrobo: rudybot,: eval (+ 1 2 3 4 5 6) 17:30 rudybot: doomrobo: I know how to turn a list of numeric chars to an integer. And I know how to use eval 17:30 neilv: one situation in which "apply" is useful for when you have a procedure that takes a variable number of arguments, and you have those arguments in a list you constructed somehow 17:31 doomrobo: ok 17:31 doomrobo: I like that answer the best 17:31 doomrobo: neilv, so where does that put funcall? 17:31 neilv: is there a funcall in racket? 17:31 samth: doomrobo: you don't need funcall in racket 17:33 doomrobo: ok, I just read online that there's a LISP function in god knows what dialect called funcall which is essentially just adding another layer of wrapping 17:33 neilv: scheme descendants like racket less about funcall and more about boringcall 17:34 doomrobo: :-P 17:34 doomrobo: stamourv, what is range? 17:34 doomrobo: and where is it defined? 17:35 bremner: doomrobo: the keywords you are looking for are "lisp-1" and "lisp-2"; but you don't need to understand the difference to program in racket. 17:35 doomrobo: kk 17:37 neilv: i searched the racket 5.2.1 documentation for "pid", and got a spider 17:37 neilv: never seen an image in the search results before 17:40 stamourv: doomrobo: `range' counts up to its argument (non-inclusive). 17:40 stamourv: rudybot: doc range 17:40 rudybot: stamourv: http://docs.racket-lang.org/reference/pairs.html#(def._((lib._racket%2Flist..rkt)._range)) 17:40 stamourv: rudybot: (range 12) 17:40 rudybot: stamourv: ; Value: (0 1 2 3 4 5 6 7 8 9 10 11) 17:40 stamourv: It's pretty flexible. 17:40 stamourv: rudybot: (range 5 12) 17:40 rudybot: stamourv: ; Value: (5 6 7 8 9 10 11) 17:40 stamourv: rudybot: (range 12 -4 -2) 17:40 rudybot: stamourv: ; Value: (12 10 8 6 4 2 0 -2) 17:40 stamourv: rudybot: (range 12 4 -1/2) 17:40 rudybot: stamourv: ; Value: (12 23/2 11 21/2 10 19/2 9 17/2 8 15/2 7 13/2 6 11/2 5 9/2) 17:41 (join) nilyaK 17:41 doomrobo: ok 17:43 (quit) Nisstyre: Quit: Leaving 17:45 (join) jonrafkind 17:45 (quit) jonrafkind: Changing host 17:45 (join) jonrafkind 17:46 asumu: rudybot: (procedure-arity-includes? (procedure-reduce-keyword-arity (lambda (x [y 5] #:z z) x) 2 '(#:z) '(#:z)) 2 #t) 17:46 rudybot: asumu: your sandbox is ready 17:46 rudybot: asumu: ; Value: #f 17:46 asumu: eli: ^ is this a bug? 17:46 (quit) mceier: Quit: leaving 17:50 (join) getpwnam 17:51 (join) hash_table 17:51 (quit) neilv: Quit: Leaving 17:52 eli: asumu: Can't look at it now... 17:53 asumu: Okay, I'll submit it as a bug report. 17:59 (join) RacketCommitBot 17:59 RacketCommitBot: [racket] plt pushed 5 new commits to master: http://git.io/OxmWHA 17:59 RacketCommitBot: [racket/master] Adding better version info to DrDr help - Jay McCarthy 17:59 RacketCommitBot: [racket/master] Switching window manager to something more stable - Jay McCarthy 17:59 RacketCommitBot: [racket/master] metacity - Jay McCarthy 17:59 (part) RacketCommitBot 18:04 (quit) jeapostrophe: Ping timeout: 244 seconds 18:08 (join) RacketCommitBot 18:08 RacketCommitBot: [racket] plt pushed 5 new commits to master: http://git.io/qmFVDQ 18:08 RacketCommitBot: [racket/master] Minor refactorings. - Sam Tobin-Hochstadt 18:08 RacketCommitBot: [racket/master] Load environments dynamically in residual code. - Sam Tobin-Hochstadt 18:08 RacketCommitBot: [racket/master] Disable unused code. - Sam Tobin-Hochstadt 18:08 (part) RacketCommitBot 18:15 (join) jimmypk 18:38 (join) nilyaK1 18:41 (quit) nilyaK: Ping timeout: 255 seconds 18:48 (quit) masm: Quit: Leaving. 19:02 (part) DrDuck1 19:02 (join) mds`1 19:07 (quit) jacius: Remote host closed the connection 19:10 (join) jeapostrophe 19:15 (join) RacketCommitBot 19:15 RacketCommitBot: [racket] plt pushed 12 new commits to master: http://git.io/Wgeaag 19:15 RacketCommitBot: [racket/master] small fixes to Robby's marginal note on indy - Matthias Felleisen 19:15 RacketCommitBot: [racket/master] send world's name to universe properly, Closes PR 12857 - Matthias Felleisen 19:15 RacketCommitBot: [racket/master] added string-contains? at request from Ostermann - Matthias Felleisen 19:15 (part) RacketCommitBot 19:20 (join) RacketCommitBot 19:20 RacketCommitBot: [racket] plt pushed 2 new commits to master: https://github.com/plt/racket/compare/4aefb18cab2b...d34641590398 19:20 RacketCommitBot: [racket/master] Remove no-longer needed require for residual code. - Sam Tobin-Hochstadt 19:20 RacketCommitBot: [racket/master] Fix type of `dynamic-place`. - Sam Tobin-Hochstadt 19:20 (part) RacketCommitBot 19:21 (join) dnolen 19:30 (join) RacketCommitBot 19:30 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/d3nZbQ 19:30 RacketCommitBot: [racket/master] ffi/com: fixes for IUnknown and enumeration values - Matthew Flatt 19:30 RacketCommitBot: [racket/master] fix interaction of `procedure-arity-includes?' and other things - Matthew Flatt 19:30 (part) RacketCommitBot 19:31 (join) banseljaj 19:32 (quit) Shvillr: Ping timeout: 244 seconds 19:34 (quit) jonrafkind: Ping timeout: 244 seconds 19:35 (part) mds`1 19:36 (quit) tonyg: Ping timeout: 244 seconds 19:36 (join) tonyg 19:39 asumu: Wow, fast bug fixing by Matthew as always. :) 19:40 asumu: (good for me since I was blocking on this bug) 19:40 (join) Shvillr 19:46 (join) RacketCommitBot 19:46 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/0L5b5A 19:46 RacketCommitBot: [racket/master] add examples to read-language docs - Stephen Chang 19:46 (part) RacketCommitBot 19:47 (join) jonrafkind 19:47 (quit) jonrafkind: Changing host 19:47 (join) jonrafkind 19:55 (quit) jonrafkind: Ping timeout: 250 seconds 20:04 (nick) samth -> samth_away 20:06 (join) neilv 20:15 (quit) sizz: Remote host closed the connection 20:15 (join) sizz 20:35 (join) RacketCommitBot 20:35 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/kRm52w 20:35 RacketCommitBot: [racket/master] racket/generics: add contract combinator - Asumu Takikawa 20:35 (part) RacketCommitBot 21:02 asumu: mithos28: BTW, you were curious why class/c & object/c aren't chaperone contracts. The answer is that it's theoretically do-able, but there are some big API design questions there. 21:02 asumu: And so it's future work. 21:02 asumu: (and the implementation is possibly tricky) 21:15 (quit) nilyaK1: Ping timeout: 248 seconds 21:30 neilv: in scribble, what's a good way to do a filebox with verbatim with smaller ? 21:31 neilv: (filebox "myfile" (SOMETHING #:style 'smaller (verbatim "aaa\n" "bbb\n")))) 21:31 neilv: something like that? 21:43 (join) RacketCommitBot 21:43 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/B59Niw 21:43 RacketCommitBot: [racket/master] racket/generic: fix generated contract name - Asumu Takikawa 21:43 (part) RacketCommitBot 21:44 (quit) dsantiago: Ping timeout: 252 seconds 21:44 (quit) jesyspa: Quit: leaving 21:57 (join) Kaylin 21:58 neilv: new package: http://www.neilvandyke.org/racket-gdbdump/ 22:05 asumu: neilv: that looks pretty useful for hacking on Racket internals. 22:05 (quit) Kaylin: Quit: Leaving. 22:09 neilv: asumu: it's convenient when the programmer can't access the racket process themself, but a sys-admin (or watchdog) process can 22:09 neilv: at least that's the idea 22:18 (quit) jeapostrophe: Ping timeout: 245 seconds 22:24 (join) nilyaK 22:24 (join) dsantiago 22:34 (quit) doomrobo: Quit: Leaving 22:43 (join) mmalorni 22:46 (quit) mmalorni: Remote host closed the connection 22:48 mithos28: asumu: ok makes sense 22:53 (join) DrDuck1 22:54 (join) vu3rdd 22:54 (quit) vu3rdd: Changing host 22:54 (join) vu3rdd 22:55 asumu: mithos28: (Source is Stevie. In the future there might be a `chaperone-class` and `impersonate-class`.) 22:59 (join) mmalorni 22:59 (join) jacius 23:00 (nick) nilyaK -> Kaylin 23:01 neilv: is there no scribble "defthing*"? 23:05 asumu: neilv: what would you want defthing* to do? 23:05 (quit) mmalorni: Ping timeout: 260 seconds 23:06 neilv: like defproc* is to defproc 23:06 asumu: You could use `deftogether` along with `defthing` to do that, I think. 23:06 neilv: i basically want to group each of these subsubsub*sections into its own defthing* ... 23:06 neilv: http://www.neilvandyke.org/racket-charterm/#%28part._.Keydec%29 23:07 neilv: i'll try deftogether. thanks 23:09 mithos28: asumu: have you thought how your generics/c will work for dict/c given that dictionaries have some implementations that are not using the generics code? 23:09 (join) jonrafkind 23:09 (quit) jonrafkind: Changing host 23:09 (join) jonrafkind 23:11 asumu: mithos28: those should still work. Though I should probably actually try it. 23:12 asumu: (the generics library can hook into pre-existing properties) 23:13 mithos28: will (dict/c k v) on a hash be turned into (hash/c k v)? 23:13 asumu: Okay, that won't currently work. 23:14 asumu: What will probably happen is that `dict/c` exported from racket/dict will use the generated `dict/c` only on the struct instances. 23:14 asumu: And we could either have `dict/c` do some special casing on other types. 23:15 mithos28: Why couldn't it be (or/c (hash/c …) (vectorof …) (listof …) (base-dict/c …)) 23:15 asumu: Yeah, that would work. 23:15 asumu: Oh wait. 23:15 asumu: or/c doesn't allow more than one higher-order contract. 23:16 mithos28: yeah it does, as long as only one passes the first order check 23:16 (quit) neilv: Quit: Leaving 23:16 mithos28: which would be true here 23:16 asumu: Oh, you're right. 23:17 mithos28: the issue I see is that the first order check on immutable hashes and lists is different than the first order check you have implmented for generic/c contracts 23:18 mithos28: because those check that each value and key pass the first order check 23:18 (quit) dnolen: Ping timeout: 244 seconds 23:20 mithos28: also I think I have a program that will break with how you have it implemented now for immutable dicts. I'll put up a gist in a second 23:25 asumu: I checked, the contracts should work for generics defined the old way. At least, data/gvector works. 23:25 mithos28: its not real code (ie doesn't compile) but gives the idea of the issue 23:25 mithos28: https://gist.github.com/2993076 23:27 mithos28: only the methods are protected not the values, and so values accessed after a functional update are no longer protected 23:29 mithos28: and if you use a recursive contract on the result of dict-set, you prevent expanding the set of possible values i.e. It should be possible to take a immutable dictionary and add a new mapping that does not match the contract of the existing mappings 23:29 asumu: mithos28: oh, you're saying dict-set in this case returns a different instance of the dictionary? 23:29 mithos28: yes, it is not dict-set! 23:31 asumu: As long as it recursively applied `dict/c` to the range instead of `base-dict/` (defined by generics), it seems like it could work. 23:31 mithos28: then we get something that works differently than hash/c or listof 23:32 mithos28: because they only check the current values and not future values 23:33 mithos28: the primitive that is needed is a function of the signature (dict (key value -> (values (chap key) (chap value)) -> dict) 23:34 mithos28: where (chap key) is a chaperoned key and (chap value) is a chaperoned value 23:35 mithos28: this would need to be provided by each dictionary type as it cannot be made using the existing primitives, 23:42 asumu: Okay, I see what you mean. So basically generic dictionaries should provide a way to check the keys/values when the first-order check happens, not just when the operation is called. 23:42 asumu: At least, in order to be consistent with existing contracts for immutable things. 23:44 mithos28: not just the first order check, that the (dict/c k/c v/c) contract on immutable dictionaries is not a contract on the accessors/methods but a copy where the data of the dictionary has been projected according to the contracts 23:44 mithos28: for it to be consistent with existing immutable dictionaries 23:44 asumu: Yeah, I see. Hmm. 23:48 asumu: It is possible to check if generic dicts are immutable, that might be doable. Maybe immutable dicts should supply additional optional methods. 23:48 asumu: And dicts that don't might behave inconsistently. 23:49 mithos28: or couldn't be used with dict/c 23:50 asumu: Thanks for the feedback, I hadn't thought of all the issues with dict/c. 23:50 (join) mmalorni 23:50 mithos28: no problem. I had to wade through most of it to implement free-id-table/c 23:51 asumu: BTW: is your pull request complete or should I wait on immutable id-tables? 23:51 (quit) mmalorni: Client Quit 23:51 (join) jeapostrophe 23:51 (quit) jeapostrophe: Changing host 23:51 (join) jeapostrophe 23:52 mithos28: I thought I pushed immutable id-tables 23:53 mithos28: I didn't send a comment after that though 23:53 asumu: Oh, github put weird dates on things. 23:53 (join) mmalorni 23:53 mithos28: yeah I rebased on top of current master, so some commits are really old and it used that date 23:54 mithos28: so there is still no documenation and I dislike the complicated chaperone name 23:54 mithos28: I also need to figure out how to share the id generating code 23:55 asumu: Okay, are there any tests already for id-tables that covers this? 23:55 mithos28: there is stuff that makes sure I didn't horribly break anything, but nothing on the new behavior 23:55 asumu: (if you're still working on docs and such I'll wait to review and merge it) 23:56 mithos28: none of those steps have been started, but I think should be done before I ask it to be merged 23:56 asumu: Ok, great. 23:57 mithos28: Do you know where a good place to put the id generating code would be? It seems bad to export it from the private/id-table.rkt as there are users of that below the contract layer 23:58 mithos28: currently it is just duplicated in both files