00:03 (quit) PCChris: Ping timeout: 265 seconds 00:14 asumu: mithos28: do you still need it? 00:14 mithos28: asumu: Yes 00:15 asumu: I get the following output in DrRacket: (path->string (find-system-path 'collects-dir)) 00:15 asumu: "collects" 00:15 mithos28: thats what I thought 00:15 mithos28: vim people are bad at writing cross platform code 00:16 asumu: Fixing their Racket support? 00:16 mithos28: it is supposed to be "../collects" on *nix, but they set it to "collects" 00:16 mithos28: Trying to get it to work 00:17 mithos28: Currently recompiling racket without places or futures to see if that stops the segfaults 00:21 asumu is getting close to closing one soundness bug in TR 00:21 mithos28: is this the control typing one? 00:21 asumu: Nah, this is http://bugs.racket-lang.org/query/?cmd=view&pr=13123 00:22 asumu: In the process, I found that many tests were relying on bogus scoping rules for type variables... 00:22 mithos28: How are type variables scoped in TR 00:23 asumu: They're supposed to be lexically scoped. 00:24 mithos28: Does that example not work if you do alpha renaming on the type of set-x 00:24 asumu: It should work, yeah. 00:25 (part) sw2wolf: "ERC Version 5.3 (IRC client for Emacs)" 00:25 asumu: Well, by work I mean it correctly raises a type error. 00:37 mithos28: It would help if vim had been compiled with precise GC 00:38 mithos28: I think that is what fixed it 00:38 mithos28: Nevermind it got past one issue, thoug 00:40 (quit) Twey: Excess Flood 00:42 (nick) offby1 -> x---- 00:44 (quit) francisl: Quit: francisl 00:48 (join) Twey 00:52 lewis1711: http://pastebin.com/gFnbceSE so before I do more of this - is this a very silly way to build a DSL? 00:53 mithos28: I don't see how that is a dsl? 00:55 lewis1711: yeah I just read the term on a rails blog 00:55 lewis1711: or something. it's a minimal language isn't it? it has rules 00:56 mithos28: How is what you are building different than a library? 00:56 mithos28: What it looked like you had was a single function which manipulated data 00:57 lewis1711: ok, perhaps my initial question was ill-formed. Is this a silly way to... deal with events? 00:57 mithos28: seems reasonable 00:58 lewis1711: very good 01:00 (join) francisl 01:01 lewis1711: people keep talking about DSLs though. I have no clue what they mean 01:01 lewis1711: (it seems) 01:01 mithos28: Domain Specific Language 01:02 lewis1711: I got that far. isn't any program a domain specific language? once you start writing procedures and piece them together 01:02 asumu: Hmm, funny. `struct:` is actually broken and allows #:property and #:methods by accident... 01:03 mithos28: lewis1711: Sorta, there is no line when something becomes a domain specific language 01:03 mithos28: asumu: Does that mean you are fixing the bug I filed? 01:04 lewis1711: to be topical, isn't the whole struct: thing a DSL for... creating structs? structs with slight bugs :) 01:04 asumu: mithos28: nope, I just found this by accident. The math library abuses this to use struct properties in TR. 01:04 mithos28: lewis1711: I wouldn't say the struct form is a DSL but the binding forms in match would be 01:05 asumu: I would actually like #:methods support in TR, but that requires more thought & design. 01:06 (join) phirefly 01:07 phirefly: does anyone know details about special-comments? 01:07 mithos28: special-comments? 01:07 phirefly: http://docs.racket-lang.org/reference/special-comments.html 01:08 mithos28: What is your question about them? 01:08 (quit) mceier: Quit: leaving 01:09 phirefly: once ive added a special-comment at the reader layer, can I access the comment somehow? 01:10 (join) soegaard 01:10 phirefly: the docs don't give details on how special-comments are used 01:10 mithos28: use read-char-or-special 01:12 phirefly: where do i use read-char-or-special 01:14 mithos28: when reading from the port 01:14 mithos28: They may not be the solution to your problem, but I don't know that that is 01:14 phirefly: I think i'm unsure of the purpose of special-comments 01:14 mithos28: I'm just reading the docs, I don't know the design rational 01:14 mithos28: e 01:16 asumu: You can look in the collects for uses. I see a few like in the R6RS reader: https://github.com/plt/racket/blob/master/collects/r6rs/private/readtable.rkt 01:16 rudybot: http://tinyurl.com/aygvnok 01:19 phirefly: I know how it's used, I just don't know what it's for and how to access it later on 01:20 asumu: I could be wrong, but it looks like it's just meant to be a convenient way to read comments. 01:21 (quit) ormaaj: Ping timeout: 244 seconds 01:22 asumu: Possibly it helps interface with things like DrRacket's syntax coloring. 01:25 phirefly: Ive built my own reader that extracts words prefixed with @, when i execute #reader"myreader.rkt" @metadata (+ 4 5) I get 9 01:26 phirefly: I could just discard the metadata but the make-special-comment feature seems useful 01:28 (quit) spiderweb: Quit: ERC Version 5.3 (IRC client for Emacs) 01:31 (quit) soegaard: Quit: soegaard 01:33 (quit) jeapostrophe: Ping timeout: 250 seconds 01:34 (quit) kofno: Remote host closed the connection 02:04 (join) kofno 02:11 (join) mceier 02:12 (quit) kofno: Ping timeout: 240 seconds 02:19 (quit) Kaylin: Read error: Connection reset by peer 02:33 (quit) karswell: Remote host closed the connection 02:36 (quit) francisl: Quit: francisl 02:37 (quit) gridaphobe: Ping timeout: 264 seconds 02:43 (join) karswell 02:46 (join) cdidd 03:05 (join) hkBst 03:21 (quit) lewis1711: Ping timeout: 255 seconds 03:22 (join) ormaaj 03:26 (quit) jonrafkind: Ping timeout: 264 seconds 03:34 (quit) myx: Ping timeout: 276 seconds 03:34 (join) Willem 03:36 Willem: I have a question about Redex: I want to define a meta function that, given a list of pairs (let's say [(v_1 e_1), (v_2 e_2), ... (v_n e_n)] and a specific v, returns the associated e 03:36 Willem: When I use the define-metafunction and after adding a rule like this: [(event-handler ((event_x f_x) ...) event_x) f_x] 03:37 Willem: I get an error saying that the same binder has been found at different depths. Can someone point me out how to fix this? 03:54 (quit) cdidd: Ping timeout: 244 seconds 04:00 (join) bitonic 04:00 Willem: Fixed my probem! 04:05 (quit) Willem: Ping timeout: 245 seconds 04:06 (quit) bitonic: Remote host closed the connection 04:06 (join) bitonic 04:08 (join) tilde` 04:10 (join) cdidd 04:11 (quit) phirefly: Ping timeout: 245 seconds 04:20 (quit) mithos28: Quit: mithos28 04:21 (quit) jackhammer2022: Quit: Textual IRC Client: http://www.textualapp.com/ 04:31 (join) bniels 04:46 (join) sw2wolf 04:50 (quit) sw2wolf: Remote host closed the connection 05:07 (quit) karswell: Remote host closed the connection 05:09 (join) vu3rdd 05:09 (quit) vu3rdd: Changing host 05:09 (join) vu3rdd 05:09 (join) kofno 05:14 (quit) kofno: Ping timeout: 240 seconds 05:18 (join) karswell 05:40 (quit) karswell: Read error: Connection reset by peer 05:40 (quit) cdidd: Remote host closed the connection 05:50 (join) karswell 06:00 (quit) bniels: Remote host closed the connection 06:03 (join) em 06:10 (join) kofno 06:15 (quit) kofno: Ping timeout: 244 seconds 06:32 (join) bniels 06:49 (join) kofno 07:08 (quit) bitonic: Remote host closed the connection 07:09 (join) bitonic 07:13 (quit) bitonic: Ping timeout: 255 seconds 07:27 (join) nathanpc 07:28 (quit) Shviller: Read error: Connection reset by peer 07:29 (join) francisl 07:29 (join) Shviller 07:37 (join) masm 08:04 (join) mye 08:09 ambrosebs: samth: could polymorphic values in TR require a separate constructor to `All`? 08:10 (join) tilde`_ 08:11 (join) soegaard 08:11 soegaard: phirefly: Regarding special-comments. The "special" elements come from DrRacket. You can for exampleinsert a snip (e.g. an image, comment box, html box or similar) in a file and save it. When you read from the file, the snips will be read as special values. 08:11 (quit) karswell: Remote host closed the connection 08:12 (quit) tilde`: Ping timeout: 276 seconds 08:21 (join) asvil 08:22 (join) karswell 08:22 asvil: does anyone try to make racket with mingw? 08:22 asvil: the latest racket from git* 08:22 (quit) francisl: Quit: francisl 08:31 (nick) tilde`_ -> tilde` 08:48 (join) zyoung 08:58 (quit) asvil: Quit: Page closed 09:03 (join) netrino 09:06 (join) mizu_no_oto 09:15 (join) tilde`_ 09:17 (join) bitonic 09:19 (join) francisl 09:25 (quit) vu3rdd: Ping timeout: 250 seconds 09:32 (join) jeapostrophe 09:33 (quit) soegaard: Quit: soegaard 09:38 (nick) tilde`_ -> tilde` 09:40 samth: ambrosebs: i don't think they would need to 09:40 samth: the tricky part is using them, i think 09:40 samth: but i'm not sure 09:43 samth: acarrico: you need an extra ' 09:43 samth: rudybot: eval (module->exports ''#%kernel) 09:43 rudybot: samth: your sandbox is ready 09:43 rudybot: samth: ; Value: ((0 (syntax-local-lift-provide ()) (syntax-local-lift-require ()) (syntax-local-lift-module-end-declaration ()) (syntax-local-lift-context ()) (syntax-local-lift-values-expression ()) (syntax-local-lift-expression ()) (rename-transformer-target ()) (rename-transformer? ()) (make-rename-transformer ()) (set!-transformer-procedure ()) (set!-transformer? ()) (make-set!-transformer ()) (syntax-local-transforming- 09:43 rudybot: samth: ; Value#2: ((0 (#%provide ()) (#%require ()) (#%module-begin ()) (module* ()) (module ()) (#%datum ()) (#%app ()) (letrec-syntaxes+values ()) (begin-for-syntax ()) (define-syntaxes ()) (quote-syntax ()) (with-continuation-mark ()) (unquote-splicing ()) (unquote ()) (begin0 ()) (#%stratified-body ()) (begin ()) (letrec-values ()) (let*-values ()) (let-values ()) (case-lambda ()) (#%expression ()) (#%variable-reference 09:44 samth: acarrico: because the actual name of the module is '#%kernel, whereas the name of racket is just racket 09:47 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 09:50 acarrico: samth: Thank you, I don't think I ever would have noticed that if you didn't point it out. 09:50 acarrico: weird 09:53 (quit) jeapostrophe: Ping timeout: 255 seconds 09:57 samth: acarrico: module names that begin with ' are defined at the "top level", in some sense 09:58 samth: rudybot: (module m racket (define x 1) (provide x)) 09:58 rudybot: samth: Done. 09:58 samth: rudybot: (require 'm) 09:58 rudybot: samth: Done. 09:58 samth: rudybot: x 09:58 rudybot: samth: ; Value: 1 09:58 (join) mizu_no_oto 10:01 acarrico: hmm, I see. 10:02 acarrico: and the reader expands that quote? So the name is actually (quote m)? 10:08 samth: yes 10:12 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 10:32 (join) jeapostrophe 10:32 ambrosebs: samth: Maybe we always need to instantiate polymorphic values before using them. 10:32 (join) anRch 10:32 samth: ambrosebs: yes, probably 10:33 (join) Aune 10:48 (quit) jeapostrophe: Ping timeout: 260 seconds 10:54 (join) mizu_no_oto 11:00 (join) mithos28 11:04 (quit) mceier: Quit: leaving 11:07 (join) jeapostrophe 11:07 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 11:08 ambrosebs: samth: can you give an example of a type that is a subtype of (All [x] x)? 11:09 mithos28: ambrosebs: Nothing 11:09 samth: ambrosebs: well, Nothing, as mithos28 says 11:09 ambrosebs: Is that it? 11:09 (quit) francisl: Quit: francisl 11:09 samth: but that type, like Nothing, is uninhabited 11:09 ambrosebs: Right. 11:09 mithos28: (U Nothing Nothing) 11:11 ambrosebs: The polymorphic value that I'm playing with is the monadic mzero, which has type (All [a] (m a)) for some monad m. 11:11 ambrosebs: I initially assigned it the type (m Nothing). I'm not sure which is correct. 11:11 ambrosebs: (In typed clojure) 11:12 mithos28: Are you still representing m as a type function? 11:12 samth: ambrosebs: those are only the same if monads are always covariant 11:12 samth: which is probably not true 11:12 ambrosebs: yes. So far I've assumed that monads are covariant. 11:13 ambrosebs: ie. are bound by (TFn [[a :variance :covariant]] Any), which is * -> * in Haskell. 11:14 (join) mizu_no_oto 11:14 ambrosebs: So some monads aren't covariant? 11:15 (join) francisl 11:18 (quit) francisl: Remote host closed the connection 11:20 mithos28: samth: When would m a <: m b be false if a <: b? (v : m a) >>= (\ x -> (return (promote x))) should have the type m b and be equivalent to m a 11:20 (quit) hkBst: Quit: Konversation terminated! 11:20 (quit) bniels: Remote host closed the connection 11:20 (quit) anRch: Quit: anRch 11:20 samth: ambrosebs, mithos28: i think the writer monad is contravariant 11:21 mithos28: the Writer log value datatype? 11:22 mithos28: Isn't it contravariant in log and covariant in value? 11:22 samth: mithos28: yes 11:23 samth: yeah, that's the wrong example 11:23 mithos28: I think my construction shows that it is covariant 11:23 samth: but you could certainly implement a monad where `bind` stored the intermediate value in a mutable cell, for example 11:24 samth: that wouldn't (probably) follow the monad laws 11:24 samth: but that doesn't mean the typing rule is safe 11:25 (join) dnolen 11:25 mithos28: What do you mean by safe there? I thought ambrosebs is requiring monads to be covariant not assuming they are 11:26 mithos28: Thus such a broken instance wouldn't typecheck 11:26 ambrosebs: correct, I check the argument is covariant. 11:26 samth: ambrosebs: ah, ok 11:29 (join) dnolen` 11:30 ambrosebs: so (m Nothing) is the same as (All [x] x) in my case? 11:30 ambrosebs: sorry, (All [x] (m x)) 11:30 (join) MayDaniel 11:30 (quit) dnolen: Ping timeout: 255 seconds 11:31 mithos28: if you have forall a b: m a <: m b then m Nothing <: (All (a) (m a)) 11:32 mithos28: I believe you are good 11:32 ambrosebs: ah, makes sense. 11:35 (join) bniels 11:40 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 11:41 (join) mizu_no_oto 11:43 (join) mrevil 11:44 mrevil: is there a simple way to create a partial function instead of using lambda for cases like this: (ormap (lambda (m) (equal? m a)) l) 11:45 stamourv: rudybot: doc curryr 11:45 rudybot: stamourv: your sandbox is ready 11:45 rudybot: stamourv: http://docs.racket-lang.org/reference/procedures.html#(def._((lib._racket%2Ffunction..rkt)._curryr)) 11:45 stamourv: mrevil: ^ 11:46 mithos28: mrevil: Can you give a better example of what you want to do? 11:46 stamourv: rudybot: (ormap (curryr equal? 'a) '(a b c)) 11:46 rudybot: stamourv: ; Value: #t 11:46 stamourv: mrevil: ^ 11:50 mrevil: I was looking for the equivalent of clojure's partial, curryr looks like it might be it 11:51 mrevil: or even just curry 11:51 mrevil: cool, ty. 11:51 mithos28: Partial function is something different though, http://en.wikipedia.org/wiki/Partial_function 11:52 asumu: Yeah, the Haskell term is "partial application", not "partial function" http://www.haskell.org/haskellwiki/Partial_application 11:52 stamourv: What mithos28 said. You may be thinking of partial application. 11:52 stamourv: Heh. 11:53 mrevil: i think you are correct, partial application is what i needed 11:54 mrevil: TIL 11:54 stamourv: mrevil: Racket also provides nice syntax for writing curried functions. 11:54 mrevil: do tell 11:54 stamourv: rudybot: (define ((adder x) y) (+ x y)) 11:54 rudybot: stamourv: Done. 11:54 stamourv: rudybot: (define add2 (adder 2)) 11:54 rudybot: stamourv: Done. 11:54 stamourv: rudybot: (add2 5) 11:54 rudybot: stamourv: ; Value: 7 11:55 stamourv: And it works with Racket's other fancy argument features: 11:55 stamourv: rudybot: (define ((maybe-adder x #:actually-subtract? [a-s #f]) y) (+ x y)) 11:55 rudybot: stamourv: Done. 11:56 stamourv: (define sub2 (maybe-adder 2 #:actually-subtract #t)) 11:56 stamourv: rudybot: (define sub2 (maybe-adder 2 #:actually-subtract #t)) 11:56 rudybot: stamourv: error: maybe-adder: does not expect an argument with keyword #:actually-subtract; arguments were: 2 #:actually-subtract #t 11:56 stamourv: rudybot: (define sub2 (maybe-adder 2 #:actually-subtract? #t)) 11:56 rudybot: stamourv: Done. 11:56 stamourv: rudybot: (sub2 5) 11:56 rudybot: stamourv: ; Value: 7 11:56 stamourv: Oh. Forgot to implement the subtraction part. 11:56 stamourv: Anyway, you get the idea. 11:57 stamourv always makes mistakes when coding in front of an audience. 11:57 mrevil: yeah, need to spend some time going through the docs for the additional syntax and define shortcuts 11:58 stamourv: You can find most of it in the docs for `define', IIRC. 11:58 (join) anRch 11:58 stamourv: But some goodies are defined elsewhere, like `match-define'. 11:58 mrevil: cool, ty 11:58 stamourv: rudybot: (match-define (list a b c) '(1 2 3)) 11:58 rudybot: stamourv: Done. 11:58 stamourv: rudybot: a 11:58 rudybot: stamourv: ; Value: 1 12:10 (quit) karswell: Remote host closed the connection 12:12 (quit) jrslepak: Quit: What happened to Systems A through E? 12:12 (join) mceier 12:14 (quit) bniels: Ping timeout: 244 seconds 12:20 (join) karswell 12:31 (quit) anRch: Quit: anRch 12:34 (quit) bitonic: Ping timeout: 248 seconds 12:40 (quit) karswell: Remote host closed the connection 12:44 (quit) Nisstyre: Quit: Leaving 12:51 (join) karswell 13:01 (join) Nisstyre 13:05 (join) jonrafkind 13:05 (quit) jonrafkind: Changing host 13:05 (join) jonrafkind 13:19 (quit) ambrosebs: Ping timeout: 256 seconds 13:20 (join) myx 13:22 (quit) snorble_: Quit: snorble_ 13:23 (join) snorble_ 13:29 (quit) dnolen`: Remote host closed the connection 13:32 (join) Kaylin 13:36 (join) nejucomo 13:37 (join) dnolen 13:37 (join) BeLucid_ 13:38 (quit) BeLucid: Read error: Connection reset by peer 13:41 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 13:41 (join) BeLucid 13:41 (join) mizu_no_oto 13:42 (quit) BeLucid_: Read error: No route to host 13:48 (join) dyoo 13:49 (join) anRch 13:53 (join) tilde` 14:00 (join) jrslepak 14:05 (quit) mizu_no_oto: Ping timeout: 264 seconds 14:08 (join) mizu_no_oto 14:09 (quit) dyoo: Read error: Connection reset by peer 14:09 (join) dyoo_ 14:14 (quit) Kaylin: Read error: Connection reset by peer 14:15 (quit) dyoo_: Read error: Connection reset by peer 14:15 (join) dyoo 14:15 (quit) dyoo: Client Quit 14:20 (quit) acarrico: Ping timeout: 255 seconds 14:30 (join) acarrico 14:40 (quit) jaimef_: Excess Flood 14:41 (quit) mye: Quit: mye 14:42 (join) jaimef 14:42 (quit) Aune: Quit: Hath Deprated 14:47 (quit) anRch: Quit: anRch 14:48 (join) bitonic 14:49 (join) chrxn_ 14:53 (quit) chrxn: Ping timeout: 260 seconds 14:53 (nick) chrxn_ -> chrxn 14:58 (join) chrxn_ 15:02 (nick) chrxn_ -> chrxn 15:35 (join) francisl 15:42 (join) noelw 15:46 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 15:49 (join) mizu_no_oto 15:50 (quit) Okasu: Quit: Okasu 15:50 (quit) elliottcable: Quit: Lost terminal 15:50 (quit) karswell: Remote host closed the connection 15:59 (join) lewis1711 16:00 (join) soegaard 16:01 (join) karswell 16:03 (quit) dnolen: Ping timeout: 265 seconds 16:10 (quit) jonrafkind: Ping timeout: 244 seconds 16:12 (quit) karswell: Remote host closed the connection 16:20 (join) Kaylin 16:21 (quit) jeapostrophe: Ping timeout: 250 seconds 16:22 (join) karswell 16:23 (join) jonrafkind 16:27 dca: is pressing "debug" in drracket actually starts the program? 16:27 (join) elliottcable 16:28 asumu: dca: no, it should enter the debugger. 16:30 (join) jeapostrophe 16:30 (join) clements_ 16:31 (part) clements_ 16:32 (join) hash_table 16:33 (quit) nejucomo: Ping timeout: 276 seconds 16:36 (join) jbclements 16:36 (quit) jbclements: Client Quit 16:42 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 16:45 (join) jbclements 16:46 (quit) acarrico: Ping timeout: 265 seconds 16:47 (join) mizu_no_oto 16:56 (quit) spanner: Remote host closed the connection 16:58 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 16:58 (join) spanner 16:59 (join) acarrico 17:00 greghendershott: I've never quite understood the "private" subdirectory convention? 17:00 greghendershott: Prep for Planet docs explain: "By convention, the contents of any directory called "private" are considered private and should not be relied upon by external users of your package" 17:00 greghendershott: But how can a user rely on functions that I don't provide? Isn't provide sufficient? 17:01 (quit) spanner: Read error: Connection reset by peer 17:01 bartbes: it's where you put your passwords, surely 17:02 greghendershott: I put those in a file named do-not-look-here.rkt 17:04 greghendershott: Does this convention predate the module system, or, is there some other benefit I'm just not appreciating? 17:04 (quit) soegaard: Quit: soegaard 17:06 (quit) hash_table: Ping timeout: 244 seconds 17:06 (join) dnolen 17:07 (quit) kofno: Remote host closed the connection 17:08 (join) nejucomo 17:15 (join) mizu_no_oto 17:20 (quit) Kaylin: Quit: Leaving. 17:20 (quit) karswell: Remote host closed the connection 17:21 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 17:21 (quit) jbclements: Quit: jbclements 17:22 (quit) jrslepak: Quit: What happened to Systems A through E? 17:30 (join) kofno 17:31 (join) karswell 17:31 asumu: greghendershott: things in "private" *are* often provided for the use of other modules. 17:31 asumu: So technically they might be accessible. Lots of examples of this in the codebase. 17:32 asumu: It would be interesting if packages could provide more protection from this kind of thing. 17:33 greghendershott: Right I've seen that. But if a user of your module can only use what you `provide`, isn't that sufficient? I'm just trying to understand why I should move non-provided stuff into a private subdir. It seems like double-bagging. 17:33 asumu: Oh, I don't think there's any reason to move non-provided functions. 17:33 jonrafkind: i think instead of 'private' there should be a 'public' directory which is explicitly marked for public consumption, but you can still use any other module in the collection 17:34 greghendershott: Oh, wait. 17:35 greghendershott: You mean if I have some "support" module that provides things intended for use only by other modules. 17:35 greghendershott: THAT's what would go in private. 17:35 greghendershott: ^ intended for use by other modules in the library, not by users of it 17:35 (quit) lewis1711: Quit: Leaving. 17:37 greghendershott: private is a convention to do "provide-only-for-modules-in-my-collection" 17:38 greghendershott: I guess I assumed "not documented in Scribble" was the other way to indicate this. But I suppose not every collection has or needs docs. 17:39 asumu: greghendershott: yes, precisely. 17:39 greghendershott: Wow that seems so obvious now. I don't know why I didn't grok that. 17:39 greghendershott: Thanks. 17:40 (quit) karswell: Read error: Connection reset by peer 17:46 (quit) masm: Ping timeout: 260 seconds 17:49 (join) masm 17:50 (join) karswell 17:51 (quit) MayDaniel: Read error: Connection reset by peer 17:56 (join) lewis17111 18:01 (join) jrslepak 18:05 (quit) zyoung: Remote host closed the connection 18:07 (quit) tilde`: Quit: kthxbai 18:33 (quit) Nisstyre: Ping timeout: 244 seconds 18:35 (quit) lewis17111: Ping timeout: 264 seconds 18:35 (join) dnolen` 18:38 (quit) dnolen: Ping timeout: 256 seconds 18:39 (quit) bitonic: Ping timeout: 276 seconds 18:43 (quit) dnolen`: Ping timeout: 265 seconds 18:44 (join) jackhammer2022 18:46 (quit) mrevil: Quit: This computer has gone to sleep 18:51 jeapostrophe: greghendershott: asumu: jonrafkind: imho, anything documented is public and not is private and the public vs private directory should be done away with 18:52 (join) lewis1711 18:52 jonrafkind: well it would be strange to have a module that provides everything but only one thing be "public" 18:53 jonrafkind: seems anything provided becomes public, and imo nearly everything should be provided 18:53 jonrafkind: then its just a matter of saying which modules are public 18:57 (quit) jrslepak: Quit: What happened to Systems A through E? 19:01 greghendershott: For a collection that has any documentation at all, I do like that being the criteria. 19:02 (join) zyoung 19:03 greghendershott: If a library with no docs at all, well, as a user, I sort of approach that as a red flag, or maybe yellow flag WRT can I count on it 19:03 greghendershott: A lib with no docs is in a way like the whole thing is in "private". That's probably putting it too strongly, but close to that. Just me. 19:04 jonrafkind: but you would probably agree that any provided function in a module should be documented, right? 19:06 (join) masm1 19:06 (quit) masm: Ping timeout: 265 seconds 19:08 (quit) kofno: Remote host closed the connection 19:10 (join) hash_table 19:10 greghendershott: jonrafkind: sorry, had to step away 19:10 greghendershott: In a single-file collection, yes. 19:11 greghendershott: In something big, split into manageable modules for maintenance, with some internal support functions, maybe not 19:11 greghendershott: Personally I haven't done anything that big, or where I have, the "utility" functions I've thought hey I should provide/doc them in case they're handy 19:12 greghendershott: So that's why I was puzzled by the rationale for "private" subdir 19:12 greghendershott: But I understand the rationale, now. 19:12 jonrafkind: so you have public functions and utility functions both provided by the same module? 19:13 greghendershott: I might have a util.rkt with some things provided for my other modules. And I may doc them on the chance someone would find them handy 19:14 jonrafkind: well, somehow it seems like a bad idea to provide stuff that the user is never supposed to use 19:14 jonrafkind: its just polluting the namespace 19:14 greghendershott: So I haven't encountered it, but TIL the idea that there could be a "provide-ish" case 19:14 jonrafkind: so imo there should be a module that provides everything the user is supposed to use and everything in that module should be documented 19:14 greghendershott: Right but they'd have to explicitly require util.rkt. 19:14 jonrafkind: but you say util.rkt provides stuff that is public 19:15 (join) Nisstyre 19:15 (quit) hash_table: Ping timeout: 264 seconds 19:15 greghendershott: Yes, provided for implmentation of the collection. 19:15 jonrafkind: then thats fine 19:15 greghendershott: And documented in case someone requires it 19:15 jonrafkind: well if its documented then its public.. 19:15 greghendershott: But if they don't require somethign like "util.rkt", they won't get it 19:15 jonrafkind: but they could require util.rkt to get the documented things, and then they will also get undocumented things 19:16 greghendershott: In my case I've doc-d all the provided things 19:16 greghendershott: Unless you find an example where I'm lying by mistake 19:18 jonrafkind: are there things in util.rkt that aren't provided? 19:18 greghendershott: I'm just saying that I haven't really encountered the provide-ish use case that motivated ./private, but now I get why it could come up. 19:18 greghendershott: Yes 19:18 (join) bitonic 19:18 jonrafkind: ive found its easier to just provide everything all the time 19:18 jonrafkind: and then have a "user" module which explicitly chooses what things to import, then provides everything again 19:19 greghendershott: Yep. 19:19 jonrafkind: thus my 'public' instead of 'private' attitude 19:20 jonrafkind: i guess in essence its nearly the same as the private stuff, all implementation modules are private and the interface is public 19:21 greghendershott: module* is relatively new. Could that be used instead of ./private? 19:21 greghendershott: Maybe it just changes the user-discouraged thing from (require lib/private) to (require (submod …)) 19:22 jonrafkind: ive used module to keep implementation code in the same file, but that was mostly so I didnt have to put everything inside a (begin-for-syntax) 19:22 jonrafkind: i meant module* 19:23 greghendershott: I do like jeapostrophe's idea that the doc is ultimate authority on whether I can rely on something not changing or disappearing 19:23 greghendershott: I mean as a user I'd practically assume that anwyay 19:23 jonrafkind: yea i agree 19:24 bartbes: then again, if something documented can't be changed anymore 19:24 bartbes: you'll end up with win32 19:26 (quit) francisl: Ping timeout: 260 seconds 19:26 greghendershott: well Microsoft is trapped by enterprise customers and a culture of (aiming for) backward compat that is OCD 19:26 greghendershott: even if it was well-intentioned it was too much 19:27 greghendershott: Apple has seemed more likely to tell devs, yeah, sorry, you'll have to change that for it to keep working. 19:27 greghendershott: In the long run maybe that's kinder. 19:27 greghendershott: but OMG I am so not trying to get into MS v Apple here. never mind 19:30 lewis1711: racket is very much in the apple vein of things here then LOL 19:34 greghendershott: I know you said LOL but JIC my impression is actually Racket takes backward compatibility pretty seriously. 19:34 (quit) bitonic: Ping timeout: 260 seconds 19:35 lewis1711: I couldn't run stuff from a year ago due to changes in the regexp 19:35 greghendershott: At least during my couple years hands-on, and reading about past changes, and seeing how people discuss potential changes 19:35 lewis1711: that may have been before the 5.0 days though, can't remember 19:35 greghendershott: Oh, I didn't know about that as an issue. 19:38 (quit) jonrafkind: Read error: No route to host 19:38 lewis1711: it's a better situation to be in than to keep broken things forever, I guess 19:41 lewis1711 will still never like the typed racket function type syntax, however 19:46 (join) kofno 19:48 (join) mizu_no_oto 19:50 (join) Kaylin 19:51 (quit) karswell: Remote host closed the connection 19:51 (join) dyoo 19:52 (quit) mizu_no_oto: Ping timeout: 260 seconds 19:54 (quit) dyoo: Client Quit 20:01 (quit) kofno: Remote host closed the connection 20:01 (join) karswell 20:04 (join) kofno 20:12 (join) mizu_no_oto 20:16 (join) Raynes_ 20:16 (quit) karswell: Remote host closed the connection 20:18 (quit) Raynes: Ping timeout: 264 seconds 20:18 (quit) Shvillr: Ping timeout: 264 seconds 20:18 (nick) Raynes_ -> Raynes 20:18 (join) Raynes 20:18 (join) Shvillr 20:25 (quit) Kaylin: Read error: Connection reset by peer 20:26 (quit) jeapostrophe: Ping timeout: 276 seconds 20:27 (join) karswell 20:40 (quit) karswell: Remote host closed the connection 20:40 (quit) zyoung: Remote host closed the connection 20:41 (quit) netrino: Quit: Ave! 20:44 (join) zyoung 20:50 (join) karswell 20:52 (quit) nejucomo: Quit: leaving 20:58 lewis1711: should ! be used for all procedures that modify state, or only when a non-modifying one doesn't exist? 21:08 (join) bitonic 21:13 (quit) masm1: Quit: Leaving. 21:13 (join) hash_table 21:18 (quit) bitonic: Ping timeout: 264 seconds 21:41 (join) neilv 21:48 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 21:48 (join) jeapostrophe 21:48 (quit) jeapostrophe: Changing host 21:48 (join) jeapostrophe 22:03 (quit) neilv: Ping timeout: 248 seconds 22:09 (join) jrslepak 22:14 (join) monktopher 22:15 (quit) jeapostrophe: Read error: Connection reset by peer 22:15 (join) jeapostr1phe 22:17 (join) mizu_no_oto 22:20 (join) Kaylin 22:23 (join) ambrosebs 22:24 (quit) nathanpc: Quit: Computer has gone to sleep. 22:25 monktopher: Hello 22:28 offby1: it's a lie, I tell you 22:31 (join) spiderweb 22:34 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 22:35 (quit) Kaylin: Read error: Connection reset by peer 22:40 (join) francisl 22:41 (quit) monktopher: Ping timeout: 245 seconds 22:48 (quit) zyoung: Remote host closed the connection 22:48 (quit) hash_table: Ping timeout: 246 seconds 22:54 (quit) Shviller: Ping timeout: 240 seconds 22:55 (join) mye 22:55 (quit) myx: Ping timeout: 276 seconds 22:55 (join) Shviller 22:58 (quit) cataska: Quit: leaving 22:59 (quit) jackhammer2022: Ping timeout: 244 seconds 23:00 (join) jackhamm_ 23:00 (join) RacketCommitBot 23:00 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/J8O39A 23:00 RacketCommitBot: racket/master dd5b999 Matthew Flatt: fix `quasisyntax' to better preserve syntax properties... 23:00 RacketCommitBot: racket/master 00a5bf6 Greg Hendershott: Render italic and bold in Markdown.... 23:00 (part) RacketCommitBot 23:08 (join) samth_ 23:10 asumu: lewis1711: If it's in a public interface, I like the ! on everything. I usually don't care for private functions. 23:12 asumu: greghendershott: I've used submodules to do something kinda like private. The net result is pretty much the same as having a private/ directory though since anyone can require your submodule if they know its name. 23:12 (quit) samth_: Ping timeout: 245 seconds 23:12 asumu: It's just a question of if you like that code organization better than having more directories. 23:13 asumu: (which I guess depends on how much code you have in the private part) 23:14 (join) mizu_no_oto 23:15 (quit) mizu_no_oto: Client Quit 23:17 (quit) jackhamm_: Quit: Textual IRC Client: http://www.textualapp.com/ 23:18 (join) jackhammer2022 23:25 (quit) jeapostr1phe: Ping timeout: 276 seconds 23:26 (join) jeapostrophe 23:26 (quit) jeapostrophe: Changing host 23:26 (join) jeapostrophe 23:35 (join) francisl_ 23:45 (quit) francisl_: Quit: francisl_ 23:51 (join) cataska 23:57 (join) mye_ 23:59 (quit) mye: Ping timeout: 250 seconds 23:59 (nick) mye_ -> mye