00:00 (quit) Fare: Ping timeout: 260 seconds 00:05 (quit) dented42: Ping timeout: 248 seconds 00:06 (quit) nejucomo: Ping timeout: 276 seconds 00:11 (join) Fare 00:12 (join) dented42 00:23 (quit) ormaaj: Ping timeout: 256 seconds 00:29 (quit) Kaylin: Ping timeout: 252 seconds 00:31 (join) Kaylin 00:37 (join) ormaaj 00:44 (join) cdidd 00:45 (join) spiderwe` 00:46 (quit) spiderweb: Ping timeout: 255 seconds 00:46 (quit) spiderwe`: Client Quit 00:47 (join) spiderweb 00:55 Sgeo: I can only assume that dyoo is a Puella Magi Madoka Magica fan 00:58 (quit) mceier: Ping timeout: 255 seconds 01:02 (quit) ormaaj: Quit: WeeChat 0.4.0-dev 01:03 (join) Nisstyre-laptop 01:06 (join) ormaaj 01:23 (join) myx 01:23 (part) sw2wolf{away}: "ERC Version 5.3 (IRC client for Emacs)" 01:27 (quit) Fare: Ping timeout: 245 seconds 01:33 (join) Fare 01:51 (quit) Fare: Ping timeout: 245 seconds 01:59 Sgeo: Is there a way to add a type of number to Racket's number hierarchy? 01:59 Sgeo: Or numeric tower or whatever it's called? 02:00 mithos28: Sgeo: Sorta, but it involves deep internal manipulations 02:01 mithos28: there is work ongoing to add extended precision flonums on the mailing lists 02:01 mithos28: What would you want to add? 02:01 Sgeo: exact precision reals 02:02 Sgeo: *exact precision computable reals 02:02 mithos28: like CGAL? 02:02 Sgeo: Not familiar with CGAL 02:02 Sgeo: But I know there are Haskell libraries for it 02:02 Sgeo: Also, another type of number to add: Dual numbers 02:03 mithos28: Sgeo: Well you could add your own structures, they just wouldn't work with the primitive numbers 02:06 mithos28: what would adding them to rackets number heirarchy get you that you want? 02:12 Sgeo: mithos28, automatic differentientation 02:12 Sgeo: (can't spell) 02:12 Sgeo: Unrelated: 02:12 Sgeo: #lang planet asumu/sweet racket 02:12 Sgeo: Does not seem to change the REPL 02:13 mithos28: Sgeo: Why do you need the core number system to support your extensions to get AD? 02:16 (join) neilv 02:16 (quit) neilv: Changing host 02:16 (join) neilv 02:16 (quit) neilv: Client Quit 02:16 Sgeo: Hmm. So I could easily use + like I'd expect as though it was a core number? So that I can, as long as I define what functions like sin mean on these numbers, can pass them to any Racket function that uses numbers and have them work properly? 02:17 mithos28: why cannot you just define your own + and sin, and use those? 02:19 mithos28: The issue with extension in the way that you are proposing is that it violates assumptions of other libraries that numbers are just the standard racket numbers 02:21 Sgeo: What is special about the standard Racket numbers that would be unfakable by my own kind of numbers? 02:22 mithos28: that the parts of a complex number are real numbers 02:23 mithos28: and that all numbers are complex 02:25 Sgeo: Why doesn't this work: 02:25 Sgeo: rudybot: (generator () (yield 1)) 02:25 rudybot: Sgeo: your sandbox is ready 02:25 rudybot: Sgeo: error: #:1:11: #%app: missing procedure expression; probably originally (), which is an illegal empty application in: (#%app) 02:26 Sgeo: I'm looking at http://docs.racket-lang.org/reference/Generators.html 02:26 mithos28: you are missing the require 02:26 mithos28: (require racket/generator) 02:26 Sgeo: Ah 02:27 Sgeo: Hmm. 02:28 Sgeo: #%app is sort of like a macro, right?n It seems to check certain requirements, but what does it expand into? It can't expand into itself, can it? 02:28 Sgeo: It's run before evaluation clearly 02:28 Sgeo: rudybot, (if #f () "false") 02:28 rudybot: Sgeo: error: #:1:7: #%app: missing procedure expression; probably originally (), which is an illegal empty application in: (#%app) 02:28 mithos28: #%app is a macro 02:29 mithos28: #%app is one of the core forms actually 02:29 mithos28: like if, define-values, lambda 02:29 Sgeo: So, it's just run and then, if it doesn't error, it ... stays there? 02:29 Sgeo: (The default #%app I mean) 02:30 mithos28: yes, it corresponds to a function call in fully expanded syntaxt 02:32 Sgeo: rudybot, (define whee (let loop () loop)) ((((((((((whee)))))))))) 02:32 rudybot: Sgeo: http://jtnimoy.net/workviewer.php?q=178 "In Tron, the hacker was not supposed to be snooping around on a network; he was supposed to kill a process. So we went with posix kill and also had him pipe ps into grep. I also ended up using emacs eshell to make the terminal more l33t. The team was delighted to see my emacs performance -- splitting the editor into nested panes and running different modes. I was tickled that 02:32 Sgeo: wat. 02:32 mithos28: rudybot: be nice to Sgeo 02:32 rudybot: mithos28: it has a repl in drscheme. 02:33 mithos28: Sgeo: you want a : not a , 02:33 (join) univyrse 02:33 Sgeo: rudybot: (define whee (let loop () loop)) ((((((((((whee)))))))))) 02:33 rudybot: Sgeo: unstable/automata found by google :-2 whee 02:33 Sgeo: ... 02:33 mithos28: and you need your parens to match 02:33 mithos28: you can use eval and it will give better error messages 02:33 Sgeo: rudybot, eval (define whee (let loop () loop)) ((((((((((whee)))))))))) 02:33 rudybot: Sgeo: ; Value: # 02:34 Sgeo: Is it because I'm using two forms? 02:34 Sgeo: rudybot: 1 2 02:34 rudybot: Sgeo: eh? Try "rudybot: help". 02:34 Sgeo: rudybot, eval 1 2 02:34 rudybot: Sgeo: ; Value: 2 02:34 mithos28: yes 02:34 Sgeo: rudybot, (begin (define whee (let loop () loop)) ((((((((((whee))))))))))) 02:34 rudybot: Sgeo: ; Value: # 02:35 univyrse: the official racket guide is surprisingly well written, and teaches a lot of things in small spaces 02:37 Sgeo: The official Racket guide also doesn't mention a lot of cool things, like events and generators 02:37 Sgeo: At least, that I've seen, haven't read the whole thing 02:37 univyrse: I'm on 8.1 02:38 univyrse: just chugging my way until I finish it 02:38 univyrse: and i come here when I get really stuck 02:40 Sgeo: :( video I'm watching just called let a function 02:40 Sgeo facepalms 02:53 mithos28: Sgeo: It is. Just at phase 1. 02:58 univyrse: i never liked video tutorials 02:58 univyrse: i found myself copying down the code and not learning 02:59 univyrse: in addition, most video teachers dont teach, they just commentate alongside footage of themselves slowly building a program 03:02 Sgeo: I wish Racket was more immutability-focused like Haskell or Clojure 03:02 Sgeo: I like immutability 03:03 mithos28: Sgeo: What is missing? 03:03 Sgeo: Everything immutable by default 03:03 mithos28: What is not? 03:04 Sgeo: and somestruct-thing-set as a functional "setter", for example 03:04 Sgeo: Rather than somestruct-thing-set! 03:04 univyrse: haskell makes my dog cry 03:04 univyrse: and me too 03:04 mithos28: By default the set! functions are not defined 03:04 mithos28: and there is struct-copy if you want functional setters 03:05 univyrse: once you define (struct thing (x)) then (thing-x-set! newvalue) is autmatically defined 03:05 mithos28: functional setters have issues with inheritence though 03:05 mithos28: univyrse: No 03:05 mithos28: rudybot: init racket 03:05 rudybot: mithos28: your sandbox is ready 03:05 mithos28: rudybot: (struct foo (x)) 03:05 rudybot: mithos28: Done. 03:06 mithos28: rudybot: set-foo-x! 03:06 rudybot: mithos28: you mean you want set-foo-x! to dispatch to your own functions? 03:06 mithos28: rudybot: foo-x 03:06 rudybot: mithos28: ; Value: # 03:07 Sgeo or someone should make an applicative language, where values can define a lift function to be applied to any functions that try to use that value as an argument 03:07 univyrse: yeah someone should do something about a thing 03:08 Sgeo: I think that would be a sort of generalization of lazy and frtime 03:09 Sgeo: With that model though, order of arguments could make a significant semantic difference :( 03:12 ozzloy: my girlfriend looked at the wescheme games and says they are too slow 03:13 ozzloy: sorry, that's out of context 03:13 mithos28: ozzloy: I remember the context 03:13 ozzloy: oh cool 03:13 mithos28: Has she ported hers over, or just looking at the ones she found on the web? 03:14 ozzloy: for the benefit of everyone else: she wrote a game, but wants to make a one-click installer for every platform 03:14 ozzloy: she looked at http://www.wescheme.org/run?publicId=wares-bogus-watch-swarm-dimly 03:14 ozzloy: and a couple others 03:14 ozzloy: also she has mouse interaction in her game 03:14 (quit) jonrafkind: Ping timeout: 245 seconds 03:14 ozzloy: and none of the examples we found have mouse interaction 03:15 mithos28: That ran pretty fast for me 03:15 ozzloy: i'm wondering if the lag is a result of the racket compiling to javascript, then being run 03:15 Sgeo: Wait, is it real Racket, or some sort of ... 03:15 Sgeo: hmm 03:15 ozzloy: it runs pretty fast for me too, but sometimes when pressing left a few times in a row, it hiccups for about 1/3 of a second 03:15 mithos28: http://hashcollision.org/whalesong/examples/raphael-demo/raphael-demo.html 03:16 ozzloy: that looks mesmerizing 03:16 mithos28: http://hashcollision.org/whalesong/ 03:16 mithos28: has more examples 03:17 ozzloy: for the benefit of everyone else: she wrote this game in pygame, but as far as we can tell, there's no easy way to cross compile a windows installer for a pygame project from ubuntu 03:18 ozzloy: mithos28, so you're saying any lag is probably the fault of the specific game implementation algorithms? 03:18 mithos28: I'm guessing that a lot of the lag is that 03:18 (join) mceier 03:19 mithos28: not that it will be easy to have low lag, but that most of those games are programmed by 12-14 year olds (from the bootstrap project). 03:19 mithos28: Thus I doubt they were optimized much past getting them working 03:22 Sgeo: Hmm, found a post that purports to explain Scheme style macros for CL people 03:25 ozzloy: mithos28, cool 03:26 (join) feste 03:26 ozzloy: mithos28, i'll tell her that 03:26 ozzloy: oh, hi there 03:26 feste: hi 03:26 feste: tell me what? 03:26 ozzloy: that the games were probably not optimized past getting them to work 03:26 ozzloy: passed? 03:26 feste: ah 03:26 feste: past 03:32 (quit) feste: Quit: Page closed 03:34 (quit) mithos28: Quit: mithos28 03:36 Sgeo: I seriously cannot get over let's loop thingy being a first-class procedure 03:36 Sgeo: Clojure may have poisoned my brain slightly 03:39 (quit) Kaylin: Quit: Leaving. 03:40 ozzloy: Sgeo, "let's loop thingy ..." what's let's loop thingy 03:41 Sgeo: As in, the foo in (let foo () ... ) 03:47 ozzloy: Sgeo, oh, named let 03:51 Sgeo: I seriously need to find a way to test let-syntax 03:54 Sgeo breathes 03:55 Sgeo: HAH 03:55 Sgeo: AHAHAHHAHA 03:55 ozzloy: ? 03:55 Sgeo: This is awesome 03:56 Sgeo: http://pastie.org/5601436 03:56 Sgeo: The result was "HONK" 03:57 Sgeo: (The name 1-arg-app was when I wanted to use the other thing that is an example of replacing #%app, but that uses define-syntax 03:58 Sgeo: erm, define-syntax-rule 03:58 ozzloy: i sure don't know begin-for-syntax and let-syntax 03:58 ozzloy: idk macros. this is macros, yes? 03:59 Sgeo: This is macros and replacing #%app 03:59 ozzloy: what's #%app? function application? 04:00 Sgeo: It's a macro that is implicitly around every function application 04:00 ozzloy: oic 04:00 univyrse: dont you people sleep 04:00 Sgeo: (+ 1 2) is really (#%app + 1 2) 04:00 ozzloy is reading reference page with #%app now 04:01 univyrse: i am drunk and i am going to sleep now 04:01 ozzloy: does (#%app + 1 2) turn into (#%app #%app + 1 2) ? 04:01 (part) univyrse: "Leaving" 04:01 ozzloy: gnight u 04:01 Sgeo: ozzloy, #%app isn't a function, it's a macro 04:01 Sgeo: And a special form 04:03 ozzloy: what's a special form? manual search procudes typed racket docs 04:03 Sgeo: Um, terminology in other Lisps 04:04 Sgeo: By "special form", I meant form recognized by whatever is processing the language as a primitive form 04:04 Sgeo: As in, not a macro (and not a function application) 04:04 ozzloy: oic 04:04 ozzloy: i didn't know there was anything other than applications and macros 04:05 (join) bitonic 04:05 ozzloy: macros that get expanded to applications 04:07 Sgeo: Think about if 04:07 ozzloy: oh wait 04:07 ozzloy: yeah 04:07 ozzloy: haha, that's what i was just going to say 04:07 ozzloy: i remember now how if's args aren't all evald 04:07 ozzloy: critically not 04:07 ozzloy: because recursion 04:08 Sgeo: ozzloy, it's not just that though. Macros don't have to expand their args. But there needs to be some fundamental way to make a choice 04:08 Sgeo: Hmm, actually, I might be wrong about that 04:08 Sgeo: But in any case, as it happens, if is in fact a special form in Racket, rather than just a macor 04:08 Sgeo: *macro 04:09 ozzloy: good times 04:09 ozzloy: i need to finish sicp 04:09 ozzloy: clearly 04:10 ozzloy: that will help me with stuff like this, i think 04:11 Sgeo: Well, #%app is Racket-specific 04:11 Sgeo: And I'm not sure if SICP discusses macros 04:12 Sgeo: Should at least be discussion of function application vs special forms though, I would... guess. I haven't actually read SICP 04:12 ozzloy: i think it goes over normal versus applicative order 04:12 ozzloy: which i vaguely remember as being relevant to This-Sort-Of-Thing 04:36 Sgeo: rudybot, help 04:36 rudybot: Sgeo: bug ..., help [], version, quote, source, url, seen , uptime, t8 ..., init [], eval ..., give ..., apropos ..., desc , doc 04:36 Sgeo: rudybot, help give 04:36 rudybot: Sgeo: give ...: evaluate and give someone the result 04:36 Sgeo: rudybot, give Sgeo (+ 1 1) 04:36 rudybot: Sgeo: error: Talk to yourself much too? 04:37 Sgeo: rudybot, give rudybot (+ 1 1) 04:37 rudybot: Sgeo: error: I'm full, thanks. 04:37 Sgeo: rudybot, give Sgeo_ (+ 1 1) 04:37 rudybot: Sgeo_: Sgeo has given you a value, say "rudybot: eval (GRAB)" to get it (case sensitive) 04:37 (nick) Sgeo -> Sgeo_ 04:37 Sgeo_: rudybot, (* 2 (grab)) 04:37 rudybot: Sgeo_: your sandbox is ready 04:37 rudybot: Sgeo_: error: reference to an identifier before its definition: grab in module: 'program 04:37 Sgeo_: rudybot, (* 2 (GRAB)) 04:37 rudybot: Sgeo_: ; Value: 4 04:37 Sgeo_: rudybot, (GRAB) 04:37 rudybot: Sgeo_: ; Value: 2 04:37 Sgeo_: Cool 04:52 (quit) ormaaj: Ping timeout: 264 seconds 04:54 (join) kofno 05:01 (quit) Nisstyre-laptop: Quit: Leaving 05:02 (join) Nisstyre-laptop 05:09 (join) ormaaj 05:19 asumu: SICP discusses macros but not in a particularly useful sense. 05:21 asumu: PLAI has a brief but good discussion of macros. 05:23 (join) hash_table 05:38 (quit) Nisstyre-laptop: Quit: Leaving 05:39 Sgeo: Ok, the whole module+ test thing is going to mean that I'm actually likely to write tests in this language, unlike any other language I worked with, I think 05:39 (quit) ormaaj: Ping timeout: 255 seconds 05:40 (join) add^_ 05:54 (join) ormaaj 06:14 (join) noam_ 06:23 (join) noam__ 06:26 (quit) noam_: Ping timeout: 265 seconds 06:33 (quit) hash_table: Ping timeout: 244 seconds 06:40 (join) jeapostrophe 06:52 (quit) serhart: Quit: Leaving. 06:59 (join) MayDaniel 07:00 (quit) cdidd: Remote host closed the connection 07:01 (join) masm 07:19 (join) cdidd 07:20 (join) serhart 07:21 (quit) serhart: Read error: Connection reset by peer 07:21 (join) serhart 07:26 (join) serhart1 07:26 (quit) serhart: Ping timeout: 255 seconds 07:55 (quit) bartbes__: Ping timeout: 264 seconds 07:55 (join) bartbes_ 07:59 (quit) serhart1: Quit: Leaving. 07:59 (join) soegaard 08:05 (quit) cdidd: Remote host closed the connection 08:34 (quit) bitonic: Ping timeout: 255 seconds 08:47 (quit) sethalves: Quit: ERC Version 5.3 (IRC client for Emacs) 08:48 (join) sethalves 08:50 (quit) ormaaj: Read error: Operation timed out 08:54 (quit) soegaard: Quit: soegaard 08:54 (join) bitonic 09:05 (join) ormaaj 09:21 (join) nejucomo 09:24 (join) mizu_no_oto 09:29 (quit) bitonic: Remote host closed the connection 09:34 (nick) sethalves -> sethAway 09:37 (quit) Nisstyre: Quit: Leaving 09:41 (join) Shviller 09:54 (join) Anonymous6708067 09:54 Anonymous6708067: Hello everyone! 09:54 (nick) Anonymous6708067 -> Anonymous708980 09:55 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 10:01 (join) anonymou1 10:01 (nick) anonymou1 -> Anonymous7898789 10:11 (join) mizu_no_oto 10:29 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 10:34 (part) nejucomo 10:45 bremner: eli: I'm just figuring out pl.plt for the coming term. I guess I can probably reverse engineer collects/pl from the pl.plt you distribute? 10:47 (quit) spiderweb: Quit: ERC Version 5.3 (IRC client for Emacs) 10:49 (quit) kofno: Remote host closed the connection 10:49 (join) kofno 10:49 (join) cdidd 10:52 (quit) kofno: Remote host closed the connection 11:03 greghendershott: ICYI you can tweet Racket #code2012. http://www.ioncannon.net/projects/code2012/ 11:04 greghendershott: https://twitter.com/search?q=%23code2012 11:17 (join) mithos28 11:18 (join) Fare 11:19 (join) anRch 11:23 (quit) cdidd: Remote host closed the connection 11:25 (join) cdidd 11:29 (quit) cdidd: Read error: Connection reset by peer 11:29 (quit) jeapostrophe: Ping timeout: 255 seconds 11:29 (join) RacketCommitBot 11:29 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/HCCXgQ 11:29 RacketCommitBot: racket/master 8f300b9 Robby Findler: add rotary dial to the image guide 11:29 (part) RacketCommitBot 11:57 (join) cdidd 12:09 (quit) anRch: Quit: anRch 12:09 (quit) cdidd: Remote host closed the connection 12:10 (join) Kaylin 12:15 (join) cdidd 12:21 (quit) cdidd: Ping timeout: 245 seconds 12:23 (join) Nisstyre-laptop 12:25 (join) cdidd 12:29 (quit) cdidd: Remote host closed the connection 12:47 mithos28: anyone on knowledgable about racket's optimizations? Optimization coach is not providing me with enough info. 12:48 (join) neilv 12:50 mithos28: https://gist.github.com/4421561 is my program, dequeue! is a lot slower than fast-dequeue! and the only difference is a set-node-value! 12:53 (join) RacketCommitBot 12:53 RacketCommitBot: [racket] plt pushed 2 new commits to master: http://git.io/1rM7JQ 12:53 RacketCommitBot: racket/master 2a83c21 Robby Findler: add some color to the image guide's fractals... 12:53 RacketCommitBot: racket/master a948f1b Robby Findler: fix commit c818eb3ca3325fb7eac7f2a8105ea0121013214c... 12:53 (part) RacketCommitBot 13:02 (join) francisl 13:03 mithos28: Fixed it, by keeping track of different things so that the set! was not necessary for space safety 13:12 (join) cdidd 13:13 (quit) francisl: Remote host closed the connection 13:13 (join) francisl 13:25 (quit) cdidd: Read error: Connection reset by peer 13:27 (join) cdidd 13:38 (join) mizu_no_oto 13:39 (join) jonrafkind 13:40 (quit) Kaylin: Read error: Connection reset by peer 13:41 (quit) cdidd: Ping timeout: 276 seconds 13:41 (join) cdidd 13:50 mithos28: wow contracts are expensive 13:52 Nisstyre-laptop: mithos28: well runtime type checking takes time 13:52 Nisstyre-laptop: mithos28: if you want type checking for everything use typed racket, or Haskell 13:53 mithos28: Nisstyre-laptop: it is a simple tag check that I am doing 13:53 (quit) cdidd: Ping timeout: 245 seconds 13:54 mithos28: (queue? any/c -> any) is much more expensive than (any/c any/c -> any) and queue? is a struct predicate 13:55 Nisstyre-laptop: mithos28: that seems obvious 13:56 mithos28: Really? I don't see why a single check would be as expensive as the entire operation I am doing 13:57 mithos28: well actually it is because the contract system is broken with respect to arity checking 13:59 Nisstyre-laptop: mithos28: that checking that it is *anything* is less time consuming than checking for a specific type seems obvious 13:59 mithos28: Nisstyre-laptop: its nat that it takes time, its the amount of time that it takes 13:59 Nisstyre-laptop: mithos28: what kind of struct are you making? 14:00 (quit) snorble_: Ping timeout: 255 seconds 14:00 mithos28: (struct queue (head tail) #:property prop:sequence (…)) 14:01 Nisstyre-laptop: mithos28: I don't know why that would take a long time to check in a contract 14:01 mithos28: Nisstyre-laptop: Because chaperones are slow 14:02 mithos28: Which is my annoyance 14:02 mithos28: hand coding the check at the begining of the function, is about the speed I expected (lost in the noise) 14:02 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 14:04 (join) mizu_no_oto 14:04 (join) RacketCommitBot 14:04 RacketCommitBot: [racket] plt pushed 3 new commits to master: http://git.io/Mtc6Iw 14:04 RacketCommitBot: racket/master ba973a3 Matthew Flatt: add `configure' test for mmap() and mprotect()... 14:04 RacketCommitBot: racket/master dc9643a Matthew Flatt: fix typo in error message 14:04 RacketCommitBot: racket/master cdfc491 Matthew Flatt: racket/base: add exn:fail:filesystem:errno and exn:fail:network:errno... 14:04 (part) RacketCommitBot 14:06 Nisstyre-laptop: mithos28: okay, it will still be faster with typed racket though 14:06 Nisstyre-laptop: (or Haskell) 14:07 mithos28: Nisstyre-laptop: If I wanted to be using haskell I wouldn't be using racket 14:07 Nisstyre-laptop: mithos28: I know 14:07 Nisstyre-laptop: mithos28: Typed Racket is a useful choice though 14:07 Nisstyre-laptop: I'm not sure if you can mix normal Racket with it or not 14:08 mithos28: Nisstyre-laptop: I help maintain TR, I'm not using it because I know exactly why its contract generation will be worse than my manual contract generation 14:08 Nisstyre-laptop: mithos28: okay, fair enough 14:16 Sgeo: Hrm. Would a Tcl-like surface syntax for Racket make sense? 14:17 jonrafkind: are you looking for a non-sexpression syntax? 14:19 Sgeo: Yes. I'm aware that sweet exists, although couldn't get it to work at the DrRacket REPL 14:19 Sgeo: Only seemed to work in the module body 14:19 mithos28: Sgeo: have you looked at honu? 14:20 Sgeo: No 14:21 Sgeo: Actual Tcl as a Racket language would also be interesting, but it would likely be ... problematic 14:26 jonrafkind: honu is a javascript-like syntax that supports macros, i work on it 14:30 Sgeo: Cool 14:35 Sgeo: I wonder if it's a criticism of Racket that certain languages would not work well at all as a Racket language 14:35 Sgeo needs to think about it more 14:35 mithos28: What issues do you see arising? 14:36 Sgeo: Just the impedence mismatch between using macros to do metaprogramming and using eval to do metaprogramming 14:36 Sgeo: Tcl is largely centered around eval 14:37 Sgeo: Hmm, well, I guess all Tcl commands would be usable from the Racket side, even if not all of them made sense to use in that manner 14:37 mithos28: So, just use eval. What is the problem with that 14:37 Sgeo: Racket functions would be ... somewhat usable from the Tcl side 14:38 Sgeo: But Tcl commands intended to accept code would only be able to accept Tcl code, I ... think. Rather than being usable in a macro-y way 14:38 Sgeo: And couldn't really use Racket macros comfortably 14:39 mithos28: So you are saying that embededing TCL in racket would be easy, but using racket from Tcl would be hard. 14:39 mithos28: I think that speaks about Tcl more than racket 14:40 (join) tfb 14:40 Sgeo: Actually, wait. More problems. Everything in Tcl is fundamentally a string (from the code's point of view). So passing a string to a Racket function that, say, expects a number would be "fun" 14:43 Sgeo: I should port Factor's EBNF stuff to Racket 14:46 Sgeo: I just remembered that Racket does have parsing stuff already 14:59 (join) dyoo 15:03 dyoo: Sgeo: just checking: I'm developing an EBNF-style tool. Not released yet, but see: http://hashcollision.org/ragg 15:04 dyoo: Is this something that is useful to you? 15:04 dyoo: (currently working on test cases, documentation, error handling...) 15:06 neilv: sgeo: i think an interesting exercise would be to implement tcl in an optimized way in racket: so that lots of evaluation happens with native racket code, and you only go to tcl string expansion evaluation when necessary 15:08 neilv: Sgeo: although, tcl is dead. it was popular on unix for a while, due to tk. then it had brief popularity for web server side, as a saner alternative to perl, and then (iirc) sun hired ousterhout and tcl vanished 15:08 asumu: Sgeo: only reason why the sweet package doesn't support the REPL is that I don't know how. 15:08 asumu: Anyone know how to hook into #%top-interaction for non-sexp languages? 15:09 dyoo: I think this is something that jpolitz and co were also fighting with regards to pyret 15:09 mithos28: asumu: You don't want #%top-interaction 15:09 mithos28: you want to hook into the reader 15:09 dyoo: They wanted to get the python grammar to work with the repl, and fought with drracket's detection of end-of-expression 15:09 dyoo: I don't know if they resolved that problem already. 15:09 asumu: mithos28: ah, ok. BTW, did you ping me the other day? 15:10 asumu: dyoo: hmm, ok, so sounds like further work is needed to make this an easy thing to implement. 15:10 mithos28: asumu: Yes, you might want to look at port-read-handler 15:10 mithos28: are you the current maintainer of pfds? 15:10 asumu: Yes, though I've only done some minimal maintenance. 15:11 mithos28: ok, because it currently has issues with typechecking 15:12 (quit) francisl: Ping timeout: 255 seconds 15:12 asumu: Hmm, drats. Is that on 5.3.1 or HEAD? 15:12 mithos28: HEAD, about a week old now I'd guess 15:12 asumu: Okay, that's odd and I'll look into it. 15:14 mithos28: Is there a way to require a submodule from the command line 15:15 mithos28: raco -s is giving me issues 15:15 mithos28: or is using -e the best option 15:16 (join) apeman_ 15:16 apeman_: in GRacket REPL, how do you get previous line? 15:17 asumu: mithos28: raco test can do it. 15:17 (quit) tfb: Quit: sleeping 15:17 mithos28: asumu: Sorry thats what I meant was having issues: raco test -s 15:17 mithos28: it kills my gui 15:18 mithos28: apeman_: Control-P I believe 15:18 asumu: Oh, that's annoying. Yeah, I don't know then. 15:18 (join) anRch 15:19 asumu: Hmm, dammit. The pfds thing probably has something to do with type variable scope. 15:20 asumu: Actually, that's just because my git repo has weird commits in it. *switches to clean branch* 15:27 mithos28: rackets inliner is pretty bad 15:29 Sgeo: asumu, the racklog language does it somehow 15:29 Sgeo: Don't know if there may be other considerations 15:31 asumu: Looks like racklog does it with a DrRacket info hook. 15:31 mithos28: procedure-rename makes my program go slower 15:49 (join) DarkTiger 15:49 DarkTiger: http://paste.lisp.org/display/134359 — why does this give an ‘unbound identifier’ error? The docs at http://pre.racket-lang.org/docs/html/reference/match.html#(form._((lib._racket/match..rkt)._define/match)) seem to indicate that define/match should be available from the racket/match library. 15:51 asumu: DarkTiger: Are you using 5.3.1? 15:51 (join) mye 15:51 DarkTiger: Yes 15:53 asumu: DarkTiger: the pre-release docs are for the pre-release builds. 5.3.1 doesn't have `define/match`, but the next release will. 15:54 (quit) mye: Client Quit 15:54 (join) tfb 15:54 DarkTiger: Oops. Thanks. 15:55 DarkTiger: I blame Google! 15:57 greghendershott: DarkTiger: I've done that myself. However if you want to try a nightly build of the prerelease, they're at http://pre.racket-lang.org/installers/ 15:58 greghendershott: In which case you _do_ want http://pre.racket-lang.org/docs/* instead of http://docs.racket-lang.org/* :) 16:01 asumu: Ah, pfds is broken because it relied on broken scoping rules. Yay... 16:03 (quit) neilv: Quit: Leaving 16:04 (quit) mizu_no_oto: Quit: ["Textual IRC Client: www.textualapp.com"] 16:04 DarkTiger: greghendershott: Thanks — might do that 16:05 ozzloy: asumu, thanks 16:05 ozzloy: Sgeo, module+ test ftw! 16:06 ozzloy: Sgeo, being able to write tests just above the tested procedure is surprisingly encouraging for me 16:07 greghendershott: mithos28: Re the slow contract, I'm guessing (any/c -> any) is optimized to a no-op, and only with ("not any/c" -> any) do you incur the real overhead? 16:07 (quit) sirdancealot: Quit: KEEP SPARKS. FLAME AWAY. 16:08 mithos28: greghendershott: Yes, I realized that. It is because contracts are broken with respect to arity checking 16:08 (join) sirdancealot 16:09 greghendershott: mithos28: FWIW I've experimented with having the contract declaration syntax expand to simply _be_ something like handwritten checks: https://github.com/greghendershott/termsheet 16:09 mithos28: If I call a function with a contract (any/c -> any), with 2 arguments I 'should' get a contract violation 16:10 greghendershott: Oh? Huh. 16:10 mithos28: The should there, is in the theory of contracts 16:10 (join) mizu_no_oto 16:10 mithos28: but in the implementation you get a primitive arity error 16:11 greghendershott: Hmm I'm getting a contract violation for that 16:12 greghendershott: e.g. (define/contract (f x) (any/c . -> . any) x) 16:12 greghendershott: (f 0) => 0 16:12 greghendershott: (f 0 0) => "f: arity mismatch; …." 16:12 greghendershott: Oh duh I see what you're saying. 16:13 (quit) mizu_no_oto: Client Quit 16:15 asumu: mithos28: pfds should be fixed now 16:15 mithos28: asumu: Thanks 16:15 (join) mye 16:16 mithos28: anyone know of a good concurrent queue benchmark? 16:18 (quit) dyoo: Quit: dyoo 16:20 (quit) tfb: Quit: sleeping 16:25 mithos28: Well my queues perform a lot worse than thread unsafe queues, and then I added an operation that took 1ms per queue operation and they are near indistinquishable 16:25 mithos28: so if you are doing real work and not a micro benchmark they are great 16:27 (quit) jonrafkind: Ping timeout: 245 seconds 16:34 (quit) anRch: Quit: anRch 16:34 (quit) mye: Quit: mye 16:35 (join) mye 16:41 (quit) mithos28: Quit: mithos28 16:42 (join) mithos28 16:44 (quit) mithos28: Client Quit 16:50 (quit) Nisstyre-laptop: Read error: Connection reset by peer 17:10 (join) jonrafkind 17:15 (join) dyoo 17:19 (quit) dyoo: Read error: Connection reset by peer 17:21 (join) RacketCommitBot 17:21 RacketCommitBot: [racket] plt pushed 3 new commits to master: http://git.io/wX7Miw 17:21 RacketCommitBot: racket/master e06f31c Neil Toronto: More precise return type for `magnitude' (it always returns nonnegative) 17:21 RacketCommitBot: racket/master f5fa935 Neil Toronto: Moar `math/matrix' review/refactoring... 17:21 RacketCommitBot: racket/master c8e3b45 Neil Toronto: Added QR decomposition tests (mostly a pretty thorough randomized test);... 17:21 (part) RacketCommitBot 17:30 (join) tfb 17:38 (join) neilv 17:46 (quit) apeman_: *.net *.split 17:46 (quit) mceier: *.net *.split 17:46 (quit) SeanTAllen: *.net *.split 17:46 (quit) SHODAN: *.net *.split 17:46 (quit) wkelly: *.net *.split 17:46 (join) SHODAN 17:46 (join) wkelly 17:46 (join) mceier 17:46 (quit) tfb: Quit: sleeping 17:46 (join) apeman_ 17:47 (join) SeanTAllen 17:47 (quit) myx: Ping timeout: 255 seconds 17:51 (join) Nisstyre-laptop 17:53 (quit) DarkTiger: Quit: Lost terminal 17:55 apeman_: in scheme, a web page claims that (if uses normal order evaluation. Is this technically accurate, since (if short circuits? 17:56 jonrafkind: if has its own evaluation rules that are neither normal nor lazy 17:59 (join) jeapostrophe 17:59 (quit) jeapostrophe: Changing host 17:59 (join) jeapostrophe 17:59 neilv: in schemes, short-circuit evaluation is done with special syntax, not with argument order of evaluation rules 18:13 (join) mithos28 18:21 (quit) neilv: Quit: Leaving 18:33 (join) apeman__ 18:35 (quit) apeman_: Ping timeout: 265 seconds 18:35 (nick) apeman__ -> apeman_ 18:45 (quit) mithos28: Quit: mithos28 18:46 (join) mithos28 19:00 (join) netrino 19:01 (quit) mye: Quit: mye 19:04 (quit) mithos28: Quit: mithos28 19:19 (join) mye 19:26 (quit) Nisstyre-laptop: Quit: Leaving 19:28 (quit) add^_: Quit: The Garbage Collector got me... 19:30 (join) RacketCommitBot 19:30 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/iXmmug 19:30 RacketCommitBot: racket/master 8e8cc30 Matthew Flatt: fix dist spec 19:30 (part) RacketCommitBot 19:37 (join) mithos28 20:01 (quit) mithos28: Quit: mithos28 20:09 (join) mye_ 20:11 (quit) mye: Ping timeout: 240 seconds 20:11 (nick) mye_ -> mye 20:19 (quit) jonrafkind: Ping timeout: 255 seconds 20:42 (join) mithos28 20:50 (quit) MayDaniel: Read error: Connection reset by peer 21:37 asumu: It's neat when job postings mention Racket experience as a plus: http://www.linkedin.com/jobs?viewJob=&jobId=4483494&srchIndex=4 21:42 (quit) masm: Remote host closed the connection 21:52 mithos28: yay segfault 22:33 chandler: asumu: It doesn't seem like they're actually using it, though. 22:36 (quit) jeapostrophe: Ping timeout: 244 seconds 23:10 (quit) mithos28: Quit: mithos28 23:21 (quit) Shviller: Ping timeout: 260 seconds 23:22 (join) Shviller 23:41 (join) mithos28 23:52 (quit) Fare: Ping timeout: 244 seconds