00:09 (join) gridaphobe 00:17 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 00:18 (join) rmathews 00:19 (join) mizu_no_oto 00:24 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 00:36 (quit) Demosthenex: Ping timeout: 246 seconds 00:38 (join) Demosthenex 00:39 (join) Kaylin 00:51 mithos28: starmourv: ping 00:52 (quit) dca: Read error: Connection reset by peer 00:52 (join) dca 01:05 (join) samth 01:08 (quit) didi: Quit: ERC Version 5.3 (IRC client for Emacs) 01:10 (join) Kaylin1 01:11 (quit) Kaylin1: Read error: Connection reset by peer 01:13 (quit) Kaylin: Ping timeout: 240 seconds 01:24 (quit) mceier: Quit: leaving 01:25 (quit) gridaphobe: Ping timeout: 252 seconds 01:32 (join) rmathews_ 01:34 (quit) rmathews: Ping timeout: 240 seconds 01:34 (nick) rmathews_ -> rmathews 01:46 (quit) cataska: Remote host closed the connection 01:47 (join) cataska 01:52 (quit) dca: Read error: Connection reset by peer 01:53 (join) dca 02:04 (join) merijn_ 02:04 (quit) merijn: Read error: Connection reset by peer 02:21 (quit) samth: Ping timeout: 272 seconds 02:27 (join) mye 02:30 (join) mceier 02:31 (quit) mithos28: Quit: mithos28 02:58 (quit) merijn_: Ping timeout: 252 seconds 03:08 (join) hkBst 03:08 (quit) hkBst: Changing host 03:08 (join) hkBst 03:09 (quit) jonrafkind: Ping timeout: 255 seconds 03:36 (join) tilde` 03:43 (quit) hkBst: Ping timeout: 256 seconds 03:52 (join) hkBst 03:52 (quit) hkBst: Changing host 03:52 (join) hkBst 03:54 (join) merijn 03:55 (quit) tilde`: Read error: Connection reset by peer 03:56 (join) tilde` 03:57 (quit) hkBst: Ping timeout: 276 seconds 03:57 (join) hkBst_ 04:00 (quit) mye: Quit: mye 04:03 (quit) hkBst_: Ping timeout: 256 seconds 04:12 (join) hkBst_ 04:12 (quit) hkBst_: Changing host 04:12 (join) hkBst_ 04:18 (quit) hkBst_: Read error: Connection reset by peer 04:18 (join) hkBst__ 04:41 (quit) hyko: Read error: Connection reset by peer 04:42 (join) hyko 04:47 (quit) hyko: Read error: Connection reset by peer 04:48 (join) hyko 04:50 (quit) hkBst__: Read error: Connection reset by peer 04:51 (join) hkBst__ 05:10 (quit) hkBst__: Ping timeout: 245 seconds 05:10 (join) bitonic 05:18 (join) mye 05:23 (join) mye_ 05:24 (quit) mye: Ping timeout: 255 seconds 05:24 (nick) mye_ -> mye 05:27 (join) hkBst__ 05:27 (join) cdidd 05:37 (quit) hkBst__: Read error: Connection reset by peer 05:40 (join) hkBst__ 06:02 (join) MightyFoo 06:02 (nick) MightyFoo -> tim-brown 06:14 (join) mister_zombie 06:44 (join) mye 06:54 (quit) karswell: Ping timeout: 245 seconds 07:01 (join) rmathews 07:19 (join) jeapostrophe 07:19 (quit) jeapostrophe: Changing host 07:19 (join) jeapostrophe 07:38 tim-brown: is it possible to have a test sub-module in a scribble/lp literate program? i want to raco test my code! 07:52 (quit) mye: Quit: mye 07:54 (join) soegaard 08:12 (join) vu3rdd 08:12 (quit) vu3rdd: Changing host 08:12 (join) vu3rdd 08:16 (join) MightyFoo 08:16 (nick) MightyFoo -> tim-brown 08:19 (quit) hkBst__: Ping timeout: 245 seconds 08:19 (join) hkBst 08:25 (join) hkBst_ 08:25 (quit) hkBst: Read error: Connection reset by peer 08:29 (join) groovy2shoes 08:33 (quit) groovy2shoes: Client Quit 08:40 (quit) dca: Quit: ZNC - http://znc.in 08:40 (join) dca 08:41 (join) mizu_no_oto 08:42 (join) mye 08:48 (quit) dca: Read error: Connection reset by peer 08:49 (join) dca 08:50 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 08:51 (quit) dca: Read error: Connection reset by peer 08:52 (join) dca 08:53 (join) dnolen 09:00 (quit) noam__: Read error: Connection reset by peer 09:01 (join) noam__ 09:02 (quit) mister_zombie: Quit: Leaving. 09:09 (join) newblue 09:12 (join) jao 09:12 (quit) jao: Changing host 09:12 (join) jao 09:15 (quit) tilde`: Read error: Connection reset by peer 09:15 (join) mizu_no_oto 09:15 (join) tilde` 09:19 (quit) mizu_no_oto: Client Quit 09:25 (quit) tilde`: Read error: Connection reset by peer 09:25 (join) francisl 09:25 (join) tilde` 09:26 (quit) francisl: Read error: Connection reset by peer 09:26 (join) francisl_ 09:31 (quit) ijp: Ping timeout: 248 seconds 09:41 (join) didi 09:57 (join) mizu_no_oto 10:08 (join) netrino 10:11 (join) ijp 10:22 (quit) mceier: Quit: leaving 10:24 (quit) dnolen: Ping timeout: 276 seconds 10:26 (quit) Demosthenex: Remote host closed the connection 10:33 (quit) francisl_: Quit: francisl_ 10:33 (join) francisl 10:33 (join) anRch 10:34 (join) trb92 10:35 (join) dzhus 10:35 (join) hash_table 10:42 (quit) trb92: Ping timeout: 245 seconds 10:46 (join) Demosthenex 10:47 (join) stilluntrusted 10:48 stilluntrusted is searching super-fast xml<->sxml tools 10:50 (quit) jeapostrophe: Ping timeout: 252 seconds 10:50 (join) rins 10:52 asumu: stilluntrusted: try http://planet.racket-lang.org/package-source/clements/sxml2.plt/1/3/planet-docs/sxml/ssax.html 10:52 rudybot: http://tinyurl.com/beplu42 10:53 (quit) hkBst_: Quit: Konversation terminated! 10:53 asumu doesn't know about the "super-fast" bit, but that's relative 10:55 stilluntrusted: asumu: rackets sax parser was to slow for me 10:56 stilluntrusted: asumu: it was the fastest in my test but still to slow 10:56 stilluntrusted: now i want to do something like this: xml->sxml|scheme|sxml->xml 10:57 (quit) Demosthenex: Remote host closed the connection 10:58 stilluntrusted: or to be more precise: xml->sxmls|scheme|sxmls->xml (that is i really want to stream this / no dom / memory...) 10:58 asumu: You could also try http://planet.racket-lang.org/display.ss?package=libxml2.plt&owner=clements which claims to be 2x faster as SSAX. 10:58 rudybot: http://tinyurl.com/b3gwvks 10:59 stilluntrusted: asumu: thanks, will give it a try 10:59 stilluntrusted: asumu: though i am more looking for something like 10x 10:59 (quit) Fare: Ping timeout: 272 seconds 10:59 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 11:07 (join) Nisstyre-laptop 11:09 (quit) mau: Ping timeout: 276 seconds 11:14 (quit) anRch: Quit: anRch 11:15 (quit) dzhus: Quit: Yow! Legally-imposed CULTURE-reduction is CABBAGE-BRAINED! 11:19 (quit) jao: Read error: Connection reset by peer 11:21 (join) Demosthenex 11:26 (quit) netrino: Remote host closed the connection 11:28 stamourv: mithos28: pong 11:38 (join) mceier 11:38 (join) jao 11:39 (quit) jao: Changing host 11:39 (join) jao 11:49 (join) mithos28 11:49 (quit) merijn: Ping timeout: 276 seconds 11:53 (quit) dca: Read error: Connection reset by peer 11:54 (join) dca 11:55 (quit) dca: Read error: Connection reset by peer 11:56 (join) dca 11:57 (quit) Nisstyre-laptop: Ping timeout: 264 seconds 11:58 (join) carleastlund 12:01 (quit) vu3rdd: Remote host closed the connection 12:04 (join) netrino 12:05 (join) jeapostrophe 12:05 (quit) jeapostrophe: Changing host 12:05 (join) jeapostrophe 12:06 (join) mizu_no_oto 12:07 (join) Fare 12:09 (join) MayDaniel 12:14 (quit) netrino: Remote host closed the connection 12:16 (quit) Demosthenex: Ping timeout: 240 seconds 12:18 (join) Demosthenex 12:19 (quit) tilde`: Quit: brb 12:23 (quit) dca: Read error: Connection reset by peer 12:24 (join) dca 12:27 (quit) mithos28: Quit: mithos28 12:35 (join) MayDaniel_ 12:39 (quit) MayDaniel: Ping timeout: 248 seconds 12:39 (join) mithos28 12:42 (quit) Shvillr: Ping timeout: 276 seconds 12:42 (join) Shvillr 12:42 (join) RiskyBlit 12:43 RiskyBlit: hi 12:43 mithos28: RiskyBlit: Hello 12:43 RiskyBlit: what is the idiomatic way to model and check an assertion for a procedure call's return value to be of a certain type? 12:44 mithos28: RiskyBlit: I think contracts are what you want 12:44 RiskyBlit: I think so too 12:44 RiskyBlit: but the docs all talk about them at the module level 12:44 RiskyBlit: whereas I want a check in a procedure, after a call to another procedure 12:44 RiskyBlit: I'm pretty stumped there. 12:45 mithos28: Can you paste your code? 12:46 RiskyBlit: using racket/db: (let ([query-result (query "select * from table")]) #| check here for query-result to be of type rows-result |# ) 12:47 mithos28: What do you want to happen if it is a simple result? 12:47 RiskyBlit: raise an error 12:47 RiskyBlit: that is, a contract violation 12:47 mithos28: Can that ever happen? 12:48 RiskyBlit: yes -- the static string here is just an example 12:48 mithos28: ah 12:48 RiskyBlit: I'm passing through an arbitrary query string 12:48 RiskyBlit: and I can't call query-rows because I need the header data returned by query 12:48 mithos28: But who do you want to blame for providing a bad string? 12:49 RiskyBlit: the caller of my wrapper function is to blame 12:49 RiskyBlit: (I guess?) 12:49 mithos28: ok, so you want to wrap your function in a contract 12:49 mithos28: Is you function at the module level or in an internal definition? 12:50 RiskyBlit: I'm not sure if I understand that; I basically do this: 12:50 RiskyBlit: #lang racket 12:50 RiskyBlit: (require racket/db) 12:50 RiskyBlit: (define (query-rows-assoc args ...) #| rest goes here |# ) 12:50 RiskyBlit: this is at the module level then, I presume? 12:51 (quit) bitonic: Ping timeout: 240 seconds 12:51 mithos28: yep 12:51 mithos28: The issue is that telling what kind of statement a string represents is hard 12:51 RiskyBlit: yes 12:51 (quit) dca: Read error: Connection reset by peer 12:51 RiskyBlit: the natural way would be checking for the return value of query, right? 12:52 RiskyBlit: if it's of the wrong type then the query string is wrong 12:52 mithos28: Right, but getting the blame info is hard 12:52 (join) dca 12:52 (quit) soegaard: Quit: soegaard 12:54 (join) bitonic 12:54 mithos28: I would just use an if and error at this point 12:54 RiskyBlit: mithos28, maybe a question for the mailing list then? 12:54 RiskyBlit: ah, I thought we might end up at that :) 12:55 (join) RacketCommitBot 12:55 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/1gWaGg 12:55 RacketCommitBot: racket/master 4c4161c Robby Findler: guard a call to invalidate-bitmap-cache in... 12:55 (part) RacketCommitBot 12:55 mithos28: you will lose blame information, but that is standard on things like this 12:55 RiskyBlit: I'm really curious whether this can be done with contracts though 12:55 mithos28: yes, you just need to understand the syntax of the string 12:55 mithos28: and parse it, and determine what kind of things it returns 12:56 mithos28: I believe the prepared statements code can do that 12:56 RiskyBlit: that doesn't seem right to me 12:56 RiskyBlit: but I'm not sure if I understand the implications of blame correctly 12:57 RiskyBlit: ideally what I'd like to do is something like (enforce-contract (=? x 5)) after the procedure application, with x being its result 12:57 RiskyBlit: and then blame the caller, pointing him to that contract 12:58 mithos28: So you could contract query with the fact that it has to return a row-result? 12:58 RiskyBlit: does this violate some fundamental design aspect of contracts? 12:58 RiskyBlit: hrm... something like that -- obviously just in this case 12:58 RiskyBlit: what's more like it is attaching a contract to the result 12:59 RiskyBlit: since it needs to be of a certain type, and nothing else 12:59 RiskyBlit: I understand you can do something similar with structs and their slots 12:59 mithos28: Right the issue is getting the blame parties to the inner contract, because the client is not providing query 13:01 mithos28: It is possible, just not easy 13:03 RiskyBlit: in the manual I see several instances of contract violations blaming top-level 13:04 RiskyBlit: that would be enough for starters 13:04 mithos28: thats because the caller is the toplevel 13:05 mithos28: (with-contract client-blame #:result (unconstrained-domain-> row-result?) query) 13:05 mithos28: you need to replace query with something like that 13:06 (quit) didi: Ping timeout: 260 seconds 13:06 RiskyBlit: looks interesting; I guess I need to read up on what you wrote there. 13:06 carleastlund: RiskyBlit, if you're looking for ways to add contracts at boundaries other than modules, see with-contract and define/contract. Or use submodules. Bear in mind that contracts are intended as enforcement of interfaces at boundary points, and not as a more general assertion mechanism; attempting to use them as assertions inside computation may be frustrating since they were not designed with that in mind. 13:07 RiskyBlit: carleastlund, is there an idiomatic assertion mechanism? 13:08 carleastlund: I don't think so, no. Whenever possible, I prefer to move my assumptions into a contract at some appropriate boundary so that I don't need to put the logic in my functions. Otherwise, I'd just use ordinary conditionals and exceptions to write assertions. 13:09 RiskyBlit: I guess using contracts I should introduce a private wrapper around query and add contracts for it. 13:09 RiskyBlit: how's that? 13:10 mithos28: RiskyBlit: Do you need to support strings, or would prepared statements work just as well? 13:10 carleastlund: It sounds like your query function is a separate component from whatever is calling it. I'd definitely consider putting it in a separate module and adding a contract on it. That doesn't have to be a separate file, now that we have submodules. But making it a separate module really helps think of it as separate functionality. 13:10 mithos28: carleastlund: the query function is from racket/db 13:11 carleastlund: Oh, an existing query function. I see. But you want an additional test. Now I'm caught up. Hmm. 13:11 (join) RacketCommitBot 13:11 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/oINEsQ 13:11 RacketCommitBot: racket/master 6f2ff6a Matthew Flatt: web page: videos link and other small changes 13:11 (part) RacketCommitBot 13:12 RiskyBlit: carleastlund: yes, not a general test addition though. only in one special case when I call it. 13:12 (join) soegaard 13:12 carleastlund: In that case I'd do the same thing, it'd just be a very short module that re-provides the old query function with a new contract, and possibly by a new name. 13:12 RiskyBlit: sounds neat to me 13:12 mithos28: carleastlund: But that would blame the module using the query function 13:12 mithos28: not the one providing the bad query 13:13 RiskyBlit: mithos28, you're right. I haven't thought of that. 13:13 carleastlund: I see, so the issue here is that you want a contract on a query, but that query is first-order data. 13:13 carleastlund: Okay, I know how to do this -- at least, how I would -- but the answer isn't simple. :) 13:13 RiskyBlit: carleastlund, yes, but its validity can only be inferred later 13:14 RiskyBlit: carleastlund, I'm all ears. 13:14 mithos28: right, the three options I see are to parse the string and see if it is the right kind before passing it to query, only accept prepared statments which make that check simple, or complicated one off contracts with passing the blame in deep 13:16 carleastlund: I would define a query as an abstract datatype that is constructed from a string, and has an operation to retrieve the results of the query. I would write contracts on those that are implemented as wrappers which perform the necessary contract checks. Then the ordinary contract-wrapping mechanism would apply to your queries. 13:17 mithos28: The easy way to do that is with prepared-statements 13:18 mithos28: since you can check the return type of what a query of a prepared statement will return 13:19 carleastlund: If prepared statements do that, then you could certainly use a prepared statement and a flat, non-deferred contract check. My solution is written based on nearly zero knowledge of racket/db :) 13:19 mithos28: Mine is based on reading the docs right now 13:19 (quit) bitonic: Ping timeout: 245 seconds 13:19 RiskyBlit: I wouldn't want to force the callers to use prepared statements 13:19 RiskyBlit: although I can see that it is much easier to write the contract then 13:19 mithos28: rudybot: doc prepared-statement-result-types 13:19 rudybot: mithos28: your lazy sandbox is ready 13:19 rudybot: mithos28: no docs for a current binding, but provided by: db, db/base 13:20 carleastlund: You could write a contract, though, that runs "prepare" and checks the result. 13:20 mithos28: rudybot: init racket 13:20 rudybot: mithos28: your sandbox is ready 13:20 mithos28: rudybot: (require db) 13:20 rudybot: mithos28: Done. 13:20 (join) samth 13:20 RiskyBlit: carleastlund: ah? that sounds like an interesting idea. 13:20 mithos28: rudybot: doc prepared-statement-result-types 13:20 rudybot: mithos28: http://docs.racket-lang.org/db/query-api.html#(def._((lib._db%2Fbase..rkt)._prepared-statement-result-types)) 13:21 carleastlund: At least, you might be able to. If the connection argument is also something the contract would have access to. And you'd want to cache the result of prepare, so your contract didn't do it separately from the function itself. It'd be easy enough to write a memoized wrapper for prepare. 13:21 RiskyBlit: so upon function invocation the contract would run the (string) query argument through prepare and then check the result for the correct type? 13:21 mithos28: well you wouldn't need to cache it, you could just abuse the contract system to force the input to the internal part to be the prepared statement 13:22 carleastlund: mithos28, Let's not abuse the contract system in that way. For one thing, if you just use a memoized prepare, you don't have to write a custom higher-order contract, just use -> and a flat contract on the query string. 13:23 mithos28: carleastlund: True, you just need to be careful about space 13:23 carleastlund: For another, you run into trouble abusing the contract system, for instance you couldn't use any chaperone-based contracts if you changed the input like that. 13:23 (join) bitonic 13:23 carleastlund: mithos28, the magic of weak hash tables. 13:23 RiskyBlit: carleastlund, this proposal makes your solution of using an abstract datatype more attractive. but I haven't fully understood that yet. 13:24 carleastlund: RiskyBlit, the prepared statement proposal makes abstract datatypes unnecessary, in case that's not clear. 13:24 mithos28: a double layer of weak hashes from connection to string to prepared statement should work well for space correctness 13:25 RiskyBlit: carleastlund, I see. I thought you were advising to wrap the query string in an abstract data type in order to attach contracts to that. 13:25 carleastlund: Exactly. 13:25 (quit) jeapostrophe: Ping timeout: 264 seconds 13:25 (join) merijn 13:26 mithos28: except you may need ephemerons to avoid a cycle 13:26 carleastlund: RiskyBlit, When I was thinking of attaching a higher-order contract that checked the result of doing an actual query, yes. But prepared statements can be checked before running the query, so you can do an ordinary first-order check on the string and be done with it. 13:26 mithos28: I'm not sure how weak cycles work exactly 13:27 carleastlund: mithos28, Yeah, I've never been clear on whether weak tables have ephemerons built in or not. But using them doesn't hurt, except for constant factors, which can (hopefully) be worked out later. 13:27 carleastlund: For some value of "later". 13:28 carleastlund: From the documentation, I guess they don't. It's a shame, it would be nice to have the weak table + ephemeron solution as a shrink-wrapped thing to use. 13:29 mithos28: It doesn't look like you need to 13:29 mithos28: I tested with a weak box as the value, with the box holding the key 13:29 mithos28: it got removed 13:29 carleastlund: Right, but what if that were a regular box? 13:30 mithos28: and prepared statements hold on to the connection weakly 13:30 RiskyBlit: would it really be a lot more complicated to use the higher order/abstract type solution? 13:30 mithos28: carleastlund: just putting the value in directly did not get removed, a regular box should be the same as that 13:31 carleastlund: RiskyBlit, the data type, the contract, and the query-method would all have to "collude" on checking and storing the contracts. In the just-plain-strings solution, you write a one-line wrapper around prepare, then a predicate for checking strings. Much simpler. 13:32 carleastlund: mithos28, Right, okay, if it's the connection you're concerned about, then yeah, you shouldn't need an ephemeron. 13:33 RiskyBlit: carleastlund, the wrapper being the memoizer? 13:33 carleastlund: RiskyBlit, yep. 13:33 RiskyBlit: however I didn't mention yet that the connection is created locally 13:33 carleastlund: That does complicate things. 13:34 RiskyBlit: otoh it is a simple macro that could be used by the contract's prepare call as well 13:35 RiskyBlit: probably not all that expensive if connecting to an sqlite db 13:35 carleastlund: You really don't want to open and close a new connection for each contract check if you can avoid it. 13:36 RiskyBlit: carleastlund, sure. I don't suppose it is easy to shift the blame up the call stack? this would make the query wrapper solution more feasible. 13:37 carleastlund: Blame has nothing to do with call stacks. It's part of the data structure that is created when a contract gets applied to a value. 13:37 RiskyBlit: carleastlund, I see 13:39 RiskyBlit: well, this does favor using a simple (unless ... (error)) solution after all 13:40 RiskyBlit: it's not as much to the point as I would like, but most practical 13:40 RiskyBlit: and at least I know much more about contracts now 13:44 RiskyBlit: carleastlund, mithos28: thanks for your explanations and patience. 13:47 (join) tilde` 13:53 carleastlund: RiskyBlit, guess the contract solution isn't that bad after all. Here's a *completely untested* implementation: https://gist.github.com/4675692 13:55 RiskyBlit: I did notice that the db code uses a plain unless/error check 13:55 RiskyBlit: carleastlund, that code looks good. I will need to spend some time on that. 14:06 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 14:12 (join) dyoo 14:24 (join) jeapostrophe 14:24 (quit) jeapostrophe: Changing host 14:25 (join) jeapostrophe 14:38 soegaard: Does define-compile-time-module-path exist? 14:40 samth: soegaard, what would it do? 14:41 carleastlund: I'm guessing it would define a module path at compile time. 14:42 soegaard: I defined runtime-path using define-runtime-path. Then I had a tried to generate something like #`(module foo racket/base (require #,runtime-path) expr …) 14:42 soegaard: But (require …) do not accept a # 14:43 soegaard: Evetually I figured out to use lib. 14:43 (join) ryan_c 14:44 (join) gridaphobe 14:44 (quit) gridaphobe: Remote host closed the connection 14:45 (join) gridaphobe 14:45 (quit) mye: Quit: mye 14:46 samth: soegaard, so do you not need `define-compile-time-module-path`? 14:48 soegaard: I suppose not :-). But (lib …) looks in collections, so it might be handy in the case, where the required code is not in a collection. 14:49 soegaard: But that's rare. 14:49 dyoo: soegaard, do you have a todo list for minipascal, or is it mostly done? 14:49 samth: soegaard, does `file` accept paths? 14:49 stilluntrusted: it is really a shame, i can't find a fast way to get the maximum id used in a huge xml document except coding it in c :( 14:50 (join) ijp` 14:50 stilluntrusted: all xpath stuff i tried runs out of memory 14:50 dyoo: stilluntrusted: curious to know: would my xml-taffy library help here? http://planet.racket-lang.org/display.ss?package=xml-pull.plt&owner=dyoo 14:50 dyoo: I mean, xml-pull 14:50 dyoo: It's meant to let you parse xml without consuming the whole thing at once. 14:51 stilluntrusted: dyoo: sound good - will take a look 14:51 dyoo: It's been ages since I looked at it last, but I had to do something like that when dealing with bioinfomatics datasets 14:51 soegaard: dyoo: For the original purpose it is mostly done (to show how to implement a "real" , non-sexp language). 14:52 soegaard: It is tempting to add bells and whistles though - but then the code becomes too large. 14:52 carleastlund: soegaard, you can just use path->string and use a string as a module path, which results in a non-collection-relative require. 14:52 soegaard: carleastlund: Of course! Thanks. 14:52 dyoo: soegaard: yup, understood. 14:53 (quit) ijp: Ping timeout: 248 seconds 14:53 (nick) ijp` -> ijp 14:54 mithos28: stamourv: ping 14:54 stamourv: mithos28: pong 14:55 mithos28: So imaginaries don't have nice closure properties, but they are the leftovers from the types that do 14:55 soegaard: I've got a crasy idea though. TeX is implemented in fairly simple Pascal, so it would be really fun to get TeX running in Racket. 14:55 (join) jonrafkind 14:55 stamourv: mithos28: Yes. 14:55 stamourv: And currently these leftovers are just included in `Number'. 14:55 stilluntrusted: dyoo: looks like my racket is too new 14:56 mithos28: The issue is the program I sent claims that x is an Exact Number but (inexact? x) returns true 14:56 dyoo: stilluntrusted: darn, ok, so I have to bring the library back out of bitrot. 14:56 mithos28: stamourv: You cannot have that, because Number is a union type 14:56 dyoo: stilluntrusted: let me see how hard it is.. give me a sec... 14:56 mithos28: so they have to be in one of the base types 14:56 stamourv: mithos28: To make sure I understand, should I replace `inexact-complex?' with `inexact?' in your example? 14:57 mithos28: no, my example runs as is 14:57 mithos28: define-predicate makes the binding inexact-complex? 14:57 stamourv: Oh, sorry I missed that line. 14:57 stamourv: Ok, now I understand what you mean. 14:58 stamourv: Ok, and I think your solution does make sense. 14:58 mithos28: I'm fine with lumping all the imaginaries in to one type and not seperating them, but I did it the way I did for symetry 14:59 stamourv: Sorry, I misunderstood what you meant. I thought you were advocating for including imaginaries as part of the stdlib, which is what I'm disagreeing with. 14:59 stamourv: But yes, including them in the union for Number makes sense. 14:59 stamourv: I'm not sure whether exporting imaginary types is the right thing, though. 15:00 mithos28: I don't have strong feelings either way on that 15:01 mithos28: I'll update the pull request to remove that part 15:01 stamourv: Great, thanks! 15:01 stamourv: And sorry for the confusion. 15:01 mithos28: Can you explain why you changed the type of exact? 15:02 dyoo: stilluntrusted: I have a version I can put on github that appears to work with 5.3.1. Do you know how to use github? 15:03 stilluntrusted: dyoo: yes 15:03 dyoo: give me a sec... 15:03 mithos28: Why is a value not in Exact-Number if exact? returns #t 15:03 stamourv: mithos28: It's the other way around. 15:03 dyoo: stilluntrusted: https://github.com/dyoo/xml-pull 15:04 stamourv: If it returns false, we definitely know it's not exact. 15:04 mithos28: right. Which is why I'm asking what the problem with it being Exact if it returns #t 15:04 dyoo: stilluntrusted: test-xml-pull-2.ss is going to fail because it looks like the gene ontology database archive web site has disapppeared! Looking for where it went to... 15:09 stilluntrusted: dyoo: test-xml-pull.ss worked :) 15:09 stilluntrusted: dyoo: will test 15:09 dyoo: at the very least. And I fixed test-xml-pull-2 so it also works 15:09 (join) eikonos 15:10 dyoo: I hope it works for you! 15:10 stamourv: mithos28: I can't think of a problem, off the top of my head. 15:10 stamourv: So maybe I should have made that change too. 15:11 stamourv: Feel free to include it in your pull request, I think that was an oversight on my part. 15:11 mithos28: Ok, will do. 15:13 stamourv: Thanks! 15:21 (join) mizu_no_oto 15:26 (quit) eikonos: Quit: Leaving. 15:28 stilluntrusted: dyoo: first version works, now testing speed 15:28 (quit) Demosthenex: Ping timeout: 245 seconds 15:30 stilluntrusted: dyoo: hmm not fast enough 15:32 stilluntrusted: dyoo: ah it uses the sax interface, it should have looked at that before (i knew it is to slow) 15:32 stilluntrusted: dyoo: thanks anyway 15:33 dyoo: stilluntrusted: darn. Oh well. 15:35 stilluntrusted: dyoo: but usage is nice 15:40 (join) ijp` 15:46 (join) Demosthenex 15:48 (quit) stilluntrusted: Remote host closed the connection 15:48 (nick) ijp` -> ijp 15:58 (quit) Fare: Ping timeout: 245 seconds 16:01 (join) Kaylin 16:12 (join) RacketCommitBot 16:12 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/BqDdQg 16:12 RacketCommitBot: racket/master dc4a74d Robby Findler: fix bug in commit 4c4161ce2bb6ca3e81282d0df27b916349b64a84 16:12 (part) RacketCommitBot 16:13 (quit) mithos28: Quit: mithos28 16:14 (join) ijp 16:16 (quit) hash_table: Ping timeout: 255 seconds 16:19 (join) Fare 16:32 (join) didi 16:34 didi: Where can I read about the search syntax of `raco docs'? 16:35 (join) Kaylin1 16:36 (quit) jonrafkind: Ping timeout: 245 seconds 16:37 (quit) Kaylin: Ping timeout: 264 seconds 16:39 stamourv: didi: Search syntax> 16:39 stamourv: s/>/?/ 16:40 soegaard: raco help docs 16:40 soegaard: raco docs [