00:31 (quit) misterm: Quit: leaving 00:53 (quit) masm: Quit: Leaving. 00:58 (join) jonrafkind 01:07 (join) dnolen 01:09 (quit) winxordie: Ping timeout: 240 seconds 01:14 (join) ghiu 01:22 (join) winxordie 01:32 ghiu: hey guys 01:36 jonrafkind: sup bro 01:46 ghiu: hey, fine, i just discovered racket and i'm following the tutorial 01:49 ghiu: i'd really love to use a functional language for my next website and i'm making my mind 01:51 jonrafkind: if you use racket's webserver you can even use continuations instead of the normal Restful api thing every other language in existence uses 01:51 jonrafkind: continuations make it easier to write programs without breaking up the logic as dictated by the http protocol 01:52 jonrafkind: although to be fair ive never written a webapp myself, just seen others 01:52 ghiu: where can i read more about continuations? 01:52 ghiu: the thing that bothers me, at the moment, is what i'm seeing about html 01:53 ghiu: i'd rather not spit out html from the code 01:53 ghiu: it's fine for a demo 01:53 jonrafkind: you don't have to, im pretty sure 01:53 ghiu: but for a real world app, i want to write html by hand and use some sort of templating 01:54 jonrafkind: http://docs.racket-lang.org/guide/Continuations.html?q=continuations 01:54 ghiu: thanks for the link :) 01:58 ghiu: so what do you think are viable alternatives for some sort of templating? 01:58 ghiu: also, what is the most mature database interface available for racket? 01:59 jonrafkind: well you can use s-expressions and quasi-quoting as a convenient way to build up data. `(a (href ,my-link) "Click here!") 01:59 jonrafkind: im not sure about maturity, but there are interfaces for mysql, postgres, and mongodb 01:59 ghiu: oh, ok :) 01:59 ghiu: tnx 02:00 jonrafkind: http://planet.racket-lang.org/ 02:00 jonrafkind: you can look here for user contributed packages, including some database interfaces 02:02 ghiu: i'm looking at it right now 02:02 ghiu: thanks 02:02 ghiu: is there anything like "eval" in racket? 02:02 ghiu: can i load a file 02:03 ghiu: and execute it like racket code 02:03 ghiu: ? 02:03 ghiu: nevermind 02:03 ghiu: http://docs.racket-lang.org/guide/reflection.html?q=continuations 02:03 jonrafkind: yea eval is there 02:04 jonrafkind: often times eval is not the right tool, but its handy occasionally 02:10 Demosthenes: hmmm, racket/load... 02:11 ghiu: yes, i've seen it 02:11 ghiu: i'm thinking if it would be the right approach to templating 02:13 Demosthenes: i missed Template::Toolkit 02:13 Demosthenes: but there's a string-template lib on planet 02:14 ghiu: i've seen it 02:14 ghiu: but where is the documentation for it? 02:23 Demosthenes: plant link 02:23 Demosthenes: er, planet 02:48 (quit) dnolen: Quit: dnolen 03:38 (quit) jonrafkind: Read error: Operation timed out 03:39 (quit) ghiu: Quit: ghiu 04:38 (join) tfb 05:24 (join) lucian_ 05:26 (quit) lucian: Ping timeout: 272 seconds 05:44 (join) lucian 05:45 (quit) lucian_: Ping timeout: 240 seconds 05:46 (quit) lucian: Read error: Operation timed out 05:50 (quit) tfb: Quit: gone 05:50 (join) jesusito 05:51 (join) tfb 05:53 (join) lucian 05:58 (join) tfb_ 05:59 (quit) tfb: Ping timeout: 276 seconds 06:21 (nick) tfb_ -> tfb 06:37 (quit) jesusito: Quit: ERC Version 5.3 (IRC client for Emacs) 07:00 (quit) lucian: Ping timeout: 240 seconds 07:02 (join) lucian 07:08 (join) mye 07:18 (join) masm 07:46 (quit) mye: Read error: Connection reset by peer 07:59 (join) lucian_ 08:00 (quit) lucian: Ping timeout: 240 seconds 08:01 (join) lucian 08:03 (quit) lucian_: Ping timeout: 240 seconds 08:09 (join) clklein_ 08:10 (join) tauntaun 08:13 (quit) clklein: Ping timeout: 246 seconds 08:30 (quit) masm: Quit: Leaving. 08:40 (join) PLT_Notify 08:40 PLT_Notify: racket: master Matthew Flatt * ce82c74 (1 files in 1 dirs): win32: fix ALT-space to pop up system menu ... - http://bit.ly/egsolY 08:40 (part) PLT_Notify 08:53 (join) dnolen 09:17 (join) mceier 09:17 (quit) tauntaun: Ping timeout: 240 seconds 09:31 (join) anRch 10:51 (join) PLT_Notify 10:51 PLT_Notify: racket: master Matthew Flatt * 9cc7333 (3 files in 1 dirs): fix `in-vector' error reporting ... 10:51 PLT_Notify: racket: master Matthew Flatt * 9325fe0 (1 files in 1 dirs): fix `peek-string-evt' and related docs ... 10:51 PLT_Notify: racket: master Matthew Flatt * b405637 (4 files in 4 dirs): generalizations to `subprocess' & company ... 10:51 PLT_Notify: racket: master Matthew Flatt * 5754269 (1 files in 1 dirs): win32: fix some key events ... 10:51 PLT_Notify: racket: master Matthew Flatt * 010e6fc (1 files in 1 dirs): racket/system: fix argument checking with 'exact 10:51 PLT_Notify: racket: master Matthew Flatt * c8acebc (1 files in 1 dirs): fix race in subprocess test 10:51 PLT_Notify: racket: master commits ce82c74...c8acebc - http://bit.ly/gWvKZx 10:51 (part) PLT_Notify 11:15 (join) molbdnilo 11:22 (quit) anRch: Quit: anRch 12:01 danking: Has anyone submitted a patch to pygments to get Racket syntax highlighting into github? 12:25 (join) jonrafkind 12:42 (join) MayDaniel 12:53 (join) masm 12:56 (quit) molbdnilo: Quit: tubby bye-bye! 13:01 (quit) coyo: Quit: KVIrc 4.0.2 Insomnia http://www.kvirc.net/ 13:07 (join) Agari 13:12 (quit) Agari: Disconnected by services 13:12 (join) Agari 13:14 (join) scourtier 13:16 scourtier: How do I get a racket REPL working in emacs under windows? Pointing scheme-programming-name to my Racket executable doesn't seem to work; I get a "Spawning child process: Invalid argument" error. 13:17 scourtier: Oops. scheme-program-name, rather. 13:18 bremner: scourtier: I've no idea if geiser works in windows, but that is what i use for a racket repl in emacs 13:19 scourtier: Hmm... Maybe I'll give that a try. I was trying to use Quack. Thanks. 13:22 (quit) tfb: Quit: sleeping 13:37 scourtier: bremner: geiser plays nice! Thanks! I've used linux for so long I forgot what it was like for every stupid little thing to just not work consistently. 13:37 bremner: heh. Funny people coming from windows say the same thing ;) 13:38 scourtier: Ha! I'm sure. 13:38 (quit) noddy: Remote host closed the connection 13:39 scourtier: I guess if you were used to using Visual Studio for everything, unix tools would feel similarly awkward. 13:39 bremner: yup 13:40 (join) rolando 13:41 scourtier: Still, stuff is just wonky. The other day, Windows gave me this freaky virus notification. When I looked into it, it thought I had a virus because a.out crashed! 13:42 scourtier: I feel like Windows doesn't want me coding things (outside of Visual Basic) 13:42 scourtier: Anyway, I'm off. Thanks again! 13:43 (part) scourtier: "ERC Version 5.3 (IRC client for Emacs)" 13:44 rolando: make install has been running for about 19 hours 13:44 rolando: I'm assuming that it isn't normal 13:44 rolando: can somebody please tell me how long it usually takes to run make install? 13:45 rolando: also it's always doing IO to the hard drive 13:45 rolando: usually just read from the disk 13:46 rolando: now it's at "raco setup: running: web-server/scribblings/web-server.scrbl" 13:47 bremner: rolando: on my quad core i7, it takes about 15 minutes 13:47 bremner: it sounds like you are swapping badly 13:47 rolando: ok thanks 13:48 rolando: yeah, it's possible 13:48 rolando: I have an extremely low amount of ram (for todays standards that is) 13:48 rolando: 256 mb 13:48 rolando: but racket is the first program that seems to have problems dealing with that 13:48 bremner: yeah, that is pretty small, even to run racket. 13:49 rolando: ok thanks 13:49 rolando: I'll probably cancel the command 13:50 rolando: it sound like its going to ruin my hard drive 13:50 bremner: what OS? maybe somebody has binaries. 13:50 rolando: ubuntu 7. something 13:50 rolando: I think I saw some binaries on the site 13:50 rolando: I just like having the source 13:50 rolando: sometimes it's useful 13:50 bremner: sure. 13:55 rolando: that's odd, neither "racket" nor "plt-scheme" shows up in the repository 13:55 bremner: yeah, we're working on it. 13:55 rolando: oh ok 13:56 bremner: jonrafkind has an Ubuntu PPA, and there are packages on racket-lang.org 13:56 rolando: I'll just try racket out on one of the college computer's 13:56 rolando: they have about 4 gb of ram, so it shouldn't be a problem 13:56 jonrafkind: http://www.mail-archive.com/users@racket-lang.org/msg03954.html 13:57 bremner: but those most likely won't work with ubuntu 7.x 13:57 jonrafkind: oh yea they definately wont 13:57 rolando: thanks jonrafkind 13:57 jonrafkind: you need at least 9.04 I think 13:57 rolando: but I'll just try it out on another computer 13:57 jonrafkind: your school is running ubuntu 7?? 13:57 rolando: nah, I'm the one running it 13:58 rolando: I really need to upgrade it 13:58 rolando: maybe to debian 13:58 jonrafkind: im still on 9.10 and i get a crap load of flak from ubuntu nerds about it 13:58 bremner: rolando: another 256M of memory would really help ;) 13:58 rolando: bremner: it's on my todo list :) 13:58 rolando: see if I get 1 gb of ram or so 13:59 bremner: yeah, racket should work pretty nicely in 1G 13:59 rolando: I used to have 512mb but one ram broke or something 14:00 (join) noddy 14:06 (quit) rolando: Quit: leaving 14:20 (quit) lucian: Ping timeout: 240 seconds 14:22 (quit) offby1`: Read error: Connection reset by peer 14:23 (join) offby1 14:27 (join) lucian 14:46 (quit) dnolen: Ping timeout: 276 seconds 16:02 (join) mithos28 16:17 (join) snaffu 16:26 (join) dnolen 16:32 (quit) snaffu: Ping timeout: 240 seconds 16:45 (join) snaffu 16:47 (join) jesusito 17:15 (join) PLT_Notify 17:15 PLT_Notify: racket: master Robby Findler * 8ae72bc (3 files in 1 dirs): added preference for the test coverage colors in the module language - http://bit.ly/dQkCQb 17:15 (part) PLT_Notify 17:28 (join) Hydrant_ 17:31 Hydrant_: hey all 17:32 Hydrant_: I'm starting to get the hang of racket, I don't yet see this promised elegance... but I'm starting to get hold of the basic ideas I think 17:35 (quit) snaffu: Ping timeout: 276 seconds 17:40 Lajla: Hydrant_, define 'elegance' 17:40 Hydrant_: is there a way for me to examine the type of something, so that I can get a feel for how racket sees variables 17:40 Lajla: When they say 'elegant', they usually mean 'simple' as in 'a few simple rules can explain the entire language', 'no exceptions' et cetera. 17:41 Lajla: rudybot, (string? "string") 17:41 rudybot: Lajla: ; Value: #t 17:41 Hydrant_: right, I saw that I can do queries 17:41 Lajla: rudybot, (char? #\l) 17:41 rudybot: Lajla: ; Value: #t 17:41 Hydrant_: but is there something like (type x) that would say 'String or something 17:41 Lajla: Hydrant_, maybe you can in some limited sense. 17:41 Lajla: But an element can be part of multiple types 17:41 Lajla: I mean 1, it's a number, but also an integer, all integers are numbers, and reals. 17:42 Lajla: rudybot, (and (pair? '(1 2 3)) (list? '(1 2 3 4))) 17:42 rudybot: Lajla: ; Value: #t 17:42 Lajla: All lists except the empty list are also pairs. 17:42 Lajla: Point you have to ask yourself is 'what is a type'? 17:42 Hydrant_: okay, what I wanted to understand is how racket sees: '(define x 5) 17:43 Hydrant_: and other expressions I'm building up, I hoped to see myself what they are 17:44 Lajla: rudybot, (define (list-of-characters? l) (or (null? l) (and (pair? l) (char? (car l)) (list-of-characters? (cdr l))))) 17:44 rudybot: Lajla: Done. 17:44 Lajla: Have I just defined a type or not? 17:45 Lajla: Hydrant_, define forms are pretty unique expressions in that they can't just appear at any point in the source code 17:45 Lajla: They are more 'declarations' 17:46 Hydrant_: yes, I get that 17:46 Lajla: But basically 'types', are a pretty vague concept, in the end, they are properties of objects in the same way that the fact that a string starts with an uppercase letter is a property of it. 17:46 Lajla: I could easily define a function which checks for this, have I then defined a type? 17:47 Hydrant_: my current working definition is that a define is a somewhat global binding of a new thing, and let is introducing something new into limited scope 17:47 Lajla: That's the idea yeah. 17:47 Lajla: Let introduces a local block 17:47 Lajla: the block is more important than the binding 17:47 Lajla: define declares a global binding. 17:47 Hydrant_: I don't understand how types are so vague to you... almost all stuff I do in CS is reasoning of types 17:47 Hydrant_: this is a tree... this is a node... this is an edge, and so on 17:48 Lajla: You can also do (define foo) in R6RS, which just establishes the binding, kind of like unitizialized variables. 17:48 Hydrant_: it is odd that I don't have types here, because it feels very unnatural to me 17:48 Lajla: You have types just like you have it in any other place. 17:48 Hydrant_: I can understand type only being valid in runtime 17:48 Hydrant_: what I'd like to do... is practice building up expressions, and investigate what each piece is 17:48 Lajla: Types are a set of objects that all satisfy a common list of properties 17:48 Hydrant_: so... when I see something that is odd to me... like '(1 2 . 3) I can investigate what that is 17:49 Hydrant_: similar to Python, when I get some result I want to see what's in there 17:49 Lajla: Well, it is amongst others a pair, an improper list, a datum, a non-callable value 17:49 Lajla: The system has no way of guessing what you want. 17:50 Lajla: It's generally impossible to find out what the 'type' of a datum is in any language, you can only once you have a type check if a datum is in that type. 17:50 Lajla: Because each datum basically is a member of countably infinite types. 17:50 Hydrant_: this is going pretty far into the abstrat 17:50 Hydrant_: *abstract 17:52 Lajla: Why? 17:52 Lajla: I mean, you understand that each object is a member of an infinite amount of different types, yes? 17:52 Lajla: If I have this "hello" 17:53 Lajla: this is amongst others: a string, a sequence, an immutable object, something which eq? cannot reliably compare and so on. 17:53 Lajla: THese are all types. 17:53 Lajla: I could go on forever basically finding a new type to place it in. 17:54 Hydrant_: yes, this is true on a blackboard but not how languages generally work 17:54 Hydrant_: at a low-level, yes, typing doesn't exist... it's just globs of bits 17:55 Hydrant_: that could be anything that can be input to a turing machine based on the encoding 17:55 Lajla: One of the fine parts of the scheme spec is that it usually doesn't define a low level representation implementations have to use. 17:56 Lajla: As long as the described behaviour is accomplished it is fine. 17:56 Lajla: Hydrant_, well, how do you query a type in python? 17:56 Hydrant_: type() 17:57 Lajla: Okay, and say you do type("John") what does it return? 17:58 Hydrant_: 17:58 Hydrant_: because Python is going to implicitly take "..." and convert to a string object, with defined characteristics 17:58 Lajla: Why doesn't it return 17:58 Lajla: or 17:58 Lajla: ? 17:58 (join) cderici 17:59 Lajla: Or ? 17:59 Hydrant_: if I decide I want a list of chars, I can do that by changing the type myself via list("John") 17:59 Hydrant_: because there is a single mapping of "..." defined... it must be a single type 17:59 Hydrant_: if I want to change the type, I must move it via a function call to another single mapping myself 17:59 Lajla: Well 17:59 Lajla: then types in python are a label 17:59 Lajla: That each object carries 17:59 Lajla: right? 18:00 Hydrant_: yes, I would agree with that because this is also even true in the realm of turing machines 18:00 Lajla: You can basically just give each object a .type variable and house a string in it which names the type. 18:00 Hydrant_: types are just things interpreted by humans 18:00 Lajla: I agree 18:00 Lajla: Well, in Scheme, this is not always true. 18:00 Lajla: Especially the list? "type" 18:01 Lajla: A 'type' is a property an item satisfies. 18:01 Lajla: There are subtypes and supertypes, union types and so on. 18:01 Lajla: So necessarily, each object is a member of multiple types. 18:01 Lajla: Hydrant_, ever heard op 'top type'? 18:02 Hydrant_: I don't agree that type is a property satisfied by an item 18:02 Hydrant_: no, haven't heard of it 18:02 Hydrant_: but this is drifting, I think, to a bizarre philosophical realm 18:02 Hydrant_: are you saying that racket has zero typing internally 18:02 Lajla: Nope, top type is pretty fundamental in type theory. 18:02 Lajla: Not at all 18:03 Lajla: some types are indeed managed internally by labels. 18:03 Lajla: But the top type 18:03 Lajla: is the type that contains every element 18:03 Lajla: THe bottom type is the type that contains no element 18:03 Lajla: THere are supertypes and subtypes in type theory. 18:03 Lajla: union types, intersection types. 18:03 Lajla: Types are basically in static type theory sets in which expressions can be placed. 18:04 Lajla: It's like asking a random object 'in what set are you?', you can't, there are infinite possible sets it is in. 18:04 Lajla: The point is that python, I assume, does not support subtypes and supertypes and union types and top tpyes and bottom types. 18:04 Lajla: And racket does. 18:04 Lajla: In racket, an object can (and always is, basically) in multiple types. 18:05 Hydrant_: okay 18:05 Lajla: Or 'an expression' I should say 18:05 Hydrant_: by type theory do you mean category thoery ? 18:06 Lajla: Nah, that's a different thing. 18:07 (quit) cderici: Quit: WeeChat 0.3.2 18:07 Lajla: Also, dynamic types and static types are basically a completely different and fundamentally unrelated thing in the end. 18:07 Hydrant_: well, I would imagine static types can be optimized out 18:07 Hydrant_: in the end they are just bits 18:07 Lajla: dynamic types are properties of objects, static types are categorizations of expressions. 18:07 Hydrant_: it's just clumsy humans that need types 18:07 Lajla: Yeah 18:08 (join) tauntaun 18:08 Lajla: in the end its practical asset is that it prevents you from screwing things up. 18:08 Hydrant_: static types are going to require properties, because a human put themselves in the middle 18:08 Hydrant_: *dynamic 18:08 Lajla: But Hydrant_ take this "3 + [0,1]" 18:08 Lajla: I added a number to an interval, a mathematical expression 18:08 Lajla: surely this is ill-typed, right? 18:08 Hydrant_: depends on how it was defined by the human 18:08 Hydrant_: I wouldn't say that without more information 18:08 Lajla: Good 18:08 Hydrant_: if + is not a valid operator, then it's not defined 18:09 Lajla: It basically depends on how you see it, usually in foundational mathematics, 3 is defined as some set 18:09 Lajla: so is [0,1], and + is then also defined as an operation on sets. 18:09 Lajla: Basically, if you work it out on paper 18:09 Hydrant_: yah.... representing numbers as sets is funny ;-) 18:09 Lajla: 3 + [0,1] will yield some set, if you work it out mechanically. 18:09 Lajla: It's just that it doesn't really make sense to human beings. 18:12 Hydrant_: Can you show me a way of defining +, so that it is defined on integers, vectors / matrices, complex numbers, and other members of a set without enumerating every valid possibility? 18:12 Hydrant_: as you said, each type belongs to several sets, so there must be a way of specifying which translations are legal 18:13 (join) PLT_Notify 18:13 PLT_Notify: racket: master Matthew Flatt * 85951bf (5 files in 3 dirs): gtk: smoother editor-canvas resize ... - http://bit.ly/ejPCAC 18:13 (part) PLT_Notify 18:14 Lajla: Hydrant_, well, you mean + for adding natural numbers? :') 18:14 Lajla: Let's just recursively define it like: 18:15 Hydrant_: I didn't say specify a field 18:15 Lajla: x + {} := {x} union {y : y in x} 18:15 Lajla: x + S(y) := S(y+x) 18:16 (quit) mithos28: Quit: mithos28 18:16 Lajla: ehhh 18:16 Lajla: No 18:16 Lajla: x + {} := {} 18:16 Lajla: of course 18:16 Lajla: I was confused 18:16 Lajla: S(x) := {x} union {y : y in x} 18:16 Hydrant_: my point is that without typing and treating each type as one value at a time, things are rather hopeless 18:16 Lajla: Well, you can still go right 18:16 Lajla: there's just nothing protecting you from going wrong 18:16 Lajla: x + {} := x 18:16 Lajla: goddamnit 18:17 Hydrant_: yes, you might have each type interpretable in different manners (as you say, many possible types for any object) but the definitions are still going to be one-to-one 18:18 Lajla: It's not about interpretable at all. 18:18 Lajla: For instance 18:18 Lajla: Say you have (if cond then else) 18:18 Lajla: Basically, it evaluates to then if cond is true, else otherwise. 18:18 Lajla: Now, you might have been told that then and else need to have the same type for this to be well-typed 18:18 Hydrant_: nope, I wasn't 18:18 Lajla: And that is also the type of the entire expression, right? 18:18 Hydrant_: :-) 18:18 Lajla: Ah, okay. 18:18 Lajla: Well, this is how it works in C++ 18:19 Hydrant_: well, there has to be a common ancestor in an inheritance graph 18:19 Lajla: In reality, this is not how it works in theory, for it to be well typed all that needs to happen is that the type of the entire expression is a supertype of the union of the type of then and else. 18:19 Hydrant_: and what is to be returned must be that common ancestor 18:19 Lajla: Buut 18:19 Lajla: since C++ does not support union types and supertypes and sub types 18:19 Lajla: It basically comes down to that 18:20 Hydrant_: it supports inheritance 18:20 Lajla: Basically, in C++ or python, stuff is a lot simpler because there are no supertypes, union types and all that bla. 18:20 Hydrant_: and that is what you describe 18:20 Lajla: Well, tha's not a supertype. 18:20 Lajla: Nononono. 18:20 Hydrant_: or... more precisely perhaps if you don't want a common ancestor you must only define casting rules from each to each 18:21 Hydrant_: so... you could do T x = cond ? then : else;... so long as then and else are castable to T 18:21 Hydrant_: I'm not sure if the compiler will follow a path to get there, but it might 18:21 Lajla: There should be a death penalty on languages which have implicit casting. 18:21 Lajla: Yeah 18:21 Lajla: but that's basically just syntactic sugar 18:21 Lajla: It automatically fills in the cast 18:21 Lajla: A cast is basically a function 18:22 Lajla: Say you cast a number to a string. 18:22 Lajla: That's just what number->string does in racket 18:22 Hydrant_: right, but this is valid... because I see no difference in having a "set of types" where you can cast some member to any other member, from what C++ can do with implicit casts 18:22 Lajla: Sure 18:23 (join) mithos28 18:23 Lajla: But I'm just saying that it' not entirely cond ? then : else ; 18:23 Lajla: It implicitly adds the cast 18:23 Lajla: it's syntactic sugar 18:23 Lajla: So the actual arguments of the ? : operators are still going to be type T 18:23 Hydrant_: yes, it does add the cast... although I'm not sure how this changes if we consider this expression: auto x = cond ? then : else; 18:24 Hydrant_: auto has been added, and I'm not sure what would happen here 18:24 Hydrant_: because auto stands for 'generic type for compiler to figure out' 18:25 Hydrant_: also... the arguments to ?: will be cast to type T... but certainly are not that type in the beginning... there is simply a valid path to get to T 18:27 Lajla: Well, they aren't the arguments, technially. 18:27 Lajla: Say that (cast) is the casting function 18:27 Lajla: The argument is (cast) then 18:27 Lajla: Not then 18:27 Lajla: And the type of (cast) then is indeed T 18:28 Hydrant_: you mean that there is a single initial type 18:28 Lajla: I'm not quite sure of what you speak. 18:38 Hydrant_: do you know how in drracket to make the levels of () have different colors? I've seen others do this but can't find the option 18:39 Hydrant_: nm, found it 18:47 Lajla: Hydrant_, where is it? 18:47 Lajla: I'd love to have it too. 18:48 Hydrant_: edit->preferences->colors->parenthesis color scheme 18:49 Lajla: kewl 18:49 Lajla: thank j00 18:50 Hydrant_: np 18:50 Hydrant_: glad I could teach you something about racket 18:50 Lajla: I am completely and utterly ignorant about racket. 18:51 Lajla: I just know some stuff abou type theory. 18:56 tauntaun: We would be honored, if you would join us. 19:04 (join) snaffu 19:05 Lajla: tauntaun, that against me? 19:08 tauntaun: Now who would hold anything against you, Lajla. 19:09 (quit) snaffu: Quit: Lost terminal 19:11 (quit) MayDaniel: Read error: Connection reset by peer 19:12 (quit) Agari: Ping timeout: 240 seconds 19:12 (quit) mceier: Quit: leaving 19:32 Lajla: tauntaun, no, I mean addressed to me. 19:34 (join) Agari 19:44 (join) askhader_ 19:46 (quit) tauntaun: Quit: Ex-Chat 19:47 (quit) askhader: Ping timeout: 240 seconds 19:52 (join) gearheadza 19:56 (quit) mithos28: Quit: mithos28 19:57 (join) mithos28 20:01 (quit) Agari: Quit: Quit 20:04 Hydrant_: everytime I search on google for something about racket I get tennis 20:07 danking: Hydrant_: http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=racket ? 20:10 Lajla: danking, google personalizes result. 20:10 Lajla: s 20:10 Lajla: Like, when I google 'girl', you don't want to know what I get. 20:11 askhader_: Lajla: Well I do. 20:11 danking: Google'ing through a proxy and when signed out I get the same top result 20:11 danking: In fact racket appears twice. 20:12 danking: First `racket-lang.org' and then the docs page. 20:12 (join) tauntaun 20:12 Lajla: Maybe Hydrant_ likes Tennis 20:12 Lajla: askhader_, I was joking 20:12 Lajla: you see 20:12 Lajla: I am a very witty man 20:12 tauntaun: I need a hug. 20:12 danking: Perhaps 20:13 danking: Either way, I find `Racket' gets me better results than `Scheme' or `PLT Scheme' ever did. 20:14 Lajla: Why do people always `quote stuff like this' 20:14 Lajla: Yeah, I know where it came from. 20:14 Lajla: But I don't know, it's just awkward, it was a hack in those days and it still is. 20:14 Lajla: tauntaun, it's like oxygen, isn't it? 20:14 tauntaun: ? 20:15 Lajla: tauntaun, hugs 20:16 danking: It's a cultural thing I guess. I started using it when writing the names of identifiers and then it bled into anything I would ordinarily quote. 20:16 danking: I still use the double quote character " outside of IRC. 20:16 Lajla: Jumping on the bandwagon eh 20:16 Lajla: However, I shall remain defiant. 20:16 danking: Common syntax is handy for communication. 20:16 Lajla: Conformists 20:16 Hydrant_: google: racket match one or more 20:17 Lajla: I think 'quoting like this' is okay enough. 20:17 Lajla: French quotes make a lot more sense 20:17 Lajla: Because they «open and thereafter close». 20:17 danking: I've been chastized `for this` style. 20:17 Lajla: Well, so do English quotes, but not in Ascci 20:17 Lajla: Hmm 20:17 Lajla: that always reminds me of Haskell. 20:17 tauntaun: Lajla: the Haskell compiler? 20:18 Lajla: `div` 20:18 tauntaun: (+) 20:18 Lajla: You can infix stuff in Haskell by putting `...` around it. 20:18 Lajla: Yeah, the reverse of that. 20:18 danking: If I had my way '(quotes would be awesome).... 20:18 tauntaun: `elem` 20:18 Lajla: yeah 20:18 tauntaun: If Haskell were huggable, I would hug it and it would hug me back. 20:18 Lajla: I would just use € for element really 20:18 Lajla: I loathe haskell. 20:18 tauntaun: That's "euro", genius. 20:19 danking: lol 20:19 tauntaun: Haskell loathes you back, you shameless ingrate. 20:19 tauntaun: Do you need a hug, Lajla? 20:19 Lajla: Simon Peyton-Jones has a fat mother. 20:19 Lajla: Nahhh 20:19 Lajla: I am cool 20:19 Lajla: becaaause 20:19 tauntaun: That's a low blow. 20:19 Lajla: I just won a long macro game in SC2. 20:19 tauntaun: You make "fat" sound like a bad thing. 20:19 Lajla: Versus a zerg. 20:19 danking: Peyton-Jones is wicked cool. 20:20 Lajla: Isn't his wife like a member of the church of England 20:20 Lajla: I do not approve of state religions 20:20 Lajla: ळागूNeither did the founding fathers 20:20 tauntaun: You Dutch are always so friggin tolerant. 20:20 danking: He talked here at NU about the parallelizing stuff they're doing with GHC. I hope to convert my physics professors into haskell guys given that parallelizing is all the rage over there now. 20:21 tauntaun: danking: Good luck. 20:21 danking: :P 20:21 Lajla: It amazes me how many physics people actually use C++ 20:21 danking: "WHAT?! No pointer access!? It must be slower than UNIVAC" 20:21 Lajla: Oh hai there. 20:21 tauntaun: My dissertation was in physics, involved "parallel" simulations, and there was no way to talk to that community about principled PL. 20:21 Lajla: C++ doesn't have a type system that does dimensional analysis for you. 20:22 Lajla: My dessert was chocolate pudding. 20:22 tauntaun: Mine was whole milk with 2 tbsps malt, 2 tbsps sugar, and several drops of vanilla. 20:22 tauntaun: Fresh, fresh, baby. 20:23 Lajla: I don't know 20:23 danking: tauntaun: I was working with a physics prof and ended up at some seminar. After the seminar one of the EE/CE professors was deriding Fortran for lacking pointers with a terribly smug demeanor. 20:23 Lajla: I just think that the thing about Haskell 20:23 Lajla: Like, pattern destructuring 20:23 Lajla: what you can and cannot destructure is so arbitrary 20:23 Lajla: I'd rather just destructure manually 20:24 tauntaun: danking: there are many reasons to deride Fortran, but its lack of pointers is probably not one of them. 20:24 Lajla: let x = (head argument), xs = (tail argument) in .... 20:24 tauntaun: Lajla: destruct *this*. 20:24 danking: What struck me was his compelte intolerance of anything higher-level than C. 20:24 Lajla: tauntaun, destructure 20:24 Lajla: you mean 20:25 Lajla: A lot of physicists think they can program, little do they know they aren't as good as I. 20:25 Lajla: I had a lot of debates about programming with them. 20:25 tauntaun: Lajla: no, actually "destruct" is sometimes used in the context of pattern matching. 20:25 Hydrant_: I don't know of any language that can beat FORTRAN for matrix ops... 20:25 Lajla: Also often people that think they care about performance, but don't. 20:25 Lajla: Like, the kind of people that think they optimize, but don't bother to actually empirically test out if it's faster. 20:25 Lajla: And don't realize that every fucking compiler on the planet optimizes that for them. 20:25 danking: Lajla: In my experience, the Physics profs/grads are intimately aware of how little the know about programming. That's how I got hired :D 20:25 Lajla: Or the people that think that writing assembly produces faster stuff. 20:25 tauntaun: Hydrant_: a language is only as good as its compiler, and I wouldn't be surprised if C/C++ has become faster than Fortran by now. 20:26 Hydrant_: tauntaun: no, it never will be 20:26 Lajla: danking, a thing I have not yet encountered. 20:26 tauntaun: Hydrant_: and why, praytell? 20:26 Hydrant_: afaik fortran can optimize matrix expressions, whereas C/C++ have to treat them as temporary values... and cannot optimize them 20:26 danking: Lajla: Stalin brutually optimizes, eh? 20:26 Hydrant_: linear algebra has nice optimizations that C/C++ cannot ever know 20:26 Lajla: Stalin is an awesome compiler with an awesome name. 20:27 Lajla: Yeah, that's also true 20:27 Lajla: Fortran is very good for matrix stuff 20:27 tauntaun: Hydrant_: I know not of what you speak, and in any case it surprises me. 20:27 tauntaun: My dissertation code was all in Fortran, and I detested it daily. 20:27 tauntaun: I don't want to believe that C/C++ would have been appreciably slower. 20:28 danking: Shoulda wrote it in Scheme, obviously. 20:28 tauntaun: danking: I started that, but it took too long. 20:28 tauntaun: danking: may I ask where and for whom you work as programmer? 20:29 Hydrant_: it is, C++ cannot beat fortran in benchmarks fo matrix ops 20:29 tauntaun: Hydrant_: forget C++; compare C instead. 20:29 Hydrant_: why not compare assembly then 20:30 Hydrant_: C doesn't allow you to do M*b + v 20:30 Hydrant_: and it will be worse in C, actually, because the temporary hell is even worse 20:30 tauntaun: ok, I begin to see your point, which seems to be that Fortran supports array expressions (like M*b + v), yes? 20:30 Hydrant_: vector_add(matrix_vector_mult(M,b), v)... each call requires a temporary 20:30 Hydrant_: you can't pipeline the operations 20:31 Hydrant_: yes, so far as I know matrix ops can be optimized directly 20:31 Hydrant_: so that a single stream is done, whereas in C or C++ temporaries are introduced to evaluate the expressions 20:31 Hydrant_: even with no temporaries, C/C++ will get cache-locality wrong if it doesn't optimize the operation into a nice single-pass form 20:32 tauntaun: Hydrant_: well that's nice. In that case I would recommend writing the code in C/C++/Scheme/whatever, and then using an FFI to Fortran for the actual matrix operations. 20:33 tauntaun: What I can't stand is writing the *entire* system in god-awful Fortran. 20:34 Lajla: I would think scheme is good. 20:34 Lajla: I think the teaching of C++ cripples the mind, and should therefore be regarded a criminal offence. 20:34 tauntaun: Thank you for understating your position. 20:34 Lajla: It is impossible to teach good programming practices to epople who have any experience with C++, their mind is mutilated beyond hope. 20:35 tauntaun: Lajla: your point is not coming across. More rhetoric please. 20:35 Lajla: I'm just impersonating dijkstra 20:35 Lajla: swapping basic with C++ 20:36 Hydrant_: ugh, so much zealotness in scheme 20:36 Hydrant_: it is a real turn off 20:37 lucian: Hydrant_: if it makes you feel any better i also hate C++ and i'm primarily a python programmer :) 20:37 Hydrant_: I'm a C++ expert 20:37 Hydrant_: C++ is what I use for almost everything, and most of what I do is HPC 20:37 Hydrant_: with physicists / engineers 20:37 tauntaun: Hydrant_: it's "zealotry." 20:38 (quit) mithos28: Quit: mithos28 20:38 tauntaun: This brings up an interesting question: What are the chances that Racket would provide a Fortran FFI? 20:39 Lajla: I my life for aiur. 20:39 Lajla: I refuse to believe that anyone on the planet is a C++ expert, not even Bjarne, the language is too large for that. 20:39 Lajla: Same with racket really. 20:40 Lajla: Too large to know it all. 20:41 lucian: Lajla: racket is much smaller 20:41 tauntaun: jonrafkind: you available for a question? 20:41 danking: tauntaun: I'm a student at Northeastern University. I was working for Professor Karma here on some GPU stuff he needed. 20:41 jonrafkind: sure 20:42 tauntaun: danking: thanks, sounds great. 20:42 tauntaun: jonrafkind: how hard would it be to provide a Fortran FFI in Racket. 20:43 jonrafkind: in theory not very hard, i mean i think fortran just produces symbols with some simple calling convention (probably C like) 20:43 danking: tauntaun: It's pretty cool. I feel the heat building now though. Gotta shape up so I can get into a decent grad school. 20:43 Lajla: You never answer my quaestions 20:53 (quit) gearheadza: Ping timeout: 240 seconds 20:54 (join) mithos28 20:56 (quit) mithos28: Client Quit 20:57 (join) mithos28 20:59 (quit) mithos28: Client Quit 21:03 (quit) Hydrant_: Remote host closed the connection 21:12 (join) mithos28 21:17 (quit) tauntaun: Quit: Ex-Chat 21:21 (quit) mithos28: Quit: mithos28 21:21 (join) jfalcon 21:22 jfalcon: can i make a set which determines equality based on an arbitrary function? 21:27 Lajla: jfalcon, I find your lack of clarity disturbing. 21:27 Lajla: Ohhh 21:27 Lajla: you mean in that way 21:27 (part) jesusito: "ERC Version 5.3 (IRC client for Emacs)" 21:27 jfalcon: ... 21:27 jfalcon: 5.5 Structure Comparisons. That should achieve what I'm trying to do. 21:28 jfalcon: thanks. 21:28 jfalcon: http://docs.racket-lang.org/guide/define-struct.html#(part._struct-equal) 21:28 (join) MelanomaSky 21:32 (join) tauntaun 21:40 (join) snaffu 21:43 (quit) askhader_: Remote host closed the connection 21:46 (join) PLT_Notify 21:46 PLT_Notify: racket: master Matthew Flatt * 9787028 (1 files in 1 dirs): gtk: keep popup menus on the screen ... - http://bit.ly/g8RCHG 21:46 (part) PLT_Notify 22:01 (join) mithos28 22:03 (quit) snaffu: Quit: Lost terminal 22:05 (join) corruptmemory 22:16 (quit) mithos28: Quit: mithos28 22:18 (quit) winxordie: Quit: Leaving. 22:28 (nick) tauntaun -> anthonywest 22:28 (nick) anthonywest -> awest 22:29 (nick) awest -> anthonywest 22:30 (part) anthonywest: "Ex-Chat" 22:32 (join) tauntaun 22:32 (quit) tauntaun: Quit: Ex-Chat 22:32 (quit) jfalcon: Quit: jfalcon 22:52 (join) dherman 22:52 dherman: got a scribble question if anyone has a sec 22:57 jonrafkind: irc etiquette says to ask your questino, not to ask to ask 22:58 dherman: right then 22:59 dherman: curious if there's any scribble forms that render in html as
/
/
22:59 dherman: otherwise I'll just have to use table hacks 23:00 jonrafkind: can't say ive ever seen those being rendered 23:19 dherman: does quack work well for racket? 23:26 dherman answers self in the affirmative 23:46 offby1: for interactive use, geiser works very well 23:48 (quit) evhan: Ping timeout: 240 seconds 23:50 (join) evhan 23:57 dherman: offby1: nah, just want a mode for editing 23:57 dherman: quack's doing fine 23:57 (quit) jonrafkind: Ping timeout: 240 seconds 23:58 (quit) dherman: Quit: dherman