00:04 (quit) hash_table: Ping timeout: 252 seconds 00:25 (quit) greghendershott: Quit: Leaving. 00:41 (join) ambrosebs 00:53 (join) dualbus 00:53 (quit) spiderweb: Quit: ERC Version 5.3 (IRC client for Emacs) 01:10 (join) lewis1711 01:23 (quit) mceier: Quit: leaving 01:31 (quit) jao: Ping timeout: 246 seconds 01:32 sw2wolf: so quiet here 01:36 lewis1711: WOULD IT HELP IF WE USED CAPS 01:36 lewis1711: http://www.ccs.neu.edu/home/matthias/Style/style/Choosing_the_Right_Construct.html I am reading this 01:36 rudybot: http://tinyurl.com/bwc5nsu 01:36 lewis1711: I don't know what half those things do 01:37 lewis1711: well, with-handlers and parameterize are new to me 01:45 (quit) Kaylin: Read error: Connection reset by peer 01:50 asumu: sw2wolf: it tends to be quiet during East Coast night-time. 01:50 (join) nilyaK 01:52 (quit) Demosthenex: Ping timeout: 260 seconds 01:53 (join) Demosthenex 02:00 neilv: it is the secret new racket stealth technology 02:08 lewis1711: I should have known 02:14 (quit) kvda: Quit: -___- 02:19 (quit) dsantiago: Quit: Computer has gone to sleep. 02:21 (part) sw2wolf: "ERC Version 5.3 (IRC client for Emacs)" 02:23 (quit) nilyaK: Ping timeout: 246 seconds 02:28 (join) dsantiago 02:29 (join) niels1 02:30 (quit) noam: Ping timeout: 256 seconds 02:31 (join) DT`` 02:31 neilv: when you've been coding in emacs for a few hours without compiling, loading the file into drracket and letting the online check-syntax do its thing is a fast way to chug through problems like variable name typos 02:32 (join) PseudoMander 02:32 PseudoMander: Hey guys! :D 02:34 (quit) DT`: Ping timeout: 246 seconds 02:35 (join) noam 02:39 PseudoMander: Can anyone feild a question I'm sure you all get once every 15 minutes. I've google everywhere. 02:40 (quit) mithos28: Quit: mithos28 02:40 (join) mceier 02:41 (join) mithos28 02:41 PseudoMander: All my #\newline 's will turn in to \n, 02:42 PseudoMander: as opposed to printing a newline, I'm on DrRacket windows 32bit. It doesn't work with a print function or without. 02:43 PseudoMander: Oh shit I feel dumb, sorry I just found the (newline) 02:43 neilv: have you looked at the documentation for "print", "write", and "newline"? 02:43 mithos28: yeah, #\newline is a synonym for #\n 02:43 neilv: and "printf" 02:43 mithos28: "\n" 02:46 PseudoMander: Thanks, printf or (newline) both did what I wanted! I'm coming over from common lisp, all the small things are getting me, Like where's my concatenate, I don't want string-append. Are there any favoured books on racket someone would care to mention?) 02:46 neilv: PseudoMander: "write" and "print" try to format output in computer-readable form, including the newline stuff you were seeing. "display" and almost everything else will do your newlines embedded in strings like you originally expected 02:46 neilv: PseudoMander: http://docs.racket-lang.org/getting-started/ 02:50 PseudoMander: thank you! 02:54 (join) hkBst 02:58 (quit) neilv: Quit: Leaving 02:59 (join) ewemoa 03:00 ewemoa: with 5.3.1, using DrRacket, debugging multiple files stopped working for me -- it appears that deleting the corresponding compiled directory is a work-around -- does anyone have any experience with this? 03:06 jonrafkind: lol asumu github is confused about times 03:06 jonrafkind: takikawa authored in 31 minutes 03:21 (join) Tro__ 03:25 (quit) PseudoMander: Ping timeout: 255 seconds 03:30 (join) RacketCommitBot 03:30 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/a6DIiQ 03:30 RacketCommitBot: racket/master 9554192 Eli Barzilay: New Racket version 5.3.1.8. 03:30 (part) RacketCommitBot 03:34 (join) Shvillr_ 03:34 (quit) Shviller: Disconnected by services 03:34 (nick) Shvillr_ -> Shviller 03:43 (quit) mithos28: Quit: mithos28 03:45 (join) mithos28 03:48 (quit) SamB_MacG5: Remote host closed the connection 03:49 (join) bjz 04:23 (quit) jonrafkind: Ping timeout: 268 seconds 04:24 (join) bbloom 04:25 (join) bitonic 04:35 ewemoa: http://oi50.tinypic.com/illx7o.jpg <- tooltips? separate row for those areas or for the buttons? 04:40 (quit) bjz: Quit: Leaving... 04:57 (join) bjz 05:02 (quit) ewemoa: Quit: Leaving. 05:04 (join) nathanpc 05:05 (join) neilv 05:06 (join) deu5 05:07 (quit) Shvillr: Read error: Connection reset by peer 05:07 (join) Shvillr 05:08 neilv: fancy disk scanning of 'media' files, with metadata extraction from 4 different types. http://paste.lisp.org/display/133823 05:08 (quit) yoklov: Quit: computer sleeping 05:09 neilv: so. rackout will be able to incrementally update its cache of playable media files and their metadata 05:15 asvil: is there Matthew Flatt? 05:22 neilv: i don't think i ever saw matthew flatt on irc 05:23 (join) mye 05:23 asvil: neilv: thx, so, only mailing list 05:24 neilv: yes, mailing list is the best way to reach him 05:37 (quit) cipher: Ping timeout: 260 seconds 05:43 (quit) neilv: Quit: Leaving 06:06 (quit) asvil: Remote host closed the connection 06:07 (join) asvil 06:08 (quit) noelw: Ping timeout: 265 seconds 06:11 (join) noelw 06:18 (join) masm 07:14 (quit) mceier: Quit: leaving 07:28 (quit) Nisstyre: Ping timeout: 265 seconds 07:31 (quit) deu5: Remote host closed the connection 07:40 (join) jeapostrophe 07:40 (quit) jeapostrophe: Changing host 07:40 (join) jeapostrophe 07:43 (join) Nisstyre 07:45 (quit) Tro__: Ping timeout: 268 seconds 07:46 (join) mceier 07:49 (join) masm1 07:51 (quit) masm: Ping timeout: 248 seconds 07:59 (join) greghendershott 08:08 (join) myx 08:21 (quit) myx: Ping timeout: 252 seconds 08:34 (join) myx 08:36 (join) Tro__ 08:45 (join) jao 08:45 (quit) jao: Changing host 08:45 (join) jao 09:07 (join) anRch 09:07 (part) ambrosebs 09:10 (quit) lewis1711: Quit: Leaving. 09:12 (join) soegaard 09:16 (join) RacketCommitBot 09:16 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/GpLqoA 09:16 RacketCommitBot: racket/master 31f7cfb Matthew Flatt: racket/gui gtk: fix `end-doc' for `printer-dc%'... 09:16 (part) RacketCommitBot 09:19 (quit) jeapostrophe: Ping timeout: 264 seconds 09:21 (join) hash_table 09:31 (quit) hash_table: Ping timeout: 264 seconds 09:43 (join) mizu_no_oto 09:43 (quit) mye: Quit: mye 09:49 (join) jeapostrophe 09:49 (quit) jeapostrophe: Changing host 09:49 (join) jeapostrophe 09:56 (join) carleastlund 10:03 (quit) niels1: Ping timeout: 252 seconds 10:12 (quit) anRch: Quit: anRch 10:33 (join) noelw_ 10:33 (quit) noelw: Ping timeout: 246 seconds 10:33 (nick) noelw_ -> noelw 10:38 (join) hash_table 10:39 (join) mye 10:52 (join) walter 10:58 (join) MayDaniel 10:58 (quit) mceier: Quit: leaving 11:17 (join) BeLucid_ 11:18 (quit) BeLucid: Ping timeout: 246 seconds 11:23 (join) spanner 11:23 (quit) spanner: Client Quit 11:23 (join) spanner 11:24 (quit) hkBst: Quit: Konversation terminated! 11:34 (join) RacketCommitBot 11:34 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/89UpMA 11:34 RacketCommitBot: racket/master e264e41 Joe Gibbs Politz: Add check-match to rackunit... 11:34 RacketCommitBot: racket/master dcf2b0f Asumu Takikawa: Add for-label require 11:34 (part) RacketCommitBot 11:43 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 11:49 (quit) jrslepak: Quit: What happened to Systems A through E? 12:00 (quit) bremner: Quit: Coyote finally caught me 12:02 (join) bremner 12:02 (quit) bremner: Changing host 12:02 (join) bremner 12:02 (quit) bremner: Client Quit 12:04 (join) bremner 12:04 (quit) bremner: Changing host 12:04 (join) bremner 12:07 (join) mceier 12:13 (join) RacketCommitBot 12:13 RacketCommitBot: [racket] plt pushed 3 new commits to master: http://git.io/A4K9dw 12:13 RacketCommitBot: racket/master 8a77d87 Matthew Flatt: add file/unzip... 12:13 RacketCommitBot: racket/master 376b1f3 Matthew Flatt: switch `raco pkg install' to use `file/unzip' 12:13 RacketCommitBot: racket/master df45635 Matthew Flatt: switch `raco pkg create' to `file/tar' and `file/zip' 12:13 (part) RacketCommitBot 12:15 (quit) dualbus: Quit: leaving 12:19 (quit) eli: Ping timeout: 245 seconds 12:20 (join) SamB 12:29 mithos28: How does racket's runtime deal with capturing continuations that include foreign code? 12:30 mithos28: I.e. I (foreign-fun (lambda () (call/cc (lambda (k) (set! saved-k k))))) 12:30 mithos28: where the foreign function does some work, calls the function does more work and returns 12:31 (join) jrslepak 12:32 (quit) bremner: Quit: Coyote finally caught me 12:34 (join) bremner 12:34 (quit) bremner: Changing host 12:34 (join) bremner 12:37 asvil: are there common lisp *features* in racket, I need to know what cpu arch is at runtime 12:37 asvil: ? 12:38 mithos28: asvil: What os are you running on? 12:39 asvil: nix 12:39 (quit) Tro__: Read error: Connection reset by peer 12:39 asvil: mithos28: ^ 12:39 mithos28: can you do a subprocess to a standard tool that does it 12:39 (join) Tro__ 12:40 mithos28: I don't think there is something currently in the standard library that does it 12:41 asvil: mithos, probably, (define command "ndisasm -b <> "), <> should be replaced with 32 or 64 12:41 mithos28: you can get what os you are running on, but that doesn't seem specific enough 12:41 mithos28: How will that get you the arch? 12:42 mithos28: Or do you mean 32 bit x86 vs 64 bit x86? 12:43 asvil: yes, 32 bit vs 64 bit 12:43 mithos28: you could see if 2^31+1 is a fixnum or not 12:44 mithos28: But cannot I run 32 bit processes on a 64 bit machine? 12:44 asvil: mithos28: oh simple way, big thanks:) 12:44 mithos28: What are you trying to do? 12:45 asvil: mithos28: fixnum way is good, because i have to know racket process bit 12:45 mithos28: are you trying to interact with foreign code? 12:46 asvil: mithos28: no, just calling foreign process to disassemble to readable text buffer of bytes 12:48 asvil: (fixnum? (expt 2 61)) => #t for x86_64 12:48 (quit) walter: Quit: This computer has gone to sleep 13:26 asumu: asvil: would this help? http://planet.racket-lang.org/display.ss?package=cpuinfo.plt&owner=neil 13:27 asumu: I guess that would only work on Linux systems. 13:30 asvil: asumu: nice lib, but I need to know info about racket process (32 bit or 64 bit). this library receives info from /proc/cpuid, therefore, info about the whole system, no current process. 13:31 stamourv: rudybot: (fixnum? (expt 2 32)) 13:31 rudybot: stamourv: your sandbox is ready 13:31 rudybot: stamourv: ; Value: #f 13:31 stamourv: asvil: ^ 13:31 stamourv: That's the best way I know. 13:32 asvil: stamourv yes, especially (fixnum? (expt 2 61)) 13:33 stamourv: (Actually, you may need to do that in `eval', or read one of the numbers from a string, or something, to avoid constant propagation.) 13:34 stamourv: Oh, sorry, missed the part where you did that. 13:34 (quit) shriphani_: Quit: shriphani_ 13:42 (join) mizu_no_oto 13:47 mye: is there a FFI tutorial for someone like me who hasn't touched stuff like this but has reasonable (I guess) C experience? 13:48 mye: I forked both libgit2 bindings and gonna start reading from there, but if another tutorial exists... 13:49 (join) jonrafkind 13:55 asumu: mye: there is sort of a tutorial in the FFI docs 13:56 (quit) dsantiago: Quit: Leaving... 13:56 asumu: If you'd like to see a very simple FFI example, stchang and I wrote one: https://github.com/stchang/snappy/blob/master/snappy.rkt 13:58 tewk: mye: I started and ffi for libgit2, you can take what I have https://gist.github.com/4120174 14:00 (join) untrusted 14:03 (join) dsantiago 14:05 mye: asumu: the snappy example looks good, the other code I read was very macro-ladden 14:05 (quit) dsantiago: Client Quit 14:06 (join) dsantiago 14:12 mye: tewk: thanks, is that the whole interface extracted from libgit2? I'm not sure if I should build up a couple of functions first and see how much I need for my application 14:13 (quit) untrusted: Remote host closed the connection 14:13 (quit) soegaard: Quit: soegaard 14:14 tewk: mye: yes it the api, but its over a year old. 14:14 (quit) Tro__: Ping timeout: 268 seconds 14:17 mye: heh, looks like a year ago three people started git bindings for some reason, but never needed them (well, I'm not sure I need them) 14:23 (quit) bremner: Quit: Coyote finally caught me 14:25 (join) bremner 14:25 (quit) bremner: Changing host 14:25 (join) bremner 14:27 (join) bremner` 14:27 (quit) bremner`: Changing host 14:27 (join) bremner` 14:28 (quit) bremner: Read error: Connection reset by peer 14:29 (quit) hash_table: Ping timeout: 244 seconds 14:30 (quit) asvil: Ping timeout: 268 seconds 14:40 tewk: samth_away: (dplaces-conclusion) 14:48 (quit) jeapostrophe: Read error: Connection reset by peer 14:53 (join) jeapostrophe 15:05 (quit) cdidd: Read error: Connection reset by peer 15:42 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 15:45 (quit) tewk: Ping timeout: 248 seconds 16:01 (quit) systemovich: Ping timeout: 255 seconds 16:10 (join) spiderweb 16:19 (join) wkelly 16:20 (nick) bremner` -> bremner 16:20 (join) systemovich 16:20 (quit) bjz: Quit: Leaving... 16:33 (join) anRch 16:36 (join) tewk 16:41 (quit) aezx: Quit: Leaving 16:42 (quit) myx: Remote host closed the connection 16:44 (join) myx 16:51 (join) masm 16:51 (quit) masm1: Ping timeout: 240 seconds 16:59 (join) soegaard 17:00 (quit) jrslepak: Quit: What happened to Systems A through E? 17:04 (quit) anRch: Read error: Connection reset by peer 17:05 (quit) masm: Ping timeout: 260 seconds 17:05 (join) anRch 17:05 (join) masm 17:08 (quit) jonrafkind: Ping timeout: 260 seconds 17:14 (quit) cky: *.net *.split 17:14 (quit) offby1: *.net *.split 17:14 (quit) wkelly: *.net *.split 17:14 (join) offby1 17:14 (join) wkelly 17:14 (join) cky 17:15 (quit) offby1: Changing host 17:15 (join) offby1 17:15 (quit) spiderweb: Quit: ERC Version 5.3 (IRC client for Emacs) 17:32 (quit) MayDaniel: Read error: Connection reset by peer 17:41 (join) jrslepak 17:42 (join) jonrafkind 17:42 (quit) jonrafkind: Changing host 17:42 (join) jonrafkind 17:45 (quit) jrslepak: Client Quit 17:45 (join) RacketCommitBot 17:45 RacketCommitBot: [racket] plt pushed 3 new commits to master: http://git.io/hab9MQ 17:45 RacketCommitBot: racket/master d994ba1 Vincent St-Amour: Fix types of variable arity functions to work with 0-argument return values.... 17:45 RacketCommitBot: racket/master e2007ab Vincent St-Amour: Heterogenous -> heterogenEous.... 17:45 RacketCommitBot: racket/master 95d51fc Vincent St-Amour: Add new versions of for/hash: and co that the typechecker can handle.... 17:45 (part) RacketCommitBot 17:49 (quit) jeapostrophe: Ping timeout: 260 seconds 17:50 (quit) anRch: Quit: anRch 17:51 (join) RacketCommitBot 17:51 RacketCommitBot: [racket] plt pushed 3 new commits to master: http://git.io/wrjNzA 17:51 RacketCommitBot: racket/master 7a190a4 Asumu Takikawa: Lazily init the cache for interface contracts.... 17:51 RacketCommitBot: racket/master b4dd3b5 Asumu Takikawa: Fail gracefully on TR struct arity errors... 17:51 RacketCommitBot: racket/master f3a95ba Asumu Takikawa: List provides explicitly in draw contracts 17:51 (part) RacketCommitBot 17:54 (join) bremner 17:54 (quit) bremner: Changing host 17:54 (join) bremner 17:56 (quit) bremner: Client Quit 17:59 (join) cipher 17:59 (join) tfb 18:07 (join) Blkt 18:10 (join) jrslepak 18:12 (join) neilv 18:18 (join) jeapostrophe 18:18 (quit) jeapostrophe: Changing host 18:18 (join) jeapostrophe 18:23 (quit) jeapostrophe: Ping timeout: 264 seconds 18:37 (join) bremner 18:37 (quit) bremner: Changing host 18:37 (join) bremner 18:48 mye: what could be the problem if ffi code works with _pointer as output type but not when I use define-cpointer-type: REPO->C: argument is not non-null `REPO' pointer 18:48 mye: argument: #f 18:48 asumu: mye: I think you want the /null version. 18:49 asumu: (unless you're already using that, in which case I don't know) 18:49 jonrafkind: asumu, are you using the x11 bindings? 18:49 asumu: jonrafkind: I was trying to hack on Laurent's window manager. 18:49 jonrafkind: ah 19:01 (quit) jonrafkind: Ping timeout: 246 seconds 19:04 mye: can someone implement a back button in drracket that resets the view after using "jump to definition", pretty please ;) 19:05 (join) dnolen 19:11 (join) bjz 19:13 asumu: mye: that's been brought up on the list before... I don't remember what the result of the discussion was. 19:13 asumu: It might've been "patches welcome" ;) 19:13 asumu: Did you figure out your FFI issue? 19:14 (join) walter|r 19:15 asumu: Also, interesting blog post: http://programming-puzzler.blogspot.com/2012/11/coin-change-kata-in-racket-and-clojure.html 19:15 rudybot: http://tinyurl.com/apm3u6d 19:15 asumu: Although when I timed them, the Racket version seemed way faster. 19:15 mye: asumu: yeah I figured out it binds the /null id as well after thinking I had to add /null in the define-cpointer form 19:15 asumu: But maybe I am timing Clojure wrong. 19:16 mye: lately, if I'm going to read all the stuff about racket I wouldn't be able to code (good signs about language popularity?!) 19:17 (quit) jrslepak: Quit: What happened to Systems A through E? 19:18 asumu: Yeah, that's a good sign. Though more is always better. :) 19:18 asumu: (okay there are obviously counterexamples to that statement) 19:18 mye: Robby said in my feature request to 'see how far the keybinding facility takes me'. To be hones I was happy to be able to assign shortcuts for prev/next in the repl (they conflict on osx with default ones) 19:19 mye: compared to e.g. python racket is probably still a dot on a dot 19:20 (join) jrslepak 19:25 (join) spiderweb 19:26 (quit) masm: Quit: Leaving. 19:29 (quit) Enoria: Ping timeout: 246 seconds 19:30 (quit) spiderweb: Remote host closed the connection 19:32 (quit) bremner: Quit: Coyote finally caught me 19:34 (join) bremner 19:34 (quit) bremner: Changing host 19:34 (join) bremner 19:37 (quit) mye: Quit: mye 19:37 (join) Tro__ 19:41 (quit) bitonic: Ping timeout: 252 seconds 19:42 (join) Kaylin 19:44 (join) spiderweb 19:55 (quit) spiderweb: Remote host closed the connection 20:05 (quit) tfb: Quit: sleeping 20:18 (join) shriphani_ 20:21 (join) PseudoMander 20:23 neilv: i need some small and legally-unencumbered jpeg files to use for regression testing. if anyone has a digital camera, and could set it to the lowest resolution and highest compression, and take one photo of something innocuous (no brands, nothing personally-identifiable, etc.), and email it to me... 20:31 (quit) jrslepak: Quit: What happened to Systems A through E? 20:33 (quit) Blkt: Remote host closed the connection 20:34 (quit) mceier: Quit: leaving 20:39 (quit) bjz: Quit: Leaving... 20:51 (join) sw2wolf 21:01 ozzloy: neilv, still want some pics? i took some with my phone. nexus 1, not sure what the resolution is, but i could crop them if they're too big. 21:03 neilv: ozzloy: please send one. it must be byte-for-byte verbatim as saved by the camera, not cropped nor otherwise edited. thanks 21:03 neilv: neil AT neilvandyke.org 21:03 ozzloy: ok 21:04 (quit) Shvillr: Ping timeout: 252 seconds 21:04 (join) ewemoa 21:05 neilv: ozzloy: oh yeah, and in your email, please say "this file is in the public domain" 21:05 ozzloy: oh ok 21:06 (join) Kaylin1 21:07 ozzloy: er... so i already sent an email with it. is it enough for me to send a reply with that text, or should i send it again with that text in the same email as the attachment? 21:07 ozzloy: legal mumbo jumbo something something? 21:08 ozzloy: anyways, if that is necessary, i can resend the whole thing as one email 21:08 (quit) Kaylin: Ping timeout: 255 seconds 21:08 neilv: separate email is fine. thanks 21:08 ozzloy: k 21:25 (quit) carleastlund: Quit: carleastlund 21:28 (join) jrslepak 21:40 (quit) cipher: Ping timeout: 255 seconds 21:45 (quit) myx: Ping timeout: 255 seconds 21:53 sw2wolf: Are there any general app. developed using racket. I want to learn racket by a real application 21:56 (join) bjz 21:56 (join) jeapostrophe 21:56 (quit) jeapostrophe: Changing host 21:56 (join) jeapostrophe 21:59 Shambles_: sw2wolf: I think most of Racket (e.g. the IDE, debugger, compiler...) is written in Racket. Bits are in C because they have to be to talk to the OS. 21:59 Shambles_: sw2wolf: For less brutal things to start on there's some simple games that come with Racket. 22:01 neilv: i think most people are best off starting to read the documentation and then starting to code 22:01 (quit) nathanpc: Quit: Computer has gone to sleep. 22:01 neilv: but if someone wants to read through existing code, there's the "collects" directory, and there's PLaneT 22:01 bremner: there are several nice books teaching/using racket 22:02 Shambles_: He was asking for "real applications". 22:03 neilv: drracket is a big application written in racket, but the code is very complicated 22:03 Shambles_ nods. 22:03 bremner: Shambles_: sure. But mostly the code for real applications is not nice for learning a language. 22:03 neilv: planet has chunks of the rackout application 22:05 neilv: here's one chunk of code that is not too simple but not too complicated either. http://planet.racket-lang.org/package-source/neil/vlc.plt/1/4/vlc.rkt 22:06 (quit) dnolen: Quit: ERC Version 5.3 (IRC client for Emacs) 22:07 Shambles_: bremner: I didn't say that's the way they should learn Racket. That's how they said they wanted to learn Racket. So I pointed them to some examples. Besides, nobody bothered to answer until I did. :P 22:08 (join) ambrosebs 22:08 Shambles_: The most real-application-ie things I can think of that aren't going to be painful as learning exercises are the games, and I mentioned them. 22:12 neilv: starting to learn a language by reading code someone had written in it was a popular tradition 22:13 neilv: that was mostly before tutorials and textbooks existed 22:13 neilv: i suppose there's still a place for it 22:14 Shambles_: neilv: I really liked the old "write games and graphics/sound demos in it, to learn it" way that 80's books and magazines promoted. Works better IMO. Nobody wants to start out with something that prints text and does basic math. They want stuff that's fun to actually run. 22:14 Shambles_: neilv: The textbook/academic way leaves you rewriting some godforsaken mortgage program for a entire semester, killing all interest in programming. 22:15 Shambles_: neilv: The "here's some game code, screw with it" way is a lot less structured, but starts you with something interesting, and you can learn like all the little critters in nature do, by playing with it. 22:15 neilv: the racket tutorial that has you make a web app is not bad 22:16 neilv: Shambles_: yes, sorta related to constructionist learning 22:17 Shambles_: neilv: Yeah. I'm probably too old to have a big jonsing for web apps, but it does show how to do realistic stuff. It builds some faith that the language can do something interesting, and it doesn't necessarily take 10,000 man-years to achieve, both of which the textbook/academic way has problems with. 22:19 neilv: the racket people tend to understand that, btw. there's that web app introduction, and the pictures one 22:19 neilv: (the pictures one actually makes me nervous: i'm afraid people looking to do serious work will see that and think this is a toy or an academic curiosity. but the web app balances it out) 22:20 Shambles_: I got that impression. Hopefully there will be more books in the vein of Realm of Racket for Racket. There's already several for Python and Java, and one for Common Lisp (Land of Lisp). This is after a like, 20 year drought, in the "here's some game code, screw with it" teaching method. 22:20 neilv: there's also people who say they want to look at the code for an existing app, to learn the language, and then it turns out they have a task to make an app, and they think they'll be faster if they take an existing app and just modify it to do what they want 22:21 neilv: nowadays, you get some of the less reputable offshoring places doing that 22:22 Shambles_: neilv: Not all bad. This is, after all, the intent in open source. It's not (unless BSD licensed >_>) intended that you make /commercial/ software that way, but making more open source stuff that way is intended. 22:23 neilv: Free Software wants you to be able to do that, yes 22:23 neilv: it's actually poor software engineering and not great for the ecology if that's how people actually make apps :) 22:25 sw2wolf: sorry, i just be back 22:25 Shambles_: Dunno if I agree. If the code you start with is relatively sanely factored, it saves you some work, and some debugging (the debugging part possibly being the biggest benefit). As for the other situation, believe me, people are perfectly capable of writing awful code from scratch. 22:26 sw2wolf: thanks for all your suggestions. In fact i learn CommonLisp by using and hacking stumwm 22:26 sw2wolf: starting to learn a language by reading code someone had written in it 22:26 sw2wolf: was a popular tradition. I absolutely agree 22:27 Shambles_: sw2wolf: If you already know Common Lisp, most of learning Racket will probably be getting used to how it does macros (which isn't the same), and learning the standard library. 22:27 greghendershott: I've learned a lot by browsing code for Planet packages, http://planet.racket-lang.org/ 22:28 sw2wolf: yes, the racket macro is different from CL 22:28 greghendershott: Many of the packages are a reasonable chunk of functionality to wrap your brain around. 22:28 sw2wolf: I will start from planet 22:29 neilv: idiomatic racket is also a bit different than cl 22:31 sw2wolf: I feel scheme is simple than CL, but racket seems complicate ... 22:31 sw2wolf: compared with chicken and guile 22:32 greghendershott: I think it's worth learning Racket macros, whenever you're ready to focus on that topic. But if you need to bang out a simple macro in a way that's familiar to you, there is a defmacro. 22:33 sw2wolf: i will try my best to understand it , thanks 22:34 offby1: I think define-syntax is a perfectly simple way to make a simple macro. 22:35 (quit) DraX: Quit: Caught sigterm, terminating... 22:35 Shambles_: I'm rather attached to the idea of remembering where macro-generated code came from, and blaming the responsible macro, but perhaps I just have a unnatural aversion to template-barf. :P 22:35 greghendershott: offby1: I agree. Maybe forget defmacro even exists. :) 22:37 offby1: or, a natural aversion, if you've ever actually experienced it 22:45 (join) jackhammer2022 22:49 asumu: sw2wolf: I don't think it's fundamentally any more complicated than Chicken or Guile. It probably provides more features, but most are optional. 22:52 greghendershott: sw2wolf: I agree with asumu. A subset of Racket is traditional Scheme, and is that simple if you start there. But it's surrounded by more "batteries", and things like `for' iterations, pattern-matching, and so on. 22:54 greghendershott: Hey I have a really basic macro question. I'm embarrassed because I feel like I ought to understand, but I seem to be stuck. 22:54 greghendershott: I don't know if it's to do with phase levels, or something simpler. 22:55 greghendershott: 14 lines of code: https://gist.github.com/4122907 22:55 greghendershott: oh crud I pasted the wrong thing. one second. 22:57 greghendershott: Gah. Never mind. I distilled it down to something which doesn't exhibit the problem after all (once I fixed a typo). 22:57 greghendershott: Emily Litella that one. Sorry. 22:57 (join) jonrafkind 22:58 offby1 turns off the television due to all the violins 23:00 neilv: and sax 23:01 offby1: Lotta that these days. 23:01 offby1: Damned kids. 23:15 greghendershott: Cough. Let me try this again. Distilled version not as simple, but: https://gist.github.com/4122971 23:17 (quit) ambrosebs: Ping timeout: 246 seconds 23:18 jonrafkind: hm, whats 'expr' again? 23:18 greghendershott: Distilled may seem pointless. The point is after line 18 there would be code to sort the argspecs (keyword args or not, optional or not). After doing that, want to append* that back down to a "flater" declaration again. 23:19 jonrafkind: oh anything but a keyword 23:19 greghendershott: jonrafkind: IIRC it is "not a keyword". 23:19 jonrafkind: syntax-parse (datum->syntax stx (append* (syntax->datum #'(arg ...)))) 23:20 jonrafkind: any time you call datum->syntax there is a non-zero chance you will screw up the lexical context 23:20 jonrafkind: this is the most likely place for the error to occur 23:20 greghendershott: Yep, I intuited that. But I'm frakked if I know what to do about it. 23:21 jonrafkind: i think you need to recreate all the syntax objects in #'(arg ...) with their original context 23:21 greghendershott: The key would be the stx arg to datum->syntax? 23:21 jonrafkind: because you are only recreating the outer most syntax object with stx's lexical context 23:23 jonrafkind: why are you doing append* on the args anyway? 23:24 greghendershott: Because #'(arg …) looks like e.g. ((x) (#:kw kw) ((#:kw [kw 0]))) 23:25 greghendershott: I need to append* away the outer list to splice them in. 23:25 jonrafkind: hm well you could do (with-syntax ([((inner-arg ...) ...) (syntax->list #'(arg ...))] 23:25 jonrafkind: then #'(lambda (inner-arg ... ...) blah...) 23:26 greghendershott: Hmm, OK. 23:27 asumu: Weird, the macro stepper shows the `x` in the body ending up as (#%top . x) 23:27 asumu: i.e., it's trying to refer to an `x` in the outer scope 23:28 greghendershott: asumu: How are you seeing that in the macro stepper? 23:28 asumu: With macro hiding disabled. 23:29 jonrafkind: hm what does datum->syntax do for a nested s-expression 23:29 jonrafkind: does it apply the lexical context recursively? 23:30 greghendershott: asumu: OK, thanks. 23:30 greghendershott: *scrolling, scrolling, scrolling* 23:30 greghendershott: got it 23:32 greghendershott: OK, is one take-away lesson here that I should try to work it via patterns as much as possible, as in jonrafkind suggestion, before resorting to manual datum<->syntax ? 23:32 jonrafkind: ya 23:32 greghendershott: I was starting to appreciate that if only for the sake of convenience 23:32 jonrafkind: i try to avoid datum->syntax 23:33 greghendershott: But what I'm also learning is re lexical scope Do the Right Thing 23:33 jonrafkind: its easy to screw it up and hard to fix without ryan around 23:33 greghendershott: l0l 23:34 greghendershott: I think that's something I didn't really pick up on yet from the Racket docs. There are some examples using datum->syntax, and I got this naive idea that "so long as supply the original stx instead of say #f, all will be well". 23:34 greghendershott: But, not so much. 23:36 jonrafkind: well does the inner-arg ... .. thing work? 23:38 greghendershott: Sorry, a little slow here. 23:38 greghendershott: Yes it works! 23:38 greghendershott: Thanks! 23:38 (quit) Demosthenex: Ping timeout: 240 seconds 23:39 greghendershott: Expected result, but was also double-checking in macro stepper. Looks OK there, too. 23:41 (join) Demosthenex 23:44 asumu: I'm still puzzled why it didn't work though. Ah, lexical context. It's magic... 23:44 jonrafkind: when it works its great, when it doesn't work its a nightmare 23:44 asumu thinks the docs could be clearer on this... though warning that this knowledge should only be used for good ;) 23:47 (quit) Demosthenex: Ping timeout: 260 seconds 23:48 greghendershott: Hmm only problem is my non-distilled example needed to sort the argspecs. Which means a trip through datum->syntax after all. Sigh. 23:49 jonrafkind: well now you know what will break when it breaks 23:49 (join) Demosthenex 23:50 greghendershott: I wish ignorance were bliss? 23:50 asumu: Oh okay, I see why #%top is introduced. The expander adds it in if it can't find a local binding. 23:52 (join) cdidd 23:52 jonrafkind: ya 23:56 neilv: there was a language called bliss 23:56 greghendershott: was it ignored? 23:57 asumu: From what I heard, it was competing with C and had a good design. 23:58 neilv: bbl 23:58 (quit) neilv: Quit: Leaving 23:58 greghendershott: jonrafkind and asumu: Yeah I can't see any way around it, I have to run these puppies through datum->syntax due to sorting them. I've been going in circles off and on for a few days with this. 23:58 greghendershott: Would the best way to ask Ryan for help be via the mail list? 23:59 jonrafkind: yea