00:07 (join) rekahsoft 00:54 (join) mithos28 00:59 (quit) dnolen: Quit: dnolen 00:59 (quit) mithos28: Quit: mithos28 01:04 (join) mithos28 01:04 (quit) yoklov: Quit: Leaving. 01:20 (quit) Nightwolf: Ping timeout: 250 seconds 01:20 (quit) jonrafkind: Remote host closed the connection 01:21 (quit) mithos28: Quit: mithos28 01:21 (join) erjiang 01:31 (join) mg4001 01:40 (join) sheikra 01:41 sheikra: hello! 01:42 sheikra: I have a question about the structure types 01:42 sheikra: I defined a structure type Arr with (struct Arr (from to serial)) 01:43 sheikra: then defined a helper function for making Arr with a "default" value for serial, that is #f. 01:43 sheikra: (define Arrow (lambda (from to) (Arr from to #f))) 01:44 sheikra: then I redefined Arr with same definition. then Arrow breaks... 01:44 sheikra: (Arr? (Arrow 1 2)) returns #f ... 01:57 (quit) erjiang: Quit: ttfn 03:13 (quit) mg4001: Quit: Leaving 03:24 (quit) sheikra: Read error: Connection reset by peer 03:25 (join) sheikra 03:37 (join) hkBst 03:48 (quit) realitygrill: Ping timeout: 240 seconds 03:50 (join) Nightwolf 03:55 (join) realitygrill 04:00 (join) leo2007 04:09 (quit) leo2007: Ping timeout: 246 seconds 04:44 (quit) ckrailo: Quit: Computer has gone to sleep. 04:53 (quit) rekahsoft: Ping timeout: 276 seconds 04:55 (join) rekahsoft 05:07 (join) sheikra_ 05:09 (quit) sheikra: Ping timeout: 276 seconds 05:56 (join) masm 05:57 (quit) sheikra_: Quit: Leaving 05:59 (join) sheikra 06:30 (quit) sheikra: Quit: Leaving 06:43 (join) yoklov 07:40 (join) leo2007 07:47 (quit) yoklov: Quit: Leaving. 08:22 (join) MayDaniel 08:31 (join) yoklov 08:38 yoklov: this might be intentional, but why is there a difference between specifying #lang r5rs and setting drracket to determine language from source versus setting drracket to r5rs mode? 08:40 yoklov: the difference that i've noticed, though there may be others, is that lists are displayed as mcons's. for example, in determine language from source #lang r5rs, if you type (list 1 2 3) it will display (mcons 1 (mcons 2 (mcons 3 '()))), whereas in r5rs mode it will display (1 2 3) 08:40 (quit) MayDaniel: Read error: Connection reset by peer 08:40 yoklov: i mean, i know why it does it, its because it handles r5rs lists like mutable lists, which they are, but is the difference intentional? 08:47 ohwow: hm, strange D: 08:54 yoklov: yeah, I'm taking a class on scheme and all we use is r5rs 08:54 yoklov: but i program in racket all the time 08:54 yoklov: so it's been bugging me for a while 09:19 (join) ChibaPet 09:20 ChibaPet: Good morning. 09:30 (join) tauntaun 09:41 (join) dnolen 09:41 (join) sheikra 09:59 askhader: hi 10:04 (join) Zorlin 10:07 (quit) tauntaun: Quit: Ex-Chat 10:19 (quit) yoklov: Quit: Leaving. 10:45 (join) tfb 11:07 (quit) masm: Ping timeout: 240 seconds 11:11 (quit) dnolen: Quit: dnolen 11:17 (join) ckrailo 11:23 (join) cmatheson 11:24 (join) mithos28 11:24 (nick) samth_away -> samth 11:25 samth: yoklov, the reason is that the #lang r5rs doesn't change the printer, and the language level does 11:25 samth: the ability for #lang to change the printer is somewhat new 11:26 samth: sheikra, structures are generative, which means that every time you write (struct Arr ...) it creates a *new* version of the struct 11:26 samth: and your `Arrow' function refers to the old version of the struct 11:26 samth: whereas `Arr?' is for the new version 11:27 sheikra: samth: but I think the Arrow function should refer to the new version of the constructor Arr. 11:27 sheikra: samth: the constructor should behave the same as a function 11:27 sheikra: samth: The new constructor will create new records, which are different from the ones already created. 11:28 sheikra: samth: The Arrow function should call this new version 11:28 samth: sheikra, you only need to say my name once :) 11:28 samth: see the docs here: http://docs.racket-lang.org/guide/define-struct.html?q=struct#%28part._.Structure_.Type_.Generativity%29 11:28 rudybot: http://tinyurl.com/3j7xevg 11:28 samth: the `Arrow' function doesn't change when you define a new version of the struct 11:28 sheikra: samth: Arrow should create new version structures. And the new Arr? should return #f for all old ones that are already created, but should return #t for the ones created with Arrow 11:29 sheikra: samth: It doesn't change, but it should call the new Arr 11:29 sheikra: samth: let's make an analogy.. 11:29 samth: basically, the new (struct Arr ...) form creates a new function called `Arr', it doesn't change the old one 11:29 sheikra: samth: (define f (lambda (x) (+ 1 x))) 11:30 sheikra: samth: (define g (lambda (x) (f x))) 11:30 samth: and the `Arrow' function calls the old function named `Arr' 11:30 samth: and you didn't do anything to change `Arrow' 11:30 sheikra: samth: when we redefine f, the new calls to g should change their behaviors 11:30 samth: sheikra, i think you'll find that racket doesn't do that either for `f' and `g' 11:30 sheikra: samth: I didn't do anything to change g either in this example 11:31 sheikra: rudybot: hello? 11:31 rudybot: sheikra: Hello, I'm using twitter.el to tweet. Could you please say how to view replies only in it ? 11:31 sheikra: rudybot: init racket 11:31 rudybot: sheikra: your sandbox is ready 11:32 sheikra: rudybot: (define f (lambda (x) (+ 1 x))) 11:32 rudybot: sheikra: Done. 11:32 sheikra: rudybot: (define g (lambda (x) (f x))) 11:32 rudybot: sheikra: Done. 11:32 sheikra: rudybot: (g 2) 11:32 rudybot: sheikra: ; Value: 3 11:32 sheikra: rudybot: (define f (lambda (x) (+ 2 x))) 11:32 rudybot: sheikra: Done. 11:32 samth: ah, right 11:32 sheikra: rudybot: (g 2) 11:32 rudybot: sheikra: ; Value: 4 11:32 sheikra: samth: see? 11:33 sheikra: samth: I think there shouldn't be any difference here with redefining f. 11:33 samth: the reason that it's doing this differently for structs is because the `Arr' function is really a macro which expands into a reference to a (secretly) named real constructor 11:34 sheikra: samth: That's my guess, and I think that's wrong 11:34 samth: probably if you use `define-struct' instead of `struct', it'll work 11:35 (join) PLT_Notify 11:35 PLT_Notify: racket: master Casey Klein * 4b03ddc (2 files in 2 dirs): Fixes Redex stepper's handling of symbols quoted with || - http://bit.ly/kSxiz4 11:35 (part) PLT_Notify 11:35 samth: but more fundamentally, in Racket we don't mostly care about things like redefintion in the top-level 11:35 samth: in general, these things are pretty hopeless at the top-level 11:36 sheikra: samth: yes, define-struct works correctly 11:36 sheikra: samth: yep. I'm just picky ;-) 11:37 samth: http://www.google.com/search?q=mflatt+the+top-level+is+hopeless+site:racket-lang.org 11:37 rudybot: http://tinyurl.com/3k8bcpb 11:38 samth: sheikra, it's fine to be picky, but there's no real way to "fix" this while maintaining all the other properties we want the `struct' form to have 11:39 sheikra: samth: why is that? 11:39 samth: the (obvious) alternatives are 1. make Arr not be both the constructor and a macro 11:39 sheikra: samth: I don't really know the difference between struct and define-struct 11:40 samth: or 2. re-expand the definition of Arrow every time 11:40 samth: 1 is bad, because we wanted to drop the extra `make-' prefixes, and have symettrey with pattern matching 11:41 samth: that's why we switched to what `struct' does (combine the constructor and the syntactic info) from what define-struct does (separate them) 11:41 sheikra: samth: yes. that's why I like struct more than define-struct 11:41 samth: 2 is really bad 11:42 sheikra: samth: why must Arr be a macro? 11:42 samth: because it has static information 11:42 sheikra: samth: I don't quite understand .. 11:42 samth: like the information that `match' uses for pattern matching on (Arr x y z) 11:43 sheikra: samth: but I guess you can keep a table for that? 11:43 samth: it's not that easy 11:43 sheikra: samth: Arr has the type 'a -> 'b -> 'c -> Arr a b c 11:43 samth: much better for it to be part of the binding `Arr' 11:44 samth: `define-struct' has a binding for the information too 11:44 samth: for example, (define-struct Arr (x y z)) defines `Arr' as the static information, and `make-arr' as the constructor 11:45 samth: (struct Arr (x y z)) is similar, but it hides the name `make-arr' 11:45 sheikra: samth: do you mean by "static information" something like the names of the fields? 11:46 samth: yes, among other things 11:46 samth: see http://docs.racket-lang.org/reference/structinfo.html?q=struct 11:46 sheikra: samth: but Arr in the toplevel gave me # 11:47 samth: yes, it expands to a procedure with the same name 11:48 samth: but the name embedded in the procedure isn't related to the names of binding 11:48 samth: it's just for printing 11:48 sheikra: samth: Hmm.. I see .. that problem is that match is implemented as a macro 11:49 samth: there are a bunch of macros that use that information 11:49 sheikra: samth: it only has access to normal data type in the program domain .. 11:49 samth: `shared' and `struct-out' are two other examples 11:49 samth: also `struct-copy' 11:50 sheikra: samth: If match is implemented in the compiler level, then we can store these information inside the type for functions ... 11:50 (join) yoklov 11:50 samth: yoklov, the reason is that the #lang r5rs doesn't change the printer, and the language level does 11:50 yoklov: i see 11:50 samth: sheikra, i don't know what you mean by type 11:51 sheikra: samth: look up a symbol table, get this function object, and take the predicate etc out .. 11:51 samth: and a large part of the point of Racket is that `match' doesn't have to be implemented in the compiler 11:51 (quit) hkBst: Read error: Connection reset by peer 11:51 (join) masm 11:51 sheikra: samth: I mean the object inside the compiler to represent a function 11:52 sheikra: samth: maybe we could use a hashtable in the program space to map the function object Arr to some data structure? 11:52 samth: sheikra, `match' isn't a runtime operation 11:53 samth: and really, if this is the only "problem" with defining `Arr' as a macro, then I don't think anyone is going to worry 11:54 sheikra: samth: I know, but it can generate code to lookup the table 11:54 sheikra: samth: while keep Arr a function 11:55 samth: so, now there's a giant global mutable table that match needs to know about 11:55 samth: and that `shared' and `struct-copy' need to know about 11:55 sheikra: samth: any way ... 11:55 samth: plus, how can match manage the binding structure that way? 11:59 sheikra: samth: probably not worth the trouble with macros. match should really be inside the compiler, then the static info can be stored directly in the function, without any look up.. 12:00 sheikra: samth: I think it's worth doing, because match is something very fundamental 12:00 samth: sheikra, i don't see why you think match should be in the compiler 12:00 samth: (and I'm the implementor of match) 12:01 samth: tons of things in Racket aren't in the compiler 12:01 samth: such as classes, units, keyword arguments, optional arguments, pattern matching, type checking, etc 12:01 samth: this is something that we work hard to accomplish, not a drawback 12:01 sheikra: samth: because match is where computation really happens, just like case expressions in haskell 12:02 samth: sheikra, no, that isn't the case 12:02 samth: match is a very useful programming tool, but function calls are where computation happens 12:03 sheikra: samth: we can implement "if", "cond", ... with match 12:03 samth: sheikra, (a) no you can't, and (b) cond is a macro 12:04 sheikra: samth: function calls only bind the names to values, but we need to "look at" this value in order to do useful things 12:04 samth: sheikra, in Racket, to look at values, we use procedures such as `number?' and `first' 12:04 sheikra: samth: and match is the way we destruct the value and operate on it.. 12:05 samth: sheikra, unlike in Haskell and ML, pattern matching is not fundamental to computation in Racket 12:06 sheikra: samth: oh, btw. is there a way I can match a symbol or a number without using the pattern (? symbol? x) ? 12:06 samth: instead, pattern matching is a convenient mode of use of the fundamentals of computation, which are procedures 12:06 samth: sheikra, there isn't one built-in 12:06 samth: but you could write one like (symbol: x) pretty easily 12:06 sheikra: samth: I hope it's something like (Number x) or (Symbol x) 12:07 samth: (define-match-expander Symbol (syntax-rules () [(_ p) (? symbol? p)])) 12:07 samth: rudybot, eval (define-match-expander Symbol (syntax-rules () [(_ p) (? symbol? p)])) 12:07 rudybot: samth: your sandbox is ready 12:07 rudybot: samth: Done. 12:07 samth: rudybot, eval (match 'foo [(Symbol x) x]) 12:07 rudybot: samth: ; Value: foo 12:08 samth: `Number' would be similarly easy to write, sheikra 12:09 sheikra: samth: that works. Thank you :-) 12:10 (join) dnolen 12:21 (join) jonrafkind 12:24 samth: EM03, Racket is indeed actively developed, and there are lots of plans for it in the future 12:24 samth: what do you want to know about? 12:25 (quit) tfb: Quit: gone 12:28 yoklov: here's somethign i wanted to know about: are there any plans for developing a sound/audio manipulation library/toolkit? 12:29 samth: yoklov, john clements has done some work in that area 12:30 yoklov: yeah, but the library crashes on windows, so I can't use it with my desktop. i've meant to file a bug report actually, but haven't had the time 12:30 samth: ah, too bad 12:31 samth: i would say that john has plans, and i don't know of other people with such plans 12:31 samth: there are a few other bindings to audio libraries on planet 12:31 samth: synx/ao and evhan/coremidi 12:31 yoklov: his is the most fully developed by far from what i've seen, and does work great on unix systems 12:33 yoklov: yeah, so when a library gets good enough, it gets packaged with racket? 12:33 samth: yoklov, the plan is for more things to be distributed separately in the future 12:33 samth: so that racket isn't quite so monolithic to download/build/install 12:34 yoklov: thats reasonable 12:34 jonrafkind: hopefully a 'racket + everything useful on planet' will be packaged 12:35 yoklov: lol, the only problem with that I see is that planet isn't that great yet 12:35 yoklov: things fail to work a lot 12:35 yoklov: or have for me at least 12:36 yoklov: also the require syntax is awkward 12:38 eli: yoklov: What kind of sound support are you looking for? 12:38 eli: yoklov: Also, what's awkward? 12:39 yoklov: oh, the fact that it's not unified with the built-in libraries and that even if you have the package on your system you have to know its version number and developer 12:39 yoklov: and sound support? anything cross platform, really, even if its just 'play this frequency for this amount of time' 12:39 yoklov: i can abstract away from that 12:40 eli: yoklov: You were talking about the syntax, no? 12:41 yoklov: the syntax of require planet libraries is what i meant 12:41 yoklov: in racket 12:41 yoklov: maybe thats not the right term. 12:41 eli: Can you give an example of the syntax that bugs you? 12:42 yoklov: (require (planet "main.rkt" ("clements" "rsound.plt" 1 10))) 12:43 yoklov: its tough because some libraries have the same name 12:43 eli: yoklov: You should be able to use something like (require planet/clements/rsound) instead. 12:43 yoklov: hm 12:43 yoklov: i guess i wasn't aware of that. 12:45 yoklov: (require (planet clements/rsound)) works 12:45 eli: yoklov: That's what I suspected -- I asked the planet guy to change the web pages. 12:45 eli: And re sound support -- note that John's thing does sound waves, and it's not really something that could be lumped as a core functionality yet. But if you want to do just windows, then the ffi glue is usually very simple. 12:46 yoklov: i wanted cross platform, ended up sorta postponing my project to a later date when something better exists or I know enough C or whatever to make what i want happen 12:46 yoklov: its not a big deal, i was just wondering what the status of it was 12:47 eli: Do you know about the MCI interface? 12:47 yoklov: no 12:47 eli: It makes it very easy to do most high-level sound things. 12:47 eli: The API is basically just sending strings with media commands. 12:48 (join) mceier 12:51 yoklov: still though, not cross platform (or at least, wikipedia's description of it makes it sound that way) but i guess i could use rsound or something to do it on unix, or maybe even just figure out why rsound crashes racket for me 12:53 eli: Yes, it's not cross platform. 12:53 yoklov: hm, it says it is 12:53 yoklov: i think 12:53 yoklov: or did 12:53 eli: Probably for whatever MS defines as "cross platform"... 12:54 eli: The sad summary: Windows has a really nice sound interface, OSX has something extremely complicated, linux is a mess of libraries and low level systems that is impossible to figure out. 12:54 yoklov: yeah 13:03 (quit) sheikra: Read error: Connection reset by peer 13:08 yoklov: its probably possibel to do bindings for CSound in racket, maybe when I'm further along in my degree if I have an abundance of spare time I'll try to make that work 13:19 (join) lucian 13:34 (quit) swiftkick: Ping timeout: 260 seconds 13:44 (quit) leo2007: Ping timeout: 260 seconds 13:46 (join) carleastlund 13:47 (join) PLT_Notify 13:47 PLT_Notify: racket: master Matthew Flatt * 5e7d1f2 (1 files in 1 dirs): fix `get-char-width' and `get-char-height' in case font match fails 13:47 PLT_Notify: racket: master Matthew Flatt * 34b8dc2 (3 files in 3 dirs): fix documented contracts for path functions ... 13:47 PLT_Notify: racket: master commits 4b03ddc...34b8dc2 - http://bit.ly/lz7akH 13:47 (part) PLT_Notify 13:52 samth: eli, ping 13:52 (join) groovy2shoes 13:55 (join) anRch 14:01 (join) MayDaniel 14:11 (quit) lucian: Remote host closed the connection 14:15 (join) lucian 14:24 (quit) masm: Remote host closed the connection 14:28 (part) Dodek 14:31 (join) masm 14:31 (quit) yoklov: Quit: Leaving. 14:38 (part) jonrafkind 14:39 (join) jonrafkind 14:42 (join) swiftkick 14:50 (quit) lucian: Ping timeout: 252 seconds 14:54 (quit) groovy2shoes: Read error: Connection reset by peer 14:54 eli: samth: ? 14:54 (join) groovy2shoes 14:54 (quit) groovy2shoes: Changing host 14:54 (join) groovy2shoes 14:58 (quit) MayDaniel: Read error: Connection reset by peer 15:00 (join) Counterspell 15:03 (join) lucian 15:03 (join) PLT_Notify 15:03 PLT_Notify: racket: master Robby Findler * 0415bf6 (1 files in 1 dirs): make (many of) the rackunit examples executable ... - http://bit.ly/mvISkR 15:03 (part) PLT_Notify 15:10 (join) entelechy 15:11 (quit) swiftkick: Ping timeout: 240 seconds 15:15 (quit) anRch: Quit: anRch 15:16 entelechy: . 15:16 (nick) entelechy -> swiftkick 15:22 (join) yoklov 15:28 (quit) yoklov: Quit: Leaving. 15:30 (quit) Counterspell: Remote host closed the connection 15:32 (join) Counterspell 16:02 (join) tonyg 16:06 (quit) ChibaPet: Ping timeout: 276 seconds 16:07 (join) ChibaPet 16:36 (join) lucian_ 16:37 (quit) lucian: Disconnected by services 16:37 (nick) lucian_ -> lucian 16:38 (quit) groovy2shoes: Quit: groovy2shoes 16:39 (part) ChibaPet 16:50 samth: eli, you may have gotten a bounce mail from launchpad 16:59 (join) MayDaniel 17:02 (quit) rekahsoft: Read error: Operation timed out 17:02 (join) rekahsoft 17:06 (quit) rekahsoft: Ping timeout: 240 seconds 17:11 (quit) lnostdal: Read error: Connection reset by peer 17:12 (join) lnostdal 17:29 eli: samth: I didn't notice anything. If it's important than tell me what was supposed to be there. 17:29 eli: (But I have to run out now.) 17:36 (join) tauntaun 17:39 (join) chemuduguntar 18:07 bremner_: is there a way to tell raco setup to build only the architecture dependant stuff (e.g. X86_64-linux/* ?) 18:11 (quit) lnostdal: Ping timeout: 248 seconds 18:11 (join) lnostdal 18:16 stamourv: bremner_: afaik, raco setup only builds zos and docs, which are platform-independent, I believe 18:17 bremner_: hmm. But there are a few architecture dependendent bits in collects, or are those gone? 18:18 stamourv: I'm not sure 18:33 (quit) MayDaniel: Read error: Connection reset by peer 18:36 (quit) lucian: Remote host closed the connection 18:49 (join) rekahsoft 19:09 (quit) dnolen: Ping timeout: 252 seconds 19:15 (quit) jonrafkind: Ping timeout: 240 seconds 19:16 (quit) DT``: Ping timeout: 240 seconds 19:20 (quit) carleastlund: Quit: carleastlund 19:21 (quit) mithos28: Quit: mithos28 19:22 bremner_: for example, in 5.0.2, there was collects/sgl/native/x86_64-linux, but in 5.1.1 that doesn't seem to be there anymore (for me) 19:22 bremner_: it looks like commit 557b799 killed that 19:24 bremner_: hmm and same for plot. hurray! 19:29 (join) DT`` 19:30 (quit) mceier: Quit: leaving 19:31 (quit) cmatheson: Quit: leaving 19:35 (join) yoklov 19:35 (quit) Zorlin: Disconnected by services 19:35 (join) 50UAANW5T 19:35 eli: bremner_: SGL was the only such racket file, and it's gone; plot was compiled from C inside the collection, but that moved to src so it's gone too. 19:36 (join) yoklov1 19:36 (quit) yoklov: Read error: Connection reset by peer 19:37 bremner_: eli: great. That simplfies things. Is there some concensus that collects will stay arch independent? 19:43 eli: bremner_: Not really, it might return, still. And of course once things are made more open then nothing will prevent people from, for example, making macros that expand in a way that depends on the platform. 19:46 bremner_: so different platforms will get different .zo files? 19:51 eli: bremner_: In general there's no way to prevent it. 19:52 eli: Any macro that uses (system-type) will likely result in such code. 19:52 eli: Or macros that depend on local files. 19:52 eli: (Like parsing header files.) 19:52 bremner_: blerg 19:52 eli: ? 19:52 (join) mithos28 19:53 eli: Assuming that "blerg" is a general dissatisfied sound, then why are you? 19:53 eli: (Why are you dissatisfied, that is.) 19:53 bremner_: well, if the .zo files are not (in the future) architecture independent, then the current debian packaging will break quite badly. 19:54 bremner_: perhaps more importantly, it means that cross compilation for small systems becomes very hard 19:55 bremner_: neither of which is really racket's problem 19:55 chandler: I'm getting a bit of deja vu from this conversation... 19:56 bremner_: I guess I'm hypothesizing systems that can run useful racket, but not build collects 20:11 (nick) samth -> samth_away 20:19 (quit) mithos28: Quit: mithos28 20:21 (join) dnolen 20:23 Counterspell: I am trying to "Show Profiling" from the View menu, but I get a message that says "There is no profiling information available. Please be sure that profiling is enabled n your language and you have run your program." 20:24 Counterspell: Now I did go into Language > Choose Language ... > selected "Use the language declared in the source) and selected Debugging and profiling under Dynamic Properties. 20:24 Counterspell: But I still get that message. 20:38 (quit) tauntaun: Quit: Ex-Chat 20:41 (quit) swiftkick: Ping timeout: 240 seconds 20:41 (join) mheld_ 20:44 (quit) mheld_: Client Quit 20:52 (join) PLT_Notify 20:52 PLT_Notify: racket: master Robby Findler * d3c04ae (2 files in 2 dirs): Adjusted docs-complete to print a different message when there are no docs at all ... 20:52 PLT_Notify: racket: master Robby Findler * d40b43c (4 files in 2 dirs): make the deinprogramm documentation drdr messages be accurate ... 20:52 PLT_Notify: racket: master commits 0415bf6...d40b43c - http://bit.ly/kAFsuC 20:52 (part) PLT_Notify 21:31 (quit) ckrailo: Quit: Computer has gone to sleep. 22:11 (join) EM03_ 22:11 (quit) EM03_: Changing host 22:11 (join) EM03_ 22:12 (quit) EM03: Ping timeout: 248 seconds 22:12 (nick) EM03_ -> EM03 22:37 (join) jonrafkind 22:52 (join) leo2007 23:16 (quit) dnolen: Quit: dnolen 23:41 (quit) Counterspell: Quit: Ex-Chat