00:03 (quit) pcavs: Quit: Leaving. 00:03 (quit) emma: Ping timeout: 256 seconds 00:10 yoklov: nobody has any idea on how to make https://gist.github.com/3816039 any faster, do they? 00:11 (join) user-- 00:11 mithos28: what part is the slow part? 00:12 user--: what does mz:datum->syntax-object: unbound identifier in module mean? I am using a (require (prefix-in mz: mzscheme)) 00:12 yoklov: hm, no part in particular : 00:12 yoklov: :/ 00:13 mithos28: user--: that the identifier is unbound. That is that there is no such identifier 00:13 mithos28: I think you want mz:datum->syntax 00:13 yoklov: perspectiveproj (inner function in project) has the highest MSec count according to the profiler 00:13 user--: I thought I wanted (datum->syntax-object ctxt v srcloc [prop cert]) → syntax? 00:13 yoklov: but also close to the most calls. 00:14 asumu: user--: datum->syntax-object is the old name. 00:14 user--: oooh! 00:14 asumu: user--: if you're using #lang mzscheme, you should use #lang racket. 00:14 user--: I am not. 00:14 asumu: Oh okay, then yeah just use the new name. :) 00:14 user--: but I am trying to use some old code that maybe was mzscheme 00:14 user--: but weird then that in the repl it works fine? 00:15 asumu: At the REPL, unbound identifiers do not signal errors immediately. 00:15 offby1: At the REPL, nobody knows you're a dog 00:15 asumu: rudybot: (define (foo) (i-am-unbound)) 00:15 rudybot: asumu: your sandbox is ready 00:15 rudybot: asumu: Done. 00:15 asumu: rudybot: (foo) 00:15 rudybot: asumu: error: reference to an identifier before its definition: i-am-unbound in module: 'program 00:15 asumu: ^ see 00:15 user--: yes 00:15 user--: ok I substituted but get this error 00:16 user--: mz:datum->syntax: unbound identifier in module (in phase 1, transformer environment) in: mz:datum->syntax 00:16 user--: perhaps I don't understand this in phase 1, ... piece 00:17 asumu: Oh, err, I think you just want to use datum->syntax without the mz: bit. The problem is that you've required mzscheme at phase 0. 00:17 asumu: And you're probably trying to use it in a macro body. 00:17 (join) emma 00:17 asumu: (datum->syntax will be automatically required at phase 1 from racket if you use #lang racket) 00:18 user--: hmm 00:18 user--: k 00:18 user--: ?: literal data is not allowed; 00:18 user--: no #%datum syntax transformer is bound in: # 00:20 (quit) jackhammer2022: Quit: Textual IRC Client: http://www.textualapp.com/ 00:20 user--: this is above my head heh. writing parser feels so hard 00:21 (quit) user--: Quit: ERC Version 5.3 (IRC client for Emacs) 00:26 yoklov: actually, it seems like the timer was just slower than advertized, but my code speeds up when i crank up the timer rate. 00:27 (quit) bro_grammer: Ping timeout: 246 seconds 00:27 (quit) random_malice: Ping timeout: 246 seconds 00:29 (join) RacketCommitBot 00:29 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/f4xNSQ 00:29 RacketCommitBot: [racket/master] added some pretty-print using term formatters and fixed the - Robby Findler 00:29 (part) RacketCommitBot 00:40 (quit) dnolen: Remote host closed the connection 00:42 (join) jeapostrophe 00:42 (quit) jeapostrophe: Changing host 00:42 (join) jeapostrophe 00:46 yoklov: well, that was fun. time to ruin my good mood by trying to rewrite it in c++. 00:52 (join) neilv 00:54 (join) raphie 00:54 raphie: is there a built-in "find and replace in a list" higher-order function or should I roll my own? 00:55 raphie: as in, foo: equality-tester proc-to-replace-element-with list -> list 00:56 mithos28: Are you using head or 5.3? 00:56 raphie: 5.3 00:56 raphie: is head a nightly build? 00:57 mithos28: HEAD is always the latest build 00:57 raphie: oh, is there such a function in that build? 00:57 mithos28: there is list-update which takes an index not an equality procedure 00:57 raphie: oh, huh 00:58 raphie: I generally stick to stable versions though 00:58 raphie: and this would be trivial to write, just wondering though 00:58 raphie: didn't find it in the docs 00:58 mithos28: I would write it yourself 00:58 offby1: sounds like just "map" 00:58 offby1: (map (lambda (elt) (if (something elt) (xform elt) elt)) seq) 00:58 mithos28: map would do it to all elements that match the equality procedure 01:02 (quit) mceier: Quit: leaving 01:07 (quit) adu: Quit: adu 01:15 (quit) jeapostrophe: Ping timeout: 256 seconds 01:17 (quit) yoklov: Quit: computer sleeping 01:18 (quit) mithos28: Quit: mithos28 01:26 (join) crundar 01:28 (quit) crundar__: Ping timeout: 260 seconds 02:07 (join) jesyspa 02:26 (join) djcoin 02:27 (join) tfb 02:27 (join) mithos28 02:29 (quit) antono: *.net *.split 02:43 (join) mceier 03:04 (quit) micaeked: Quit: WeeChat 0.3.8 03:13 (join) micaeked 03:46 (quit) jonrafkind: Ping timeout: 246 seconds 03:47 (quit) raphie: Remote host closed the connection 04:12 (quit) mithos28: Quit: mithos28 04:40 (quit) neilv: Ping timeout: 260 seconds 04:42 (join) antono 05:00 (join) masm 05:15 (join) gciolli 05:20 (join) bitonic 05:33 (join) vkz 06:00 (quit) bitonic: Ping timeout: 256 seconds 06:11 (quit) vkz: Quit: vkz 06:19 (quit) bjz: Quit: Leaving... 06:42 (join) vkz 06:53 (join) tuor 07:01 (join) bjz 07:08 (quit) gciolli: Quit: Leaving. 07:09 (join) bitonic 07:22 (quit) jesyspa: Ping timeout: 244 seconds 07:22 (join) jesyspa 08:34 (quit) tuor: Quit: tuor 08:58 (join) getpwnam 08:59 (join) hash_table 09:01 (join) pcavs 09:10 (quit) pcavs: Quit: Leaving. 09:18 (quit) crundar: Ping timeout: 246 seconds 09:22 (quit) bjz: Quit: Bye! 09:24 (join) jeapostrophe 09:24 (quit) jeapostrophe: Changing host 09:24 (join) jeapostrophe 09:34 (join) crundar 09:34 (quit) getpwnam: Ping timeout: 252 seconds 09:34 (quit) hash_table: Ping timeout: 244 seconds 09:36 (quit) jrslepak: Read error: No route to host 09:46 (join) pcavs 09:52 (join) mrcarrot` 09:53 (quit) mrcarrot: Ping timeout: 240 seconds 09:54 (quit) vkz: Quit: vkz 09:57 (nick) mrcarrot` -> mrcarrot 09:57 (join) mrcarrot 09:59 (join) mye 09:59 (quit) crundar: Read error: Connection reset by peer 10:00 (join) crundar 10:12 (join) vkz 10:21 (join) dyoo 10:23 (join) mye_ 10:25 (quit) mye: Ping timeout: 246 seconds 10:25 (nick) mye_ -> mye 10:32 (join) gciolli 10:32 (quit) dyoo: Quit: dyoo 10:36 (join) getpwnam 10:37 (join) hash_table 10:41 (quit) mceier: Quit: leaving 10:58 (quit) vkz: Ping timeout: 246 seconds 10:58 (join) vkz 10:59 (quit) crundar: Ping timeout: 248 seconds 11:03 (join) nilyaK 11:04 (join) MayDaniel 11:10 (quit) DGASAU: Read error: Operation timed out 11:12 (join) crundar 11:14 (join) neilv 11:14 (quit) neilv: Changing host 11:14 (join) neilv 11:16 (join) jrslepak 11:18 (join) mye 11:23 (join) jonrafkind 11:24 (join) dyoo 11:26 (join) gbluma 11:28 SamB_MacG5 thinks that scribble ought to have a way to check paren-matching in prose ... 11:32 (join) bjz 11:34 (join) RacketCommitBot 11:34 RacketCommitBot: [racket] plt pushed 4 new commits to master: http://git.io/-0o0NQ 11:34 RacketCommitBot: [racket/master] Fix loop detection heuristic based on self-out-of-fuel. - Vincent St-Amour 11:34 RacketCommitBot: [racket/master] Remove out of date comment. - Vincent St-Amour 11:34 RacketCommitBot: [racket/master] Fix Optimization Coach's handling of paths with spaces. - Vincent St-Amour 11:34 (part) RacketCommitBot 11:34 stamourv: SamB_MacG5: I use paredit for that. 11:36 SamB_MacG5: Does that restrict parentheticals to a single paragraph? 11:36 SamB_MacG5: (Of course, it gets tricky when you have text that talks *about* paren characters...) 11:36 (join) bitonic` 11:37 (join) anRch 11:37 stamourv: Multiple paragraphs work. 11:38 SamB_MacG5: Restricting parentheticals to a single paragraph was supposed to be a feature 11:40 SamB_MacG5: it's darn confusing to not have the parentheses in a single paragraph match up 11:40 stamourv: Well, paredit's main use case is keeping parens balanced in code. It's not really meant for prose, but it still works. 11:40 jonrafkind: anyone seen an error like this 'use does not match pattern' from a macro? 11:40 SamB_MacG5: anyway, it would only really work if everyone *used* it... 11:40 stamourv: jonrafkind: Do you have an example? 11:41 jonrafkind: well its in honu.. so it might not be super illuminating 11:41 bremner: jonrafkind: umm. yeah. But I don't remember details. 11:41 jonrafkind: i think its a new racket macro error though 11:41 jonrafkind: when the use of a macro doesnt match.. well let me see if i can make a racket macro 11:41 SamB_MacG5: it sounds pretty self explanatory to me; it would be better if it gave actual details though ... 11:41 jonrafkind: (define-syntax-rule (foo a b) a) 11:41 jonrafkind: -> (foo 1) 11:41 jonrafkind: ; readline-input:2:0: foo: use does not match pattern: (foo a b) 11:41 jonrafkind: yea ok so instead of 'bad syntax' we get this now 11:41 jonrafkind: or maybe its just due to define-syntax-rule.. 11:42 bremner: it's not _that_ new; I remember it a year ago 11:42 jonrafkind: actually I think I was the one that wrote that error message lol 11:42 bremner: heh 11:42 SamB_MacG5: and I'm really a newbie... 11:43 jonrafkind: hm i need to use syntax/loc more often 11:43 SamB_MacG5: what does it do if there is more than one pattern? 11:44 jonrafkind: i dont think define-syntax-rule can have more than one pattern 11:44 SamB_MacG5: oh 11:44 stamourv: It can't. 11:45 (join) pnpuff 11:45 (quit) pnpuff: Changing host 11:45 (join) pnpuff 11:45 SamB_MacG5: I guess I was assuming you could do it more than once ;-) 11:46 SamB_MacG5: so, if I have a change I want to contribute, should I make a pull request or ... ? 11:47 jonrafkind: yea 11:48 SamB_MacG5: https://github.com/plt/racket/pull/148 11:49 SamB_MacG5: I still don't really understand how racketgrammar* works, though :-( 11:49 (join) Gertm 11:49 Gertm: Is the documentation (docs.racketlang.org) available as a pdf? Or can I build that myself? 11:50 SamB_MacG5: Gertm: don't know if you can make a single PDF 11:50 Gertm: A couple of pdfs works too. 11:50 SamB_MacG5: (Well, I guess you could always concatenate individuals PDFs) 11:50 Gertm: Just something I can carry on my tablet and read even when not connected to a network. 11:51 jonrafkind: you can download as pdf 11:51 (join) mithos28 11:51 Gertm: jonrafkind: Where can I find this? 11:51 jonrafkind: http://racket-lang.org/learning.html actually i guess its just the guide, quick and more 11:51 jonrafkind: but im sure the rest of the docs can be converted to pdfs as well 11:51 SamB_MacG5: shouldn't be hard to build PDFs ... 11:52 Gertm: Well this is all scribble, right? 11:52 Gertm: I have the source, so I could build these myself I guess. 11:53 asumu: The reference is available in PDF. 11:53 asumu: http://racket-lang.org/tr/ 11:53 SamB_MacG5 looks at raco's help 11:53 asumu: Contains Reference, DrRacket ref, and GUI ref. 11:56 dyoo: Gertm: also take a look at: http://pre.racket-lang.org/docs/ 11:56 Gertm: So much reading material! Thanks guys! 11:56 dyoo: the docs should be there in pdf 11:58 SamB_MacG5: how ARE they built, though? 11:58 Gertm: dyoo: awesome, these are going directly to my tablet :) 11:58 SamB_MacG5: I mean, what do you have to do to build them all? 11:59 dyoo: the build process fires up the "Scribble" documentation system for all the collections (libraries) in Racket. 12:00 dyoo: low level detail: ou can see where's it's being done right around here: https://github.com/plt/racket/blob/master/collects/setup/scribble.rkt 12:01 SamB_MacG5: I mean ... is there not a "make" and/or "raco" incantation will build the PDFs? 12:01 SamB_MacG5: +that 12:01 asumu: scribble --pdf 12:01 asumu: Oh, for the docs? 12:01 SamB_MacG5: yeah 12:02 asumu has no idea about that 12:02 dyoo: I think calling 'raco setup' should do it, though it does more than just documentation generation 12:02 SamB_MacG5: in retrospect, I would have expected "raco setup" to have a way to enable it 12:03 SamB_MacG5: but the closest I see is "--doc-pdf " -- does that enable as well as specifying the output directory? 12:04 SamB_MacG5: (And how come it's not in the docs?) 12:05 (quit) bjz: Quit: Leaving... 12:06 dyoo: sorry, unsure about this 12:06 (quit) bitonic`: Ping timeout: 260 seconds 12:09 dyoo: I believe so; according to https://github.com/plt/racket/blob/master/collects/setup/setup-unit.rkt, the doc-pdf-dest-step should activate when "--doc-pdf" is called 12:13 (join) bitonic` 12:15 (quit) nilyaK: Ping timeout: 256 seconds 12:23 jonrafkind: whats the best/easiest way to pull out all the keywords from an s-expression from a macro 12:24 jonrafkind: like (foo 'hello #:a 2 'ok) 12:24 SamB_MacG5: yes, that does seem to work ... 12:24 mithos28: Syntax parse? (~seq (~or e:expr k:keyword) …) 12:25 jonrafkind: so keyword matches the #:a but not the 2 right 12:25 jonrafkind: so i should do k:keyword e ? 12:25 mithos28: what do you mean by pull out all the keywords? 12:26 jonrafkind: I want to pass the #:a 2 part to another function 12:26 mithos28: oh. are all the keywords, keyword argument pairs? 12:26 jonrafkind: so I need to extract it and expand to (bar keywords ... (+ 1 2)) 12:26 jonrafkind: yea 12:27 mithos28: (~seq (~or e:expr (~seq k:keyword ke:expr)) …) 12:27 jonrafkind: expr isn't a real thing right 12:27 jonrafkind: just e probably 12:27 mithos28: it is, but not necessary 12:27 mithos28: it is the default 12:27 mithos28: unless you change it 12:28 mithos28: actually you need it 12:28 mithos28: it doesn't match keywords 12:28 jonrafkind: aha 12:28 mithos28: http://docs.racket-lang.org/syntax/Library_Syntax_Classes_and_Literal_Sets.html?q=syntax-parse 12:28 rudybot: http://tinyurl.com/99no4bl 12:28 jonrafkind: ah i see 'expr' is by itself above the other classes 12:28 jonrafkind: that is very visually strange 12:29 (quit) vkz: Quit: vkz 12:29 jonrafkind: i dont see a reason for that.. might as well put expr in the same box as id and boolean 12:29 mithos28: it is seperate from that group just like id and nat 12:29 mithos28: id and boolean aren't in the same box 12:29 jonrafkind: oh oops you're right 12:29 jonrafkind: i meant id as in identifier 12:30 mithos28: ah, but the real id is below it in a different box 12:30 jonrafkind: my eye immediately drifts to the large box and I think 'this is the list of all expression classes' 12:33 SamB_MacG5: grr, I accidentally clicked on "macro stepper" in a big file ... 12:33 mithos28: Just use ctrl-R 12:33 mithos28: I am assuming you meant to click the run button 12:34 SamB_MacG5: didn't mean to click any button :-( 12:34 SamB_MacG5: anyway, the problem was it beach-balled the whole process 12:35 mithos28: can you not kill/break it 12:35 SamB_MacG5: I did, but it's still frustrating 12:35 (nick) emma -> em 12:35 mithos28: if not that should be a bug 12:35 SamB_MacG5: oh, did you mean from within? 12:35 mithos28: yeah 12:35 SamB_MacG5: possibly it would have worked eventually ... 12:37 mithos28: Did you try? It should have been nearly instant unless you were stuck in syscalls 12:37 SamB_MacG5: I clicked the "stop" button and it was still beachballed 12:38 mithos28: ok, if you can replicate that sounds like a bug 12:39 mithos28: actually maybe not, because the stop button would be for the run not the macro stepper 12:39 mithos28: The bug is probably that it beachballed and didn't give you an obvious way to kill it 12:43 SamB_MacG5: hmm ... how come I don't have anything about it in ~/Library/Log/CrashReporter ? 12:45 SamB_MacG5: anyway, there was a button in the Macro Stepper dialog, it just didn't *do* anything that I could see ... 12:45 SamB_MacG5: I'm not even sure what was being waited for ... 12:46 (join) jjjj2_ 12:46 SamB_MacG5: I suppose next time I should kill it with a signal that gets me a crash report? 12:47 (join) vkz 12:47 (quit) dyoo: Quit: dyoo 12:47 (quit) jjjj2_: Read error: Connection reset by peer 12:47 (join) jjjj2_ 12:48 (quit) jjjj2_: Remote host closed the connection 12:48 (quit) jonrafkind: Ping timeout: 246 seconds 12:48 (quit) samth: Ping timeout: 246 seconds 12:48 (join) samth 12:48 (quit) mithos28: Quit: mithos28 12:48 (quit) samth: Changing host 12:48 (join) samth 12:48 (join) dyoo 12:49 (join) Blkt 12:49 (quit) neilv: Ping timeout: 246 seconds 12:50 (quit) crundar: Ping timeout: 246 seconds 12:52 (quit) dyoo: Client Quit 12:52 SamB_MacG5: hmm, it looks like I get a wristwatch when DrRacket *expects* me to be waiting ... 12:53 (join) dyoo 12:54 (join) jonrafkind 12:54 (quit) jonrafkind: Changing host 12:54 (join) jonrafkind 12:57 (quit) anRch: Quit: anRch 12:57 (quit) djcoin: Quit: WeeChat 0.3.7 12:59 Blkt: good evening everyone 12:59 (join) crundar 13:00 SamB_MacG5: So it seems that the "spinning wait cursor" is displayed by WindowServer when a process falls behind on it's event queue. (Which I had been guessing anyway based on when it appers.) 13:02 SamB_MacG5: (Mind you, it seems that it can also be specifically requested by an app: TenFourFox sometimes shows it immediately after I click on something, rather then after the usual ~2s event backlog) 13:03 (join) mye_ 13:05 SamB_MacG5: this is kind of ironic ... Spin Control has the spinning wait cursor ... 13:06 (quit) mye: Ping timeout: 246 seconds 13:13 (join) mye 13:16 (join) nilyaK 13:16 (quit) SamB_MacG5: Ping timeout: 248 seconds 13:20 (quit) gciolli: Quit: Leaving. 13:28 asumu: jonrafkind: maybe you found it already, but there is a keyword parsing function 13:28 asumu: parse-keyword-options in syntax/keyword 13:29 asumu: (though for lighter weight macros syntax-parse should suffice) 13:31 (quit) vkz: Read error: Connection timed out 13:33 (join) vkz 13:33 (quit) dyoo: Quit: dyoo 13:37 (quit) sethalves: Remote host closed the connection 13:37 (quit) vkz: Ping timeout: 246 seconds 13:38 (quit) gbluma: Quit: leaving 13:38 (join) sethalves 13:46 (quit) nilyaK: Read error: Connection reset by peer 13:46 (join) RacketCommitBot 13:46 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/FOuURg 13:46 RacketCommitBot: [racket/master] Updating read-json to produce eof when appropriate. - Carl Eastlund 13:46 (part) RacketCommitBot 13:51 (join) Demosthenex 13:52 (quit) Demosthenes: Ping timeout: 248 seconds 13:57 (quit) Demosthenex: Quit: Lost terminal 13:59 (quit) bitonic`: Remote host closed the connection 13:59 (join) dyoo 13:59 (join) bitonic` 14:00 (join) Demosthenes 14:00 (quit) dyoo: Client Quit 14:04 (join) SamB_MacG5 14:07 (join) nilyaK 14:08 (quit) crundar: Ping timeout: 246 seconds 14:20 jonrafkind: asumu, oh I just want to find the keywords and pass them on, not actually use the keywords to do anything 14:32 (join) crundar 14:38 (join) jao 14:38 (quit) jao: Changing host 14:38 (join) jao 14:45 (join) dyoo 14:49 (quit) nilyaK: Read error: Connection reset by peer 15:04 (quit) crundar: Ping timeout: 246 seconds 15:04 (join) crundar 15:14 (quit) dyoo: Quit: dyoo 15:26 (join) Fare 15:26 (join) vkz 15:27 (join) dyoo 15:30 (quit) mye: Quit: mye 15:32 (quit) vkz: Quit: vkz 15:37 ozzloy: https://github.com/plt/racket/wiki/Racket2 i vaguely remember #:else being preferred in some situation 15:37 ozzloy: i think it was cond 15:38 ozzloy: #else instead of [else ...] 15:38 ozzloy: i started to edit the page, then i thought i should check here first 15:42 (join) SrPx 15:43 SrPx: How does library support works for Racket? I guess it does not have as many libs as clojure or cl, obviously? Can I use libs from other environments/languages (browser/js, jvm, python, etc) on it? 15:44 asumu: SrPx: there are a lot of libraries built-in and also at planet.racket-lang.org. 15:44 asumu: Likely not as many as CL, but I think fairly competitive with Clojure (don't know for sure). 15:45 asumu: Other environments: there's an FFI for C and Objective-C. If you use Whalesong, you get JS compatibility. 15:45 SrPx: Glancing it seems pretty big, but I'm sure I will not be able to get everything I need from there (not even from Clojure, but it does have Java). That's why I'm asking if I can somehow wrap stuff from other environments if I ever need it. 15:45 SrPx: For example, 3d graphics? 15:45 SrPx: Whalesong? 15:45 asumu: Yes, there's an OpenGL binding. 15:45 SrPx: I guess I'd need more than it as I'm a opengl noob (not sure how hard it is though) 15:46 asumu: Whalesong compiles Racket to Javascript. http://hashcollision.org/whalesong/ 15:46 SrPx: an:t 15:46 SrPx: an* 15:46 asumu: I don't really work with 3D at all, so I don't know. You might ask jonrafkind and others here who have worked with 3D libraries. 15:46 SrPx: Very intersting ! 15:46 jonrafkind: my real name is john carmack how can i help you 15:46 asumu: Or on the mailing list possibly. 15:46 SrPx: o.o hi 15:47 SrPx: What is your experience with programming 3d stuff on Racket? 15:47 jonrafkind: 0 15:47 asumu: jonrafkind: why didn't you write Quake in Racket? ;) 15:47 asumu: Also, I thought you wrote some game engine bindings or something? 15:47 jonrafkind: i wonder what the startup time of racket is on a 386 dx 15:47 SrPx: Well fine, thanks... I'm new to it, what's the recommended place for an initial learning / overview of the language? 15:48 jonrafkind: well yea i wrote some ffi bindings to various graphics libraries (sdl, allegro4, allegro5) 15:48 jonrafkind: i dont do much with 3d usually though.. 15:48 carleastlund: SrPx, here's the quick start document for Racket: http://docs.racket-lang.org/getting-started/ 15:49 asumu: SrPx: docs.racket-lang.org -- there is a Guide for learning and a Reference for in-depth nitty-gritty docs. 15:49 asumu: (and a few tutorials) 15:49 SrPx: Ok just asserting those were a good start, thanks! 15:50 SrPx: Racket is like the new version of Scheme, right? Or there is still something called Scheme being used? 15:50 bremner: there are various things called Scheme being used 15:50 carleastlund: Scheme still exists. Racket was, and is, a dialect of Scheme, but Racket is also a lot more than that. 15:51 jonrafkind: no one is quite sure what 'scheme' is anymore 15:51 SrPx: I see... 15:51 carleastlund: Scheme was never just one language, it has always been a loose collection of similar languages. Racket is (at least) as good a choice of Scheme as any. 15:52 carleastlund: (for most purposes; if you're going purely for raw speed, for instance, Chez Scheme certainly puts us all to shame) 15:52 asumu: It is somewhat harder to get a copy of that, OTOH. 15:53 carleastlund: Yep. That's only if you're willing to sacrifice the price of Chez, plus all the nice features Racket has, for extra speed. 15:57 SrPx: What is Racket used for? And it's strong points? 15:57 (join) gciolli 15:58 carleastlund: Racket is used for lots of things. Commercial programming, research programming, scientific programming, teaching students... I don't know of anything for sure that Racket _isn't_ used for. 15:58 bremner: embedded systems? 15:59 carleastlund: For strong points, there's plenty, but I'd say we're the kings of language customization. We have "little languages" all over the place for domain specific tasks, and users have lots of flexibility to create their own. 15:59 carleastlund: Okay, I don't know of any concrete cases of embedded Racket, you have me there :) 15:59 bremner: well, to be fair it builds on arm... 16:00 carleastlund: Well, there you go :) 16:00 (part) _tca 16:00 ozzloy: oh hey, people are here 16:00 bremner hides 16:01 ozzloy: regarding https://github.com/plt/racket/wiki/Racket2 i recall one feature discussed was using #:else instead of [else ...] 16:01 ozzloy: but i don't remember the details 16:02 carleastlund: SrPx, mostly Racket is designed to be very flexible and very general-purpose. There's no one thing people go to Racket for, but give it a try for whatever you're doing, you'll probably find something to like. 16:02 carleastlund: ozzloy, That's pretty much it, #:else instead of else. I'm not sure there are any details beyond that. 16:03 (quit) bitonic`: Ping timeout: 252 seconds 16:03 carleastlund: I mean, I'm sure there are multiple ways to use #:else, but as far as I know they're all under consideration. No one has proposed a specific syntax or anything. 16:05 SrPx: I see. So it is a pretty generic language like Python and others? 16:06 SrPx: I'm asking that because someone told me it was mainly used for academic purposes 16:06 carleastlund: The creators of Racket are in the academic realm, certainly. But that's incidental, the language has lots of pragmatic tools. 16:07 carleastlund: So, yes, I would put Racket up against Python as a practical, generic-purpose language. 16:08 (quit) cdidd: Read error: Operation timed out 16:08 SrPx: Nice ! 16:08 SrPx: Is it fast ? 16:08 carleastlund: Also, I see over in #scheme someone pointed you to SICP. I suggest, if you're getting into Racket and/or other Schemes, try HtDP (www.htdp.com) before SICP, it's a much gentler introduction to the style of programming. SICP should be a much easier read after that. 16:09 SrPx: I mean, is it's implementation mature enough to compete with the other interpreted languages? 16:09 SrPx: Oh ! I forgot answering them ! Thanks 16:09 carleastlund: Racket is fast and getting faster all the time, we have a bytecode compiler and a JIT native compiler. 16:09 (join) Blkt` 16:10 SrPx: I see. 16:11 carleastlund: I'm not one of the people who works on performance and optimizations, they'd know better what benchmarks we've run and how we compare. 16:11 (quit) Blkt: Ping timeout: 240 seconds 16:11 carleastlund: But I haven't had performance issues with Racket in a long time, since before we had an actual compiler. 16:13 bremner: you can get some sense of things from http://shootout.alioth.debian.org/ 16:14 (join) anRch 16:14 bremner: basically, on those toy benchmarks racket is faster than python and ruby, but slower than java and haskell 16:14 bremner: I wouldn't put too much stock in those benchmarks, but it is a kind of sanity check 16:18 (join) neilv 16:18 SrPx: That's what I needed, thanks. 16:23 SrPx: bremner: about that site, I'm noticing Racket's source codes use basically the core of the language, which as I'm learning seems very minimal 16:24 SrPx: Yet it does have in average the same code length as the other languages. Racket does encourage you to create a DSL, right? So I guess as you customize it the length of the code tends to decrease significantly 16:24 (quit) pnpuff: Quit: Bye. 16:31 (join) vkz 16:41 SrPx: Also, what is λx:(μα.α→α).xx and why it does appear so often on Racket's tutorial? :p 16:42 jonrafkind: looks like the identity function 16:42 Araq: Y combinator? *ducks* 16:42 jonrafkind: actually it looks like omega 16:42 jonrafkind: but i thought omega was untypable 16:43 neilv: who is putting greek letters in a racket tutorial? 16:43 neilv: racket is not for fratboys 16:43 jonrafkind: off with their heads! 16:46 asumu: SrPx: where in the Racket tutorial does that show up? 16:47 asumu: Oh, it shows up in strings. 16:48 asumu: I guess it's the documentation equivalent of a joke. 16:48 SrPx: I know, just curious 16:48 SrPx: wow @ Y combinator. 16:50 Fare: SrPx: μ is for least fixed point 16:50 jonrafkind: i thought mu was the forall type thing 16:51 Fare: omega is (λx.x x) applied to itself. 16:53 Fare: an applicative Y would be (λx.x x)(λf.λ(x) ((f f) x)) 16:54 (quit) vkz: Read error: Connection timed out 16:55 (join) vkz 16:55 (quit) hash_table: Ping timeout: 260 seconds 16:55 (quit) getpwnam: Ping timeout: 260 seconds 16:59 (join) b2coutts 17:02 (quit) crundar: Ping timeout: 256 seconds 17:04 (quit) anRch: Quit: anRch 17:05 asumu: jonrafkind: mu is a recursive type. 17:05 (quit) jonrafkind: Ping timeout: 256 seconds 17:05 asumu: (at least that's what it looks like it's used as in this case) 17:05 (quit) vkz: Quit: vkz 17:06 (join) RacketCommitBot 17:06 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/OdryFA 17:06 RacketCommitBot: [racket/master] scribble/private/manual-form: Implement racketgrammar in terms of racketgrammar* - Samuel Bronson 17:06 RacketCommitBot: [racket/master] add info on building Racket to the "Inside" document - Matthew Flatt 17:06 (part) RacketCommitBot 17:08 (quit) masm: Ping timeout: 260 seconds 17:13 SrPx: So it is in active development? 17:15 samth: SrPx: what is "it"? 17:15 SrPx: Racket 17:16 neilv: racket is in very active development 17:17 asumu: (as you can see from the commits that just passed by :p) 17:17 samth: that's what the messages from RacketCommitBot are about 17:17 samth: and why there are 106 of us here in this channel 17:17 neilv: you can usually get some idea about how active an open source project is by looking at their recent releases, their git rep, their email list... 17:17 asumu: Also see: http://www.ohloh.net/p/racket 17:18 (join) mceier 17:18 (join) crundar 17:19 (join) jonrafkind 17:19 (join) bitonic` 17:25 (join) masm 17:27 (join) mye__ 17:30 SrPx: Uh huh! 17:30 SrPx: I'm liking the lang from what I'm seeing but the tut never reachs the cool stuff 17:31 SrPx: Not getting why the need for pairs 17:31 (quit) mye_: Ping timeout: 246 seconds 17:31 neilv: it's a long story 17:32 neilv: just do a couple tutorials and start making things 17:32 SrPx: lol, ok 17:33 (join) bjz 17:33 neilv: pairs are an extremely old lisp thing, which can be used extensively in racket, but you can start doing lots of things before you know all about pairs 17:33 neilv: extremely old, as in predating most all other programming languages 17:40 Fare wonders about using Racket to explore linear logic programming. Or rather linear functional programming. 17:40 (quit) bitonic`: Ping timeout: 260 seconds 17:41 (join) ioa 17:45 (join) getpwnam 17:45 (join) hash_table 17:54 (quit) jrslepak: Quit: What happened to Systems A through E? 17:57 (join) bitonic` 18:10 (join) tuor 18:10 (quit) Fare: Ping timeout: 246 seconds 18:12 (quit) bitonic`: Ping timeout: 260 seconds 18:19 (quit) MayDaniel: Read error: Connection reset by peer 18:21 (join) bitonic` 18:26 SamB_MacG5: hmm, what does it mean when drracket shows something in red text? 18:28 (quit) tfb: Quit: sleeping 18:28 neilv: it usually means an exception 18:28 neilv: it can also mean writing to current-error-port (simialr to stderr) 18:31 (quit) jesyspa: Quit: leaving 18:33 (join) jrslepak 18:34 (join) crundar__ 18:35 SamB_MacG5: oh, it looks like it was actually about an unused require or something ... 18:35 SamB_MacG5: probably the context menu should give a way to tell why something is highlighted the way it is? 18:43 (quit) jonrafkind: Ping timeout: 245 seconds 18:45 (quit) crundar__: Ping timeout: 260 seconds 18:45 (quit) crundar: Ping timeout: 260 seconds 18:54 neilv: oh, red in the Definitions pane. yes, require clauses that the online-check-syntax thing doesn't think are necessary are turned red. sometimes they are necessary, however 18:57 (quit) jao: Ping timeout: 246 seconds 18:59 neilv: that feature is a relatively recent addition, and works in a powerful way. the actual user interface is not bad, but has a few rough spots 19:03 (quit) gciolli: Remote host closed the connection 19:05 (join) mye 19:06 (quit) pcavs: Quit: Leaving. 19:09 (join) crundar 19:09 (join) crundar__ 19:11 (join) Fare 19:11 neilv: i'm trying to update this library to turn various exceptions in i/o, processes, and networking, into application-specific exceptions 19:12 neilv: this is one time that a java feature would come in handy 19:14 neilv: for example, would be nice to know whether sync/timeout/enable-break can raise an exception, and if so, which 19:14 neilv: other than a break, i mean 19:17 neilv: i could wrap each i/o-related call tightly with with-handlers, but then i have lots of that going on in an i/o event loop 19:17 neilv: i can't wrap the whole loop with with-handlers on exn:fail, because that's too general 19:18 (join) mye_ 19:20 (join) gridaphobe 19:21 (quit) mye: Ping timeout: 246 seconds 19:21 (nick) mye_ -> mye 19:26 (quit) bitonic`: Ping timeout: 246 seconds 19:27 (join) chrxn 19:31 (quit) masm: Quit: Leaving. 19:33 (join) 5JTAAD51W 19:33 (join) 16SAABWX8 19:34 (quit) crundar__: Ping timeout: 245 seconds 19:34 (quit) crundar: Ping timeout: 245 seconds 19:36 SamB_MacG5 mumbles something about missing rules for rebuilding Makefile from Makefile.in 19:41 (quit) gridaphobe: Remote host closed the connection 19:49 Fare: make makefile? 19:50 (quit) bjz: Quit: Leaving... 19:51 SamB_MacG5: Fare: are you making or suggestion or expressing confusion? 19:52 SamB_MacG5: er. 19:52 SamB_MacG5: the first "or" was supposed to be an "a" 19:53 Fare: both 19:54 Fare: confusion as to why they can't have a master makefile that works even unconfigured to do the configuration automatically if needs be 19:56 SrPx: (define next-number! (let ([n 0]) (lambda () (set! n (add1 n)) n))) - Did I understand this correctly? n is on let's scope. next-number! is defined as a function that updates 'n', and that n will always be the n on let's scope becuase the function is inside the let list 19:58 (quit) Blkt`: Remote host closed the connection 20:00 (quit) dyoo: Quit: dyoo 20:04 neilv: SrPx: pretty much. that sort of thing is a very common example in scheme books for closures, if you want a discussion of it 20:06 (join) bjz 20:12 SrPx: (: neilv 20:13 SrPx: Well that tutorial is good but Racket is specially good in creating DSL, no? Where they talk about this? 20:14 SrPx: macros, reader macros and I've read there's something else I do not remember well, something on the lines of 'it already has some languages syntax coded as libs you can require' 20:14 SrPx: or something like that 20:14 SrPx: like I could load haskell's style with a one liner, or something 20:15 SamB_MacG5: Fare: it would be possible, but much more work then making the generated Makefiles update themselves when they were out-of-date wrt their Makefile.in files 20:15 SamB_MacG5: also, since building out-of-tree is recommended anyway, it probably wouldn't help much ... 20:16 SamB_MacG5: (where by "out-of-tree" I mean "in the build/ directory" 20:19 asumu: SrPx: if youw ant to know about DSLs, Matthew had a really good article. 20:19 asumu: Let me find it. 20:20 neilv: http://www.google.com/url?sa=t&rct=j&q=matthew%20flatt%20dsls&source=web&cd=1&cad=rja&ved=0CCIQFjAA&url=http%3A%2F%2Fqueue.acm.org%2Fdetail.cfm%3Fid%3D2068896&ei=sYRrUJ6mCsjn0gH_6YHoAw&usg=AFQjCNGO60HMcVrJBFxuklsaoynZHJbpaQ 20:20 rudybot: http://tinyurl.com/8k52emu 20:20 Fare: I suppose I should try build my linear lisp in racket 20:20 asumu: http://queue.acm.org/detail.cfm?id=2068896 20:20 asumu: Oh, I guess neilv already foudn it. 20:20 asumu: *found 20:20 Fare: then bootstrap an actual implementation when the design is stable 20:21 Fare: are there linear logic / linear typing things in racket / planet? 20:21 asumu: Fare: what do you mean by linear lisp? You mean like a linear type system or something else? 20:21 Fare: yes 20:22 Fare: http://home.pipeline.com/~hbaker1/LinearLisp.html 20:23 asumu: Oh, interesting. So linearity is enforced dynamically but at the instruction level? 20:24 asumu: Redex might be a useful way to prototype it. 20:25 asumu: Also, Jesse Tov wrote an affine contracts library: http://planet.racket-lang.org/display.ss?package=affine-contracts.plt&owner=tov 20:25 rudybot: http://tinyurl.com/822ssd9 20:26 asumu: He also wrote a cool language with an affine type system: http://hackage.haskell.org/package/alms 20:26 (join) Radvendii 20:26 (quit) bjz: Quit: Leaving... 20:31 neilv: is there any known bug in 5.3 relating to proving a struct predicate from a module, and it not being visible in a requiring module? 20:32 neilv: i probably have a bug in my app, because i'm having trouble reproducing it with a minimal example 20:32 asumu: neilv: not that I know of. Do you have an example? 20:32 (quit) 16SAABWX8: Quit: Leaving 20:35 neilv: ok, the problem is doing through a planet development link. almost like it's not getting the right version, or a cache is out of date 20:35 Fare: asumu: that would be the official semantics and a naive interpreter. I expect a compiler to do much better 20:36 Fare: also, the language has finer types that a traditional lisp 20:36 neilv: ok, i think i see the problem. cvs server and workstation's clocks are 40 minutes out of sync 20:39 Fare: cvs? yuck 20:40 Fare: asumu: excellent! I'll take a look at it. 20:41 (join) cdidd 20:42 Fare: asumu: interestingly, I have affine boxes in LIL, too 20:42 Fare: I use them in my stateful->pure automatic translation. 20:45 (quit) 5JTAAD51W: Ping timeout: 256 seconds 20:57 Radvendii: i have a super nooby question... 20:57 Radvendii: how do I install racket in /usr/local/bin/? 20:59 asumu: Radvendii: are you using one of the packages from the website? 20:59 Radvendii: yeah 20:59 asumu: You might be better off putting it in /usr/local/racket and adding /usr/local/racket/bin to your path. Or you could put symbolic links in /usr/local/bin to wherever. 21:00 Radvendii: ooh 21:00 Radvendii: okay 21:00 Radvendii: that makes sense 21:00 asumu: (that makes it easy to update) 21:00 Radvendii: mhmm and easy to find 21:00 Radvendii: thanks 21:00 (quit) Fare: Ping timeout: 246 seconds 21:01 (join) crundar 21:01 neilv: i think it might involve re-providing, compiled/drracket/errortrace, and one of the file timestamps having possibly been out of sync for one click of Run button but no longer 21:04 Radvendii: asumu: is there a way to link the symbolically link the whole racket folder (including the man pages et al) not just the bin? or would i have to do thos seperately? 21:04 Radvendii: or not necessarily symbolically link... 21:08 neilv: Radvendii: are you compiling from source, or how are you installing it? 21:09 Radvendii: just hitting the download button on the website 21:09 Radvendii: ah well... the documentation doesn't matter that much 21:10 Radvendii: thanks all 21:10 (quit) Radvendii: Quit: Lost terminal 21:12 (join) bjz 21:13 (join) Fare 21:13 (join) thebifnif 21:13 (part) thebifnif 21:23 neilv: i have a vague idea what the bug is, but if i report it, then matthew will get a headache trying to find it 21:24 (join) mye_ 21:25 (quit) SrPx: Ping timeout: 240 seconds 21:26 (quit) mye__: Ping timeout: 260 seconds 21:31 (quit) Demosthenes: Quit: leaving 21:31 (join) Demosthenes 21:32 SamB_MacG5: so ... how long ago was racket known as mz scheme? 21:36 asumu: SamB_MacG5: Prior to June 2010 it was PLT Scheme and the core runtime was MzScheme. 21:37 SamB_MacG5: why rename the core? 21:41 (quit) mrcarrot: Remote host closed the connection 21:41 asumu: Well, it'd be confusing if it was called Racket but the binary was named mzscheme still. 21:41 asumu: Also, it's not just Scheme anymore so it's misleading to call it that. 21:48 (join) user-- 21:51 user--: can anyone tell me the meaning of the 'union' in the context of this http://planet.racket-lang.org/package-source/dherman/java.plt/1/5/contract-utils.ss code? 21:51 rudybot: http://tinyurl.com/8vzz2j5 21:52 (join) nilyaK 21:56 (join) pcavs 21:56 (join) RacketCommitBot 21:56 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/sCMK7w 21:56 RacketCommitBot: [racket/master] adjust tooltip windows so they go away whenever - Robby Findler 21:56 (part) RacketCommitBot 22:15 (quit) mye_: Ping timeout: 256 seconds 22:26 (quit) tuor: Quit: tuor 22:39 (quit) pcavs: Quit: Leaving. 22:48 (join) Nisstyre-laptop 22:53 (quit) user--: Ping timeout: 246 seconds 22:58 SamB_MacG5: asumu: I didn't mean that any (more) of the binaries should be called that. In any case, it's surely not as confusing as CMUCL's compiler being called Python ;-P 23:03 Fare: what about running clpython on python cl ? 23:09 (join) mithos28 23:12 (quit) Fare: Quit: Leaving 23:16 (quit) Shvillr: Ping timeout: 252 seconds 23:16 (join) Shvillr 23:25 (quit) nilyaK: Quit: Leaving. 23:25 asumu: user--... oh he's gone. Turns out or/c used to be called union. 23:26 (quit) jeapostrophe: Ping timeout: 248 seconds 23:26 asumu: SamB_MacG5: heh. If you look in the C source code for Racket you will still see lots of scheme_*s. 23:34 SamB_MacG5: asumu: I have 23:41 SamB_MacG5: sooo ... I'm a bit surprised that racket doesn't seem to have any fancy crashing support! 23:50 (quit) asumu: Ping timeout: 260 seconds 23:50 (join) asumu 23:52 (join) pcavs 23:53 (quit) pcavs: Client Quit 23:53 (join) yoklov 23:58 SamB_MacG5: what? you don't actuall pull for pull requests ?