00:01 (quit) gatlin: Quit: Leaving. 00:14 (join) groovy2shoes 00:20 (quit) karswell__: Ping timeout: 244 seconds 00:21 (join) karswell__ 00:22 (quit) neilv: Quit: Leaving 00:44 (quit) groovy2shoes: Read error: Connection reset by peer 00:47 (join) gatlin 00:54 (join) jeapostrophe 00:55 (join) realitygrill 01:02 (quit) jeapostrophe: Ping timeout: 252 seconds 01:03 (join) groovy2shoes 01:13 (quit) groovy2shoes: Read error: Connection reset by peer 01:36 (quit) gatlin: Quit: Leaving. 01:42 (join) grettke 01:51 (join) gatlin 02:08 (quit) grettke: 02:41 (quit) gatlin: Quit: Leaving. 02:52 (join) gatlin 02:56 (quit) realitygrill: Ping timeout: 256 seconds 02:58 (join) realitygrill 03:01 (join) groovy2shoes 03:05 (join) EmmanuelOga 03:05 RacketCommitBot: [racket] plt pushed 5 new commits to master: http://git.io/4AY19g 03:05 RacketCommitBot: [racket/master] Center the release text on the page. - Eli Barzilay 03:05 RacketCommitBot: [racket/master] Fix typo and minor improvement. - Eli Barzilay 03:05 RacketCommitBot: [racket/master] There is no "gc2/xform-collects" in the gracket build tree. - Eli Barzilay 03:13 (quit) EmmanuelOga: Ping timeout: 244 seconds 03:20 (quit) realitygrill: Quit: realitygrill 03:22 (join) vkz 03:33 (join) dzhus 03:49 (quit) vkz: Quit: vkz 03:52 (quit) groovy2shoes: Read error: Connection reset by peer 03:53 (quit) Shvillr: Ping timeout: 240 seconds 03:53 (join) Shvillr 04:16 (join) groovy2shoes 04:19 (quit) gatlin: Quit: Leaving. 04:25 (part) Mordae 04:27 (quit) groovy2shoes: Quit: It is now safe to turn off your groovebot. 04:41 (nick) chaozzbubi -> ChaozZBubi 04:42 (join) bluezenix 05:34 (join) masm 05:44 (quit) ticking: Quit: Leaving... 05:46 (join) ticking 06:31 (join) MayDaniel 06:57 (quit) ticking: Quit: Linkinus - http://linkinus.com 07:17 (join) tfb 07:20 (join) ticking 07:31 (quit) MayDaniel: Read error: Connection reset by peer 07:32 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/gg5tug 07:32 RacketCommitBot: [racket/master] fix format of some error messages - Matthew Flatt 07:35 (quit) bluezenix: Quit: Leaving. 07:40 (join) MayDaniel 07:45 (quit) ticking: Quit: Leaving... 08:02 (quit) MayDaniel: Read error: Connection reset by peer 08:13 (quit) tfb: Quit: sleeping 08:34 (join) Patterngazer 08:45 (join) ticking 08:49 (join) kingless 08:49 (join) mceier 09:02 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/dmXszA 09:02 RacketCommitBot: [racket/master] fix pattern match on error message that was modified in 8cf49dfdb14 - Matthew Flatt 09:04 (quit) kingless: Read error: Connection reset by peer 09:05 (join) kingless 09:09 (quit) kingless: Ping timeout: 245 seconds 09:31 (join) yoklov 09:33 (join) tfb 09:35 (quit) yoklov: Client Quit 09:35 (join) veer 09:39 (join) jeapostrophe 09:45 (quit) tfb: Quit: sleeping 09:46 (join) hogehoge 09:59 (join) gciolli 10:05 (join) angusiguess 10:08 (join) Blkt 10:08 (quit) ticking: Quit: Linkinus - http://linkinus.com 10:12 Blkt: good day everyone 10:23 (join) jrslepak 10:27 (join) bluezenix 10:49 (quit) veer: Remote host closed the connection 10:53 (quit) gciolli: Quit: Leaving. 10:54 (join) yoklov 11:06 (quit) angusiguess: Ping timeout: 240 seconds 11:10 (quit) karswell__: Read error: Operation timed out 11:11 (join) karswell__ 11:12 (join) MayDaniel 11:20 (quit) MayDaniel: Read error: Connection reset by peer 11:48 (join) gatlin 11:50 (quit) yoklov: Quit: computer sleeping 11:54 (quit) bluezenix: Quit: Leaving. 12:00 (join) anRch 12:03 (quit) offby1: Quit: time to install the new version of Racket! 12:03 (quit) rudybot: Remote host closed the connection 12:03 (join) offby1 12:04 (quit) offby1: Changing host 12:04 (join) offby1 12:23 (quit) gatlin: Quit: Leaving. 12:29 (quit) Patterngazer: Ping timeout: 248 seconds 12:35 (join) realitygrill 12:41 (join) yoklov 12:45 (quit) anRch: Quit: anRch 12:58 (join) MayDaniel 13:03 (join) rudybot 13:21 offby1: rudybot: (banner) 13:21 rudybot: offby1: ; Value: "Welcome to Racket v5.2.1.\n" 13:21 offby1: \o/ 13:25 offby1: Isn't there a way to have a new racket thread run at "lower priority" than existing threads? 13:25 offby1: can't figure out the term to search for in the docs 13:27 chandler: rudybot: doc make-thread-group 13:27 rudybot: chandler: your sandbox is ready 13:27 rudybot: chandler: http://docs.racket-lang.org/reference/threadgroups.html#(def._((quote._~23~25kernel)._make-thread-group)) 13:27 (join) Patterngazer 13:31 (quit) jeapostrophe: Ping timeout: 252 seconds 13:33 offby1: aaahhhh 13:33 offby1: chandler: thanks. Did you just remember that, or did you actually search for it? 13:33 chandler: I remembered where to look. 13:35 offby1: I may stick a reference to that section into the section on "threads". 13:35 chandler: It isn't terribly obvious; I'd expect them to be mentioned in the section of the evaluation model chapter that talks about threads. 13:35 offby1: let's see how scribulous I am 13:35 offby1: ya think 13:36 chandler: They *are* mentioned - somewhat obliquely - in the Threads section of the reference, but only so far as to mention that they exist. 13:39 offby1: actually, for what I want, they may not be the simplest thing. I have just two threads, and want one to run at "lower priority" (i.e., don't hog the CPU too much). Since that thread is just a big loop, it's probably simpler to just stick a "sleep" in the loop 14:24 (join) jeapostrophe 14:40 (quit) MayDaniel: 14:54 (join) Patterngazer_ 14:55 (join) jonrafkind 14:55 (quit) Patterngazer: Ping timeout: 245 seconds 15:05 (join) EmmanuelOga 15:13 (quit) EmmanuelOga: Ping timeout: 244 seconds 15:20 (quit) ASau`: Remote host closed the connection 15:20 (join) ASau` 15:27 (join) EmmanuelOga 15:35 (quit) karswell__: Remote host closed the connection 15:35 (join) karswell__ 15:42 em: is this a sensible thing to do: Say I want to keep some data on a set of clients. Say there are three different things I want to measure about each client. How about having a directory for each client and a text file for each of those three quantities, and then have racket access /clientname/quantityA.txt to read and write to that file each time I update or load it. 15:42 em: Is that how you store data in racket? 15:47 chandler: There's no one way to store and access data in Racket. The question should be what the *right* way to store this data is; from there you can find out if Racket supports that easily or not. 15:48 chandler: We use SQLite via the db module in our application, for instance. 15:49 em: hm. 15:49 em: Then you have to learn SQLite which would be good but not as fast. 15:49 em: I can probably do it all with flat files 15:49 em: do you think it's better to write the data to the flatfiles as lists? 15:49 chandler: Well, there's a learning curve if you don't know SQL. If you do, the db module is very nice. 15:50 em: yeah that's cool 15:51 chandler: Regular s-expressions are a decent choice for a file format. You could also use XML if you were so inclined. 15:56 bremner: is there some more idiomatic shorthand for (format "~a" expr) ? 15:59 (join) didi 16:05 didi: Suppose I have a collection called `myutils'. I want to be able to `(require myutils)' from all my projects. What is the appropriate way to do it? I've discovered PLTCOLLECTS but I wonder if there are ways other than exporting an environment variable. 16:05 jonrafkind: raco link myutils 16:06 didi: jonrafkind: I saw `raco link'. When was it introduce? 16:06 jonrafkind: just be in the same directory that the myutils directory exists and run that command 16:06 jonrafkind: hm, maybe 2 versions ago 16:06 didi: Hum. I'm running racket v5.1.3. I think I don't have it. :^( 16:07 jonrafkind: what does 'raco link' do 16:07 jonrafkind: 'unrecognized command' ? 16:07 didi: jonrafkind: `/usr/bin/raco: Unrecognized command: link' 16:08 jonrafkind: hm, ok so I guess you have to use PLTCOLLECTS for now 16:08 jonrafkind: i mean the other way is to put your collection into the racket collects/ directory 16:08 jonrafkind: you could even just symlink it 16:08 didi: jonrafkind: I see. Well, I rather use PLTCOLLECTS until my distribution upgrades. Thank you! 16:09 jonrafkind: ok 16:09 chandler: Which distribution? 16:09 didi: chandler: Debian Testing. 16:10 chandler: Ah. You could probably get the sid package if you wanted via APT pinning, or recompile it yourself, but it's probably not worth it. 16:11 bremner: the sid package works fine in testing 16:11 bremner: (of 5.20 16:11 bremner: err, 5.2 16:12 didi: Nice. I'll take a look at sid's package then. 16:13 bremner: the only thing keeping it out of testing is problems on "niche" architectures 16:14 chandler: didi: See http://wiki.debian.org/AptPreferences if you haven't used pinning before. Basically, pinning lets you install racket from sid via apt-get without upgrading your whole system. 16:15 didi: chandler: Great, thank you. I've never heard of it before. 16:18 chandler: bremner: what "niche" architecture is causing problems? 16:20 jamessan: chandler: powerpc (only with 64-bit hardware), s390(x), and mips 16:20 chandler: Ah. I'm fresh out of 64-bit PowerPC, alas. 16:21 jamessan: there's a potential fix Matthew Flatt suggested for mips, which seems to work. I should probably followup with him on that 16:23 jamessan: ia64 is a problem, too, but that seems like it'd be much more work than it's worth to fix, especially as ia64 is being EOLed soon, iirc 16:24 (join) gciolli 16:28 (join) dmj111 16:29 bremner: s390 is probably ignorable also... 16:30 jamessan: probably, but I was hoping that'd be a potentially simpler fix :) 16:31 (nick) LeNsTR -> LeNsTR|off 16:35 (quit) jonrafkind: Ping timeout: 252 seconds 16:39 (quit) jeapostrophe: Ping timeout: 248 seconds 16:41 jamessan: bremner: are you going to have some time to update racket soon? 16:46 (quit) dzhus: Remote host closed the connection 16:52 chemuduguntar: is anyone using racket on arm? 16:52 chemuduguntar: i am unable to require packages from planet (racket v5.0.2) (Killed :( ) 16:54 (join) bluezenix 16:54 (quit) Patterngazer_: Quit: Download IceChat at www.icechat.net 16:54 (join) vkz 17:01 eli: stamourv: ping 17:09 (join) flying_rhino 17:09 flying_rhino: hello folks 17:43 (quit) gciolli: Quit: Leaving. 17:54 (join) jao 17:54 flying_rhino: hi jao 17:54 jao: heya flying_rhino 17:55 flying_rhino: I have a question (in case you know racket well) 17:55 jao: i'm sure if not me others here will know :) 17:56 flying_rhino: about accessing structure members 17:56 flying_rhino: and mutating mutable structure members 17:56 chandler: Just ask the question, and if somebody knows and is around they will answer. 17:58 flying_rhino: okay fist: Is there alternative way for accessing values witin structure. The one I use is (my-structure-item instance) for my-structure 17:58 flying_rhino: this is for typed racket 17:58 offby1: that's certainly the standard way 17:59 offby1: you might be able to convert the struct to a vector, and then do vector-ref, but I don't see the point 17:59 (join) jeapostrophe 18:00 flying_rhino: what if you have structure within structure? I use (my-structure-structure1-item (my-structure-structure1 instance)) and that works althought is rather convoluted 18:01 (quit) mceier: Quit: leaving 18:02 offby1: 'fraid that's the only choice I know of 18:02 offby1: you could write a helper function that pulls the foo member from the bar member from a baz structure. 18:02 (quit) EmmanuelOga: Ping timeout: 244 seconds 18:03 flying_rhino: okay and how do you mutate mutable structures? (set! (my-structure-item instance) new-value) doesn't seem to work? 18:03 offby1: indeed 18:04 flying_rhino: so how to do that? 18:04 offby1: dunno 'bout Typed Racket, but you want something like (set-my-structure-item!) 18:04 offby1: the docs explain it 18:04 offby1: rudybot: init 18:04 rudybot: *offby1: your sandbox is ready 18:04 offby1: rudybot: (struct baz (bar)) 18:04 rudybot: *offby1: Done. 18:04 offby1: rudybot: (struct bar (foo)) 18:04 rudybot: *offby1: Done. 18:04 offby1: 18:04 offby1: rudybot: (define a-baz (baz (bar 'frotz))) 18:04 rudybot: *offby1: Done. 18:04 offby1: rudybot: (baz-bar a-baz) 18:04 rudybot: *offby1: ; Value: #(struct:bar frotz) 18:04 flying_rhino: okay, and how do you do that when you have mutable structure within mutable structure? 18:05 offby1: rudybot: (bar-foo (baz-bar a-baz)) 18:05 rudybot: *offby1: ; Value: frotz 18:05 offby1: rudybot: (define x (compse bar-foo baz-bar)) 18:05 rudybot: *offby1: error: reference to an identifier before its definition: compse in module: 'program 18:05 offby1: rudybot: (define x (compose bar-foo baz-bar)) 18:05 rudybot: *offby1: Done. 18:05 offby1: rudybot: (x a-baz) 18:05 rudybot: *offby1: ; Value: frotz 18:05 offby1: flying_rhino: can't you guess? 18:06 flying_rhino: I'll try to 18:07 offby1: now that you've made me think about it I confess it's not obvious to me, either 18:07 flying_rhino: (set-my-structure-structure1-item! new-val) 18:07 flying_rhino: now not that 18:07 flying_rhino: *no 18:07 offby1: I suspect you _get_ the outer thing, then _set_ its field. 18:07 offby1: let's see. 18:08 offby1: rudybot: (struct outer (o) #:mutable) 18:08 rudybot: *offby1: Done. 18:08 (quit) yoklov: Quit: computer sleeping 18:08 offby1: rudybot: (struct innter (i) #:mutable) 18:08 rudybot: *offby1: Done. 18:08 offby1: oops 18:08 offby1: oh well 18:08 offby1: rudybot: (define i (innter 'sure-is-dark-in-here)) 18:08 rudybot: *offby1: Done. 18:08 offby1: rudybot: (define o (outer i)) 18:08 rudybot: *offby1: Done. 18:08 offby1: o 18:08 offby1: rudybot: o 18:08 rudybot: *offby1: ; Value: #(struct:outer #(struct:innter sure-is-dark-in-here)) 18:09 offby1: rudybot: (set-innter-i! "turn the lights back on" (outer-o o)) 18:09 rudybot: *offby1: error: set-innter-i!: expects type as 1st argument, given: "turn the lights back on"; other arguments were: # 18:09 offby1: rudybot: (set-innter-i! (outer-o o) "turn the lights back on" ) 18:09 rudybot: *offby1: Done. 18:09 offby1: rudybot: o 18:09 rudybot: *offby1: ; Value: #(struct:outer #(struct:innter "turn the lights back on")) 18:09 offby1: ta da 18:09 offby1: and I suspect this o is still eq? to the original but I can't prove that now 18:10 offby1: rudybot: (define old o) 18:10 rudybot: *offby1: Done. 18:10 offby1: rudybot: (set-innter-i! (outer-o o) "the third inner value" ) 18:10 rudybot: *offby1: Done. 18:10 offby1: o 18:10 offby1: rudybot: o 18:10 rudybot: *offby1: ; Value: #(struct:outer #(struct:innter "the third inner value")) 18:10 offby1: rudybot: old 18:10 rudybot: *offby1: ; Value: #(struct:outer #(struct:innter "the third inner value")) 18:10 offby1: yep 18:10 offby1: rudybot: (eq? o old) 18:10 rudybot: *offby1: ; Value: #t 18:10 offby1: all hail mutation, I guess. 18:10 offby1: now that you know how to do it, don't :) 18:10 (quit) jeapostrophe: Ping timeout: 248 seconds 18:10 flying_rhino: well I am creting mutable dubly linked list 18:11 flying_rhino: something I wnated to do before but somehow never gotten to it 18:11 flying_rhino: I abandoned racket for some reason but now I am back 18:11 flying_rhino: *doubly linked list 18:11 flying_rhino: you guys don't seem to like mutation much? 18:12 flying_rhino: thanks for helping me, by the way 18:12 flying_rhino: :) 18:12 offby1: mutation is _generally_ more trouble than it's worth. 18:13 offby1: but for inserts into the middle of a list, it's sho' 'nuff fast :) 18:13 flying_rhino: well I am basically looking for viable game development platform in lisp (well in my free time at least) so mutation is a must. 18:14 flying_rhino: too much state in game for relying entirely on immutable data types 18:15 flying_rhino: or you disagree? 18:17 offby1: well, my pessimistic hunch is that racket isn't "viable" anyway 18:17 (quit) vkz: Quit: vkz 18:18 flying_rhino: what do you mean? 18:18 offby1: I'm just a pessimist in general. 18:18 flying_rhino: what is wrong with racket in particular? 18:20 flying_rhino: anyway is there a way in typed racket to define function in single line? 18:20 offby1: dunno. 18:21 offby1: I don't use typed racket (although I should) 18:22 flying_rhino: two line solution that I know of is (: function-name (type1 type2 type3 -> return-type)) 18:22 flying_rhino: (define (function-name arg1 arg2 arg3) 18:23 (part) crest 18:24 offby1: yep 18:24 flying_rhino: but is should be possible to just define it with some form of define: or something 18:24 offby1: good point 18:24 flying_rhino: *it should be 18:25 flying_rhino: I could write macro or some black magic but it should be supported out of the box 18:26 (quit) didi: Remote host closed the connection 18:29 flying_rhino: one more thing 18:30 offby1 pictures Peter Falk as "Columbo" 18:31 jamessan: ah, Columbo 18:31 flying_rhino: what identifiers does racket create for me when I create a new struct? Obviously there is one for each item, (struct-item1 struct-item2 struct-item3 ...) and now I see there are also setters (set-struct-item1!) . What are others? 18:31 chandler: rudybot: init typed/racket 18:31 rudybot: chandler: your typed/racket sandbox is ready 18:32 chandler: rudybot: eval (define: f : (Number Number -> Number) (lambda (x y) (+ x (/ y 2)))) 18:32 rudybot: chandler: Done. 18:32 chandler: rudybot: eval (f 1 2) 18:32 rudybot: chandler: ; Value: 2 18:32 rudybot: chandler: ; stdout: "- : Complex\n" 18:32 chandler: flying_rhino: Does that help? 18:33 flying_rhino: it does 18:34 flying_rhino: didn't expect I'll have to use lambda thought 18:35 chandler: rudybot: eval (define: (g a b) : (Number Number -> Number) (+ a (/ b 2))) 18:35 rudybot: chandler: error: #:1:0: define:: bad syntax in: (define: (g a b) : (Number Number -> Number) (+ a (/ b 2))) 18:35 flying_rhino: yeah that doesn't work 18:36 chandler: rudybot: eval (define: (g (a : Number) (b : Number)) : Number (+ a (/ b 2))) 18:36 rudybot: chandler: Done. 18:36 chandler: That's it. 18:36 flying_rhino: THANK YOU 18:38 flying_rhino: this thing has multimetods, right? 18:39 chandler: No, I don't think Typed Racket has any kind of multimethod system. 18:40 chandler: I haven't really used typed/racket though... 18:40 (join) lisp_panda 18:41 lisp_panda: sorry got disconnected 18:41 lisp_panda: does this have multimethods? 18:41 chandler: No, I don't think Typed Racket has any kind of multimethod system. 18:41 chandler: I haven't really used typed/racket though... 18:42 (join) tonyg_ 18:45 (quit) tonyg: Ping timeout: 255 seconds 18:45 (quit) flying_rhino: Ping timeout: 255 seconds 18:47 offby1: rudybot: seen jao 18:47 rudybot: *offby1: jao was seen in #racket fifty-two minutes ago, saying "heya flying_rhino", and then jao was seen in #racket fifty-one minutes ago, saying "i'm sure if not me others here will know :)" 18:48 (join) karswell 18:48 offby1: jao: ahoy! Gotta bug report for ya but the tracker on Savannah seems kinda unloved, so ...Author: Jose Antonio Ortega Ruiz 18:48 (quit) karswell__: Ping timeout: 240 seconds 18:49 (join) mceier 18:50 offby1: thank God for my accidental-paste-prevention patch! 18:52 jao: offby1, would you just send it to the list or myself, please? or if you prefer to just tell me... 18:52 (join) yoklov 18:52 offby1: went to the list. 18:52 jao: ah, thanks! 18:56 jao: offby1, argh... that's a non-trivial one... output produced asynchronously is not handled well by geiser... 19:00 chandler: non-trivial bugs are the best bugs! 19:01 offby1 holds out his hand, palm up 19:02 offby1: how does SLIME handle that? Or will I regret having asked? 19:04 chandler realizes he didn't know offby1's real name until now 19:05 jao: i think it doesn't have the same problem because the repl is not the comint repl 19:05 jao: offby1, to recover the repl: M-x comint-kill-region 19:06 chandler: Actually, that's a question I had about geiser - why do you use comint? Because it's there? Or do you have a more specific distaste for the SLIME approach? 19:06 jao: chandler, comint is pretty good at what it does and i just didn't see a reason to reinvent it 19:07 chandler: Fair enough. 19:08 jao: chandler, i almost always found a way of doing what i needed via comint, and it saved me having to define a network protocol. the latter is probably "the right way," but sometimes "worse is better" :) 19:09 offby1: jao: I'll probably never remember comint-kill-region :-| 19:10 offby1: Here's another random problem, which I won't be able to describe accurately but what the hell ... 19:10 offby1: I often find that completion hangs. 19:10 jao: offby1, yeah... i had to look for it myself :/ 19:10 offby1: never when the repl is new; but after I've used it a while ... 19:10 jao: offby1, hmmm that's much workse 19:10 offby1: chandler: uh, that's an alias that the CIA assigned to me. 19:10 jao: worse, even 19:11 jao: offby1, it'd be great to have a way to reproduce it... but then it'd be a less interesting bug! 19:13 jao: offby1, in what way does it hang? 19:13 offby1: "May you live in interesting times" etc 19:14 offby1: WHY CAN I NEVER REMEMBER THE SYNTAX FOR THE MATCH* FORMS? 19:14 (join) RPR 19:15 chandler: Because it's match*, not MATCH*. :-) 19:15 offby1: Oh, and usually when I kill the repl buffer in frustration, I get a prompt asking me to choose a coding system. 19:15 offby1: whiskey tango foxtrot, if you know what I mean 19:17 (quit) mceier: Quit: leaving 19:18 jao: oh, really? 19:18 jao: how lame :( 19:19 offby1: (actually, two such prompts) 19:19 offby1: it might be the *Warnings* buffer, or perhaps some idden geiser buffer 19:19 offby1: never figured out which 19:19 offby1: man, high latency and high blood-alcohol make for really bad typing 19:21 jao: offby1, i cannot reproduce it off hand, but will investigate 19:21 (quit) bluezenix: Quit: Leaving. 19:22 offby1: tx! 19:24 jao: offby1, i answered to your email including a second workaround that might be better 19:54 (quit) AlbireoX: Quit: Leaving 20:14 (quit) chemuduguntar: Read error: Connection reset by peer 20:18 (quit) karswell: Remote host closed the connection 20:18 (join) karswell 20:45 (join) jeapostrophe 20:52 (join) dnolen 20:56 (quit) masm: Quit: Leaving. 21:06 (quit) jeapostrophe: Ping timeout: 248 seconds 21:20 (join) groovy2shoes 21:20 (quit) karswell: 21:24 (nick) ChaozZBubi -> chaozzbubi 21:36 em: I speculate that a good way to learn things in general is to solve problems or create things which require understanding whatever it is one is trying to learn. I speculate this is especially true for programming languages. Therefor I suggest that someone with the requisite expertise put together a sequence of problems to be solved with Racket such that: (1) The initial problems are extremely easy. (2) The problems build upon skills acquired by solving ... 21:36 em: ... previous problems. (3) Anyone who successfully resolves all of the problems will emerge highly competent with Racket. 21:38 em: The word "challenges" can be substituted wherever the word "problems" is used above, and vice versa. 21:43 (quit) groovy2shoes: Quit: It is now safe to turn off your groovebot. 21:50 (quit) yoklov: Quit: computer sleeping 22:01 (quit) dnolen: Remote host closed the connection 22:16 (quit) ivan\: Quit: ERC Version 5.3 (IRC client for Emacs) 22:17 (join) ivan\ 22:24 (join) veer 22:32 (nick) chaozzbubi -> ChaozZBubi 22:36 (join) dsantiago 22:48 (join) jeapostrophe 22:53 (quit) jao: Ping timeout: 240 seconds 22:56 (join) yoklov 23:21 (quit) jeapostrophe: Ping timeout: 252 seconds 23:23 (join) AlbireoX 23:25 (join) francisl 23:31 (join) gatlin 23:31 (part) francisl 23:53 (join) jeapostrophe 23:56 (quit) em: Ping timeout: 240 seconds 23:58 (join) em