00:04 (join) vu3rdd 00:14 (join) gfb 00:14 (quit) gfb: Client Quit 00:15 (join) gfb-ut 00:31 eli: askhader: (with-output-to-string (lambda () (system "pwd"))) 00:31 eli: `subprocess' etc can be a little tricky to handle, but the `process' layer works fine with any IO ports. 01:24 (part) gfb-ut 02:39 (join) writer 02:58 (quit) offby1: Ping timeout: 265 seconds 03:01 (join) hanDerPeder 03:16 (join) dzhus 03:44 askhader: eli: =] Thanks 03:59 (quit) hanDerPeder: Quit: hanDerPeder 04:05 (join) mceier 04:34 (join) hanDerPeder 04:34 (quit) hanDerPeder: Client Quit 04:35 (join) hanDerPeder 04:43 (quit) hanDerPeder: Read error: Connection reset by peer 04:44 (join) hanDerPeder 04:47 (join) hanDerPeder_ 04:47 (quit) hanDerPeder: Read error: Connection reset by peer 04:47 (nick) hanDerPeder_ -> hanDerPeder 05:04 (join) hanDerPeder_ 05:04 (quit) hanDerPeder: Read error: Connection reset by peer 05:04 (nick) hanDerPeder_ -> hanDerPeder 05:08 (quit) dzhus: Ping timeout: 265 seconds 05:50 (join) b-man_ 06:39 (join) masm 06:44 (quit) writer: Quit: writer 06:46 (join) writer 06:46 (quit) writer: Client Quit 06:47 (join) writer 07:11 (quit) hanDerPeder: Remote host closed the connection 07:11 (join) hanDerPeder 07:56 (quit) masm: Ping timeout: 264 seconds 07:58 (join) masm 08:17 (quit) vu3rdd: Remote host closed the connection 08:19 (join) MayDaniel 08:20 (join) fogus` 08:26 (quit) mceier: Quit: leaving 08:31 fogus`: The paper that Matthias Felleisen references in http://groups.google.com/group/racket-users/msg/3a83050e845278c3? is Barendregt's "Introduction to Lambda Calculus" no? 08:38 (quit) MayDaniel: Read error: Connection reset by peer 09:07 (join) jeapostrophe_ 09:10 (quit) b-man_: Remote host closed the connection 09:37 (quit) jeapostrophe_: Quit: jeapostrophe_ 09:41 (join) jeapostrophe_ 10:23 (join) MayDaniel 10:28 (quit) jeapostrophe_: Quit: jeapostrophe_ 11:05 (quit) MayDaniel: Read error: Connection reset by peer 11:08 (join) vu3rdd 11:13 (join) b-man_ 11:14 (join) fjl 11:14 (part) fjl 11:15 (join) offby1 11:17 (join) anRch 11:23 (join) mceier 11:29 (join) hanDerPeder_ 11:29 (quit) hanDerPeder: Read error: Connection reset by peer 11:29 (nick) hanDerPeder_ -> hanDerPeder 11:32 (join) jeapostrophe_ 11:33 (quit) jeapostrophe_: Client Quit 12:12 (quit) anRch: Quit: anRch 12:21 (quit) b-man_: Remote host closed the connection 12:22 (join) anRch 12:39 (join) jonrafkind 12:45 (quit) tv|z: Ping timeout: 245 seconds 12:47 (join) tv|z 12:53 (quit) anRch: Quit: anRch 13:10 Lajla: jonrafkind, 13:10 jonrafkind: yes my son 13:10 Lajla: Is there any datum d in your model where eval(d) = d does not apply? 13:10 Lajla: I will only be your son if you spank me. 13:11 jonrafkind: well I guess not, it seems to me that by definition a datum is something that eval's to itself 13:13 (quit) vu3rdd: Remote host closed the connection 13:13 Lajla: jonrafkind, I would agree. 13:14 Lajla: jonrafkind, so, basically you have two types of data here. 13:14 Lajla: Data as code 13:14 Lajla: and data as data? 13:14 Lajla: Whereas in data as data, there is no real useful difference between symbols and immutable strings. 13:14 Lajla: But in data as code, symbols are used to provide the compiler with binding information 13:15 jonrafkind: i mean if you have (read "x") => normally that gives you back the symbol "x" 13:15 jonrafkind: so if you wanted to eval that you could have the normal evaluation rules where you do a lookup 13:15 jonrafkind: so if you have (read "'x") you could get back the string "x" 13:16 (quit) hanDerPeder: Quit: hanDerPeder 13:17 Lajla: Though, I would say that the essence of symbols in code is usually that it's irrelevant what they are composed of as characters, as long as they are all the same. Like, you can change any instance of 'fraps to 'blurbs and it would be fine as long as you do all of them. 13:17 Lajla: with strings, their individual characters are usually more relevant. 13:17 Lajla: But I got you man 13:17 Lajla: I reverse engineered you like I work at 51 13:35 (join) fjl 13:35 (part) fjl 13:46 (join) b-man_ 13:57 (join) anRch 14:21 (join) hanDerPeder 14:39 (quit) b-man_: Ping timeout: 245 seconds 14:39 (join) b-man_ 14:52 (join) fjl 14:52 (part) fjl 15:12 (quit) mario-goulart: Remote host closed the connection 15:12 (join) mario-goulart 15:13 (quit) b-man_: Remote host closed the connection 15:17 (join) b-man_ 15:21 (quit) b-man_: Remote host closed the connection 15:40 (quit) anRch: Quit: anRch 15:45 (join) fjl 15:45 (part) fjl 16:00 (join) asdf_ 16:00 (quit) asdf_: Client Quit 16:06 askhader: I have a bit of a dilemma. I have a string that represent a Linux filesystem path that will be passed to a system call. The problem is that I need to escape the spaces and paranthesis, but scheme strings don't support this (i.e. it complains if I try to make a string as follows (define x "foo\ bar") 16:13 Lajla: askhader, what if you use "foo\\ bar" ? 16:13 Lajla: \ has itself a meaning in scheme strings 16:14 Lajla: like "\na" in racket at least is the string compoed of the characters #\newline and #\a 16:14 Lajla: askhader, a better way though 16:14 Lajla: Is just use "foo bar" and run an escape function over it only once before you pass it. 16:15 Lajla: It's a lot safer 16:15 askhader: An escape function? 16:17 jonrafkind: a function that adds the escapes for you 16:18 jonrafkind: or you could pass the system call surrounded by single quotes 16:19 Lajla: Racket supports single quotes? 16:19 Lajla: Doesn't seem so here 16:20 askhader: "' '" ? 16:21 Lajla: That seems to be a triple quote 16:21 (quit) hanDerPeder: Quit: hanDerPeder 16:21 askhader: Haha 16:21 askhader is confuzzled 16:21 Lajla: askhader, basically you write a fun ction on strings that exchanges sequneces like #\space with #\backslash #\space 16:21 (join) MayDaniel 16:21 Lajla: Scheme's character notation is beyond annoying. 16:21 Lajla: \a suffices 16:22 (join) hanDerPeder 16:22 Lajla: #\a is so annoying to type each time. 16:22 Lajla: (string #\C #\h #\a #\r #\a #\c #\t #\e #\r) 16:24 askhader dislikes dicking with characters, makes me feel like writing C 16:25 Lajla: askhader, you'll have to I guess 16:25 Lajla: Scheme is a langauge that makes sense 16:25 Lajla: So there is a difference between characters and strings of length 1 16:25 Lajla: Besides 16:25 Lajla: you can't really do good functional recursive programming without that destinction 16:26 askhader: Good point 16:26 Lajla: Or well 16:26 Lajla: actually, I guess you can to some extend with a string datatype. 16:26 Lajla: But if strings are just ordinary vectors, but filled with only chars. 16:27 Lajla: You end up with stuff like #(#\s #\t #\ r#\i #\ n #(#\g)) 16:27 jonrafkind: (define (escape f) (format "'~a'" f)) 16:27 Lajla: Ohhh 16:28 askhader scritches head 16:28 askhader: I haven't seen format before 16:28 Lajla: This is where I would have decomposed it, and let it take some datum for the escapes. 16:28 askhader: oh isomorphic to printf 16:28 Lajla: askhader, as a C programmer...? 16:28 Lajla: Well 16:28 Lajla: excep that it returns 16:28 Lajla: So sprintf 16:28 Lajla: I guess 16:28 jonrafkind: isomorphic.. that word.. i dont think it means what you think it means 16:29 Lajla: I like how python uses "blablabla".format(...) 16:29 Lajla: jonrafkind, don't scare customers 16:29 jonrafkind: you mean "blah blah" % (1, 2, 3) 16:29 askhader: jonrafkind: Truthfully, I don'tknow what it really means 16:29 Lajla: jonrafkind, no, that's depraecated actually. 16:29 Lajla: The new Pythonic® way is "bla bla".format (1, 2, 3) 16:30 Lajla: askhader, it 16:30 Lajla: 's a property of models. 16:30 Lajla: Not of elements therein. 16:30 jonrafkind: oh in python3? 16:30 jonrafkind: i havent followed python3 at all 16:30 Lajla: jonrafkind, don't scare the customers. 16:30 Lajla: Saying you don't python to most people is like saying you don't like chocolate 16:31 Lajla: It will make them run of, thinking you're weird, and nuke your homeland 16:31 jonrafkind: well i follow python 2.. 16:32 Lajla: jonrafkind, that also does not have a character datatype. 16:32 Lajla: I think character datatypes are perhaps a bit overkill. 16:32 Lajla: Using integers works fine in a lot of cases. 16:32 Lajla: And using char->integer all the time and then back to perform simple operations can be annoying. 16:33 jonrafkind: i suppose, you could just make those functions yourself, like char+ 16:37 (quit) MayDaniel: Read error: Connection reset by peer 16:38 Lajla: jonrafkind, I made them of course 16:39 Lajla: But to make them, I had to use char->integer a lot. 16:39 Lajla: And you have to keep updating stuff later on. 16:39 Lajla: Not updating 16:39 Lajla: but ehh 16:39 Lajla: create variants of functions which use + 16:39 Lajla: That's why I don't like stuff like member, memq, memv et cetera. 16:40 Lajla: I'd rather have member to just take a single praedicate, and returns the first pair for which the head trues it. 16:40 Lajla: So you can like (member (lambda (x) (eqv? x 3)) some-list) 16:56 (quit) hanDerPeder: Quit: hanDerPeder 16:58 (join) hanDerPeder 17:06 (quit) hanDerPeder: Quit: hanDerPeder 17:10 (join) rmitt__ 17:17 (quit) fogus`: Quit: fogus` 17:21 (quit) fmu: Ping timeout: 276 seconds 17:23 (join) fmu 18:02 (quit) alexsuraci: Quit: alexsuraci 18:07 (join) _mo_ 18:15 (join) prisst 18:16 (quit) prisst: Client Quit 18:47 (quit) rmitt__: Quit: Page closed 18:56 mattmight: Clauses in match* should accept a special outer-level (or ...), like (match* (foo bar) [(or (1 2) (3 4)) action]). 18:57 (quit) _mo_: Quit: Leaving 18:58 jonrafkind: well I guess that could work if you used the same variables in the math patterns 18:58 jonrafkind: (or (x y) (x y)) ... 18:58 jonrafkind: i think you can probably write a match-define thing to do that 18:59 jonrafkind: i can try if you aren't feeling adventerous 19:02 jonrafkind: actually in that case can't you just do (match (list foo bar) [(or ...) ...]) 19:11 (join) jeapostrophe_ 19:13 (quit) jeapostrophe_: Client Quit 19:15 (quit) lisppaste: Ping timeout: 240 seconds 19:37 (join) jeapostrophe_ 19:39 (quit) jeapostrophe_: Client Quit 19:45 (join) b-man_ 19:54 (join) ari__ 19:59 (quit) b-man_: Remote host closed the connection 19:59 (join) b-man_ 20:04 ari__: who here is onloine 20:04 jonrafkind: sup bro 20:05 Lajla: raprezent 20:05 Lajla: Oh, I see you messaged me. 20:05 jonrafkind: jdawg! 20:05 Lajla: Homies 20:05 Lajla: So like, I waz writin some code and then mah homies were all like 'DANG, diz shit is tight yo' 20:06 Lajla: Buck sayin like 'DANG Man, you gonna optimize it like that, yo, that's some nice flow there' 20:06 askhader: fo shizzle ma nizzle 20:06 Lajla: askhader, racist 20:07 Lajla: There shall be no racism here. 20:07 askhader: O.o 20:07 Lajla: Is let a primitive in racket or is it a macro by the way? 20:07 askhader: Are you for real? 20:07 Lajla: askhader, no. 20:07 Lajla: What gave you that idea 20:07 jonrafkind: let is a macro 20:07 askhader: macro I thin 20:07 jonrafkind: which exands to let-values 20:07 Lajla: jonrafkind, ah, okay 20:07 jonrafkind: in case you ever dont know, just do 'raco expand x.rkt' 20:07 askhader: It's not even worth it go ordeal. 20:07 jonrafkind: nad you will see whats primitive 20:07 askhader: nads! 20:07 Lajla: Ahh 20:07 jonrafkind: narf! 20:07 Lajla: That is true 20:08 Lajla: Gee jonrafkind what are we going to do tonight? 20:08 jonrafkind: get drunk 20:10 Lajla: I was hoping to take over the world. 20:10 Lajla: I don't drink actually. 20:10 Lajla: But twilight machevillian schemes, I'm all about that 20:21 ari__: jon 20:21 ari__: are u any good at programming\ 20:21 jonrafkind: sure 20:22 ari__: k 20:22 ari__: i need help with a certain problem 20:22 ari__: number 67 20:23 jonrafkind: what makes you believe anyone here knows what "number 67" refers to? 20:25 Lajla: Means htdp 20:25 Lajla: Also, jonrafkind is actually reaaaally bad 20:25 Lajla: Because he likes infix. 20:25 jonrafkind: i thought htdp was like 2.4.3.2.5 20:25 Lajla: THis is almost as much blasphemy as not thinking that racket is a good industry langauge that is good at about any single task, including a portable assembler. 20:33 (quit) b-man_: Remote host closed the connection 20:43 ari__: hey' 20:59 (quit) ari__: Quit: Page closed 21:00 (join) ari__ 21:00 ari__: hi 21:05 (join) jeapostrophe_ 21:32 (quit) masm: Quit: Leaving. 21:39 (quit) ari__: Ping timeout: 265 seconds 21:52 (quit) jeapostrophe_: Quit: jeapostrophe_ 21:55 (join) kevin01123 21:58 (quit) benk_: Ping timeout: 265 seconds 21:58 kevin01123: I'm trying to install fluxus with use for racket. However, running scons gives an error: "ERROR: 'mzscheme' must be installed!" Anyone know how to troubleshoot? 21:59 jonrafkind: maybe edit the SConstruct file and change 'mzscheme' to 'racket' 22:00 kevin01123: jonrafkind: But by installing racket, isn't mzscheme installed as well? 22:00 jonrafkind: no the mzscheme executable was changed to 'racket' 22:00 jonrafkind: i think 22:00 jonrafkind: ok actually mzscheme is still there 22:01 jonrafkind: so where did you install racket to? 22:01 kevin01123: /home/user/Software/racket/bin 22:02 jonrafkind: is mzscheme in there? 22:02 kevin01123: And export PATH=$PATH:/home/user/Software/racket/bin is in my ~/.bashrc 22:02 kevin01123: jonrafkind: Yes, it's there. 22:02 kevin01123: bash autocomplete shows it as well. 22:03 jonrafkind: if you type 'mzscheme' on the command line does it work? 22:03 kevin01123: jonrafkind: Yes. 22:03 jonrafkind: where can i get the latest fluxus tar 22:04 kevin01123: jonrafkind: http://www.pawfal.org/fluxus/packages/ 22:04 (join) offby1` 22:04 jonrafkind: oh it wants mzscheme3m 22:05 jonrafkind: just symlink mzscheme to mzscheme3m 22:05 jonrafkind: or edit the scons file to use mzscheme instead of 3m 22:06 jonrafkind: actually that wont solve it 22:06 jonrafkind: bleh.. 22:06 (quit) offby1: Disconnected by services 22:06 (nick) offby1` -> offby1 22:06 (quit) offby1: Changing host 22:06 (join) offby1 22:06 kevin01123: Googling for answers shows nothing. Every "answer" I've seen involves giving up on the cusotm rolled racket and installing the distributions. 22:12 jonrafkind: ok i got ta little farther 22:12 jonrafkind: you must invoke the scons file with the PLTPrefix argument 22:12 jonrafkind: scons PLTPrefix=/home/user/Software/racket 22:12 jonrafkind: then change mzscheme3m to racket3m in the scons file 22:13 jonrafkind: now its telling me i dont have ode installed, but i dont feel like installing that 22:16 (nick) offby1 -> floopy 22:16 (nick) floopy -> floopy` 22:16 Lajla: floopy`, explain this odd behaviour. 22:16 (nick) floopy` -> offby1` 22:16 Lajla: And stop poking me. 22:16 Lajla: Ahat do I look like? An orc? 22:17 (nick) offby1` -> offby1 22:18 offby1: Lajla: hey, it's perfectly explainable! 22:18 offby1: The guys in #git made me do it, I swear 22:20 Lajla: offby1, no, no, you should say 'THIS IS NOT WARCRAFT IN SPACE, IT IS MUCH MORE SOPHISTICATED' 22:20 Lajla: And then 'I KNOW it's not 3d' 22:20 offby1 stares blankly 22:21 kevin01123: jonrafkind: ERROR: 'racket3m' must be installed! 22:22 kevin01123: :-/ 22:22 jonrafkind: look at config.log 22:22 Lajla: offby1, how can you not know it? 22:23 Lajla: offby1, http://www.youtube.com/watch?v=tgeNtKrBQ3s#t=0m27 22:24 Lajla: This is like not knowing whar the 3rd praesident of the US was. 22:24 Lajla: You will get executed if you're with people who practice that custom 22:24 kevin01123: jonrafkind: Ah ha. It was looking for scheme.h in ~/Software/racket/include/plt/ 22:24 (nick) offby1 -> offby1` 22:24 jonrafkind: oh yea take out the plt 22:24 (nick) offby1` -> offby1 22:27 askhader: What's the difference between a (local ..) block and a (let..) block? 22:27 kevin01123: jonrafkind: Looks like the paths have been updated in fluxus git. 22:28 jonrafkind: oh good 22:28 jonrafkind: askhader, i think the difference is mostly syntactic 22:28 jonrafkind: except its really local == letrec 22:29 askhader: Oh nice. 22:29 askhader mixes it up 22:30 kevin01123: jonrafkind: What was the ode thing you spoke of earlier? 22:30 jonrafkind: i think its an open source physics library 22:30 jonrafkind: scons complained that i didnt have it installed 22:34 Lajla: In my ideal world, local would be let, and let would be a let which which binds a recursion point to recurse, and an escape continuation to escape 22:34 Lajla: And in my idal world, I would have a girlfriend 22:37 jonrafkind: so you want letrec/ec ? 22:38 (join) Kevin_ 22:38 Kevin_: Hi everyone 22:38 askhader: Kevin_: Heya 22:38 Kevin_: I just had a question about a certain dr. racket function 22:39 Kevin_: it's called quicksort 22:39 Kevin_: contract looks like this: 22:39 Kevin_: ;; quicksort : (listof X) (X X -> boolean) -> (listof X) ;; to construct a list from all items on alox in an order according to cmp (define (quicksort alox cmp) ...) 22:39 askhader: Cool, what about it? 22:39 Lajla: jonrafkind, well, basically like a named let. 22:40 Lajla: Kind of like (let recurse ...) 22:40 Kevin_: so that first parameter, that's the list it sorts, right? 22:40 askhader: Yep 22:40 Lajla: But also binding the escape symbol to an escape procedure 22:40 Lajla: So like 22:40 Lajla: (lambda (escape) (let recurse ...) 22:40 Lajla: And since let was already taken 22:40 Kevin_: ok, but the second parameter confuses me a bit 22:40 Lajla: I syntax-cased this one together 22:40 Kevin_: it seems to be a function 22:40 Lajla: And called it establish 22:40 Lajla: Ehh 22:41 Lajla: (call/cc (lambda (escape) ...) 22:41 Lajla: But you get what I mea-ean 22:41 Kevin_: is that second parameter what quicksort uses to sort the list? 22:41 Kevin_: like, it tells it how to sort the list? 22:41 askhader: Precisely 22:41 askhader: a total order comparison 22:42 askhader: Most sorting implementations just need you to tell them a way to decide what is less than or equal to what in a list of type X and it can infer the rest 22:42 Kevin_: so what would be an example of one? 22:42 askhader: So let's say I define a type, call it a bank account ;-) 22:42 Lajla: kevin_ <= 22:42 Lajla: Woot 22:42 Kevin_: the X X -> boolean isn't very clear 22:42 Lajla: And => 22:42 Kevin_: ahaa 22:42 Lajla: Or like 22:42 jonrafkind: X means any type 22:42 askhader: (define-struct bank-account (name balance)) 22:42 Lajla: Let's do another one 22:42 Lajla: char<-ci? 22:42 Lajla: Was it called right 22:43 askhader: And you want to srot a list of bank accounts in order of increasing balance 22:43 Lajla: Or string<=? 22:43 askhader: Well those work as well =P 22:43 Lajla: Yeah 22:43 Lajla: Or like 22:43 Kevin_: I see, and what do those do? 22:43 Kevin_: so string<=? 22:43 Kevin_: checks to see if string 1 comes before string 2? 22:44 askhader: it checks if string1 is lexicographically less than or equal to string 2 22:44 Lajla: Say you have like (define-struct person (penis-size length IQ number-of-warp-crimes-commited owned-number-of-ranches-in-texas)) 22:44 Kevin_: lol wtf 22:44 Kevin_: ok, go on 22:44 askhader: And due to some logical magic, you can infer the other comparisons from that one comparison. That is to say I can define greater than, equal to, not equal to and greater than or equal to all in terms of less than or equal to. =] 22:45 Lajla: You can make one like (define (order . xs) (apply <= (map person.IQ xs))) 22:45 Lajla: kevin, basically it checks on alphabetic sorting 22:45 askhader: Hm is the pasting bot not around? 22:45 Lajla: kevin_ did you know this: 22:46 Kevin_: go on 22:46 Lajla: rudybot: eval (< 1 2 3 4 5) 22:46 rudybot: Lajla: your sandbox is ready 22:46 rudybot: Lajla: ; Value: #t 22:46 jonrafkind: so Kevin_ you didnt understand that 'X' was a metavariable for any type? 22:46 Lajla: rudybot: eval (< 1 2 3 4 4) 22:46 rudybot: Lajla: ; Value: #f 22:46 Kevin_: no, I know that that's what it is 22:46 jonrafkind: so why was it confusing? 22:46 Lajla: kevin < is less than 22:46 Kevin_: I guess I didn't really interpret that format correctly 22:46 askhader: Here is a function I defined to go through an embdedded list of symbols and return a unique list of symbols that are not defined in 'operators'. Scrutinize my code please http://paste.lisp.org/display/116933 22:46 Kevin_: like the X X -> Boolean 22:47 jonrafkind: Kevin_, im trying to figure out if the docs should be clearer 22:47 Kevin_: I didn't interpret that as a comparing function 22:47 jonrafkind: do you think the docs left out some key words that would have halped? 22:47 Kevin_: hmmm, the docs? 22:47 jonrafkind: where do you see X X -> Boolean 22:47 Kevin_: oh, it's from a textbook 22:47 Kevin_: How to Design Programs I believe 22:47 jonrafkind: htdp? 22:47 jonrafkind: ok 22:47 Kevin_: yes 22:48 jonrafkind: http://docs.racket-lang.org/htdp-langs/advanced-prim-ops.html?q=quicksort&q=local&q=match 22:48 rudybot: http://tinyurl.com/34ksr5c 22:48 jonrafkind: i see that none of the arugmnets are named 22:48 jonrafkind: which could lead to confusion 22:49 Lajla: kevin, do you know what transitive, reflexive, and antisymmetric means? 22:49 Lajla: And for a variadic number of arguments 22:49 Kevin_: I'm afraid not 22:49 Lajla: kevin_ okay, this is cool stuff 22:49 Lajla: Say we have a function 22:49 Lajla: Like f 22:49 Kevin_: ok 22:49 Lajla: And we call it like (f x y ... z) 22:49 Lajla: Like, any number of arguments 22:49 Kevin_: yep 22:51 Lajla: Okay, so, we say that such a function is transitive, if necessarily, if (f a ... b) and (f b ... c) produce the the true boolean, then (f a ... b ... c) must also produce the true boolean 22:51 Lajla: His is calld transitivity. 22:51 Lajla: Like = is transitive 22:51 Kevin_: ah, ok 22:51 Kevin_: I think I get that 22:51 Lajla: Because if (= x y z) produces true, and (= z a b) produces true, then it must be that (= x y z a b) also produces true 22:51 Kevin_: makes sense 22:52 Lajla: Okay, reflexive is another interesting property, which says that (f a a a a a ...) for any a must always produce true 22:52 Lajla: Basically, if you call it with the same argument, no matter how many 22:52 Kevin_: what would be the purpose of that though? 22:52 Lajla: Okay, the next part is antisymmetric, which is a bit weird. But this means that if (f a b ... c) produces true, and (f c .. b a) produces true 22:53 Lajla: So like, if you reverse the arguments, and both produce true. 22:53 jonrafkind: its boring math stuff used to prove logic statements 22:53 jonrafkind: its completely worthless in your daily life 22:53 askhader: boring? 22:53 Lajla: THen necessarily, all arguments are aequal. 22:53 askhader: jonrafkind: Untrue 22:53 Lajla: If a function has these three properties. 22:53 Lajla: Then that function is called a ordening function 22:53 Kevin_: ohhhh 22:54 Lajla: Which means that it can say that some thing is "less" than another thing, via some logic. 22:54 Kevin_: ok, I see 22:54 jonrafkind: ok its exciting math stuff thats completely worthless in your daily life 22:54 Lajla: But the properties are important, because like say, if x is less than y, and y than z, then if x was not less than z automatically, it would not be a valid order. 22:54 Lajla: So actually 'less than' is not an order actually. 22:54 Lajla: But 'less than or aequal to' is an order 22:56 Kevin_: would quicksort be able to sort a list of lists? 22:56 offby1: any sort algorithm can sort anything you want, as long as you provide a suitable comparison procedure. 22:57 Lajla: kevin_ sure 22:57 Kevin_: ah, ok 22:57 offby1: You can syndicate any boat you row. 22:57 Lajla: But you have to give a good comparison that satisfies all these properties for its to work. 22:57 Kevin_: sometimes you'd have to make your own comparison procedure though, right? 22:57 Kevin_: if it doesn't exist already 22:57 offby1: Kevin_: not just "sometimes", but "typically". 22:59 offby1: rudybot: eval (sort (list "hey" "you" "bubba") string (map car lsts)) #f (apply listorder (cdr lsts)))) 23:01 offby1: rudybot: eval (sort '((1 cat) (9 dog) (2 bunny) (100 snake)) stringstring cadr)) 23:01 rudybot: *offby1: ; Value: ((2 bunny) (1 cat) (9 dog) (100 snake)) 23:02 Kevin_: hmm this #:key stuff I've never seen before 23:02 offby1: it's not quite standard, although it's somewhat common. 23:02 offby1: it's just a convenience, but it's pretty convenient. 23:03 Lajla: offby1, your example is actually not an order 23:04 Lajla: Because (1 car) and (1 offby1) are not differentiated. 23:04 Lajla: Or well, if you assume they are identical in some identity relationstip they are. 23:09 (quit) bill_h: Ping timeout: 252 seconds 23:14 offby1: I don't know what "an order" means, so it doesn't surprise me that my example isn't one. 23:17 Lajla: offby1, I explained it so well.! 23:20 offby1: Ah, but I haven't been paying attention. 23:22 (quit) jonrafkind: Ping timeout: 250 seconds 23:23 (quit) kevin01123: Remote host closed the connection 23:38 (join) ari__ 23:38 (quit) ari__: Client Quit 23:40 (quit) mceier: Quit: leaving