00:02 (join) francisl_ 00:07 (quit) francisl_: Client Quit 00:13 (join) cdidd 00:18 (quit) francisl: Quit: francisl 00:20 (quit) kofno: Remote host closed the connection 00:38 (quit) samth: Ping timeout: 246 seconds 00:40 (join) francisl 00:53 (quit) jeapostr1phe: Ping timeout: 246 seconds 00:58 (quit) Agent-P: Quit: Verlassend 01:03 (join) RacketCommitBot 01:03 RacketCommitBot: [racket] plt pushed 2 new commits to master: https://github.com/plt/racket/compare/6e60fb0a1dcb...2f93e69b13e6 01:03 RacketCommitBot: racket/master 7775a30 Ryan Culpepper: fix contract mistakes 01:03 RacketCommitBot: racket/master 2f93e69 Ryan Culpepper: make file runnable on non-win32 01:03 (part) RacketCommitBot 01:05 (join) ynniv 01:08 (join) mizu_no_oto 01:11 mye: Is there any way to make a struct transparent for the defining module only? 01:11 mithos28: mye: Thats not transparent then 01:12 mithos28: what is your end goal? 01:12 (quit) mizu_no_oto: Ping timeout: 252 seconds 01:13 mye: mithos28: to write (check-equal? (the-struct (hash …) (hash …)) and have the test work 01:13 mye: that only works when the struct is transparent 01:14 mye: and for writing unit tests in a submodule it is convenient 01:14 mye: but maybe I'm doing this entirely wrong! :-) 01:15 mithos28: is the code under test? 01:15 mye: yup 01:15 mithos28: why don't you want it to be transparent 01:16 mye: mithos28: to hide that the implementation uses hash tables 01:16 mithos28: but you want to reveal that to the tests? 01:17 mithos28: How do you want equality to work for your struct? 01:17 mye: mithos28: yes, but only the tests for the functions that operate on the hash tables anyway 01:17 mithos28: outside of the the test that is 01:18 mye: mithos28: equality, hmm. To be honest, I didn't think about this 01:18 (part) sw2wolf: "ERC Version 5.3 (IRC client for Emacs)" 01:19 (quit) jao: Ping timeout: 245 seconds 01:20 mithos28: There are two options, use the #:inspector option to struct or use gen:equal+hash to define equality on your structure type 01:21 mithos28: what is your structure? 01:23 mye: mithos28: three hash tables that index a triple store (subject predicate object). They need to be kept in sync for the indexing. 01:23 mithos28: so two of your structures are equal if and only if their hash tables are equal? 01:23 mye: I guess equality would just use the struct instance comparison, all my function functionally extend the graph 01:24 mye: mithos28: yes 01:24 (quit) Shvillr: Read error: Connection reset by peer 01:24 (join) Shvillr 01:24 mithos28: then I would recommend the gen:equal+hash method 01:24 mye: mithos28: ok, thanks I'll look into it 01:27 (quit) cdidd: Read error: Connection reset by peer 01:33 (quit) SunMoonStar: Ping timeout: 246 seconds 01:37 (join) k0001_ 01:39 (quit) francisl: Quit: francisl 01:40 (quit) k0001: Ping timeout: 260 seconds 01:48 (quit) majoh: Ping timeout: 245 seconds 01:48 (join) axiom 02:09 (join) Mustaqeem 02:09 Mustaqeem: hi 02:09 mithos28: Mustaqeem: Hello 02:09 Mustaqeem: hello 02:11 mithos28: Mustaqeem: Did you have a question? 02:11 Mustaqeem: yes 02:11 Mustaqeem: actually 02:11 Mustaqeem: i want to draw call graph of racket program 02:11 Mustaqeem: but i am unable to draw 02:12 Mustaqeem: how can i draw the call graph? 02:12 Mustaqeem: plz, help me 02:12 mithos28: do you have the call graph? 02:13 Mustaqeem: no 02:13 Mustaqeem: i want to draw it by giving a program to it 02:14 mithos28: So first you are going to need to compute the call graph of a program 02:14 Mustaqeem: i am using this 02:14 Mustaqeem: http://docs.racket-lang.org/profile/index.html?q=profile#(mod-path._profile) 02:14 Mustaqeem: profile module 02:15 Mustaqeem: is it the right way? 02:15 mithos28: maybe 02:15 mithos28: It depends on what you want by call graph 02:15 Mustaqeem: but it doesn't draw the graph 02:16 Mustaqeem: i want to draw it graphically 02:16 Mustaqeem: using graphviz 02:16 mithos28: do you get the graphviz output? 02:17 Mustaqeem: no 02:17 mithos28: what output do you get? 02:17 Mustaqeem: there is some error 02:17 mithos28: can you paste that somewhere 02:17 Mustaqeem: it didn't generate any ouput 02:18 Mustaqeem: u are asking for code? 02:18 mithos28: I'm asking for the error message you are getting 02:19 Mustaqeem: 1 min 02:19 (join) soegaard 02:23 Mustaqeem: it is giving following error msg "/: division by zero" 02:23 mithos28: can you paste the full error? 02:24 (quit) ynniv: Quit: ynniv 02:24 Mustaqeem: this is the full error message 02:25 mithos28: are you running in drracket? 02:25 Mustaqeem: yes 02:26 mithos28: click on the red thing that is next to the error to get the full context of the error 02:28 Mustaqeem: same is written there 02:28 mithos28: I'm not sure whats going wrong 02:28 mithos28: You might have better luck on the mailing list 02:29 Mustaqeem: if you have any example of rendering call-graph 02:29 Mustaqeem: then plz give me 02:29 mithos28: I have never used it 02:30 Mustaqeem: ok 02:30 (quit) soegaard: Quit: soegaard 02:30 Mustaqeem: 1 more question 02:30 Mustaqeem: what is safe operation in future? 02:31 (join) mceier 02:32 mithos28: an operation which can be scheduled concurrently 02:33 Mustaqeem: ok, have u any future example? 02:34 mithos28: http://docs.racket-lang.org/guide/performance.html?q=safe#(part._effective-futures) 02:35 Mustaqeem: how to check whether it is utilizing all cpu cores? 02:41 Mustaqeem: ?? 02:41 (quit) jackhammer2022: Quit: Textual IRC Client: http://www.textualapp.com/ 02:48 (join) sw2wolf 02:50 (quit) jonrafkind: Ping timeout: 260 seconds 02:59 (join) hkBst 03:03 (quit) Mustaqeem: Ping timeout: 245 seconds 03:09 (quit) spiderweb: Ping timeout: 260 seconds 03:12 (quit) wedgeV_: Read error: Operation timed out 03:18 (quit) Kaylin: Read error: Connection reset by peer 03:21 (part) sw2wolf: "ERC Version 5.3 (IRC client for Emacs)" 03:38 (nick) axiom -> majoh 03:39 (quit) walter: Read error: Connection reset by peer 03:39 (join) walter 04:13 (join) bitonic 04:17 (quit) JStoker: Excess Flood 04:23 (join) JStoker 04:25 (quit) JStoker: Excess Flood 04:43 (join) JStoker 05:04 (join) niels1 05:09 (join) MightyFoo 05:21 (quit) mye: Quit: mye 05:38 (join) Mustaqeem 05:41 (join) masm 05:43 (quit) eli: Ping timeout: 252 seconds 05:45 (join) sw2wolf 05:51 (quit) k0001_: Read error: Operation timed out 05:57 (quit) Mustaqeem: Ping timeout: 245 seconds 06:31 (quit) mceier: Quit: leaving 06:42 (quit) bitonic: Ping timeout: 244 seconds 06:54 (quit) sw2wolf: Quit: Leaving 06:54 (quit) ormaaj: Remote host closed the connection 06:55 (quit) groms: Quit: WeeChat 0.4.0-dev 06:55 (join) ormaaj 07:00 (join) grrossi 07:00 grrossi: Hey guys 07:00 grrossi: How do i change one element of a list? 07:05 (join) ncw 07:16 grrossi: Is there anyone out there? 07:19 (join) torog 07:20 (join) cdidd 07:20 torog: hey there 07:21 torog: i would like to define an order relation in racket 07:23 (join) kofno 07:23 torog: i want something like (define < ('a 'b 'c) ('d 'e 'f) ('foo 'bar)) --> so that it's essential aa 07:26 (join) carleastlund 07:26 torog: the order is not total 07:29 grrossi: (cond [ (> (- (pos a) (pos foo)) 1) #f) ] 07:29 grrossi: Just check is the distance is more than 1 07:29 grrossi: And return false in that case 07:29 (join) Aune 07:36 grrossi: rudybot: (andmap symbol? '('q1 'q2 'q3)) 07:36 rudybot: grrossi: your sandbox is ready 07:36 rudybot: grrossi: ; Value: #f 07:37 grrossi: What am i doing wrong in here? Shouldn't this be #t? 07:38 grrossi: rudybot: (andmap symbol? (list 'q1 'q2 'q3)) 07:38 rudybot: grrossi: ; Value: #t 07:41 niels1: the former query had superfluous quotations (on the q* symbols) 07:41 torog: is there a short notation for: 07:41 torog: (define (> a b) (cond ((and (eqv? a 'foo) (eqv? b 'bar)) #t) ((and (eqv? a 'one) (eqv? b 'two)) #t) (else #f))) 07:42 torog: return #t if (a,b) = [list of feasible tuples] 07:44 grrossi: You can (define-struct pair (first second)), create a list of this and check if (a b) is inside 07:55 torog: yeah 07:56 torog: but i think, i will use (cons a b) and real pairs inside the list 08:05 (join) netrino 08:08 (quit) torog: Ping timeout: 256 seconds 08:14 (join) jeapostrophe 08:14 (quit) jeapostrophe: Changing host 08:14 (join) jeapostrophe 08:17 (join) dzhus 08:23 (join) mizu_no_oto 08:34 grrossi: rudybot: (eqv? (list 'q0) (list 'q0)) 08:34 rudybot: grrossi: ; Value: #f 08:44 (join) lusory 08:44 (quit) cky: Read error: Operation timed out 08:45 (quit) Raynes: Ping timeout: 245 seconds 08:47 (join) Raynes 08:50 (join) bitonic` 08:52 (quit) bitonic: Ping timeout: 260 seconds 08:52 (join) RacketCommitBot 08:52 RacketCommitBot: [racket] plt pushed 6 new commits to master: http://git.io/A_w2eA 08:52 RacketCommitBot: racket/master 610587b Matthew Flatt: raco pkg install: change inference of package sources... 08:52 RacketCommitBot: racket/master 88a729d Matthew Flatt: setup/setup: a keyword-based API for running `raco setup'... 08:52 RacketCommitBot: racket/master abe4c11 Matthew Flatt: make `raco pkg install' call `raco setup' via `setup/setup'... 08:52 (part) RacketCommitBot 08:56 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 08:59 (join) cky 09:01 (join) dca- 09:02 (quit) kofno: Remote host closed the connection 09:08 (join) kofno 09:09 (join) myx 09:15 (quit) bitonic`: Ping timeout: 246 seconds 09:17 (join) torog 09:18 (join) francisl 09:20 (join) RacketCommitBot 09:20 RacketCommitBot: [racket] plt pushed 4 new commits to master: http://git.io/UWar_g 09:20 RacketCommitBot: racket/master 889f159 J. Ian Johnson: Singleton optimization for sequences that would allocate. 09:20 RacketCommitBot: racket/master 6bfc03d Matthew Flatt: add tests for `in-list', `in-mlist', and `in-set' shortcut 09:20 RacketCommitBot: racket/master d6b0dfc Sam Tobin-Hochstadt: Switch to use almost-standard DOCTYPE for Scribble.... 09:20 (part) RacketCommitBot 09:24 (quit) francisl: Quit: francisl 09:25 (join) soegaard 09:31 (join) hash_table 09:36 (quit) hash_table: Ping timeout: 260 seconds 09:40 (quit) ncw: Remote host closed the connection 09:42 (join) ncw 09:44 (join) RacketCommitBot 09:44 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/92UcbQ 09:44 RacketCommitBot: racket/master b84b634 Matthew Flatt: meta/planet2: fix module broken by removing a file... 09:44 (part) RacketCommitBot 09:58 (join) mizu_no_oto 10:02 (join) nathanpc 10:04 (quit) niels1: Quit: WeeChat 0.3.8 10:04 (quit) nathanpc: Client Quit 10:06 (quit) ncw: Remote host closed the connection 10:14 (quit) jeapostrophe: Ping timeout: 264 seconds 10:17 (join) francisl 10:18 (join) mceier 10:28 (join) bitonic` 10:37 (join) hash_table 10:39 soegaard: Is there a keyboard shortcut for "hide the blue square in the upper right corner" in DrRacket? 10:39 soegaard: F2! 10:43 (join) RacketCommitBot 10:43 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/GooMRQ 10:43 RacketCommitBot: racket/master a45f94b Robby Findler: adjust the anchor message, keyboard recording message, and overwrite... 10:43 RacketCommitBot: racket/master 993cd40 Robby Findler: Adjust DrRacket so the window can get narrower... 10:43 (part) RacketCommitBot 11:08 (join) jeapostrophe 11:08 (quit) jeapostrophe: Changing host 11:08 (join) jeapostrophe 11:15 (quit) torog: Ping timeout: 256 seconds 11:15 (quit) jrslepak: Quit: What happened to Systems A through E? 11:16 (join) mye 11:23 dca-: how can i get TR type of function in interpreter? 11:23 dca-: oh i see. just by it's symbol name 11:29 asumu: There's also (:print-type ...) 11:32 dca-: ok 11:32 dca-: i can't get that simple function to typecheck: pastebin.com/y1MM50fi 11:32 dca-: any ideas? 11:39 (quit) MightyFoo: Quit: night nigh! 11:43 (quit) hkBst: Quit: Konversation terminated! 11:43 stamourv: dca-: Since you `apply' `func', it won't take a list of arguments. 11:44 stamourv: It should work if you remove the `apply', assuming that the behavior you want is what you wrote in the type. 11:45 stamourv: If you really want the behavior that `apply' gives you, try the following type: 11:46 stamourv: rudybot: (: make-n-func ((Number * -> (Listof Number)) Integer -> ((Listof Number) -> (Listof Number)))) 11:46 rudybot: stamourv: your sandbox is ready 11:46 rudybot: stamourv: error: #:1:26: ->: bad syntax in: -> 11:46 stamourv: rudybot: init typed/racket 11:46 rudybot: stamourv: your typed/racket sandbox is ready 11:46 stamourv: rudybot: (: make-n-func ((Number * -> (Listof Number)) Integer -> ((Listof Number) -> (Listof Number)))) 11:46 rudybot: stamourv: Done. 11:46 stamourv: rudybot: (define (make-n-func func n) (lambda: ([args : (Listof Number)]) (apply func (take args n)))) 11:46 rudybot: stamourv: Done. 11:46 stamourv: rudybot: (make-n-func + 4) 11:46 rudybot: stamourv: error: #:1:13: Type Checker: Expected (Complex * -> (Listof Complex)), but got (case-> (Zero Zero -> Zero) (One Zero -> One) (Zero One -> One) (Positive-Byte Zero -> Positive-Byte) (Zero Positive-Byte -> Positive-Byte) (Byte Zero -> Byte) (Zero Byte -> Byte) (Positive-Index Zero -> Positive-Index) (Zero Positive-Index -> Positive-Index) (Index Zero -> Index) (Zero Index -> Index) (Positive-Fixnum Zero -> 11:47 stamourv: rudybot: (make-n-func list 4) 11:47 rudybot: stamourv: ; Value: # 11:47 rudybot: stamourv: ; stdout: "- : ((Listof Complex) -> (Listof Complex))\n" 11:47 stamourv: rudybot: ((make-n-func list 4) (range 7)) 11:47 rudybot: stamourv: error: #:1:23: Type Checker: untyped identifier range imported from module in: range 11:47 stamourv: rudybot: ((make-n-func list 4) '(1 2 3 4 5 6)) 11:47 rudybot: stamourv: ; Value: (1 2 3 4) 11:47 rudybot: stamourv: ; stdout: "- : (Listof Complex)\n" 11:48 stamourv: offby1: Did you try 5.3.1 for rudybot? 11:57 dca-: stamourv: thanks. 11:57 dca-: stamourv: does * stand for varying number of arguments ? 11:57 stamourv: Yes. 11:58 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 12:00 (join) anRch 12:02 greghendershott: sorry for the noise but I'm just testing something IRC-related; please disregard :) 12:02 (quit) noelw: Read error: Connection reset by peer 12:04 (join) noelw 12:07 (quit) em: Ping timeout: 264 seconds 12:10 (join) em 12:10 (quit) walter: *.net *.split 12:11 (join) walter 12:21 (quit) francisl: Quit: francisl 12:32 (quit) Shambles_: Quit: Leaving. 12:32 (join) Shambles_ 12:34 (join) Blkt 12:35 (quit) anRch: Quit: anRch 12:36 (join) francisl 12:39 (join) SunMoonStar 12:45 (join) mizu_no_oto 12:49 (join) jrslepak 12:51 (join) dyoo 12:53 (join) Mustaqeem 12:57 Mustaqeem: hello everyone 12:57 Mustaqeem: Does anyone knows 12:57 Mustaqeem: how to use "(require profile/render-graphviz)" 12:58 Mustaqeem: plz help me 12:59 Mustaqeem: plz 12:59 Mustaqeem: plz 12:59 dyoo: mustaqeem: sorry, I haven't played with render-graphviz yet, and I'm slightly busy at the moment :( 12:59 Mustaqeem: ok dyoo 13:00 Mustaqeem: anyone else 13:00 Mustaqeem: plz help me 13:01 dyoo: mustaqeem: you probably don't need to plead for help; if people see the question and know how to answer, they will. IRC is a bit asynchronous, so you might not get an answer in the next few minutes. 13:01 dyoo: you might also try sending a message to the Racket Users mailing list; folks there may be able to help too. The mailing list is at: http://lists.racket-lang.org/users/ 13:02 Mustaqeem: ok dyoo 13:02 dyoo: I really wish I could help right now, but I'm in the middle of studying… or should be… :) 13:04 Mustaqeem: its ok 13:06 Mustaqeem: reply on mailing list when u get time 13:12 (quit) ijp: Quit: The garbage collector got me 13:17 (join) nathanpc 13:20 (join) jonrafkind 13:20 (quit) jonrafkind: Changing host 13:20 (join) jonrafkind 13:24 (quit) francisl: Quit: francisl 13:24 Mustaqeem: how to use "(require profile/render-graphviz)"? 13:28 Mustaqeem: ???????????????/ 13:30 (join) samth 13:30 (quit) samth: Changing host 13:30 (join) samth 13:31 (quit) Aune: Quit: Hath Deprated 13:34 (quit) Mustaqeem: Quit: Page closed 13:36 (join) francisl 13:39 (join) jao 13:39 (quit) jao: Changing host 13:39 (join) jao 13:41 asumu: 'gibberish' is a good name for an XMPP library 13:42 (join) pono 13:45 (quit) dzhus: Remote host closed the connection 13:48 (quit) Demosthenex: Ping timeout: 255 seconds 13:50 (join) Demosthenex 13:53 asumu: Anyone know what the right debugging steps are when your scribble document has an "undefined tag" warning? 13:53 asumu: It's causing a rendering error later in the build process. 13:55 danl-ndi: [exit] 13:55 danl-ndi: heh 13:55 (quit) danl-ndi: Quit: leaving 13:55 soegaard: asumu: Do you know the tag? 13:56 asumu: They're tags like "(mod-path "data/heap/skew-binomial")" from a planet package I'm maintaining. 13:56 asumu: It's odd because I @defmodule these paths, but don't refer to them anywhere else. 13:56 soegaard: Hmm. Not as simple as the case I had in mind. 13:57 (join) anRch 14:00 soegaard: Do you use defmodule more than once in a section? 14:00 asumu: Hmm. No, I don't think so. 14:01 (quit) masm: Ping timeout: 246 seconds 14:01 asumu: Yeah, it doesn't look like it. Each section has a single use, and they're included into the main document with @include-section. 14:01 (join) masm 14:03 asumu starts commenting things out until things work 14:04 soegaard: Always a good plan. 14:05 jonrafkind: debugger -> printf -> random commenting 14:10 (join) MayDaniel 14:11 soegaard: asumu: Shouldn't you use "data/..." rather than data/... in the demodule expression? 14:12 asumu: I think it's a symbolic path, not a string there. I think I may have figured it out though... (we'll see after thsi build) 14:14 soegaard: My thinking was that data/ refers to the data collection and "data/..." to a local directory. 14:20 mye: when was the ffi/unsafe library introduced? It seems to me that the bindings for librdf (https://bitbucket.org/nxg/racket-librdf) doesn't use the ffi 14:21 soegaard: A long while ago. 14:21 mye: Is there a good reason not to use it for some C libraries? 14:22 mye: (I just skimmed the bindings, I don't understand how they work). 14:24 soegaard: Not normally. 14:24 mye: It seems to redefine the librdf interface in a pseudo-C dialect which is the preprocessed to produce the bindings :O 14:25 (join) k0001 14:26 (quit) karswell: Read error: Operation timed out 14:26 asumu: Hah. My guess would've been it used SWIG, since that supports Racket. 14:26 asumu: Though I don't know if the SWIG interface has bitrotted. 14:27 asumu: Also, I'm pretty sure my doc problem was that my @defmodule was before my @title. 14:27 asumu: For some reason, this ends up producing odd warnings instead of erroring. 14:27 soegaard: Odd. 14:30 soegaard: mye: Try mailing Norman. 14:31 soegaard: Maybe he is planning to reuse the bindings in another Scheme. 14:32 (join) karswell 14:35 mye: soegaard: I just learned about raco ctool which explains how they work 14:35 mye: I didn't know there was something other than ffi/unsafe 14:39 soegaard: Okay, that explains how it works. 14:45 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 14:57 (join) r0p 15:12 (quit) anRch: Quit: anRch 15:16 (join) ijp 15:31 (join) mizu_no_oto 15:39 (join) k0001_ 15:43 mye: "We have designed and implemented four variants of the class system, and we have re-implemented DrScheme [13]—a substantial application of close to 200,000 lines of PLT Scheme code—in terms of this class system as many times." :O 15:43 (quit) k0001: Ping timeout: 256 seconds 15:46 asumu: mye: is that from the DrScheme paper? 15:46 mye: http://www.cs.utah.edu/plt/publications/aplas06-fff.pdf 15:46 asumu: Oh the class system paper. 15:46 mye: it doesn't mean 800000 LOC to test class systems right? 15:47 asumu: I think that means that the class system has evolved through 4 major revisions. 15:47 asumu: And DrRacket was re-written to suit it every time. 15:47 asumu: You can see vestiges of this in mzlib/class100. 15:48 asumu: (an older class system that's deprecated) 15:48 asumu: Until a few months ago, there was still code in the codebase using mzlib/class100. 15:48 (quit) bitonic`: Read error: Connection reset by peer 15:48 (join) bitonic` 15:50 mye: so far I only used (module) but now I seem to need something with more flexible interface abstractions 15:52 asumu: One option is to use generic interfaces. 15:52 asumu: You could also use classes if you need state. 15:53 asumu: (and inheritance, more importantly) 15:55 mye: I'll have to choose something, but I'm not so keen on OO design (not much experience). 15:57 mye: And somehow I adopted the mindset to not use inheritance ever (probably part is that talk of yaron minsky's Caml Trading talk) 15:58 asumu: Probably you want generic interfaces then. It's lightweight and just uses structs. 16:00 (join) masm1 16:02 (quit) kofno: Remote host closed the connection 16:03 (quit) masm: Ping timeout: 260 seconds 16:32 (quit) carleastlund: Quit: carleastlund 16:35 (join) nejucomo 16:35 nejucomo: Hi, I'm new to racket (and I've been semi-familiar with scheme for a while but never written notable software in it)... 16:35 asumu: Hi. 16:36 asumu: Welcome. 16:36 nejucomo: It appears from the user guide that it's possible to create a quarantined environment which can run untrusted code that meets some contract. 16:36 nejucomo: Is that true? 16:36 nejucomo: If so, is there an example somewhere of doing this? 16:36 asumu: There's a sandbox library, yes. I don't know about the contract bit. 16:36 nejucomo: Also, is it possible to constrain the running time (evaluation count?) and memory usage of the quarantined code? 16:36 asumu: There are some examples here: file://localhost/home/asumu/plt/racket-git/doc/reference/Sandboxed_Evaluation.html 16:37 nejucomo: Neat! 16:37 asumu: Oh shoot, bad link. 16:37 asumu: And yes on both counts, IIRC. Just a sec 16:37 asumu: http://doc.racket-lang.org/reference/Sandboxed_Evaluation.html 16:37 nejucomo: I also haven't learned about module packaging/distribution. Is there a tool for packaging/distributing/installing modules? 16:38 asumu: For memory limits, time limits, see `sandbox-memory-limit` and `sandbox-eval-limit`. 16:38 nejucomo: Excellent! 16:39 nejucomo: racket seems to have many features I've long desired in other languages. 16:39 asumu: Also, yes on packaging. There is planet.racket-lang.org. 16:39 asumu: We're currently in the process of testing its successor, Planet 2. 16:39 asumu: So you may want to wait a bit on getting too invested in Planet 1. 16:41 (quit) mizu_no_oto: Ping timeout: 252 seconds 16:43 nejucomo: I've long had a fantasy for decentralized package signing, which I want to build into a package system someday. 16:43 nejucomo: The fantasy is: code designates dependencies by a public key identifier, rather than a human-friendly name. 16:43 nejucomo: If you install a package, the installer can verify when it retrieves and installs all dependencies. 16:44 asumu: I think NixOS does something like this, but not for security. It's for rollback and stateless updates. 16:44 nejucomo: So, you must trust the author of the target package, and trust them to be competent for selecting dependencies, but you needn't trust a package repository maintainer. 16:45 asumu: (the non-human-friendly bit, not the verification bit) 16:45 (nick) nejucomo -> neju|coffee 17:00 (join) aezx 17:02 (quit) hash_table: Ping timeout: 260 seconds 17:05 (quit) soegaard: Quit: soegaard 17:07 dyoo: question: I'm staring at collects/mred/private/wxme, and there's a comment in there "Knuth-Bendix" right in the middle of the string searching algorithm. isn't this supposed to be "Knuth-Morris-Pratt" instead? 17:09 (join) RacketCommitBot 17:09 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/99rSeQ 17:09 RacketCommitBot: racket/master f2621a5 Ryan Culpepper: split off common certificate-adding code 17:09 RacketCommitBot: racket/master 10a3488 Ryan Culpepper: load certificates from macosx keychains 17:09 (part) RacketCommitBot 17:20 (quit) jrslepak: Ping timeout: 246 seconds 17:22 (join) k0001 17:25 (quit) k0001_: Ping timeout: 252 seconds 17:27 (join) jackhammer2022 17:31 (join) jrslepak 17:39 nejucomo: I'm reading the sandboxed evaluation reference, but I have two questions that might be more obvious to this channel: 17:39 nejucomo: I want to supply proxies for modules, rather than just enabling the "real" module to be required inside a sandbox. Is this possible/convenient? 17:40 nejucomo: -and, can a sandboxed environment create its own sandboxes recursively? 17:40 nejucomo continues skimming looking for those answers... 17:41 asumu: rudybot: eval (racket/sandbox) ((make-evaluator 'racket) '(+ 1 1)) 17:41 rudybot: asumu: your sandbox is ready 17:41 rudybot: asumu: error: reference to an identifier before its definition: racket/sandbox in module: 'program 17:41 asumu: rudybot: eval (require racket/sandbox) ((make-evaluator 'racket) '(+ 1 1)) 17:41 rudybot: asumu: error: simple-form-path: expected argument of type ; given: #f 17:42 asumu: rudybot: eval (require racket/sandbox) (make-evaluator 'racket/base '(+ 1 2)) 17:42 rudybot: asumu: error: simple-form-path: expected argument of type ; given: #f 17:42 asumu: Hmmm, odd. 17:43 asumu: I don't think you can make a sandbox in a sandbox, but not 100% sure. 17:44 asumu: nejucomo: and by "proxy" you mean you want (require racket/list) to, say, point to a different library you provide? 17:44 stamourv: nejucomo: The simplest way to do that, I think, would be to create an evaluator with a language (what asumu was trying to show) that only provides the things that you want to be available, and doesn't have `provide', so that no-one can require anything else from the sandbox. 17:44 asumu: (you could also parameterize `current-library-collection-paths`) 17:46 asumu: (or actually, you probably want `sandbox-override-collection-paths`) 17:46 (join) RacketCommitBot 17:46 RacketCommitBot: [racket] plt pushed 6 new commits to master: http://git.io/dDcMyg 17:46 RacketCommitBot: racket/master 7aadf33 Neil Toronto: Implemented `flmultinomial' (not accurately, but it's there); changed... 17:46 RacketCommitBot: racket/master 9249929 Neil Toronto: Documented array printing, broadcasting, and transformations 17:46 RacketCommitBot: racket/master cd002d5 Neil Toronto: Documented `math/array' folds... 17:46 (part) RacketCommitBot 17:47 nejucomo: stamourv: Either I misunderstand you or you misunderstand my desire. For example, I want untrusted code to be able to include (require socket) - yet all of the socket-related identifiers are actually proxies that the sandbox owner supplies. 17:47 (quit) mye: Quit: mye 17:47 nejucomo: -so that the sandboxed code may merrily assume it's making network connections when in reality it is not, for example. 17:48 stamourv: nejucomo: Oh, I did misunderstand. 17:48 stamourv: asumu's last suggestion is probably what you want. 17:52 asumu: rudybot: (require racket/sandbox) 17:52 rudybot: asumu: Done. 17:52 asumu: rudybot: (make-evaluator 'racket) 17:52 rudybot: asumu: error: simple-form-path: expected argument of type ; given: #f 17:52 asumu: rudybot: (make-evaluator "racket") 17:52 rudybot: asumu: error: file-or-directory-modify-seconds: `read' access denied for /mnt/rudybot/racket 17:52 asumu: Ah, there we go. 17:53 asumu: I don't know why the quoted module path doesn't work. It works in my REPL... 18:02 (quit) dyoo: Quit: dyoo 18:04 (quit) noam__: Read error: Connection reset by peer 18:04 (join) noam__ 18:05 (quit) MayDaniel: Read error: Connection reset by peer 18:12 (join) noelw_ 18:13 (quit) noelw: Read error: Connection reset by peer 18:13 (nick) noelw_ -> noelw 18:13 (quit) myx: Read error: Operation timed out 18:13 (part) r0p 18:14 (join) myx 18:18 (join) noelw_ 18:18 (nick) noelw_ -> noelw 18:20 (quit) nathanpc: Quit: Computer has gone to sleep. 18:21 (join) RacketCommitBot 18:21 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/1gp7Eg 18:21 RacketCommitBot: racket/master cf9b0f7 Burke Fetscher: Change define-relation to compile to a judgment-form, instead of a metafunction.... 18:21 (part) RacketCommitBot 18:26 (join) francisl_ 18:26 (join) noelw 18:28 (quit) noelw: Read error: Connection reset by peer 18:29 (join) noelw 18:30 (join) noelw_ 18:34 (quit) noelw: Ping timeout: 264 seconds 18:34 (nick) noelw_ -> noelw 18:38 (join) noelw_ 18:38 (nick) noelw_ -> noelw 18:39 (quit) k0001: Ping timeout: 256 seconds 18:52 (join) noelw 18:53 Cryovat: Hah 18:53 Cryovat: judgment-form sounds like something out of an rpg 18:55 (join) masm 18:55 (quit) masm1: Ping timeout: 260 seconds 18:57 (quit) noelw: Read error: Connection reset by peer 18:58 (quit) francisl: Quit: francisl 18:58 (nick) francisl_ -> francisl 18:58 (quit) noam__: Read error: Connection reset by peer 18:58 (join) noelw 18:58 (join) noam__ 18:59 (join) francisl_ 19:06 (quit) francisl_: Quit: francisl_ 19:12 (join) francisl 19:16 (quit) francisl: Ping timeout: 246 seconds 19:27 (quit) noelw: Read error: Connection reset by peer 19:27 (join) noelw 19:35 (quit) jrslepak: Ping timeout: 252 seconds 19:37 (join) jrslepak 19:37 (quit) jrslepak: Read error: Connection reset by peer 19:38 (join) jrslepak 19:38 (quit) noelw: Read error: Connection reset by peer 19:38 (quit) jrslepak: Remote host closed the connection 19:38 (join) noelw 19:39 (quit) samth: Ping timeout: 248 seconds 19:47 (quit) jeapostrophe: Ping timeout: 260 seconds 19:49 (nick) jrslepak1neu -> jrslepak_neu 19:53 (quit) Blkt: Quit: good night! 20:04 (quit) acarrico: Ping timeout: 255 seconds 20:06 (join) jeapostrophe 20:06 (quit) jeapostrophe: Changing host 20:06 (join) jeapostrophe 20:07 (join) francisl 20:08 (join) lewis1711 20:10 lewis1711: I have macro a, with syntax rule [(make-table [k v] ...) ". However, I also have another macro b to transform something *into* [k v] form. but macro a is processed before macro b. how can I change the order? does this make any sense? 20:12 jonrafkind: well you cant really do that 20:12 jonrafkind: you can sort of do it with local-expand 20:12 jonrafkind: if you local-expnad the second macro inside the first one then you can see the output of b 20:12 (join) sw2wolf 20:14 lewis1711: I will check out local expand. I only just have a slight handle on how to make small, stand alone macros, chaning them together is still mysterious 20:15 (quit) grrossi: Ping timeout: 245 seconds 20:21 (part) sw2wolf: "ERC Version 5.3 (IRC client for Emacs)" 20:24 (quit) aezx: Read error: Connection reset by peer 20:36 (join) acarrico 20:40 asumu: lewis1711: what is the use of macro b? Why not build this into macro a? 20:44 (join) Kaylin 20:53 (join) Kaylin1 20:56 (quit) Kaylin: Ping timeout: 255 seconds 21:07 (quit) jonrafkind: Ping timeout: 252 seconds 21:09 (quit) jackhammer2022: Quit: Computer has gone to sleep. 21:13 (quit) netrino: Quit: Ave! 21:20 (join) sw2wolf 21:21 sw2wolf: As we know haskell uses cabal and CL uses ASDF to mamnage a project, how about racket ? 21:21 asumu: planet.racket-lang.org 21:22 sw2wolf: thx, i will have a look at it 21:22 asumu: (Planet has been around for a while and there's a Planet 2 that is currently in beta testing) 21:23 (join) jrslepak 21:28 lewis1711: asumu: is that the way you should generally program macros? I mean with procedures you build small procedures then chain them together. but yeah I guess I could do it that way 21:33 (join) jonrafkind 21:33 (quit) bitonic`: Ping timeout: 264 seconds 21:35 (quit) lewis1711: Ping timeout: 264 seconds 21:37 sw2wolf: From RWin src, it seems there isnot indication about using planet ?https://github.com/Metaxal/RWind/ 21:38 sw2wolf: I remember each CL project has a *.asd file, and haskell project has a *.cabal file 21:39 asumu: RWind is still a prototype, so I doubt Laurent plans on putting it on PLaneT anytime soon. 21:41 (join) soegaard 21:41 sw2wolf: yes 21:41 jonrafkind: it will go on planet2 21:42 sw2wolf: Evenif it is prototype, we can still build and run it. so we can manage racket project without planet ? 21:44 jonrafkind: yea sure, its just code 21:44 jonrafkind: planet2 is mostly a wrapper around raco at this point 21:44 asumu: sw2wolf: if you read his README, it says how to install RWind. 21:45 (join) lewis1711 21:45 asumu: (using `raco link`, which is useful for Planet 2 as jonrafkind mentioned) 21:45 (quit) soegaard: Client Quit 21:46 sw2wolf: yes 21:48 sw2wolf: In haskell there is cabal tool corresponding to raco, and cabal uses a *.cabal file to manage a project. It seems raco doesnot use such a file ? 21:50 sw2wolf: If so how does raco manage the relation between files in a project ? 21:51 asumu: The planet library uses an info.rkt file that stores metadata. You don't need one if you're just using `raco link`. 21:51 asumu: The planet manual describes how it uses metadata in detail. 21:51 asumu: http://docs.racket-lang.org/planet/index.html 21:52 sw2wolf: i see now,thx 21:53 (join) kofno 21:58 (quit) SunMoonStar: Ping timeout: 246 seconds 22:07 (join) mye 22:08 (quit) masm: Quit: Leaving. 22:09 (join) masm 22:09 (quit) masm: Client Quit 22:19 (join) delf_ 22:20 delf_: Hi, beginner in Racket here, could someone give me a hand ? 22:21 asumu: delf_: sure. BTW: it's better in IRC to just ask the question. 22:21 delf_: Alright ! 22:21 delf_: Here we go : 22:21 delf_: I have this function : 22:21 (join) jackhammer2022 22:21 delf_: (define ( line n ) ( do (( i 1 ( + i 1 )) ) (( > i n ) ) ( display "*")( display " ") )) 22:22 delf_: which does : lane 4 22:22 delf_: > * * * * 22:22 delf_: line * 22:22 asumu: delf_: it's really hard to read that without indentation. Can you use a pastebin like gist.github.com? 22:22 delf_: sure 22:24 delf_: http://pastebin.com/cha2rczS 22:25 delf_: The function displays correctly until the end of the process, then I have this error : application: not a procedure; expected a procedure that can be applied to arguments 22:28 asumu: So, even without looking at the code, from the error message I can tell that you have an application of something that is not a function. 22:28 asumu: i.e., you have something like (foo ...) where 'foo' is not a function. 22:29 asumu: Also, it would help if you had some test cases. How do you expect 'histogram' to be used? 22:29 delf_: Ok so : line n displays n "*" 22:30 delf_: and histogram '( 1 2 3 ) 22:30 delf_: displays 22:30 delf_: * 22:30 delf_: * * 22:30 delf_: * * * 22:31 asumu: Yes. So if you run this in DrRacket, you can see that it highlights the true branch of your if statement in red. 22:31 asumu: (display lst) does not produce a function, so you can't apply it like ((display lst)) 22:31 asumu: Your else branch has the same problem, but it works "by accident" 22:32 asumu: Because a 'do' loop produces the value #, which actually is a function. 22:32 delf_: Ok 22:32 asumu: rudybot: (void "junk that gets thrown away") 22:32 rudybot: asumu: Done. 22:32 asumu: Like so. 22:33 asumu: Err, actually that's not true. 22:33 asumu: Hmm, the else branch should error too. 22:34 delf_: It does now :p 22:34 delf_: ( Sorry I'm really really new to Racket ) 22:34 delf_: so void is like an empty function ? 22:35 asumu: Yeah, anyway the point is that (a b c) means you're applying 'a' as a function. 22:35 asumu: 'void' is, but that's not really important. You usually don't need to use it. 22:36 asumu: You seemed to think (a b c) would sequence a, b, and c, but it doesn't work like that. 22:36 asumu: The best thing to do is use a 'cond' expression instead of 'if' and do something like this: 22:37 asumu: rudybot: (cond [#t (display "this is run") (display "line 2")] [else "unreachable"]) 22:37 rudybot: asumu: ; stdout: "this is runline 2" 22:38 asumu: This is because 'cond' has an implicit 'begin' in each branch. 'begin' allows you to sequence things. 22:38 asumu: rudybot: (begin (display "1") (display "2")) 22:38 rudybot: asumu: ; stdout: "12" 22:38 delf_: Ok i get it ! 22:38 delf_: Thanks a lot ! 22:39 asumu: You may want to read the Racket guide: http://docs.racket-lang.org/guide/index.html 22:39 asumu: It covers basic things like cond, begin, etc 22:40 delf_: Bookmarked, thanks :) 22:43 (quit) Shviller: Ping timeout: 250 seconds 22:43 (join) Shviller 22:57 (quit) myx: Read error: Operation timed out 22:59 (join) francisl_ 23:00 (quit) ChibaPet: Quit: leaving 23:14 (join) SunMoonStar 23:14 (join) k0001 23:15 (join) chrxn_ 23:19 (nick) chrxn_ -> chrxn 23:21 (quit) jao: Ping timeout: 246 seconds 23:35 (quit) SunMoonStar: Ping timeout: 260 seconds 23:36 (join) ChibaPet 23:36 (quit) ChibaPet: Changing host 23:36 (join) ChibaPet 23:37 offby1: stamourv: I don't think I've tried 5.3.1 with rudybot. Does it fix a crashing bug? 23:37 offby1: Because I can't use 5.3 -- it SIGSIGVs on startup :-( 23:37 offby1: Never had time to track it down 23:39 (quit) sw2wolf: Remote host closed the connection 23:39 (join) sw2wolf 23:40 asumu: offby1: if I clone your repo, do you think I could easily reproduce the crash? 23:41 asumu can try to track it down... segfault sounds bad 23:41 offby1: asumu: I dunno if it'll work but I'd love it if you could 23:41 asumu: rudybot: source 23:41 rudybot: asumu: git clone git://github.com/offby1/rudybot.git 23:44 (join) does-this-crash 23:44 (quit) does-this-crash: Remote host closed the connection 23:45 offby1: asumu: you start it by running "./freenode-main.rkt" 23:45 asumu: Yep, figured it out ("does-this-crash" was my instance) 23:46 asumu: So it doesn't crash on the latest git version. 23:46 lewis1711: "(let f ((ls ls))..." huh. did notknow you could do that. nor do I know what it does 23:46 asumu: I'll try it on 5.3 23:46 asumu: lewis1711: DrRacket's arrows can tell you in check syntax. 23:46 (join) does-this-crash 23:46 asumu: (show you how the binding structure works, that is) 23:47 asumu: Or do you mean the loop form of 'let'? 23:47 lewis1711: I found it in TSPL 23:47 lewis1711: in the bit about continuations 23:47 lewis1711: they do a "product" procedure 23:49 sw2wolf: (module+ main ...) is entry point of racket program ? 23:49 asumu: lewis1711: section 4.6.4 in the guide explains named lets. 23:49 asumu: sw2wolf: that is one way, yes. 23:49 offby1: rudybot can explain "lets" 23:49 offby1: rudybot: quote 23:49 rudybot: *offby1: Let's go for a ride on the love canal. 23:49 sw2wolf: there exists another way ? 23:49 (quit) francisl_: Quit: francisl_ 23:50 asumu: sw2wolf: you can define a 'main' function 23:50 asumu: offby1: rudybot seems to work for me on 5.3. 64-bit Debian box. 23:51 (quit) does-this-crash: Remote host closed the connection 23:51 sw2wolf: then (define (main ...)) and (module+ main ...) can coexist ? 23:51 asumu: sw2wolf: probably... but I don't know which one will be preferred. 23:52 sw2wolf: asumu: It is what i want knowas 23:53 asumu: I think it won't call the 'main' function unless you supply --main or explicitly call it. 23:53 asumu: I don't really see a point in defining both a main function and submodule though. 23:53 sw2wolf: yes 23:53 asumu: offby1: was it a consistent crash or random?