01:33 (join) gciolli 01:43 (quit) gciolli: Ping timeout: 240 seconds 01:45 (quit) realitygrill: Quit: realitygrill 02:05 (quit) jeapostrophe: Ping timeout: 248 seconds 02:09 (quit) yoklov: Quit: computer sleeping 02:24 ozzloy: how do i build the guide after making some change to it? 02:24 ozzloy: in the source distribution. without doing make; make install 02:26 jonrafkind: raco setup scribblings/guide or something 02:26 jonrafkind: yea that should work 02:26 jonrafkind: it wont be super fast though 02:27 (quit) dnolen: Remote host closed the connection 02:30 ozzloy: will it rebuild the entire guide? 02:30 ozzloy goes to check 02:33 ozzloy: interesting. is there a faster way to rebuild just the part affected by cond.scrbl, hypothetically speaking? 02:34 ozzloy: also thanks, this is at least better than make; make install 02:34 jonrafkind: well I think you can do 'scribble cond.scrbl' possibly 02:34 ozzloy: i tried that 02:34 jonrafkind: im not sure where the output goes 02:34 ozzloy: it makes a cond directory in the current directory 02:34 jonrafkind: hm 02:34 ozzloy: which is ok i guess 02:35 ozzloy: i could just do that and get over it 02:35 ozzloy: but i was hoping for a way to be reading through the guide, see a problem, fix it, continue reading 02:35 ozzloy: if i do it that way, it doesn't link with the rest of the guide 02:35 ozzloy: it also doesn't show up the same 02:35 ozzloy: the subsections each get there own page 02:36 ozzloy: which is interesting that it can change based on if it's part of a larger collection. very neat 02:55 (quit) jonrafkind: Ping timeout: 260 seconds 03:02 veer: how do I customize what is printed in the repl , or is there a some kind of hook into print, write,etc 03:04 veer: I need something like prop:custom-write for tagged pointer 03:05 mithos28: veer: why cannot you write a struct to wrap the tagged pointer? 03:07 veer: mithos28: I can , but that adds another layer of wrapping and unwrapping , is there another way ? 03:07 mithos28: not that I know of 03:08 veer: ok np 03:17 Gertm: Is there a curses/ncurses library for Racket? 03:21 (join) sindoc 03:26 (quit) veer: Read error: Connection reset by peer 03:34 (join) Blkt 03:37 Blkt: good morning everyone 03:48 (join) Shvillr_ 03:48 (quit) Shviller: Disconnected by services 03:48 (nick) Shvillr_ -> Shviller 04:18 (join) noelw 05:01 (join) q0tw4 05:07 (join) tfb 05:11 (join) karswell__ 05:12 (quit) karswell_: Ping timeout: 240 seconds 05:19 (quit) mithos28: Quit: mithos28 05:29 (join) bluezenix 05:50 (join) veer 05:53 (quit) Frozenlock: Read error: Connection reset by peer 05:53 (join) Frozenlo` 06:44 (quit) Lajla: Ping timeout: 276 seconds 06:48 (quit) bluezenix: Ping timeout: 252 seconds 06:56 (join) masm 07:18 (quit) kvda: *.net *.split 07:23 (join) kvda 07:35 (join) yoklov 08:11 (join) jeapostrophe 08:20 (quit) veer: Quit: Leaving 08:28 (quit) yoklov: Quit: computer sleeping 08:40 (join) gciolli 08:48 (quit) gciolli: Ping timeout: 276 seconds 08:48 (quit) Shviller: Ping timeout: 252 seconds 08:50 (quit) jeapostrophe: Ping timeout: 276 seconds 08:59 bremner: hmm, I kindof miss implicit universal quantification of type variables (a la Haskell) in Typed Racket. wrapping everything in (All (A B) ... ) seems a bit boring. 09:05 noelw: yeah 09:10 (join) sindoc1 09:14 (quit) sindoc: Ping timeout: 244 seconds 09:17 (join) yoklov 09:21 (join) bluezenix 09:24 bremner: I guess in Haskell the tradeoff is that you need to use lower case for type variables, iirc 09:28 (join) gciolli 09:33 (join) jrslepak 09:36 (join) jeapostrophe 09:39 RacketCommitBot: [racket] plt pushed 3 new commits to master: http://git.io/tgBMNg 09:39 RacketCommitBot: [racket/master] adjust a doc correction - Matthew Flatt 09:39 RacketCommitBot: [racket/master] change `ffi-lib' to not make library symbols global by default - Matthew Flatt 09:39 RacketCommitBot: [racket/master] improve Guide info on `PLTCOLLECTS' and `raco link -d' - Matthew Flatt 09:58 (join) karswell 10:00 (quit) karswell__: Ping timeout: 260 seconds 10:01 (quit) jeapostrophe: Ping timeout: 252 seconds 10:03 (quit) chemuduguntar: Read error: Connection reset by peer 10:04 (quit) rsimoes: Ping timeout: 240 seconds 10:09 (quit) Fulax: Read error: Connection reset by peer 10:12 (quit) gciolli: Quit: Leaving. 10:18 bremner: any typed racket expert can explain to me why this example (from eli's lectures) doesn't typecheck? Is it because the type of map is actually too general? 10:18 bremner: oops: this example http://paste.debian.net/153715/ 10:19 ianjneu: Yes, you must always give type instantiations when giving a polymorphic function to another polymorphic function. 10:19 bremner: ah, right. foo. 10:19 bremner: ok, thanks 10:19 ianjneu: It's a limitation in the theory, not just Typed Racket. 10:23 (quit) yoklov: Quit: bye! 10:32 (join) dnolen 10:44 (quit) masm: Read error: Operation timed out 10:44 (quit) shadgregory: Quit: ERC Version 5.3 (IRC client for Emacs) 10:46 (join) masm 10:48 (join) shadgregory 10:48 (nick) chaozzbubi -> ChaozZBubi 10:55 (join) mceier 10:57 (quit) karswell: Ping timeout: 240 seconds 10:57 (join) karswell 10:58 eli: bremner: That example is only for intimidation. 11:03 (join) jeapostrophe 11:15 (quit) sindoc1: Quit: Leaving. 11:20 (quit) dsantiago: Quit: Computer has gone to sleep. 11:25 (join) sindoc 11:29 (join) realitygrill 11:54 (quit) jrslepak: Quit: This computer has gone to sleep 11:56 (quit) bluezenix: Quit: Leaving. 11:57 (quit) tfb: Quit: sleeping 12:02 (quit) realitygrill: Quit: realitygrill 12:05 bremner: haha 12:05 bremner: well, it worked on me ;) 12:07 (join) realitygrill 12:08 ASau: Good evening! 12:08 noelw: A great evening, I'd say! 12:08 ASau: I've got pair of questions. 12:09 ASau: 1. Will NetBSD patch land into 5.2.1? 12:09 ASau: Is there a branch or is 5.2.0.901 a snapshot? 12:09 ASau: 2. What needs to be done so that it hits trunk at least? 12:13 (nick) noelw -> noelw_away 12:15 (quit) Blkt: Read error: Connection reset by peer 12:22 (join) anRch 12:27 (join) mithos28 12:32 (quit) sindoc: Quit: Leaving. 12:51 (quit) anRch: Quit: anRch 12:58 (join) bluezenix 13:09 (join) jonrafkind 13:17 (quit) realitygrill: Quit: realitygrill 13:21 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/w4AJlg 13:21 RacketCommitBot: [racket/master] Revise commented code so it can replace exiting code without dependency issues. - Eli Barzilay 13:22 (join) realitygrill 13:34 (join) Shviller 13:51 (join) jrslepak 14:14 (join) anRch 14:15 (join) rsimoes 14:20 danlndi: anyone know an example of a function in the FFI return a Scheme_Object pointer (like how the *old* FFI worked)? 14:21 (quit) q0tw4: Remote host closed the connection 14:25 (join) sindoc 14:28 eli: danlndi: The old ffi? 14:28 eli: But in any case, grep the tree for `_scheme'. 14:30 ASau: eli: any chance my (NetBSD) fix lands in trunk at least? 14:30 (join) RyanFraise 14:31 RyanFraise: Hello 14:32 RyanFraise: Anyone here 14:33 (quit) RyanFraise: Client Quit 14:40 offby1: nobody here but us zombie processes. 14:40 (join) Fulax 14:47 (quit) dous__: Remote host closed the connection 15:13 (quit) ASau: Read error: Connection reset by peer 15:15 (quit) anRch: Quit: anRch 15:18 danlndi: eli: what should the ffi type _bytes look like on the C side? 15:18 danlndi: unsigned char * ? 15:43 (join) dous 15:43 (quit) dous: Changing host 15:43 (join) dous 15:47 (quit) dous: Ping timeout: 240 seconds 15:57 RacketCommitBot: [racket] plt pushed 12 new commits to master: http://git.io/_5TFNA 15:57 RacketCommitBot: [racket/master] [honu] allow list comprehensions to follow expressions - Jon Rafkind 15:57 RacketCommitBot: [racket/master] [honu] then is optional in "if". allow multiple sequences in for. add for/fold - Jon Rafkind 15:57 RacketCommitBot: [racket/master] [honu] make "then" keyword required for if again. start to add more loop types to for - Jon Rafkind 15:59 eli: danlndi: Yes. 16:00 jonrafkind: eli, list comphrensions in honu are core to the parser because [] is also used as list-ref 16:00 eli: Someone should tell ASau that it would help to have a BSD build machine, but until then things will continue to be rough, probably. 16:01 eli Keeps staring intently at rudybot 16:01 eli: jonrafkind: Bah. 16:01 eli: gabot: slap rudybot 16:04 eli: jonrafkind: I also had about 37 other items. 16:04 (join) MayDaniel 16:05 (quit) kvda: Quit: x___x 16:05 jonrafkind: i changed a few things, look at whats new! 16:06 jonrafkind: also blah(x){ 1 } is the same thing as (define (blah x) 1) 16:06 jonrafkind: i thought that would have been obvious but I guess it wasn't 16:07 jonrafkind: and its not 'when E then { E ... }' its 'when E then E', so { E ... } is just a block 16:08 eli: jonrafkind: Look where? Your source is full of debugging stuffs, and even your commit messages... (Replace `:=' with `=', oops, go back, no, try again, oh, two references there...) 16:08 jonrafkind: at asteroids 16:08 eli: And re `blah(x){ 1 }' -- yeah, I fugured that, it's exactly why I said that it's odd. 16:08 jonrafkind: ill file your sarcasm in my sarcasm folder to laugh at later 16:08 jonrafkind: why is it odd 16:08 jonrafkind: you want 'fun blah(x){ 1 }' ? 16:08 eli: Too short. 16:09 (quit) jrslepak: Ping timeout: 244 seconds 16:09 eli: Lacks clear visual indicator of a function start. 16:09 jonrafkind: its vestigal 16:09 eli: It's obscure. 16:10 jonrafkind: you know most of your comments make me thing you don't want anything to change -- you like the past 30 years of language syntax and you want it to stay that way 16:10 eli: foo(x){bar(y){x+y};bar} 16:10 (quit) karswell: Ping timeout: 252 seconds 16:11 eli: (a) I have no sympathy to N years of *that* kind of syntax. 16:11 jonrafkind: what is *that* 16:11 eli: {}-ish. 16:11 eli: (b) Respecting common syntax is -- AFAIK -- one of the main goals of this project. 16:12 eli: (c) Talking about `then' in `when' -- it *reeks* of old style syntax. Mandatory `then's practically died with Pascal. 16:12 jonrafkind: its either 'if (x){}' or 'if x then {}' 16:12 jonrafkind: I like the latter 16:13 eli: Yes, that's definitely much more of a "I like the past 30 years". 16:13 eli: (See also bash.) 16:13 jonrafkind: well.. its actually more of trying to be like python 16:13 eli: (That's not a compliment.) 16:13 jonrafkind: if x == 2: ... 16:13 jonrafkind: no () in there 16:13 eli: Python is not a good syntactic goal to get the masses in. 16:13 jonrafkind: I just replaced : with then 16:14 eli: Bad choice then, since python uses it for more than just a `then'. 16:14 jonrafkind: im mixing up cultures according to my own preference 16:14 offby1: whachoo staring intently at rudybot for 16:15 jonrafkind: matthew said the same thing about () vs then 16:15 eli: jonrafkind: Again -- if the goal is to get average hackers into racket, then mixing cultures is the *absolute* best way to get people of all cultures to fart in your general direction. 16:16 eli: offby1: It's lack of "later tell" without the now-deceased minion. 16:16 eli: jonrafkind: Also, allowing people freedoms like "if (foo) E" and "if foo then E" is something that several languages tried, and I think that all cases ended up dead. 16:17 eli: People would just settle on one of them, forgetting the other that would be left for obfuscated code bits. 16:17 jonrafkind: if C had 'if foo then ...' we would all be using that 16:17 jonrafkind: its hard to know what syntactic lessons have been learned over the years 16:18 eli: jonrafkind: See, that's the sentimentalism that you accused me of. 16:18 eli: The thing is that I've been using sexpr languages for long enough that I have no sentiments whatsoever. 16:18 jonrafkind: aha yes, thats true. one the one hand you have 30 years of knowing what works and what doesn't, but at the same time I feel that maybe you don't like new things 16:18 jonrafkind: oh 16:18 eli: The only point that matters is making a familiar language. Period. 16:19 eli: I have no aspirations of doing the right thing with `then', and no desire to discuss whether C was right in omitting it. 16:19 jonrafkind: so then you are arguing by proxy for other people who will have an opinion about C-style syntax 16:19 eli: The only thing that matters is that people just don't use that -- the rest is just {}-style bikeshedding, and since I don't like {}-ish languages it's not that interesting... 16:20 eli: Yes, of course. 16:20 eli: But more like Javascript these days than C. 16:20 jonrafkind: ah well, I thought you wanted to use the language for something 16:20 (quit) MayDaniel: Read error: Connection reset by peer 16:20 jonrafkind: you want/wanted to use it in your class? 16:30 (join) LeNsTR 16:52 em: Is there a racket package in Ubuntu 11.04 ? 16:53 jonrafkind: yea, there is a ppa 16:54 jonrafkind: https://launchpad.net/~plt/+archive/racket 16:54 jonrafkind: do you know how to install ppa's? 16:57 (join) francisl 17:07 eli: jonrafkind: Sure -- I'd love to use it in my class, and exactly the same arguments hold with people knowing JS syntax; if I give them a "mix of cultures" they'd definitely treat it as a weird toy. 17:07 eli disappears 17:08 jonrafkind: so the question is which syntax to choose. C, javascript, ruby, python, scala, something else 17:09 eli: In order of what I see in class: javascript, java (which you didn't include), C, python, ruby. 17:09 eli: (And scala is so far, it's even less known than racket.) 17:09 eli disappears for real now 17:16 (join) jao 17:25 RacketCommitBot: [racket] plt pushed 1 new commit to master: http://git.io/0oxGsQ 17:25 RacketCommitBot: [racket/master] [honu] fix tests - Jon Rafkind 17:25 jaimef ponders converting some clojure code to racket 17:33 (quit) dnolen: Ping timeout: 240 seconds 17:35 offby1 ought to go the other way 17:36 offby1: just as a way to learn clojure, you understand 17:37 jonrafkind: i started doing that clojure 'solve a puzzle' thing 17:37 jonrafkind: its a pretty good way to learn a language imo 17:39 offby1: I should do that 17:43 (join) jrslepak 17:44 (quit) jrslepak: Client Quit 17:45 (join) jrslepak 17:45 em: jonrafkind: yep I can do the ppa thanks. 17:48 (quit) francisl: Quit: francisl 17:52 (join) Lajla 17:56 (join) sindoc1 17:58 (quit) mceier: Quit: leaving 17:59 (quit) sindoc: Ping timeout: 255 seconds 18:00 (quit) realitygrill: Quit: realitygrill 18:00 (part) sindoc1 18:01 (join) dous 18:03 (quit) jrslepak: Quit: This computer has gone to sleep 18:10 (quit) jeapostrophe: Read error: Operation timed out 18:41 (nick) offby1 -> offby1-otron 18:41 (nick) offby1-otron -> offby1 18:42 (join) karswell 18:53 (join) chemuduguntar 19:03 (join) karswell_ 19:05 (quit) karswell: Ping timeout: 252 seconds 19:25 (quit) bluezenix: Quit: Leaving. 19:30 (join) jeapostrophe 19:32 (join) karswell__ 19:34 (quit) karswell_: Ping timeout: 252 seconds 19:41 (quit) tauntaun`: Remote host closed the connection 19:43 (join) zdeus 19:43 (quit) zdeus: Remote host closed the connection 19:43 (join) realitygrill 19:43 (join) tauntaun 19:43 (nick) tauntaun -> Guest55743 19:44 em: What is the definition of 'contracts' in Scheme. Can someone give me a brief explanation for a layperson? 19:44 em: Like what is their primary purpose 19:49 offby1: for checking that you've passed the right sorts of values into a function 19:49 offby1: and similarly checking the function's return value 19:49 offby1: kinda like Eiffel's "programming-by-contract", if that means anything 19:50 offby1: have you ever written assertions at the start of your function, so that it'll croak if you accidentally pass (say) a string where you should have passed a number? 19:50 offby1: That's all they are; they're just a special syntax for doing that 19:54 (nick) Guest55743 -> tauntaun 19:54 (nick) tauntaun -> Guest98150 19:56 (nick) Guest98150 -> tauntaun 20:01 (quit) karswell__: Read error: Operation timed out 20:02 (join) karswell__ 20:02 em: offby1: so is it like a type-checking system then? 20:03 em: offby1: basically it's a way to get the advantages of static type? 20:08 (quit) tauntaun: Quit: ERC Version 5.3 (IRC client for Emacs) 20:14 danlndi: ok, can anyone help with a 'link: reference (phase 0) to a variable in module "blahblah" that is uninitialized (phase level 0); reference appears in module "blahblah2"' error? 20:14 danlndi: the first module does require the second (by file name) 20:15 offby1: em: well, it's a little like type-checking, but it all happens at runtime 20:15 offby1: whereas the usual static type checker happens as compile time, which to me is nicer 20:16 offby1: since at compile time, it can check _all_ your functions; whereas at runtime, only those functions that actually get called will get checked. 20:16 offby1: So if you're a test-driven-development die-hard, the benefits will be similar ... 20:16 offby1: ... oh and contracts slow down your program. 20:16 offby1: So this is why we have typed racket :) 20:21 Frozenlo`: I see there's a `first' and `rest' function. Should I stop using `car' and `cdr'? 20:21 jonrafkind: yes 20:22 danlndi: car cdr are kind of the slang of scheme/racket... right? 20:22 offby1: "slang"? 20:22 jonrafkind: they are 50 year old procedures 20:22 Frozenlo`: What about cadr? :P 20:22 jonrafkind: second 20:22 danlndi: although there's no substitude for cadr cdar cadar etc etc etc 20:22 jonrafkind: oh well.. 20:23 jonrafkind: yes thats true 20:23 danlndi: actually, the substitude is actually to not organize your data that way. bad racket programmer! 20:23 jonrafkind: yes, exactly :p 20:23 jonrafkind: lists are a terrible ad-hoc data structure 20:24 danlndi: substitude => substitute 20:24 Frozenlo`: How so? Lists are really easy to understand. When you really need more power, you can switch to hashtables later. 20:25 Frozenlo` loves lists of lists of lists.... 20:25 jonrafkind: most people make that transition too late 20:25 jonrafkind: and then end up with spaghetti code 20:26 danlndi: actually, lists are a pretty good ad-hoc data structure, but using ad-hoc data structures should be confined to prototyping if used at all 20:26 jonrafkind: hashtables are the best adhoc datastructure 20:27 danlndi: yup. only drawback has been poor standardization 20:28 jonrafkind: in what, scheme? 20:30 danlndi: yeah... 20:30 danlndi: see srfi-69 and srfi-13 20:31 (join) karswell 20:32 (quit) jeapostrophe: Ping timeout: 255 seconds 20:33 (quit) karswell__: Ping timeout: 276 seconds 20:34 (quit) jonrafkind: Ping timeout: 240 seconds 20:41 (join) jeapostrophe 20:42 (join) dsantiago 20:44 (quit) Lajla: Ping timeout: 252 seconds 20:55 (join) 16WAAN2SU 20:59 Frozenlo`: "while a base-2 IEEE floating-point number can represent 1/2 exactly, it can only approximate 1/10:" 20:59 Frozenlo`: Oh 20:59 (nick) ChaozZBubi -> chaozzbubi 20:59 Frozenlo`: ooooooooooooooooooh! 20:59 Frozenlo`: :D 21:02 (join) karswell_ 21:03 (quit) karswell: Ping timeout: 255 seconds 21:06 danlndi: I bet it can represent 1/4, 1/8, 1/16, etc exactly as well 21:07 bremner: except the etc.. only goes so far.\ 21:11 danlndi: i wonder how for for single precision vs double 21:11 danlndi: how far 21:13 chandler: an IEEE float is represented as a tuple of (sign, exponent, fraction) 21:14 chandler: logically the exponent determines what values 1/(2^n) can be stored exactly... 21:14 (join) vkz 21:31 (quit) karswell_: Read error: Connection reset by peer 21:31 (join) karswell_ 21:32 danlndi: yeah it depends on the number of bits in the exponent 21:41 (part) vkz 21:42 (join) vkz 21:42 (part) vkz 21:43 (join) vkz 21:59 Frozenlo`: I see a patern here... set! and hash-set!. Is the exclamation mark for when you are modifying a variable? 22:01 bremner: yup 22:09 (quit) masm: Quit: Leaving. 22:11 (quit) vkz: Quit: vkz 22:19 (quit) karswell_: 22:55 (join) jrslepak 23:02 (quit) jrslepak: Ping timeout: 245 seconds 23:07 (quit) Fulax: Ping timeout: 252 seconds 23:11 (join) jonrafkind 23:12 (join) jrslepak 23:16 eli: jonrafkind: I know what wanting something yesterday means. 23:16 eli: I wanted it a year ago. 23:16 jonrafkind: heh ok 23:16 eli: (By the same scale) 23:16 eli: (And it's not like ubuntu is the only place you'd want it, btw) 23:17 jonrafkind: righyt 23:17 jonrafkind: i could do it myself but I hate messing with the package stuff 23:18 (quit) jrslepak: Quit: This computer has gone to sleep 23:18 eli: jonrafkind: Not only that, I think that it's still easy to fall into platform-specific traps. 23:19 eli: For example, I don't know what's that `update-icon-caches' is -- I don't have it. 23:19 jonrafkind: ah, i have that but i have no idea what it is 23:19 eli: I do have the update-mime-database, but I don't know if it's reliable. 23:21 jonrafkind: ok so eli 'function foo(x){ }' == (define (foo x) ...) and 'function (x){ ... }' == (lambda (x) ...) ? 23:25 eli: jonrafkind: Yes, just like javascript is fine. But just make it `fun' like everybody actually wants it to be. 23:25 jonrafkind: ffffffffffffffffffffffffffffff 23:25 eli: Yes, this is earth shuttering, I know. 23:26 jonrafkind: javascript uses function! 23:26 jonrafkind: everyone loves it 23:26 eli: s/u/a/ 23:26 eli: Most hate it. 23:26 jonrafkind: people make songs and dance around camp fires in praise of 'function' 23:26 eli: It makes quick lambda-like expressions verbose. 23:26 eli: (Which is what JS people discovered they can do, and therefore want it to be a shorter thing.) 23:26 jonrafkind: dont you mean 'it mks qk lmba-lk exprs vrbs' 23:26 jonrafkind: look at all the time wasted writing english! 23:27 eli: No, function is *far* more important than all these all these other keywords. 23:27 jonrafkind: i dont mind supporting both 'fun' and 'function' 23:27 jonrafkind: I can just provide it as both 23:27 eli: See `λ'. 23:27 jonrafkind: yea lambda would be cool if I knew how to type it 23:27 offby1: rudybot: λ 23:27 rudybot: *offby1: error: #:1:0: λ: bad syntax in: λ 23:28 offby1: rudybot: (λ (λ) (λ λ)) 23:28 rudybot: *offby1: ; Value: # 23:28 offby1: rudybot: ((λ (λ) (λ λ)) λ) 23:28 rudybot: *offby1: error: #:1:15: λ: bad syntax in: λ 23:28 jonrafkind: eli, you should try agda, people go nuts with unicode in that language 23:28 eli: If it's easy to change it, then whatever works for me. But for the core language, I'd have a quick poll if I really wanted to be careful. 23:28 offby1: rudybot: ((buffalo (buffalo) (buffalo buffalo buffalo) (buffalo (buffalo buffalo)))) 23:28 rudybot: *offby1: error: reference to an identifier before its definition: buffalo in module: 'program 23:29 eli: Re unicode, I could help you if you'd use Emacs 23:29 eli: offby1: What do you use for λ? 23:30 jonrafkind: in vim i mapped \-l to that lambda symbol, so i could theoretically use it, but i just never bother 23:30 jonrafkind: but its still hard to type outside of vim 23:30 jonrafkind: i really have no problem at all writing out 'lambda' 23:30 eli: A solution to just λ is not enough, which is why I didn't do it for years. 23:31 eli: Now I get to write things like Γ⊢τ₂ 23:31 jonrafkind: well how do you type arbitrary unicode characters 23:32 jonrafkind: I think theres a vim mode for writing \gamma which turns into the gamma symbol 23:32 eli: I have a key that toggles the Emacs input method to one where I dumped a shitload of short notations, and does that for just one "key". 23:32 eli: The fact that it's an input method makes it work in all contexts, even in interactive searches etc. 23:32 eli: 〈〉 23:32 eli: «» 23:32 jonrafkind: yea, I guess if you can remember all the notations its ok 23:32 eli: ←→ 23:32 jonrafkind: but somehow you have to choose a good subset of unicode to remember 23:33 Frozenlo`: Wait what... you can use λ instead of lambda? 23:33 jonrafkind: ya 23:33 eli: ❮❯ 23:33 jonrafkind: do a u with a umlot on it 23:33 eli: ü 23:33 jonrafkind: how about ae 23:33 eli: ae 23:33 jonrafkind: no the single ae character 23:34 jonrafkind: aether 23:34 eli: æ 23:34 eli: What's the name of that thing/ 23:34 eli: ? 23:34 jonrafkind: uh i dunno 23:34 eli: Æ 23:34 jonrafkind: yea that 23:34 jonrafkind: so how many of these did you commit to memory? 23:34 eli: So I was right. 23:35 eli: Not so much. 23:35 jonrafkind: you just type a logical notation and the mode figures it out? 23:35 eli: But I included common sgml/html names, so I get an instant big-ish pool of names. 23:35 eli: Like   23:35 eli: (that was an nbsp there) 23:35 eli: — – 23:36 eli: Then I have a bunch of "graphic" names that I remember, like "|-": ⊢ 23:36 eli: And a bunch of latex-like things, like "_3" ₃ 23:36 eli: ☺ 23:36 eli: ☻ 23:37 eli: ♥♦♣ 23:37 eli: What's the name of the last one? 23:37 (join) dnolen 23:37 jonrafkind: clove 23:38 jonrafkind: oh the missing one 23:38 eli: No, the one that's missing 23:38 jonrafkind: spade 23:38 eli: ♠ 23:38 jonrafkind: can you do big pi 23:38 eli: Obviously. 23:38 eli: π Π 23:38 eli: σ Σ 23:38 jonrafkind: what do you type for those, sigma? 23:38 jonrafkind: or just 'o' and 'E' 23:39 eli: sigma and SIGMA 23:39 jonrafkind: so how do you get lambda? 23:39 eli: s/SIGMA/Sigma/ 23:39 jonrafkind: do you type 'lambda' ? 23:39 eli: I have that (from the sgml thing), but I also added \ 23:39 jonrafkind: and hopefully you use the \ often right 23:40 eli: Yeah, that's why I added it. 23:40 eli: Here: https://github.com/elibarzilay/eliemacs/blob/master/extras/special-chars.el 23:40 rudybot: http://tinyurl.com/6o6z35m 23:40 jonrafkind: ok just doing a sanity check :p 23:41 eli: The first few blocks are mine, then there's the sgml names. 23:41 jonrafkind: lrarr2 of course! 23:41 eli: ⇆ 23:41 jonrafkind: there4 rofl 23:41 eli: ∴ 23:42 eli: ¾⅞ 23:42 jonrafkind: so you must love APL huh 23:42 eli: Not really. 23:42 jonrafkind: a single line of code is worth 50 volumes of C 23:43 eli: I've seen a discussion recently where someone said that APL programmers like to write functions explicitly. 23:43 eli: The claim is that being short means that it's easy to just write an explicit function rather than define a name for it. 23:44 eli: That's true in Racket/Scheme up to the extreme complexity of (lambda (x) (* x 120)) 23:44 eli: I find that using `λ' rasies the bar a little. 23:45 eli: But in APL it goes way high. 23:45 (quit) jeapostrophe: Ping timeout: 244 seconds 23:49 eli: jonrafkind: Here -- this is apparently average: {(+/x)%(#x)} 23:50 eli: It was described as equivalent to sum(x)/len(x) in python 23:50 eli: But apparently that's the long APL-ish syntax, the shorter one is +/%# 23:51 eli: So APL programmers apparently see that and immediately see "average". 23:52 offby1: *shrug* 23:52 offby1: they say there are people who understand Chinese, too 23:55 eli: Max slice sum: |/0(0|+)\ 23:55 eli: Flatten: ,// 23:56 jonrafkind: rofl, looks like perl 23:56 eli: No, it makes perl looks like pearls. 23:57 offby1: y'all talkin' 'bout J ?