00:14 (quit) EmmanuelOga: Ping timeout: 244 seconds 01:07 (quit) yoklov: Quit: Leaving. 01:14 (quit) kudkudyak: Ping timeout: 245 seconds 01:31 (quit) jrslepak: Quit: Leaving 01:49 (quit) freakazoid: Quit: Computer has gone to sleep. 02:01 (quit) realitygrill: Quit: realitygrill 02:02 (join) realitygrill 02:13 (quit) jonrafkind: Read error: Operation timed out 02:25 (quit) shofetim: Ping timeout: 252 seconds 02:43 (nick) Lajla -> qfrsballsweat 03:11 (quit) Shvillr: Ping timeout: 268 seconds 03:11 (join) Shvillr 03:26 (quit) realitygrill: Quit: realitygrill 03:38 (join) Blkt 03:41 Blkt: good morning everyone 03:42 (quit) Shviller: Ping timeout: 240 seconds 03:43 (join) Shviller 03:50 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/oJfKmw 03:50 RacketCommitBot: [racket/master] New Racket version 5.2.0.7. - Eli Barzilay 04:15 (join) sindoc 04:24 (quit) tangentstorm: Ping timeout: 240 seconds 04:50 (join) tangentstorm 05:04 (quit) loz`: Ping timeout: 268 seconds 05:09 (join) loz` 05:31 (nick) chaozzbubi -> ChaozZBubi 05:39 (join) masm 06:32 (join) karswell 06:52 (join) Shvillr_ 06:53 (quit) Shviller: Disconnected by services 06:53 (nick) Shvillr_ -> Shviller 06:53 (quit) Shvillr: Ping timeout: 240 seconds 06:54 (join) Shvillr 06:54 (join) Emerick 06:57 Emerick: eli: Hello, noelw told me to speak to you regarding the subscription to the maillist, actually he sent you an email about it. I tried subscribing through google groups, and then I sent an email to the maillist but it is still on queue for the last 3 days. Thx 07:10 (nick) ChaozZBubi -> chaozzbubi 07:28 (join) EmmanuelOga 07:51 (join) ahinki 07:53 (quit) noam_: Read error: Connection reset by peer 07:54 (join) noam_ 08:35 (join) sindoc1 08:35 (quit) sindoc: Read error: Connection reset by peer 08:46 (quit) SeanTAllen: Quit: SeanTAllen 09:00 (quit) ahinki: Ping timeout: 245 seconds 09:12 (join) sindoc 09:12 (quit) sindoc1: Read error: Connection reset by peer 09:15 (join) ahinki 09:30 (join) realitygrill 09:45 RacketCommitBot: [racket] plt pushed 3 new commits to master: http://git.io/PBJG4g 09:45 RacketCommitBot: [racket/master] more cleanup of the rendering for the case when (format "~s" x) - Robby Findler 09:45 RacketCommitBot: [racket/master] missed a place to add an undatum - Robby Findler 09:45 RacketCommitBot: [racket/master] added docs for the pkg-info.ss url to planet - Robby Findler 09:56 (quit) Blkt: Quit: ERC Version 5.3 (IRC client for Emacs) 09:57 (join) yoklov 10:04 (join) Blkt 10:07 (nick) chaozzbubi -> ChaozZBubi 10:08 (nick) samth-away -> samth 10:13 (join) DeadPanda 10:16 DeadPanda: Hi, I'm working on some security policy stuff, but I'm not sure where to look for Racket libraries; are there any out there for graph drawing (i.e. the graph data structure, there's a pretty good 2D chart-plotting library included)? 10:17 samth: DeadPanda: you can use pasteboards for graph drawing, but i don't believe that there's a built-in library 10:17 samth: you might check planet for more 10:18 DeadPanda: cheers, will do - it's easier to just export the data to graphviz than writing my own, hopefully there'll be something on planet 10:43 (join) freakazoid 10:50 (join) metadave 10:51 (quit) ahinki: Quit: ChatZilla 0.9.87 [Firefox 9.0/20111206234556] 10:58 (quit) realitygrill: Read error: Connection reset by peer 10:58 (join) realitygrill 10:59 (quit) freakazoid: Quit: Computer has gone to sleep. 11:04 (join) freakazoid 11:05 (join) epsil 11:07 (join) tim-brown 11:07 tim-brown: could someone let me in to the logic of (thread-send) 11:07 tim-brown: ? 11:08 tim-brown: it returns void on success 11:08 (quit) realitygrill: Read error: Connection reset by peer 11:08 tim-brown: but invokes a fail-thunk or returns #f on failure 11:08 (join) realitygrill 11:09 tim-brown: is it normal to test against a "void" return value from a function? 11:09 offby1: well ... 11:09 offby1: seems logical to me 11:09 offby1: uh, no. 11:09 offby1: you just invoke the function and ignore the return value. 11:09 tim-brown: (if (thread-send t v #f) 'yay 'boo) 11:09 offby1: If you want to handle the case when it fails, then wrap the invocation in an exception handler 11:09 offby1: (with-handlers ([exn:fail:thread-thingy (lambda (e) 'boo)]) (thread-send t v #f) 'yay) 11:10 offby1: most racket functions indicate failure by raising an exception, and not by returning a special "oops" value 11:10 tim-brown: yeah... 11:10 offby1: that's true of most modern languages, in fact 11:10 offby1: where "modern" == "newer than C" 11:11 tim-brown: it's the option to return #f that seems a bit inconsistent 11:11 offby1: lemme read 11:11 offby1: rudybot: doc thread-send 11:11 rudybot: *offby1: your sandbox is ready 11:11 rudybot: *offby1: http://docs.racket-lang.org/reference/threads.html#(def._((quote._~23~25kernel)._thread-send)) 11:11 tim-brown: or is it the option to return #f encourages me to want to use it directly in an if/when/unless 11:12 tim-brown might just be happier with a signature of 11:12 offby1: ok, this function is giving you a choice: it works the Old Skool way by default (i.e., indicates failure by returning #f); it can return any _other_value, instead of #f, as well; _or_ it can do anything at all that you want 11:12 offby1: this is also sort of common in racket-land 11:13 tim-brown: is "void" true? 11:13 offby1: yes. 11:13 offby1: everything other than #f is tue. 11:13 offby1: true. 11:13 tim-brown: (isn't #t truer?) 11:13 offby1: you can have this function indicate failure _any_ way you want. 11:13 offby1: nope, #t is no truer than, say, 0 or "fred". 11:13 offby1: it's just there for humans reading the source code 11:13 offby1: rudybot: (not (not 3)) 11:13 rudybot: *offby1: ; Value: #t 11:14 tim-brown: it's more (boolean?) though 11:14 offby1: *shrug* 11:14 offby1: you can write code just fine without ever using #t 11:14 offby1: it's just that, if you write a function that's meant to return a boolean, it's sorta arbitrary what to return in the "not false" case. 11:15 tim-brown: so long as it's considered "not poor style" to test against/otherwise use # 11:15 (quit) realitygrill: Read error: Connection reset by peer 11:15 (join) realitygrill 11:16 offby1: I would indeed consider that poor style 11:16 offby1: a value of # pretty much means "move along, nothing to see here" 11:16 (quit) tangentstorm: 11:16 offby1: "I hadda return _something_. Are you satisfied?!" 11:17 offby1: rudybot: (thread-send (current-thread) 'zap) 11:17 rudybot: *offby1: Done. 11:17 offby1: that's # 11:17 offby1: rudybot: (void? (thread-send (current-thread) 'zap)) 11:17 rudybot: *offby1: ; Value: #t 11:17 offby1: rudybot: (false? (thread-send (current-thread) 'zap #f)) 11:17 rudybot: *offby1: ; Value: #f 11:18 offby1: rudybot: (define t (thread (lambda () 'burp))) 11:18 rudybot: *offby1: Done. 11:18 offby1: rudybot: (false? (thread-send t 'zap #f)) 11:18 rudybot: *offby1: ; Value: #t 11:18 tim-brown: that may be the logic I'm after -- the (void? (thread-send...)) 11:18 offby1: I guess that failed because the thread wasn't running. 11:18 offby1: tim-brown: well, what do you want to do it the thread-send fails? 11:18 offby1: rudybot: (when (not (thread-send t 'zap #f)) (error "Oh noes; couldn't send")) 11:18 rudybot: *offby1: That is substandard. There's nothing wrong with having an option to zap X; it's just that the default option is problematic. 11:18 offby1: heh 11:18 offby1: rudybot: eval (when (not (thread-send t 'zap #f)) (error "Oh noes; couldn't send")) 11:18 rudybot: *offby1: error: Oh noes; couldn't send 11:18 offby1: works for me 11:19 tim-brown: #f or (lambda () oh noes, indeed) 11:19 tim-brown: still doesn't addrss the style of "(when (not (void)) ...)" 11:20 tim-brown: rudybot: (void) 11:20 rudybot: tim-brown: your sandbox is ready 11:20 rudybot: tim-brown: Done. 11:20 offby1: ok, I'll address that: that's crazy 11:20 tim-brown: move along... nothing to (not) against! 11:20 offby1: (not (void)) is _always_ #f 11:20 offby1: always always always 11:20 offby1: rudybot: (not (void)) 11:20 rudybot: *offby1: ; Value: #f 11:21 offby1: always 11:21 tim-brown: how about now? 11:21 offby1 checks 11:21 offby1: yup 11:21 tim-brown: rudybot: (not (void)) 11:21 rudybot: tim-brown: ; Value: #f 11:21 tim-brown: seems so :-) 11:21 rudybot: It's true, you know 11:21 rudybot nods gravely 11:22 tim-brown: rudybot: (not) 11:22 rudybot: tim-brown: error: not: expects 1 argument, given 0 11:22 offby1: I think you're confusing the # value with "no values at all" 11:22 offby1: rudybot: (values (void) (void)) 11:22 rudybot: *offby1: Done. 11:22 offby1: rudybot: (+ (void) (void)) 11:22 rudybot: *offby1: error: +: expects type as 1st argument, given: #; other arguments were: # 11:24 offby1: Also: maybe your baby done made some other plans. 11:24 offby1 nods gravely 11:24 (quit) DeadPanda: Remote host closed the connection 11:24 tim-brown: quoi? 11:25 (quit) freakazoid: Quit: Computer has gone to sleep. 11:26 offby1: (great old Stevie Wonder song) 11:28 tim-brown: it's the "move along" part of "move along, nothing to see" that suggests that I shouldn't be touching the return value of a void function 11:29 tim-brown: (void?) seems to be a bit of a cop out to me, too! 11:29 offby1: you won't get thrown in jail if you do, but people like me will look at you funny. 11:29 offby1: seriously, what's wrong with (when (not (thread-send t 'zap #f)) (error "Oh noes; couldn't send")) 11:29 offby1: ? 11:30 tim-brown: i don't want to be looked at funny... i get enough of that when I'm not coding 11:30 tim-brown: it's the not applied to the untouchable! 11:31 tim-brown: although somehow: 11:31 tim-brown: (unless (thread-send t 'zap #f)) (error "Oh noes; couldn't send")) 11:31 tim-brown: wouldn't bother me so much 11:31 tim-brown: my little brain can cope with unless handling the #f result 11:32 tim-brown: and can forget that otherwise it would be handling a void 11:32 offby1: but what you've written doesn't tell me _why_ we couldn't send 11:32 offby1: whereas this does: (with-handlers ([exn:fail:contract? (lambda (e) (format "Oh noes: ~a" (exn-message e)))]) (thread-send t 'ping)) 11:32 offby1: rudybot: (with-handlers ([exn:fail:contract? (lambda (e) (format "Oh noes: ~a" (exn-message e)))]) (thread-send t 'ping)) 11:32 rudybot: *offby1: ; Value: "Oh noes: thread-send: target thread is not running" 11:33 offby1: you've thrown away valuable exception info 11:33 tim-brown: (although from the docs... that's the only reason why the thread-send would fail) 11:34 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/W_Z_oQ 11:34 RacketCommitBot: [racket/master] fix docs - Robby Findler 11:34 offby1: in this case, that might be so, but in general, functions don't document every possible reason they might raise an exception 11:36 tim-brown: dunno... i guess that if I *wanted* to lose that information, then: (thread-send t v (lambda () #f)) 11:37 tim-brown: would be open to me... even if #f wasn't offered as a value of fail-thunk 11:37 offby1: you could always say (lambda () #f) if that were the case. 11:37 tim-brown: (and it would also be my lookout that i'm retruning a value in a function that would otherwise be void) 11:37 Emerick: eli: are you there? 11:39 tim-brown: offby1: anyway, thanks, that's given me plenty to think about with this kind of function 11:43 (part) sindoc 11:43 (quit) epsil: Ping timeout: 240 seconds 11:55 (quit) realitygrill: Read error: Connection reset by peer 11:55 (join) realitygrill 11:59 (quit) realitygrill: Read error: Connection reset by peer 11:59 (join) realitygrill 12:05 (quit) realitygrill: Read error: Connection reset by peer 12:06 (join) realitygrill 12:18 (quit) Blkt: Remote host closed the connection 12:20 (join) nismo9132 12:21 nismo9132: i was interested in creating a program that transfers pictures from one folder location to another on the same computer. can anyone point me in the right direction as I can't seem to find anything in the help desk? 12:25 (quit) realitygrill: Read error: Connection reset by peer 12:25 (join) realitygrill 12:26 (join) jonrafkind 12:27 (quit) nismo9132: Quit: Page closed 12:27 (nick) ChaozZBubi -> chaozzbubi 12:28 samth: oh well, no patience 12:33 (quit) realitygrill: Read error: Connection reset by peer 12:34 (join) realitygrill 12:37 (nick) chaozzbubi -> ChaozZBubi 12:43 (join) shofetim 12:48 (join) freakazoid 12:51 (join) dnolen 12:54 (join) acsstudent 12:56 (quit) realitygrill: Quit: realitygrill 12:56 acsstudent: anyone know how i can move files around? i want to create a function that can move files from a camera to the computer's hdd. 12:57 jonrafkind: does the camera appear as usb mass storage? 12:57 acsstudent: yes 12:57 jonrafkind: otherwise you have to interact with the camera itself somehow, gphoto2 can do it 12:58 jonrafkind: http://docs.racket-lang.org/reference/Filesystem.html?q=move-file#(def._((quote._~23~25kernel)._copy-file)) 12:59 acsstudent: that looks very helpful. thanks! 13:00 (quit) acsstudent: Quit: Page closed 13:08 (quit) loz`: Remote host closed the connection 13:08 (join) loz` 13:35 (join) noam__ 13:35 eli: Emerick: ping 13:38 (quit) noam_: Ping timeout: 248 seconds 13:52 samth: eli: Emerick has sent a subscription request to the mailing list via google groups, and has not received a response 13:52 samth: eli: as an aside, where in the tree is the code for the search in the docs? 13:52 samth: i'd like to replicate the algorithm for drracket's auto-complete 13:53 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/6A_81A 13:53 RacketCommitBot: [racket/master] Global seed to debug fuzzer timeouts. - Sam Tobin-Hochstadt 13:57 eli: samth: That much I know, but the google groups should be open to everyone, yet subscribing to them does not make posts go through, and they should forbid posts for that reason. 13:58 eli: samth: And re the search, see "doc/search/search.js" but it's a limited search so replicating it is a bad idea. 13:58 samth: eli: what limitations are you thinking of? 13:59 eli: The kind of preferences it does not do are because it's trying to be very fast, so there's only two categories for exact matches and everything else. 13:59 samth: eli: also, you mean collects/scribblings/main/private/search.js ? 13:59 eli: (That's the source.) 13:59 eli: That's a limitation that the JS thing has that would be nice to get rid of. 14:00 samth: eli: well, there's only one kind of result for completion -- whether it's in the list or not 14:01 eli: IMO, completions should be dealt differently. 14:01 eli: One common thing to do (eg, many emacs and shell completions use it) is to break the input on word boundaries. 14:02 eli: Using non-alphabetic characters is a good place, which is what the JS thing is doing. 14:02 eli: This gets you stuff like `c-w-c-c' to expand to `call-with-current-continuation'. 14:02 samth: right, i'm already doing something like that 14:03 eli: Then you can make it even smarter by putting a break between any alphabetic character and a numeric one. 14:03 eli: This allows thing like `f3' to expand to `foo3'. 14:03 (quit) Shviller: Ping timeout: 255 seconds 14:03 eli: I have that in my zsh completion and it's very useful for filenames, probably less useful for bindings. 14:03 (join) Shviller 14:03 samth: yeah, we don't use numbers in bindings so much 14:04 samth: what i'm interested in is the weighting of matchines 14:04 samth: *matches 14:04 eli: And an even fuzzier thing which is becoming popular is to treat every character as a boundary -- which means that "str" matches like #rx".*s.*t.*r". 14:05 eli: To see one place where it's used, try my pl.barzilay.org -- it's the search box on the top right. 14:05 eli: Another place that it's used is on github -- view the project and hit t to get an input where you choose a filename this way. 14:06 eli: (At least I think that this is what they do...) 14:06 samth: also, it's good to match out of order some times 14:06 eli: Yeah, I was getting to just that -- 14:06 samth: for example, c-c-w-c should get call-with-current-continuation 14:06 samth: currently, i'm doing most of this 14:06 eli: when you have clear words, you obviously want to allow different order. 14:06 samth: i just want to find better ways of weighting the results 14:07 eli: When you have partial words (as in your example) you'd want it too, but less. 14:07 samth: hard to know the difference between real and partial words 14:07 eli: And the very fuzzy search is useful probably only when the same order is there, otherwise it'll be too wide. 14:08 eli: What I mean is that "c-c-w-c" has a bunch of \b patterns in it, but "ccwc" doesn't. 14:08 samth: also, you give different results for c/c and c-c 14:08 eli: If "you" means the javascript thing, then I won't be surprised... 14:09 eli: Like I said, it's not something to use as a role model... 14:09 eli: The problem there is much worse for reasons you shouldn't care about. 14:09 eli: For example, it searches through titles too, module names, etc; it sometimes need to prefer some manuals over others, and in some cases it should not include some manuals. 14:10 eli: IOW, it's a mess you shouldn't try to decipher, and it's irrelevant for completions anyway. 14:10 eli: Or maybe "mostly irrelevant". 14:10 (quit) yoklov: Quit: Leaving. 14:11 eli: So I think that a healthier approach is if you write *good* code that generalizes this in some sane way, and then -- when needed and/or requested and/or made possible -- make the JS mimic it. 14:12 eli: And by "*good*" what I mean is come up with some way to do all of these matches, and give them weights that make the whole thing sensible in some way. 14:12 samth: i disagree -- the behavior of c/c and c-c is just better than what i have 14:12 eli: You disagree with what? 14:12 samth: i disagree that i can't learn from the js code 14:13 eli: What does it do better? 14:13 samth: it has matches with / in it, whereas mine ignores the distinction 14:13 eli: (It's a weird disagreement -- you're saying that something that I wrote as an admitted hack is more than that...) 14:13 eli: Ah! 14:13 eli: Well, that makes sense. 14:14 samth: all i'm saying is that it's better than my hack :) 14:14 eli: You shouldn't just take "-" (or "[-/]" in this case) as a word boundary. 14:14 eli: Instead you should take it as something that is expected to actually appear in the input. 14:14 (join) noam 14:14 eli: So "f-b" should match "foo-bar" but not "foo_bar". 14:15 eli: (Of course it could match it, but that's with some significantly lower weight.) 14:15 eli: So yes, you probably would get something from looking at my regexp tweaks. 14:15 eli looks 14:17 (quit) noam__: Ping timeout: 244 seconds 14:17 eli: samth: Probably the default case under the line that says "same as the default case below". 14:18 eli: (That comment is irrelevant, btw.) 14:18 samth: what is the `x' array that's the argument to that function? 14:20 eli: I think that it's the entry to compare against. 14:20 (join) yoklov 14:21 samth: and what is it's data def? 14:21 samth: as in, why is x[3] meaningful? 14:21 eli 's still looking 14:23 eli: samth: I think that it's the index entries from the main index file. 14:23 eli: Look for "this array has an entry of four items for each index link" in the index file ("plt-index.js"). 14:23 eli: Either use the source, or make sure that you don't open it with an editor that will try to highlight it. 14:25 samth: so, x is one of the elements of the plt_search_data array? 14:25 eli: I think so. 14:25 eli: See for example in CompileTerm before that code -- it compares it with "module" which is documented in the index file. 14:27 samth: the other question that's harder for completion is how to sort partial matches 14:27 samth: b/c that's the 100% case for completion 14:28 eli: Yes, and that's where the weights should come in, I think. 14:28 danking: eli: Did you get a chance to look at https://github.com/plt/racket/pull/65 ? 14:29 eli: In a way that makes test cases important, since it will let you reply for requests to match something new, where you'll know that it makes some other match worse. 14:30 (quit) samth: Remote host closed the connection 14:31 eli: danking: I think that it's best to post it to the dev list. I don't know much about the set interface. 14:33 (join) samth 14:34 samth: eli: sorry, something strangely caused my computer to auto-restart instead of prompting me on upgrade 14:35 eli: samth: Last thing I said was: 14:35 eli: Yes, and that's where the weights should come in, I think. 14:35 eli: In a way that makes test cases important, since it will let you reply for requests to match something new, where you'll know that it makes some other match worse. 14:35 samth: right you are 14:35 samth: i need to factor the relevant code out so that i can develop it without restarting drracket every time 14:36 eli: Yeah, I'd do that also to get a reliable set of names to compare against so you don't get tests breaking when names change. 14:41 samth: yeah 14:54 danking: eli: ok, thanks. 15:04 (quit) Emerick: Ping timeout: 258 seconds 15:06 (quit) dnolen: Ping timeout: 258 seconds 15:13 (quit) yoklov: Quit: Leaving. 15:14 (quit) eli: Excess Flood 15:14 samth: something happened to eli's basement again :) 15:14 (join) eli 15:14 (part) shofetim: "ERC Version 5.3 (IRC client for Emacs)" 15:14 samth: eli: did something happen to your basement again? 15:15 samth: eli has quit (Excess Flood) 15:17 eli: Close. This was a flood in my Emacs. 15:28 (join) yoklov 15:29 (quit) ambrosebs: Ping timeout: 240 seconds 15:32 (join) sindoc1 15:33 (quit) sindoc1: Client Quit 15:34 (quit) yoklov: Quit: Leaving. 15:41 (join) yoklov 16:10 (quit) EmmanuelOga: Ping timeout: 244 seconds 16:11 (quit) metadave: Quit: Leaving 16:12 (join) kudkudyak 16:29 samth: eli: just for reference, this is the implementation i currently have: https://gist.github.com/1482979 16:34 (join) sindoc 16:36 (join) sindoc1 16:36 (quit) sindoc: Read error: Connection reset by peer 16:36 (part) sindoc1 16:39 (quit) Shviller: Ping timeout: 252 seconds 16:40 (join) Shviller 16:45 (join) dyoo 16:45 dyoo: hi everyone; does anyone know how to get scribble not to generate the version number string at the top? 16:51 samth: dyoo: i typically remove it in css 16:53 samth: also, try passing #:version #f to `title' 16:55 (join) sindoc 16:56 dyoo: Followup: unfortunately, the "#:version #f" for title does not work. I'll go for the css route next. 16:56 (join) fred 16:56 (nick) fred -> Guest9022 16:57 Guest9022: hey.. 16:57 jonrafkind: sup 16:57 Guest9022: not much 16:57 dyoo: hello! 16:58 Guest9022: does anyone knows how to work with cycles? 17:00 (quit) sindoc: Ping timeout: 248 seconds 17:00 dyoo: are you navigating a structure with cycles in it? 17:00 dyoo: or trying to print it, or...? 17:00 Guest9022: trying to create a procedure with one 17:01 Guest9022: a list 17:01 Guest9022: and a procedure that checks every element 17:01 Guest9022: to see if #t or #f 17:01 dyoo: If you know up front what the structure's going to look like, then the racket/shared library might be useful 17:01 Guest9022: where can i find that? 17:02 dyoo: give me a sec... http://docs.racket-lang.org/reference/shared.html#(form._((lib._racket/shared..rkt)._shared)) 17:02 Guest9022: i've only 3 months of scheme so far... 17:02 Guest9022: thanks, i will take a took around 17:02 eli: samth: inefficient... 17:03 eli: You should compile all regexps, and use `regexp-match-positions' instead of doing two tests for the string in the beginning or in the middle. 17:03 samth: ah, that's a good idea 17:03 dyoo: Guest9022: you might need to write functions that detect whether or not you've seen some datum before. An eq-based hash table can help with this. 17:04 (join) tpad 17:04 Guest9022: it doesnt need to check the all list 17:04 danking: How do I prevent make from building the racket docs? 17:04 eli: samth: (* 1.8 (length parts)) at the end looks wrong, since the macimum can be larger. 17:05 samth: eli: yes, the maximum is actually not a real maximum, but a heuristic 17:05 samth: it's all kind of a mess 17:05 eli: samth: (regexp-match (string-append splitters (regexp-quote r)) w) looks wrong 17:05 samth: the maximum is there to determine the cutoff for matches that are worth showing 17:06 eli: Seems better to use (regexp-match (string-append "\\b" (regexp-quote r)) w) for what you want it to do. 17:06 eli: (so "x-y-z" can get a score for "zoo" and not only for "-zoo") 17:07 dyoo: danking: do you mean: raco setup --no-docs ...? 17:09 eli: samth: Also, +inf.0 and 1000 look fishy, in such cases I think that returning more values is better than using "big steps" to keep separate levels, and hoping that the weights don't change to violate the discreteness of the steps. 17:10 Guest9022: is anyone aware of the Dijkstr algorithm? 17:10 eli: samth: And also, this does only a small part of the whole thing. You'll want to get a higher score for having all the parts in the right order, for example. 17:11 eli: (And believe me, you *will* want it, since otherwise the complaints that you'll get are pretty obvious.) 17:11 eli: And it would also be nice to do the fuzzy any-subsequence thing. 17:12 eli: And one more bit: it would be nice to specify these all separately, and then combine them all somehow, instead of lumping them all in a single function which will get very hairy very fast. 17:16 (join) anRch 17:25 (quit) tpad: Ping timeout: 258 seconds 17:26 (join) ambrosebs 17:34 dyoo: Guest9022: dijkstra, yes. It's a standard graph algorithm 17:35 (quit) Guest9022: Ping timeout: 258 seconds 17:58 (quit) dyoo: Quit: Page closed 17:58 (join) dyoo 17:59 (quit) anRch: Read error: Connection reset by peer 18:00 (join) anRch 18:00 samth: eli: i agree with all of that 18:05 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/YjEb4A 18:05 RacketCommitBot: [racket/master] make `choice-evt' take O(N) time for N arguments - Matthew Flatt 18:20 (quit) anRch: Quit: anRch 18:36 (quit) kudkudyak: Read error: Connection reset by peer 18:37 _p4bl0: I just created my first #lang 18:37 _p4bl0: yay 18:38 (join) kudkudyak 18:40 dyoo: p4b10: congrats! What language 18:45 (nick) ChaozZBubi -> chaozzbubi 18:48 (quit) dyoo: Ping timeout: 258 seconds 19:09 (quit) jonrafkind: Ping timeout: 248 seconds 19:12 (quit) yoklov: Quit: Leaving. 19:28 (join) yoklov 19:40 (quit) masm: Quit: Leaving. 19:46 (quit) yoklov: Quit: Leaving. 20:00 (join) yoklov 20:09 (quit) freakazoid: Quit: Computer has gone to sleep. 20:28 (nick) samth -> samth_away 21:02 (join) dyoo 21:07 (join) dnolen 21:09 (join) jrslepak 21:31 offby1: OK, this is gonna be inarticulate, but: I'm defining a struct and I want it to act like a dict, so I've got something like (struct tree (key value left right) #:property prop:dict (vector tree-ref)) ... 21:31 offby1: followed by (define (tree-ref ...)) ... 21:31 offby1: ... and not surprisingly, racket whines about "reference to an identifier before its definition: tree-ref" 21:32 offby1: but I sort of assume that if I move the definition of tree-ref _before_ the struct definition, it'll then whine again, since the tree-ref procedure uses some of the functions that the struct defines, like tree-key. 21:33 offby1: So I'm embarrassed to report that I cannot figure out how to break this apparent circular dependency. 21:33 offby1: I am pretty sure there's an easy way, but I haven't figured it out. 21:34 offby1: hm, I'm wrong -- moving the struct definition to the end of the file cleaned up all the warnings. 21:35 offby1: s/cleaned up all the warnings/fixed all the errors/ 21:35 offby1: Can't say I understand _why_ though. 21:37 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/Dz9vCQ 21:37 RacketCommitBot: [racket/master] tighten up the contract - Robby Findler 21:37 RacketCommitBot: [racket/master] fix a bug in the kill-safe abstraction that is designed to protect - Robby Findler 21:39 offby1: perhaps the "struct" form magically makes the identifiers visible throughout the entire module? 21:48 asumu: offby1: function definitions are in general in scope throughout the module, so that you can write mutually recursive functions. 21:49 (join) tyson1 21:49 (quit) tyson1: Client Quit 21:49 asumu: (err, they're in scope within other function bodies) 21:52 (join) tyson1 21:52 (quit) tyson1: Client Quit 21:52 (join) tyson1 21:54 (quit) tyson1: Client Quit 21:54 offby1 rubs chin 22:03 offby1: asumu: is that documented somewhere? 22:12 (join) malkomalko 22:19 (join) EmmanuelOga 22:27 (quit) EmmanuelOga: Ping timeout: 240 seconds 22:35 (quit) Shviller: Ping timeout: 252 seconds 22:35 (join) Shviller 22:49 (join) realitygrill 23:01 chandler: offby1: I'm not sure if it's documented, but it's the behavior I'd expect - how else would it behave, if not akin to `define'? 23:01 dyoo: offby1: hmm... I'm hunting through the evaluation model section in http://docs.racket-lang.org/reference/eval-model.html, but I don't see it yet... still hunting 23:02 chandler: The issue you had is not one of scope, but one of evaluation order - similar to (begin (define y x) (define x 1)) 23:06 chandler: Another solution would have been to use (lambda (your-args) (tree-ref your-args)) in the struct form instead of `tree-ref' to delay the evaluation of `tree-ref'. 23:13 dyoo: offby1: the closest I can come to this is in a paragraph of http://docs.racket-lang.org/reference/module.html. The sentence starts off "The scope of all imported identifiers covers the entire module body, as does the scope of any identifier defined within the module body...". So it's a confluence of evaluation order, as chandler says, as well as how toplevel module bindings work. 23:16 offby1: dyoo: yeah, I found the thing about scope. 23:46 (quit) malkomalko: Remote host closed the connection 23:52 (quit) dnolen: Quit: Page closed 23:53 (join) jonrafkind