00:01 (join) dsantiago 00:03 (quit) dsantiago: Client Quit 00:20 (join) dsantiago 00:32 (join) yours_truly 00:34 (quit) yours_truly: Read error: Connection reset by peer 00:54 (quit) dsantiago: Quit: Computer has gone to sleep. 00:59 (join) dsantiago 01:04 (quit) dsantiago: Client Quit 01:05 (join) didi 01:15 (join) mizu_no_oto 01:16 (join) tsion 01:16 (quit) tsion: Changing host 01:16 (join) tsion 01:20 (join) RacketCommitBot 01:20 RacketCommitBot: [racket] plt pushed 16 new commits to master: http://git.io/r54i4g 01:20 RacketCommitBot: racket/master e81f9eb Jens Axel Søgaard: Added bindings to number theoretic functions 01:20 RacketCommitBot: racket/master 8b99eb5 Jens Axel Søgaard: Headline in docs 01:20 RacketCommitBot: racket/master f68cc0a Jens Axel Søgaard: More documentation on number theoretic functions 01:20 (part) RacketCommitBot 01:22 (quit) jonrafkind: Ping timeout: 255 seconds 01:50 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 01:53 aezx: why does commit bot leave after each commit? why not just let it idle? 01:53 didi: aezx: It's shy. 01:54 aezx: ha 01:54 didi doesn't know, obviously :^) 02:03 neilv: easier to program it that way (it doesn't have to be careful not to exceed limits on number of joined channels, doesn't have to manage multiple channels at once, etc.). no question of whether it's spying on channel. less resources (it doesn't get sent lots of channel traffic). 02:03 neilv: or it could just be shy, as you say 02:05 didi: Let's stick to "shy". Always good to anthropomorphize stuff. 02:06 neilv: or misanthropic 02:10 (join) nilyaK 02:15 (quit) didi: Quit: ERC Version 5.3 (IRC client for Emacs) 02:19 (quit) ynniv: Quit: ynniv 02:19 (quit) mithos28: Quit: mithos28 02:21 (join) mithos28 02:32 (quit) nilyaK: Read error: Connection reset by peer 02:49 neilv: still some work to do, but this is about the amount of info you'll see from a 7-year-old canon consumer camera. http://paste.lisp.org/display/133800 02:56 (quit) neilv: Quit: Leaving 03:12 (quit) Nisstyre-laptop: Quit: Leaving 03:20 (quit) cdidd: Remote host closed the connection 03:22 (join) cdidd 03:24 (quit) mithos28: Quit: mithos28 03:35 (quit) shriphani_: Quit: shriphani_ 03:37 (join) dsantiago 03:38 (join) shriphani_ 03:51 (join) lewis1711 04:10 (join) asvil 04:16 jaimef: can racket exec code say "cat *|racket -e "(for (...))" 04:17 jaimef: ahh excellent 04:29 (join) bitonic 04:29 (join) MayDaniel 04:38 (quit) Shviller: Read error: Connection reset by peer 04:43 (join) Shviller 04:49 (quit) tsion: Quit: Leaving 05:28 (join) soegaard 06:07 (join) masm 06:58 (join) Blkt 07:04 (join) dzhus 07:50 (join) nathanpc 07:52 (join) deu5 07:57 (join) greghendershott 08:23 (quit) greghendershott: Quit: Leaving. 08:25 (quit) nathanpc: Read error: Connection reset by peer 08:26 (join) nathanpc 08:36 (join) wlangstroth 08:38 (join) greghendershott 08:44 (part) lewis1711 08:53 (quit) wlangstroth: Quit: wlangstroth 09:10 (join) Fare 09:15 (quit) greghendershott: Quit: Leaving. 09:27 (join) jeapostrophe 09:27 (quit) jeapostrophe: Changing host 09:27 (join) jeapostrophe 09:29 Cryovat: jaimef: You just taught me cat * 09:29 Cryovat: Thanks :D 09:31 (nick) samth_away -> samth 09:31 (join) SummerWine 09:32 SummerWine: hi, guys! can you comment this one: http://s10.postimage.org/e1ylfxm2x/bloatware.png 09:33 Cryovat: SummerWine: I believe I have a solution for you: 09:33 Cryovat: http://www.amazon.com/How-Win-Friends-Influence-People/dp/1439167346/ 09:33 SummerWine: please, stick to the theme 09:34 SummerWine: how is it possible that DrRacket takes much more memory than Visual Studio??? 09:34 SummerWine: that's the real question here, not getting friends 09:34 SummerWine: take a look once again: http://s10.postimage.org/e1ylfxm2x/bloatware.png 09:34 SummerWine: and say honestly: is drracket peace of crap??? 09:47 asvil: SummerWine: what is about memory limit for repl? 10:09 (join) mizu_no_oto 10:27 (quit) asvil: Ping timeout: 268 seconds 10:30 (join) rmathews 10:36 (quit) bjz: Quit: Leaving... 10:49 (join) mithos28 10:58 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 11:08 (quit) cdidd: Remote host closed the connection 11:10 (join) nilyaK 11:13 (join) anRch 11:13 (quit) deu5: Remote host closed the connection 11:14 (quit) cipher: Ping timeout: 252 seconds 11:18 (join) karswell 11:26 SummerWine: http://redd.it/13egnb 11:34 (quit) acarrico: Ping timeout: 260 seconds 11:34 (quit) mithos28: Quit: mithos28 11:34 samth: SummerWine: seriously? 11:34 (quit) SummerWine: Ping timeout: 245 seconds 11:38 (join) mithos28 11:41 (quit) jrslepak: Quit: What happened to Systems A through E? 11:52 (join) acarrico 11:53 (quit) anRch: Quit: anRch 11:54 (quit) karswell: 11:57 (quit) nilyaK: Read error: Connection reset by peer 12:01 (join) mye 12:05 (join) hash_table 12:10 (join) masm1 12:11 (quit) masm: Ping timeout: 276 seconds 12:12 (quit) rmathews: Ping timeout: 260 seconds 12:13 (join) rmathews 12:38 (join) RacketCommitBot 12:38 RacketCommitBot: [racket] plt pushed 10 new commits to master: http://git.io/WR5nAw 12:38 RacketCommitBot: racket/master 4041e65 Matthew Flatt: JIT simplification... 12:38 RacketCommitBot: racket/master be4ce3e Matthew Flatt: skip some unneeded fixnum tests in JIT-generated code 12:38 RacketCommitBot: racket/master 42f74b5 Matthew Flatt: JIT tweak: stack-clearing operations do not disturb registers 12:38 (part) RacketCommitBot 12:41 noam: SummerWine: I've been asking that myself for a while now too... but let me try and ask here a bit more constructive question, Is there some tool that lets you see WHAT the memory of a racket program is used for? (Like X Mb were allocated in this part of the program and Y MB in that part etc.) 12:46 aezx: maybe some downvotes will solve the problem... 12:48 (join) jrslepak 12:55 (join) greghendershott 12:56 (quit) rmathews: Quit: Bye.. 13:07 (quit) mye: Ping timeout: 246 seconds 13:11 (quit) acarrico: Ping timeout: 252 seconds 13:11 (join) mye 13:12 (join) mye_ 13:15 (quit) mye: Read error: Operation timed out 13:15 (nick) mye_ -> mye 13:15 samth: noam: yes, you can use custodians for that 13:16 samth: noam: see the docs here: http://docs.racket-lang.org/reference/eval-model.html#%28part._custodian-model%29 13:16 rudybot: http://tinyurl.com/ahonprf 13:17 samth: noam: and the paper here: http://www.cs.utah.edu/plt/publications/ismm04-wf.pdf 13:18 mithos28: samth: is there a reason that all of the for/...: code is just trying to annotate existing for/... stuff instead of rewriting it 13:18 samth: mithos28: to avoid the complication of re-implementing it, and probably getting it wrong 13:18 mithos28: I just wrote a simple for/hash: and for*/hash: that desugar to for/fold: and for*/fold: 13:19 (quit) walter: Remote host closed the connection 13:19 mithos28: the difference is mine actually typecheck, while the standard ones do not 13:19 samth: mithos28: if you're using for/fold, then that's reasonable 13:20 mithos28: https://gist.github.com/4106637 13:20 samth: i meant not reimplementing the whole for machinery 13:20 mithos28: yeah, that would be unreasonable 13:21 samth: mithos28: those look like good replacements for the current implementations of `for/hash:` 13:21 mithos28: ok, cool. 13:21 mithos28: They have the issue that they need the return-annotation 13:22 mithos28: even where the context provides enough information 13:22 samth: mithos28: probably the fix for that is a generalization of the 'called-in-tail-position syntax property 13:22 samth: something like 'used-in-tail-position 13:23 mithos28: ok, will that let the (make-immutable-hash null) be checked in the same context as the full expression 13:24 mithos28: and that is also not enough because for/fold: requires the annotations on the loop variables 13:25 mithos28: So I think I also need to figure out why that restriction exists when it should be inferable from the context 13:27 samth: yeah, that's the idea 13:28 (join) acarrico 13:28 noam: samth: Thanks for the pointer, but how would one use custodians to analyze the memory usage of drracket? 13:28 (quit) Fare: Ping timeout: 240 seconds 13:28 mithos28: on a slight side note, is there a way to introduce bindings in a for loop that aren't part of a sequence 13:29 samth: mithos28: see `in-val` 13:29 mithos28: (for ((av a-list) (match-define (a name fields) av) (f fields)) ...) 13:29 samth: it's kind of a trick, but that's what it's for 13:29 samth: maybe in-value? 13:30 samth: noam: drracket doesn't expose that information to users at the moment 13:30 mithos28: that is actually a for* 13:30 samth: yes 13:30 samth: mithos28: for/fold should allow un-annotated variables 13:30 samth: for example, this works: (ann (for/fold ([x 0]) ([i (in-range 10)]) (+ i x)) Integer) 13:30 samth: so we don't always need them 13:31 mithos28: ok, I'll try using my code for a bit, and if there are no issues I'll send a pull request 13:31 samth: mithos28: aweseom 13:32 mithos28: I just got sick of having to crazy gymnastics to do a for*/hash 13:32 mithos28: It involved (apply hash-union (make-immutable-hash null) (for/list ((..)) (for/hash ((..)) …)))) 13:32 mithos28: + annotations 13:33 noam: well there should be a way to measure memory usage, otherwise it would never get optimized... 13:34 samth: noam: there are certainly ways, but there isn't a way that's exposed to users right now 13:34 noam: what do you mean? 13:35 samth: noam: I mean that you can modify the source of drracket to provide more information about memory use, for example 13:36 noam: Ok I see 13:37 noam: I hope somone more familiar with racket then I am would go after finding what makes drracket use so much memory though... 13:38 samth: noam: i don't think drracket uses "so much memory" 13:38 noam: almost 500MB is quite much 13:38 bremner: resident? 13:39 mithos28: is it a bug if core racket macros just give a bad syntax error instead of a descriptive message? 13:40 mithos28: rudybot: init racket 13:40 rudybot: mithos28: your sandbox is ready 13:41 samth: mithos28: yes 13:41 mithos28: ok, will file away 13:43 (quit) sethalves: Read error: Connection reset by peer 13:43 (join) sethalve_ 13:44 (quit) jrslepak: Quit: What happened to Systems A through E? 13:47 (quit) sethalve_: Ping timeout: 248 seconds 13:48 (join) sethalve_ 13:54 (quit) greghendershott: Quit: Leaving. 14:04 aezx: i think racket is a modern language for modern machines. 14:04 aezx: 500mb isnt a lot of memory these days 14:04 offby1: mithos28: don't keel heem!! 14:08 (quit) mithos28: Quit: mithos28 14:10 (join) untrusted 14:17 (quit) bitonic: Ping timeout: 268 seconds 14:27 (join) mithos28 14:28 mithos28: is anyone else having issues seeing today's irc logs 14:28 mithos28: it is trying to download them for me instead of view them in my browser 14:29 samth: mithos28: works fine for me in FF 14:29 samth: mithos28: chrome wants to download them though 14:29 mithos28: what about yesterday's 14:29 samth: mithos28: i blame you personally for all of your company's software 14:30 samth: yesterday works right in both 14:30 mithos28: I'll forward it to people who actually work on chrome 14:30 samth: :) 14:30 mithos28: I'm guessing something is up with the server then 14:30 (join) dca 14:31 samth: maybe, i'm hard-pressed to guess what, though 14:31 mithos28: different disposition 14:32 mithos28: http://www.ietf.org/rfc/rfc1806.txt 14:32 mithos28: content-disposition 14:32 mithos28: or its sending it it as a different mimetype 14:33 noam: aezx: I can't even begin to describe how wrong is that thinking. I don't mean that every program should be a super optimized C program, but there is a limit where inefficient becomes bloated. And imho 500mb is too much for what drracket does. A computer is not for running just one or two programs simultaneously, what if every small-ish program you run needed 500mb of memory? 14:33 (join) jrslepak 14:40 offby1: noam: it's a question of economics, really. Is drracket _worth_ 500Mb? To you, clearly not; to other people, presumably, yes. 14:43 bremner: especially for people who have to bear the cost of improving the memory footprint ;) 14:44 mithos28: noam: The issue is ram is cheap, and optimizing programs is expensive 14:48 bremner: hmm. Emacs and Xulrunner are bothing sitting at about 200M resident for me. 14:50 bremner: DrRacket is at about 400M resident. 14:50 (join) jonrafkind 14:52 (join) tsion 14:52 (quit) tsion: Changing host 14:52 (join) tsion 14:52 samth: with no tools loaded, drracket is about 310 M 14:52 samth: for me 14:52 samth: presumably less on a 32 bit machine 14:53 (join) SummerWine 14:53 SummerWine: mithos28: the point is: you can't show Racket superiority if your "flagship" product takes more memory than gigantic Microsoft Visual Studio! 14:53 SummerWine: let's just agree in that case: microsoft is better than you, guys :) 14:54 SummerWine: Microsoft is capable of producing low memory programming tool 14:54 SummerWine: and you just cannot 14:54 bremner: lala one troll from ignore list... 14:55 SummerWine: Microsoft, ressurect Microsoft Bob 14:55 SummerWine: :) 14:56 SummerWine: trol or not, it's not importatnt. What's important is ENORMOUS memory consumption of "superior language" DrRacket 14:56 noam: (I don't try to troll, just genuinely concerned about memory usage) 14:57 noam: (and loves lightweight software) 14:57 SummerWine: i really don't understand how this memory issue does'n concern you, academic PLT guys!?? 14:57 bremner: yeah, well, if I wasn't ignoring SummerWine I'd point out that the racket interpreter uses a small fraction of the memory of DrRacket 14:58 mithos28: SummerWine: DrRacket uses similar memory to my irc client 14:58 SummerWine: bremner: so what? Microsodt command line c compiler also uses small memory footprint 14:58 SummerWine: so what? 14:58 offby1: bremner: good idea 14:58 SummerWine: but we are talking here about IDE stuff 14:59 mithos28: I don't use MS software so cannot compare to it, but I do know that DrRacket uses much less memory than Eclipse 14:59 SummerWine: a way too much RAM 14:59 (join) nilyaK 14:59 SummerWine: but it's much simpler than eclipse with gazzilion plug-insQ! 14:59 offby1: that's like saying "my cat weighs less than that elephant 14:59 offby1: " 14:59 samth: SummerWine: by default, drracket loads about a dozen plugins 15:00 SummerWine: Visual studio does it too 15:00 noam: mithos28: huh? what irc client do you use? 15:00 SummerWine: but it's many many times smaller 15:00 mithos28: noam: Colloquy 15:00 untrusted: visual studio is just crap 15:01 samth: SummerWine: we, of course, do care about the memory consumption of racket and drracket 15:01 noam: i use xchat and it uses 41mb 15:01 SummerWine: every new release of DrRacket takes more ande more memory 15:01 samth: however, we also care about lots of other things 15:01 samth: such as language expressiveness, type systems, contracts, documentation, extensibility, usability, portability, ... 15:01 mithos28: noam: About 3/4 of my ram is currently unused 15:02 samth: so we spend our time working on all of these issues 15:02 nilyaK uses Pidgin 15:02 mithos28: and that is how it normally stands, so if it ever becomes an issue I might look at a smaller one 15:02 noam: mithos28: welp good for you :P 15:02 SummerWine: the verbs people usualy link to DrRacket (from user groupS) are: sluggish, slow, unresponsive 15:02 SummerWine: but things staxy the same 15:02 mithos28: SummerWine: You do know it is an opensource project right? 15:02 SummerWine: stay 15:03 nilyaK: mythos28 meant: if you would like to submit a fix, you may. 15:03 SummerWine: if it is opensource, it doesn't have to be crapware, right? 15:03 mithos28: SummerWine: It works fine for most of its current users 15:04 SummerWine: hahaha, good joke 15:04 bremner: nilyaK: that's a little cliché ;) 15:04 nilyaK: no, this is a little cliché 15:04 (nick) nilyaK -> SummerWhine 15:05 Kaylin is not having a good morning. -.- 15:05 mithos28: Any one have a rough ballpark of how many racket devs there are, and what percentage of their time they devout to racket work? 15:06 SummerWine: i don't know how many they are, but they are doing the poor job. DrRacket gui is really bad 15:06 samth: mithos28: it's hard to make that count precise 15:06 samth: and it varies pretty widely among people 15:06 SummerWine: i remember once someone criticised gui on your group 15:06 SummerWine: and you were totally unwilling to lisen what that gay said 15:07 mithos28: SummerWine: link? 15:07 mithos28: SummerWine: Also most guis are not cross platform 15:07 SummerWine: something obout "Check syntax" button and how that button change gui appearance in some unlogicall way 15:08 samth: mithos28: there are maybe 15-20 people w/ commit access 15:08 SummerWine: i cant find the link right now 15:08 SummerWine: but i remembered 15:08 samth: plus a few more people who write non-trivial amount of code but aren't committers (like you) 15:09 samth: some of those people think of racket development as their main job (like matthew) 15:09 samth: but matthew does also teach, do research, write papers, advise students, that sort of thing 15:09 SummerWine: maybe will be better to hire Steven Sinofsky 15:09 samth: most of the people devote much less of their time to racket development than matthew 15:09 SummerWine: :) 15:10 mithos28: https://groups.google.com/forum/?fromgroups=#!searchin/racket-users/check$20syntax/racket-users/E4xmiGUVgPU/fS6C7Lxmbf8J 15:10 rudybot: http://tinyurl.com/azzlmqq 15:10 mithos28: is that the person you were talking about 15:10 mithos28: * killer bad: clicking on Check Syntax 15:10 mithos28: * changes the ui drastically and i have no idea how to get 15:10 mithos28: back to how it was before i clicked it 15:10 SummerWine: i think yes 15:12 mithos28: You did read the rest of the response where Eli asked him what he meant by that and didn't get an actionable answer back 15:12 mithos28: Also check syntax doesn't change the ui very much at all 15:14 SummerWine: but repl disappear when you click check syntax and it's just annoying 15:14 SummerWine: because of that i never click that button 15:15 mithos28: Ok, thats actually actionable. If you file a bug or send an email to dev@racket-lang you will actually get a discussion on why that decision was made to begin with and if it is worth changing 15:15 SummerWine: and one more thing: when i turn on the line numbering in editor, editor becomes much more sluggish 15:15 mithos28: there are issues with the editor speed, danny is working on reimplemting some of that code right now 15:16 SummerWine: Oh it's just danny, not Sinofsky :) 15:16 mithos28: Well I'm not sure about you, but I don't have the money to pay his salary 15:17 SummerWine: when danny solves the problem, DrRacket will take 1Gb of RAM, i suppose :) 15:17 mithos28: If you can point to actual items which are slow and hurt your workflow then people will listen 15:18 SummerWine: when i use Typed racket, all is incredibly slow 15:18 (join) mye_ 15:18 (nick) mye_ -> mye 15:18 mithos28: SummerWine: Compilation or running? 15:18 SummerWine: slower then "regular" racket 15:18 SummerWine: i edit the code and then it's slow when click "Run" 15:19 mithos28: Yes, sam and I work on improving that 15:19 SummerWine: i have to wait too much to program "begin" 15:19 mithos28: but its a hard problem 15:19 SummerWine: maybe that problem is easy for Mark Tarver 15:19 SummerWine: :) 15:20 mithos28: does he have time that he is willing to donate? 15:20 SummerWine: Shen is astonishly fast! (and typed too) 15:20 SummerWine: you should ask him 15:20 mithos28: I don't know him 15:21 SummerWine: i have donated a certain amout to him 15:21 SummerWine: amount 15:21 mithos28: If you can point to TR programs that are extremely slow to compile, we can take a look at them 15:22 mithos28: But if you just say that TR is slow, then I have no idea if you are seeing a real issue or just the fact that TR is doing a lot of work and you would like it to be faster 15:22 SummerWine: i don't have such a program right now, but that happened when i have doing my homework for the Krishnamurthi's online class 15:23 SummerWine: look TR is not slow when running, it's slow to compile, i assume 15:24 noam: back to the memory use issue: i would feel better if i knew what the memory was actually used for, and which parts of the program allocate what amount of memory 15:25 mithos28: noam: do you know how other languages solve this issue? I have never had to debug such problems 15:25 SummerWine: noam: the picture that ignites this polemic is made by merely starting DrRacket and doing nothing else at all 15:26 mithos28: SummerWine: Do you have any ram pressure on your machine? 15:26 SummerWine: no, it's a laptop with 4gb of RAM and nothing else running except the web browser 15:26 mithos28: If not why would you expect drracket to use less ram? 15:26 SummerWine: because Visual studio does 15:27 SummerWine: :) 15:27 SummerWine: and you guys are beter then M$ 15:27 SummerWine: are you? 15:27 SummerWine: :) 15:27 noam: mithos28: not the i have used any tools like that but haskell seems to have something: http://www.haskell.org/ghc/docs/7.0.1/html/users_guide/prof-heap.html 15:34 mithos28: noam: That looks cool, I don't think racket has anything of the sort 15:35 samth: mithos28: we have the infrastructre to do some things like that 15:35 samth: but nothing built yet 15:36 noam: i think that should get a place in the TODO list (wherever that is :P) 15:37 samth: noam: i was talking about this a few days a go, in fact 15:38 noam: good to know 15:38 (join) bitonic 15:38 noam: is there a plan? 15:39 SummerWine: a man, a plan, a RAM! :) 15:41 samth: noam: no, not at the moment 15:42 noam: alright. i can't work on this myself but good luck to whoever does (hopefully). 15:45 samth: basically, you'd want to use a combination of periodic calls to `dump-memory-stats` and `plot` 15:46 mithos28: oh wow, didn't know that existed 15:48 samth: it would be nicer to have a custodian-limited version of that 15:48 samth: but i don't know how hard that would be 15:50 (quit) untrusted: Remote host closed the connection 15:50 (quit) Blkt: Remote host closed the connection 15:53 (quit) jrslepak: Quit: What happened to Systems A through E? 15:57 aezx: noam, I'm way late 15:57 aezx: i've been doing other things 15:57 aezx: but not every small program needs 500mb 15:58 noam: no problem 15:58 aezx: i'm perfectly satisfied with drracket using that much 15:58 (join) jrslepak 15:58 aezx: and i could not care any less about an opposing opinion regarding my programming setup 15:58 aezx: it is quite easy to use racket without drracket 15:58 aezx: a great deal of text editors have paren matching and syntax highlighting 15:58 aezx: drracket is not essential 15:59 noam: what about the memory usage of racket programs is general? 15:59 aezx: im not sure what you're trying to ask 15:59 noam: is writing lightweight programs is possible using racket? 16:00 aezx: of course 16:00 mithos28: noam: How lightweight is lightweight 16:00 mithos28: embedded devices? 16:00 (part) pavelpenev: "http://quassel-irc.org - Chat comfortably. Anywhere." 16:01 samth: we've successfully run a racket-implemented version of ssh on a consumer-grade router with 256 MB of ram 16:01 noam: no, just some stuff that runs at the background for example like a torrent client 16:01 samth: but that's probably too small 16:01 (join) dsp 16:01 aezx: the other major flaw in the argument is that I have yet to see drracket use more than 200mb without me asking it to 16:01 mithos28: oh wow, last I heard embedded racket was a no-go 16:01 aezx: I'm using it right now, and its using about 185 16:02 bremner: aezx: on what architecture? 16:02 noam: when i start drracket it uses more then 400mb, aezx 16:02 aezx: crunchban linux x86 16:02 aezx: crunchbang* 16:02 bremner: aezx: so, 32bit? 16:02 noam: so it seems 16:02 aezx: thats what x86 generally means...... 16:02 noam: i'm on 64bit 16:02 aezx: noam are you on windows? 16:02 noam: also 16:03 noam: but i have a linux box too 16:03 bremner: aezx: I don't think that tone is called for, but whatever. 16:03 aezx: does drracket behave differently on the two machines? 16:03 mithos28: aezx: x86 also means not arm sometimes 16:03 noam: i don't remember.. let me check that 16:03 aezx: I've never experienced that myself, but I'll take your word for it 16:04 aezx: the point im trying to establish is that drracket behaves differently on different operating systems and archs 16:04 samth: mithos28: "embedded" is a slippery term 16:04 samth: that machine is really a linux machine 16:04 aezx: ^ 16:05 bremner: aezx: yes, it could really be that a 32bit version uses less memory 16:05 mithos28: samth: Last I had heard of putting racket on a machine with limited resources, things didn't work 16:05 samth: mithos28: that was probably the same machine 16:05 samth: we eventually got things to work 16:05 samth: but not work that well 16:05 (join) dnolen 16:06 aezx: i dont have a 64bit machine to test that theory 16:06 aezx: but to some degree, I'd expect it to be that way 16:06 mithos28: given a snip% how do I get it to display in a frame%? 16:07 asumu: mithos28: you need to put it in an editor<%>, in an editor-canvas%, in a frame% 16:07 mithos28: asumu: Thanks 16:07 aezx: i love all of you 16:07 (quit) noam: Read error: Connection reset by peer 16:08 (join) noam 16:08 SummerWine: aezx: it's not a theory, it's a reality: 64bit DrRacket on WIndows 7 takes nearly 500mb 16:09 SummerWine: without any program loaded in it! 16:09 SummerWine: that's incredible thing! 16:10 noam: aezx: on linux 64bit drracket uses 305MB and goes to 339MB after opening two very small files 16:10 mithos28: noam: How are you measuring that? 16:10 noam: 305mb is better i'd give you that. 16:11 noam: just kde's system monitor thingie 16:11 SummerWine: on the same time, Visual studio takes 10 times less 16:11 asumu: SummerWine: you' 16:12 asumu: Sorry, pressed enter too early. 16:12 asumu: SummerWine: you've made your point. Please keep the discussion constructive. :) 16:12 SummerWine: ok, sorry 16:15 asumu: FWIW, I see around 400-450MB on 64-bit Win7/Linux. 16:15 (quit) bitonic: Ping timeout: 240 seconds 16:15 SummerWine: and that doesn't make you worried? 16:16 mye: using seconds->date with something after the end of the unix epoch it only possible with 64-bit racket. But is there a workaround? 16:16 SummerWine: come on, it's a WAY too much! 16:16 mye: I was quite annoyed that racket didn't abstract this. Is there reason? Performance? 16:17 mithos28: mye: abstract what? 16:17 asumu: mye: IIRC, some of the time/date stuff is implemented in the runtime. 16:17 asumu: So it's likely an implementation issue. 16:17 mye: mithos28: allow dates after 2038 with a 32-bit build 16:17 mithos28: oh, I missed your first message. 16:18 aezx: summerwine 16:19 aezx: i can tell that you and i arent going to get along 16:19 aezx: very easily 16:19 mithos28: mye: because seconds->date is meant to be platform specific it looks like 16:19 asumu: aezx, SummerWine : please keep discussion on-topic. No feuds here. :) 16:20 mithos28: and 32bit linux cannot do past that 16:20 noam: aezx: i think i can say that too about summerwine if that is of any consolation :P 16:20 mithos28: mye: Also what are you trying to do that you need to go out that far? 16:21 mithos28: mye: especially since you don't know what leap seconds will look like or if someone will change DST on you 16:21 SummerWine: asumu: Is it true that the Japanese have a small dick??? 16:21 mye: mithos28: I can accept that. But is there way to do it another way to handle dates? Is it worth trying? Probably not. But I just thought it would be .. nice 16:21 mye: ouch? 16:21 mye: what are the banning policies here? 16:22 offby1: yay, thanks 16:22 mithos28: mye: what is your goal? 16:23 samth: mye: the ban policies are (a) please keep it constructive and (b) inappropriate behavior like that is an immediate ban 16:23 (join) wlangstroth 16:26 mye: mithos28: I'm writing this url shortener that encodes dates in base 60, and was getting error with certain dates in the tests. So my goal after I found out that 32-bit can't handle it was to find out how to do the calculations in a way that isn't dependent on the runtime. 16:26 offby1: What do dates have to do with shortening URLs? 16:27 mithos28: why are you turning dates into seconds since the epoch? Like I pointed out you will have issues with leap seconds. 16:28 mye: offby1: every url has the form which encodes the days since the epoch 16:28 mye: the last is a growing ID 16:28 offby1: oh I see 16:28 mithos28: What am I not doing here? I just get an empty frame. https://gist.github.com/4107614 16:28 offby1: I assumed your URL would be more or less a hash of the input URL; that's how the real ones work, I think 16:28 mye: I got the idea here: http://tantek.pbworks.com/w/page/21743973/Whistle 16:29 mye: the trick is, its algorithmically reversible 16:31 asumu: mithos28: it works if you define the canvas after the editor (and use the 'editor' init-arg for the canvas) 16:32 asumu: (might also work if you set-editor instead) 16:32 asumu: (yes, it does) 16:32 mithos28: thanks, that worked 16:36 (join) jao 16:36 (quit) jao: Changing host 16:36 (join) jao 16:39 (join) greghendershott 16:40 (quit) greghendershott: Client Quit 16:41 (quit) wlangstroth: Quit: wlangstroth 16:41 (join) bjz 16:41 (quit) bjz: Client Quit 16:41 mye: mithos28: re: going out that far: I probably got an overflow of unwarranted perfectionism (pun intended). 16:42 mye: It just bothered me that I couldn't write test cases with certain dates. 16:42 mithos28: I would submit a bug if I were in your position 16:43 mye: I mean, it's not like time based bugs didn't prevent me from using drracket one day :P 16:44 mithos28: mye: Hush, that never happened. 16:54 samth: mye: for more time fun, there was a bug where seconds->date errord on some values b/c they don't exist in that time zone 16:55 asumu: samth: wasn't that a "not a bug"? :p 16:55 samth: yes 16:55 asumu: Or maybe "it's like a bug". 16:57 samth: the bug is that people have created a totally insane time systems 16:58 mithos28: https://gist.github.com/4107614, realtime plot of racket's memory usage 16:59 mye: is it a good idea then to, in general, generate date structs that use UTC only? Does it make the code more reliable? 17:01 mye: I get a shark tooth pattern, mithos28. Looks cool 17:02 mithos28: yeah thats what I get 17:02 mithos28: the problem is that is all from the chart generation 17:02 asumu: samth: this is why we should switch to kiloseconds and the International Fixed Calendar. 17:03 mithos28: asumu: first lets get rid of leap seconds 17:03 mithos28: start with the easy things 17:03 asumu has a kilosecond clock on some of his taskbars... it's not actually very intuitive. 17:04 mithos28: what is a kilosecond? 17:04 mithos28: just 1000 seconds 17:04 mithos28: or is it like swatch's beats 17:04 asumu: 1000 seconds. 86.4 of them is a day. 17:04 asumu: 0.5ks is about an hour. 17:05 asumu: Wait, not 4ks is about an hour. 17:05 samth: mithos28: i think a moving avg would improve the chart a bunch 17:05 samth: but it's really awesome 17:05 mithos28: samth: yeah it was just a proof of concept 17:06 mithos28: most of the time was figuring out how to do guis in racket 17:06 mithos28: I couldn't figure out how to collect the information from dump-memory-stats 17:08 (quit) masm1: Ping timeout: 246 seconds 17:09 (join) masm 17:09 samth: dump-memory-stats prints to stderr 17:09 samth: the low-level process stderr, too, i think 17:09 samth: not `current-error-port` 17:09 mithos28: right, thats what it seemed like 17:10 mithos28: probably due to issues of allocation during memory collection 17:10 mithos28: but it seems like it could put the information in some static place, and then allocate after the collection 17:14 samth: yeah 17:14 samth: but matthew would probably have more info on this 17:27 (join) ambrosebs 17:27 (join) bitonic 17:30 asumu: Anyone else see this on the latest git? raco setup: UNKNOWN: : read (compiled): ill-formed code [../../../racket/gc2/../src/validate.c:1167] 17:30 asumu might just have some stale state 17:31 samth: ambrosebs: did you have slides for your clojure conj talk? 17:33 ambrosebs: samth: I'll send them to you, but I managed to get roughly 1/3 of REPL demos in 17:34 samth: 1/3 is a pretty good ratio for a demo 17:34 ambrosebs: samth: typing invocations of `map` got a round of applause. 17:34 samth: demos never cover as much as you think they will 17:34 samth: ambrosebs: awesome 17:35 ambrosebs: samth: I attributed Strickland, TH, Felleisen off the top of my head.. correct? 17:35 samth: yes, that's right 17:35 ambrosebs: great 17:35 ambrosebs: I also did a small session on a whiteboard covering occurrence typing and dotted tvars 17:36 ambrosebs: and I showed off my `filter` extensions 17:36 ambrosebs: in detail 17:40 (quit) jonrafkind: Ping timeout: 245 seconds 17:42 (quit) soegaard: Quit: soegaard 17:45 (join) Kaylin 17:46 samth: ambrosebs: sounds great 17:46 samth: wish i could have been there 17:54 (quit) mithos28: Quit: mithos28 17:58 (join) mithos28 18:07 ambrosebs: if anyone else is interested: Typed Clojure @ Clojure Conj 2012 slides https://github.com/downloads/frenchy64/papers/conj%20main%20talk.pdf 18:08 (quit) bitonic: Ping timeout: 240 seconds 18:10 (quit) MayDaniel: Read error: Connection reset by peer 18:11 mithos28: ambrosebs: Why the need for annotation in type aliases? 18:12 ambrosebs: methos28: Aliases are handy? What are you referring to exactly? 18:13 mithos28: the variance annotations 18:13 ambrosebs: methos28: ah, it lets me abstract over monads 18:14 ambrosebs: (I'm pretty sure) monads are covariant in their argument 18:14 mithos28: TR doesn't need them, so I'm wondering why TC needs the annotations 18:15 ambrosebs: https://github.com/frenchy64/typed-clojure/blob/master/test/typed/test/monads.clj#L481 18:15 rudybot: http://tinyurl.com/bfa9n72 18:15 ambrosebs: that's an example where they're handy 18:16 ambrosebs: TR polymorphic aliases are a bit of a hack, just wrap your type in a `All` 18:16 ambrosebs: the variance annotations take it a bit further so they're useful for monads 18:17 ambrosebs: of course, I could have a default variance, it's pretty annoying to have to explicitly say every time 18:17 mithos28: I don't see why the system cannot infer the variance 18:17 mithos28: rudybot: init typed/racket 18:18 rudybot: mithos28: your typed/racket sandbox is ready 18:18 ambrosebs: mithos28: that's probably true. 18:19 mithos28: So is the answer you hadn't looked into not requiring the annotations? 18:19 mithos28: I just want to make sure there isn't something missing from TR 18:20 ambrosebs: mithos28: Well what's missing with TR is higher-kinded types. 18:20 mithos28: ah, yeah I just realized thats what you have 18:20 ambrosebs: mithos28: I can probably infer the annotations, yes. 18:21 mithos28: right TR just has first order type functions 18:21 mithos28: which cover a lot of ground 18:21 mithos28: I like defining my types as the fix point of polymorphic structs 18:22 mithos28: thus I can reuse structure code across different tree types 18:22 mithos28: useful in code transformations 18:22 ambrosebs: what is the fix point of polymorphic structs? 18:23 mithos28: (struct: (e) app ((fn : e) (arg : e))) 18:23 mithos28: rudybot: (struct: (e) app ((fn : e) (arg : e))) 18:23 rudybot: mithos28: error: #:1:13: dtsi*: expected struct name at: app in: (dtsi* (e) app ((fn : e) (arg : e)) #:maker make-app) 18:24 mithos28: oh right repl sucks 18:25 (quit) SamB_MacG5: Ping timeout: 260 seconds 18:26 (join) bitonic 18:26 (join) SamB_MacG5 18:27 (quit) ambrosebs: Ping timeout: 246 seconds 18:29 mithos28: https://gist.github.com/4108103 18:29 mithos28: oh well he left 18:36 (join) adamgolding 18:44 (join) anRch 18:48 (quit) Shviller: Ping timeout: 244 seconds 18:48 (join) Shviller 18:56 (quit) mithos28: Quit: mithos28 19:00 (join) mithos28 19:08 (quit) hash_table: Ping timeout: 276 seconds 19:15 (quit) anRch: Quit: anRch 19:53 (quit) bitonic: Ping timeout: 240 seconds 19:55 (quit) masm: Quit: Leaving. 19:57 (join) jonrafkind 20:04 (quit) tsion: Quit: Leaving 20:05 (quit) adamgolding: Quit: Page closed 20:07 (join) dedis21 20:13 (join) yoklov 20:15 (quit) dedis21: Remote host closed the connection 20:24 (join) ambrosebs 20:24 ambrosebs: mithos28: sorry about that, airplane wifi ran out 20:25 ambrosebs: so what did you mean by "fix point of polymorphic structs"? 20:36 mithos28: https://gist.github.com/4108103 20:43 (quit) dnolen: Quit: ERC Version 5.3 (IRC client for Emacs) 20:46 mithos28: ambrosebs: Just put some more examples in that gist 20:49 (join) cipher 20:49 ambrosebs: mithos28: Pretty cool idea. Is it related to the higher-kinded types? 20:50 mithos28: sorta, app and lam are both higher order types 20:50 ambrosebs: Typed Clojure also supports recursive types. 20:50 mithos28: sorry higher-kinded types 20:50 mithos28: but need to be used in first order settings 20:51 (join) greghendershott 20:52 ambrosebs: mithos28: I think I need clarification: LC and LC-with-int just look like normal types to me. 20:52 mithos28: app has kind * * -> * 20:52 mithos28: sorry * -> * 20:53 mithos28: and so does lam 20:53 ambrosebs: Right, yes I see. 20:53 mithos28: but you don't have lambda at the type level 20:53 ambrosebs: yes 20:54 mithos28: and all arguments to All must be of kind * 20:55 ambrosebs: mithos28: it gets kind of weird because I'm pretty sure you can pass a `All` to another `All` anyway in TR 20:55 ambrosebs: but definitely not a good idea I guess. 20:55 mithos28: example? 20:56 mithos28: thats not a contradiction 20:56 mithos28: All is different from lambda at the type level 20:57 ambrosebs: I see. They seem to play the same role in TR 20:57 ambrosebs: Whats the diff? 20:57 mithos28: a value can have the type (All (a) (Listof a)) 20:57 mithos28: for example null 20:58 mithos28: so all (All (a) (Listof a)) has kind * 20:58 mithos28: while (lambda (a) (Listof a)) has kind * -> * 20:59 ambrosebs: ah! very important difference, I see. 20:59 mithos28: Usually All is written with capital lambda 20:59 mithos28: no thats not right 21:00 ambrosebs: (V (x) ...) right? 21:00 ambrosebs: forall 21:00 mithos28: yeah, capital lambda is the value with that type 21:01 ambrosebs: mithos28: I see 21:01 ambrosebs: Seems like a bit of an issue to have contract generation + higher-kinded types? 21:02 mithos28: why? 21:02 ambrosebs: I guess you always assign an expression a type * 21:02 ambrosebs: it doesn't make sense to give it any other kind. 21:02 ambrosebs: So I guess it's ok 21:02 mithos28: right all expressions have a type who's kind is * 21:03 ambrosebs: I thought about your variance question. I actually already do infer the variance, so it's completely redundant :) 21:04 ambrosebs: the interesting bit is when you want a type variable of a higher-kind 21:04 ambrosebs: and that always needs extra annotation 21:04 mithos28: that makes sense 21:04 ambrosebs: It's really handy in monad transformers 21:05 ambrosebs: https://github.com/frenchy64/typed-clojure/blob/master/test/typed/test/monads.clj#L826 21:05 rudybot: http://tinyurl.com/9w83rff 21:05 (join) tsion 21:05 ambrosebs: A bit hard to read, but basically `m` is the monad, and it has a covariant argument 21:05 (join) mizu_no_oto 21:06 ambrosebs: and :kind gives the kind of the type variable 21:06 ambrosebs: actually, does it make sense to have `m` as an argument to `All`? 21:07 ambrosebs: Seeing as m is * -> * 21:07 ambrosebs: Of course, you need to instantiate `m` every time you use maybe-t 21:07 mithos28: Yes it makes sense, TR doesn't support it but thats an implementation defect 21:08 ambrosebs: I wonder if there's a good use case for Racket. 21:08 (join) bbloom 21:08 mithos28: I have a question about you maybe-m 21:08 mithos28: your* 21:09 mithos28: how do you differentiate Just Nothing and Nothing 21:09 mithos28: syntax taken from haskell 21:09 ambrosebs: that's a defect of that particular monad implementation 21:09 ambrosebs: you can't 21:09 mithos28: pretty big defect 21:09 ambrosebs: yep. :) 21:10 ambrosebs: other monad impls use a unique keyword 21:10 ambrosebs: but it's uninteresting from a static type perspective 21:11 (quit) dzhus: Ping timeout: 248 seconds 21:12 ambrosebs: Many people ask that question, it amazes me how quickly you see the defect. 21:12 ambrosebs: I don't use monads :) 21:12 mithos28: I have a knack for seeing the edge cases 21:12 ambrosebs: haha 21:12 ambrosebs: nice 21:13 mithos28: It was fun looking at the TR code base and finding out how to subvert the typesystem 21:13 ambrosebs: type functions in TR would be lots of fun I imagine. 21:13 ambrosebs: needs to be implemented 21:13 ambrosebs: :) 21:13 mithos28: they go on the feature request list 21:14 mithos28: which should get looked at after the bug list 21:14 asumu: ambrosebs: I looked at your slides, very nice work! 21:14 ambrosebs: asumu: thanks! 21:14 (join) amalloy 21:15 asumu: ambrosebs: was there anything tricky you needed in particular to support protocols? 21:15 ambrosebs: asumu: well the tricky case is when protocols are extended at runtime. And I have no idea how to handle that except add a "trust me" annotation 21:15 ambrosebs: asumu: but outside that, no issue. 21:16 asumu: Ah, I see. This is the whole `extend-protocol` thing Clojure has? 21:16 asumu: Yeah, that's interesting. Does that see a lot of use in Clojure code? 21:17 ambrosebs: depends on the code I guess. I personally haven't seen it that often 21:18 (join) wlangstroth 21:18 ambrosebs: asumu: it seems like where runtime contracts could help 21:18 ambrosebs: right now, TC doesn't change runtime semantics at all. 21:20 mithos28: does anyone know if whalesong is close to being able to do all of racket/base yet? 21:36 offby1: I bet danny knows 21:36 offby1: rudybot: seen dyoo 21:36 rudybot: *offby1: dyoo was seen joining in #racket one day ago, and then dyoo was seen quitting in c-98-202-217-133.hsd1.ut.comcast.net one day ago, saying "Quit: dyoo" 21:40 (join) racketeer 21:42 racketeer: Hello, I'm currently working through HtDP and I'm trying to use the make-pson function. When I try and use it, I get an error: "make-pson: this function is not defined" 21:42 mithos28: are you spelling it make-pson? 21:42 mithos28: it should be make-posn 21:42 mithos28: you switched the s and the o 21:43 (join) neilv 21:43 racketeer: Gah! I just looked again. You're right. 21:43 mithos28: posn is short for position (and the o corresponds to the first o) 21:43 (quit) Kaylin: Read error: Connection reset by peer 21:43 racketeer: Thanks! 21:43 (join) shriphani__ 21:43 (quit) shriphani_: Ping timeout: 240 seconds 21:44 jonrafkind: (match blah [(list x ...) (define x ...)]) I keep doing this argh! x ends up being # 21:44 mithos28: racketeer: no problem. If you have any more questions, just ask away 21:44 mithos28: jonrafkind: just never reuse variable names 21:44 mithos28: ever 21:45 jonrafkind: good idea, then we won't need hygiene 21:46 mithos28: jonrafkind: no because if a macro is invoked twice it would put the same 'unique' variable in twice 21:46 jonrafkind: wait so you were serious about that suggestion? 21:46 mithos28: Its what I'm currently doing 21:46 jonrafkind: are you like, a crazy person 21:47 mithos28: I may be writing a compiler though, so doing it programatically 21:47 jonrafkind: ryan has on occasion said to me that it might be a good idea to disallow shadowing in general 21:47 jonrafkind: i still think its a crazy idea 21:48 jonrafkind: or to compromise that you can't shadow macro bindings 21:48 mithos28: why only macro bindings? 21:49 jonrafkind: well i forget the reasoning 21:51 mithos28: rudybot: (:print-type filter) 21:51 rudybot: mithos28: ; stdout: "(All (a b) (case-> ((a -> Boolean : ((b @ 0) | Top)) (Listof a) -> (Listof b)) ((a -> Any) (Listof a) -> (Listof a))))\n" 21:51 (quit) racketeer: Quit: Page closed 21:51 mithos28: why does filters first argument need to return a Boolean in the first case? 21:52 asumu: jonrafkind: that annoys me too about define. 21:56 (join) sw2wolf 21:58 sw2wolf: It is VERY hard for me to find an app. developed using racket. https://github.com/Metaxal/RWind/ But it is so experimental ... 21:58 mithos28: I want to use filter for a list of type (Listof (Option )), doesn't have simple predicate 22:00 asumu: sw2wolf: http://planet.racket-lang.org/ 22:00 (join) hash_table 22:01 sw2wolf: thanks 22:01 mithos28: sw2wolf: http://en.wikipedia.org/wiki/Uncharted_3:_Drake%27s_Deception 22:01 mithos28: sw2wolf: http://cufp.org/conference/sessions/2011/functional-mzscheme-dsls-game-development 22:01 rudybot: http://tinyurl.com/6ac6sxp 22:02 jonrafkind: sw2wolf, i wrote pong and asteroids in racket 22:04 sw2wolf: I am a racket newbie. I have CL experience by using stumpwm and i want to learn racket 22:05 sw2wolf: It seems racket is so big compared with guile and chicken, isnot it? 22:05 jonrafkind: ya 22:06 (quit) wlangstroth: Quit: wlangstroth 22:06 neilv: racket has a lot of stuff, and it's well-documented. start reading. http://docs.racket-lang.org/getting-started/ 22:06 sw2wolf: ok 22:08 sw2wolf: It takes so long to install racket on my freebsd box as freebsd 9 doesnot supply rqacket binary package. 22:09 offby1: sw2wolf: you can save some time by passing an argument like --without-documentation to "configure" 22:10 neilv: some freebsd person could step up and make racket binary packages 22:10 sw2wolf: i hope so 22:10 sw2wolf: Both guile and chicken has binary package 22:10 neilv: i did know someone using racket on freebsd, but they switched to linux 22:11 sw2wolf: freebsd and stumpwm is my every day desktop 22:11 sw2wolf: now the racket can be installed from freebsd ports. 22:14 (join) cdidd 22:15 (quit) hash_table: Ping timeout: 252 seconds 22:18 (quit) walter|r: Quit: This computer has gone to sleep 22:25 (nick) sethalve_ -> sethalves 22:26 (quit) nathanpc: Quit: Computer has gone to sleep. 22:42 (quit) ambrosebs: Ping timeout: 245 seconds 22:43 (quit) mizu_no_oto: Quit: Computer has gone to sleep. 22:45 (part) amalloy 23:21 jonrafkind: I find I still need let loop a lot 23:28 (join) Kaylin 23:31 neilv: there's a reason they came up with something as funny-looking as named-let for rnrs: it's actually a good idea 23:35 (join) Nisstyre-laptop 23:37 jonrafkind: yea but in light of the for* stuff it seems like an anachronism to use named-let 23:38 mithos28: for* only works where the recursion scheme is known before looking at the data 23:38 neilv: it's not. lots of things don't fit the for-things 23:39 neilv: the for-things are nice conveniences that expose certain structures 23:39 neilv: i'm a little concerned that people will see the for-things and never get good at doing it a non-for-thing way 23:39 jonrafkind: what like map and foreach? 23:39 (quit) greghendershott: Quit: Leaving. 23:40 neilv: so when they have a problem that doesn't fit the for-things, they are stumped, or write pascal in racket 23:40 jonrafkind: id much rather write pascal than named-let actually 23:40 mithos28: jonrafkind: what kind of loops are you writing? 23:41 jonrafkind: its like parse 3 expressions from a list, then return those 3 expressions and the unparsed list 23:41 jonrafkind: and the 3 expressions might be separated by commas or whatever 23:41 mithos28: and an expression can be more than one element? 23:41 jonrafkind: yea it could be 1 + 1, 2 + 2 23:41 jonrafkind: the parse function returns a parsed thing and an unparsed list 23:42 neilv: hm. there isn't a scribble def-something or convention for the new define-logger thing in 5.3.1, is there 23:42 mithos28: this seems like it should be easy in monadic form 23:42 jonrafkind: lulz monads.. 23:43 jonrafkind: etc etc if you use monads now you have 2 problems 23:43 mithos28: runParser (do x <- parseExpression; y <- parseExpression; z <-parseExpression; return (x,y,z)) inputList 23:44 mithos28: its just the state monad 23:44 jonrafkind: ok now parse expressions separated by commas until you hit a 'X delimiter 23:46 mithos28: def parseUntil pred f = if pred then return [] else do x <- f; fmap (cons x) (parseUntil pred f) 23:47 mithos28: parseUntil (isNext 'x) parseExpr 23:47 asumu will often write a let loop as a first cut and then translate to `for` if there's a good match 23:47 neilv: asumu is smart 23:49 jonrafkind: mithos28, oh ok it works because the current parse state is inside the monad eh 23:49 mithos28: yeah 23:49 mithos28: thats the whole monad 23:49 mithos28: just a state monad over the parse state 23:49 jonrafkind: ok i guess its fine, it doesnt seem much better than just using mutation, but i guess monads scale better 23:51 mithos28: right. I'm not sure what the structure of Honu is but it seems like the concept of a parser is likely core 23:51 mithos28: and you want an easy way to combine them 23:51 jonrafkind: well this is for python actually.. im just using honu-style expansion 23:51 jonrafkind: ill keep it in mind to refactor the honu parser using monads, maybe it iwll be cleaner 23:52 mithos28: you are writing a python parser in racket? 23:52 jonrafkind: right now its a huge mess of (match ...) 23:52 jonrafkind: yea 23:52 jonrafkind: for my thesis 23:52 jonrafkind: as a way to add macros to python 23:52 mithos28: ah cool 23:52 mithos28: too bad I won't get to use it at work anytime soon 23:52 jonrafkind: its pretty easy really, just write some expand thing for the core ast and enforest to deal with the concrete syntax 23:53 jonrafkind: so its just a tad more work than writing a regular parser 23:53 mithos28: enforest? 23:53 jonrafkind: to use it for real id have to write it in python and add in meta-levels and whatnot 23:53 jonrafkind: enforest is the parsing layer that deals with concrete syntax 23:53 jonrafkind: just the name we came up with 23:53 mithos28: ah 23:53 (join) mizu_no_oto 23:57 (join) ewemoa 23:58 (quit) mizu_no_oto: Ping timeout: 240 seconds