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 [