00:01:41 Phantom_Hoover: How many times do I have to point out CONTINUOUS TIME 00:02:04 And for which C(f(P)) = C(P) + move. 00:02:08 This is the best superpower? <-- uh oh, maybe it's not wise to sum opposing vectors, you could divide the piece in two and move them about as far as you want if things can cancel 00:03:14 oerjan, failing to see the problem?? 00:04:08 hmmm I think I made a command abbreviation / typo checker that works slightly better than lambdabots. 00:04:19 Phantom_Hoover: Well it does mean you can move a bit too quickly... 00:04:24 Phantom_Hoover: like, a pawn on e4 could move half 2 steps backward and half 4 steps forward 00:04:49 it checks for commands that the input command is an abbreviation of, and then if there's only one of those, uses that, otherwise it checks the levenshtein distance and if there's only one below a threshhold of 3 then it uses that 00:04:56 otherwise it lists all of the matches. 00:05:16 oerjan, of course; what of it? 00:05:21 Phantom_Hoover: O KAY 00:05:34 You can take half a piece that way, sure. 00:05:47 Phantom_Hoover: And then another, with one left movement and another acceleration. 00:05:51 this means that you can both abbreviate commands as well as have minor typos corrected for you 00:05:59 what i am hearing here tells me that if one was to develop this game in a serious manner then he could achieve mathematical fame 00:06:25 although there are of course other ways to go about that 00:06:32 itidus21, TbH, by now, it's not too hard to understand. 00:06:55 hmm.. 00:07:10 i like the dirty version 00:07:26 the impossible to play one 00:08:05 It's still impossible to play. 00:08:07 Phantom_Hoover: CONTINUOUS TIME 00:08:09 That was mainly because I made a hash of the definition. 00:08:19 is there a possible to play version of this game? 00:08:22 elliott, it's not elegantly generalisable, I think. 00:08:32 kallisti, only one way to find out... 00:09:12 I'll let you use my amazing portal chess server infrastructure to implement your chess game, in a few years when I have the most active portal chess server on the web. 00:09:28 Phantom_Hoover: :( 00:09:33 kallisti: No. 00:09:44 Well, it would be easy if you used the rationals or whatever. 00:09:46 But also boring. 00:10:00 That post-apocalyptic chess thing is pretty cool now, although it will never see the light of anything interesting. 00:10:29 elliott, um, use Coq???? 00:10:30 elliott: I think you took me seriously just slightly beyond the reasonable threshold. 00:11:13 I figure the token expansion of what I am doing, it is very much like a comonad except that there is only one type inside, rather than any type. So I made up =>>: and =>=: and <$: which can be used with it 00:11:17 Phantom_Hoover: What thing? 00:11:22 it seems to be the type of game which there is no board.. 00:11:38 and the board is constructed as necessary to help the player determine the game state 00:11:38 http://codu.org/logs/log/_esoteric/2012-01-06#171155PhantomHoover 00:11:41 Read on. 00:11:42 And yet before, I did not know any purpose of a comonad in the program. But now I do. 00:11:53 Up to Vorpal's SCSI fetish. 00:12:59 (=>>:) :: ProgramState -> (ProgramState -> [Token]) -> ProgramState; (=>=:) :: (ProgramState -> [Token]) -> (ProgramState -> [Token]) -> (ProgramState -> [Token]); (<$:) :: [Token] -> ProgramState -> ProgramState; 00:13:38 Phantom_Hoover: Maybe I'll just read the whole log? 00:16:00 @m 00:16:00 Maybe you meant: map messages messages? more msg . ? @ v 00:16:14 -!- MDude has joined. 00:16:47 the chess topics started going berzerk once vorpal said: "* Vorpal imagines chess with HP and headshots" 00:17:45 There are some chess variants with hit-points, there are some with shooting capture (you stay where you are when capturing a piece), and some with different board geometry, etc 00:18:45 16:41:08: itidus21: I think the patent system exists because inventors feel entitled to the spoils of their inventions and this makes sense from an ethical perspective. Paradoxically, people claim that it encourages competition, despite it doing the exact opposite of that by definition. 00:18:58 kallisti: the idea is that it encourages competition by encouraging people to innovate 00:19:03 and discouraging copying 00:19:58 sure, but a state of perfect competition exists when you have multiple sellers selling the same thing at the same quality. 00:20:01 patents make this difficult. 00:21:28 i nominate Phantom_Hoover to explain the idea of a bigger picture. 00:21:51 nope. you're not allowed to get people to explain your points for you. 00:21:55 unless I get someone too 00:21:58 17:09:02: (All the school computers have Halo because.... I don't know.) 00:22:00 we can have a proxy debate 00:22:02 Phantom_Hoover: So they can kick people out for it. 00:22:18 I dislike patents. I think is better not patented, and not patented you can still competition, innovation, unrestriction, etc. 00:25:38 17:20:44: Vorpal: Okay, here: http://e621.net/post/show/43346/4-3-blush-darkdoomer-iriver-overstretched-rule_34- -- note, it's a SCSI cable; you can tell from the logo. 00:25:43 fizzie: That was impressively quick. 00:25:43 elliott: I suppose if there's always innovation then the patent system does not produce monopolies. 00:26:05 but it does restrict competition / create a barrier of entry 00:26:57 17:28:25: Huh, the 'coretemp' sensor on this Atom box is saying "Core 0: +23.0°C (crit = +90.0°C)" -- that sounds dubiously low, but I guess it's *possible*, since it's an Atom and mostly idle. (The box is making a worrisome noise, might be the PSU fan dying.) 00:26:57 17:28:38: +23 is pretty much room temperature, though. 00:26:57 17:28:40: fizzie, I had an old sempron that idled at 28 C 00:26:57 17:28:50: when it was like 17 C inside 00:27:04 fizzie: My CPU idles BELOW ROOM TEMPERATURE. 00:27:06 kallisti: Yes I agree it does restrict competition and other thing too 00:27:06 With AIR COOLING. 00:29:20 oh I misread lambdabots code. my bot and it do the exact same thing.. 00:30:43 Good to know yours will suck at typo-corrections then 00:31:06 I tried applying weights but... it's hard to determine how they interact with one another. 00:32:03 elliott: oh also it checks identification on bot admins which makes it immediately better. 00:32:32 f(0,0) = 0; f(x,0) = x^f(x-1,f(x-1,x^x)); f(x,y) = f(x,y-1)^f(x,y-1); Note that f(0,0) = 0 and f(1,0) = 1 and f(2,0) = 2 but f(3,0) is greater than googolplex. 00:34:06 17:32:52: anyway is there any realtime chess I wonder 00:34:06 yes 00:34:14 i dont have a link though 00:34:26 Yes there is a lot of chess variants, there is some kind of realtime chess 00:34:35 17:35:15: Vorpal: FRP maintains a sample-independent abstraction that logically resembles continuity. 00:34:42 kallisti: that doesn't mean computers are continuous 00:34:49 I would weigh levenshtein distance by distance on a QWERTY keyboard but that makes it non-keyboard-agnostic. 00:34:52 frp is carefully restricted to not actually let you do anything non-discrete. 00:34:53 elliott: of course not. 00:35:05 s/would/could/ 00:54:41 zzo38: let g(0,x) = x; g(n,x) = g(n-1,x)^g(n-1,x), then g is primitive recursive. And f(x,y) = g(y,f(x,0)); f(x,0) = x^g(g(x^x,f(x-1,0)), f(x-1,0)). so f is also primitive recursive. 00:56:44 hmm how difficult would it be to augment the wagner-fisher algorithm to include character swaps as an operation. 00:57:07 kallisti, remember dvorak and so on 00:57:16 * oerjan thinks maybe he should have flipped g's arguments 00:57:24 for example: help vs. hlep instead of being 2 substitutions this could be 1 character swap 00:57:28 a very common case in typos 00:58:01 night 00:58:11 kallisti: http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance 00:59:40 but... but 00:59:42 there's no... 00:59:45 there's no CPAN module 01:00:54 kallisti: that doesn't mean computers are continuous <-- did you see mentioned recently that FRP is curry-howard isomorphic to constructive time logic? 01:01:02 oerjan: yeah 01:01:09 oerjan: linear temporal logic 01:01:11 I think you mean 01:01:41 hm i think it was a slightly different mention 01:02:47 -!- Vorpal has quit (Ping timeout: 276 seconds). 01:03:07 http://search.cpan.org/~ugexe/Text-Levenshtein-Damerau-0.02/Levenshtein/Damerau/lib/Text/Levenshtein/Damerau.pm 01:03:10 oh hi 01:03:38 kallisti: is there a rule 34 variant for perl 01:03:51 if it exists, there's a cpan module for it. 01:03:54 if there exists, there's a cpan module containing porn of it 01:03:55 mine's better 01:04:00 including "if there exists" 01:04:14 -!- iconmaster has quit (Quit: iconmaster is gone!). 01:04:17 O KSY 01:04:30 o ksy 01:04:41 * oerjan found it iresponsible to correct typos under the circumstances 01:05:21 iresponsible 01:05:29 very much so 01:05:51 the current version I'm using employs XS and so is fairly quick, but I suspect it doesn't matter very much. 01:06:02 kallisti: It probably does. 01:06:09 Edit distance is a huge pain to calculate :p 01:06:17 What if someone does @[GIGANTIC COMMAND]?!?!?! 01:06:28 then they're a jerk. 01:06:38 @23jj3o4jioj4o34509i34509832049834oitjkgjohjgoihjrfoijsdvoihweeoihsdvfoijhweroijwroijweoirjweegoijweogijsdoifjaskldnwiurghoiwehfijajsfoiwrg 01:06:39 Unknown command, try @list 01:09:24 hmmm for some reason it's not installing. 01:09:59 hmmm it has no makefile. perhaps that's the issue. 01:14:49 * kallisti installs manually. 01:17:50 One doesn't really need a makefile, anyways. 01:18:07 Let's say you've got a single-file C program foo.c. make foo 01:18:08 Bam. 01:18:48 (make, the build tool with domain-specific knowledge that somehow lacks important parts of the same!) 01:19:38 When I write a C program they are usually a single file. Often it is CWEB so it has its own preprocessor, but it can make a shell script that does the compile steps. Sometimes it is linked with something else so I put those things in shell script too, such as SDL or Glk or whatever else. 01:28:20 -!- madbright has joined. 01:30:30 -!- elliott has quit (Ping timeout: 252 seconds). 01:31:09 Can digraph categories have any monads or comonads other than identity monads? 01:37:40 * Phantom_Hoover → sleep 01:37:41 -!- Phantom_Hoover has quit (Quit: Leaving). 01:42:36 -!- nooga has joined. 02:06:58 -!- oerjan has quit (Quit: Good night). 02:17:43 -!- Jafet has joined. 02:50:03 -!- MDude has quit (Ping timeout: 252 seconds). 02:51:18 -!- MDude has joined. 02:52:22 > product [] 02:52:23 1 02:52:39 @src product 02:52:39 product = foldl (*) 1 03:05:22 Do you know about digraph categories? 03:10:40 nope 03:10:46 -!- nooga has quit (Ping timeout: 260 seconds). 03:11:55 Do you know digraph? It is, you have nodes and then edges connecting them from one to another (normal graph is directionless; digraph has directions). You can make a category of a digraph by the objects being the nodes and the morphisms being the walks between them 03:14:42 oh 03:14:44 directed graph 03:14:52 Yes 03:14:57 yes I know what that is. I wasn't familiar with that term. 03:15:02 It is also called "digraph" for short. 03:21:21 Isn't the monad for categories one that's over the category of digraphs? 03:21:37 The one thing is the free category generated by the digraph, and, uh... 03:22:04 -!- pikhq has quit (Ping timeout: 240 seconds). 03:22:19 -!- pikhq has joined. 03:22:22 And I don't remember how monads work, categorically theoretically; I just remember that Catsters video. 03:26:59 I suppose, if there is one node that all edges go in one direction eventually reaching that node, with only one way, that is a final object, and that would be a monad too I suppose (it is called Proxy in Haskell, in the "tagged" package). Actually maybe I got confused 03:30:13 And it is possible to turn around all the directions in the graph to make the dual category and then it make the comonad 03:32:21 Can you please tell me in case I did it wrong? 04:08:25 04:08:50 HI 04:09:06 Hello!!! 04:09:25 CTCP 04:09:53 clog and iamcal have error message for unknown command 04:23:03 SHUT the fuck up 04:31:35 !!! 04:32:46 -!- elliott_ has joined. 04:32:55 sup 04:33:11 -!- elliott_ has changed nick to Guest96751. 04:33:34 fuck that shit 04:33:46 fizzie: hi 04:33:50 kallisti: hi 04:34:34 kallisti: hi hi hi 04:34:53 Guest96751: hi 04:34:57 hi 04:40:12 -!- Jafet has quit (Quit: Leaving.). 04:41:40 If MSPA updates (which is looking more and more unlikely), don't expect me to remember to ping you 04:42:09 Does glogbot log CTCP/ 04:42:16 I AM SO DISAPPOINTED!!! 04:42:18 im cry 04:42:19 betray :( 04:42:33 Apparently not. 04:42:45 SECRET UNLOGGED MESSAGES MUAHAHAHAHAHHHHHHHHHHHHHHAAAAAAAAA 04:42:58 Sgeo: see: raw log 04:43:52 Ah 04:48:40 Raw log includes everything it receives, except for the secret password 04:49:41 What secret password 04:49:48 its a secret 04:56:09 -!- Guest96751 has changed nick to elliott. 04:56:15 -!- elliott has quit (Changing host). 04:56:15 -!- elliott has joined. 05:12:15 -!- Frooxius has quit (Ping timeout: 248 seconds). 05:40:43 -!- Klisz has joined. 05:43:37 HEY_EVERYONE_AM_I_LATE? 05:51:10 well 05:51:11 so 05:51:19 ive done what i had been curious about doing for years now 05:51:29 i build a graph reducing evaluator 05:52:49 it 05:52:52 took you that long 05:52:57 or is this something different from a term rewriting language 05:53:10 Do you know if the things I wrote about monad/comonad of digraph category is correct or is wrong or confuse? 05:53:41 elliott: oh its completely different 05:54:10 ok 05:54:33 this is a little C program that does reduction of terms-as-structs 05:55:33 its only pure LC but the rewrite rules are pretty simple. it also automatically TCOs because its in place, and it doesnt have an explicit control stack 05:56:06 Sounds like term rewriting to me. 05:56:22 well it is, except theres sharing due to using pointers 05:57:00 That doesn't change the semantics of the term-rewriting language. (I doubt any actual implementations of term-rewriting languages don't use sharing.) 05:57:43 no, it indeed does not 05:58:11 SO HA 05:58:15 but because its got sharing, you get call by need for free 05:58:16 But go on. 05:58:54 but the cool thing is that its simple enough that you could built the controller directly in a chip 05:59:08 See: Reduceron. 05:59:13 no 05:59:16 Yes. 05:59:20 It's a graph-rewriting machine in hardware. 05:59:29 yes, it is, but it has some fancy intermediate language for this 05:59:43 it compiles LC into a specialized language 05:59:50 No. 05:59:51 this uses the LC /as the machine language/ 06:00:02 It compiles a sugary Haskell-alike into a term-rewriting language. 06:00:10 The latter is what the Reduceron deals with. 06:00:26 -!- MDude has changed nick to MSleep. 06:00:30 "it compiles LC into a specialized language" 06:00:49 by lc what do you mean 06:00:53 ok so its not pure LC its something modified 06:00:59 same diff 06:01:21 the point is, the reduceron doesnt use LC as the machine code 06:01:31 whereas in principle you could do so with this evaluator 06:01:34 augur: OK, you're confused. It doesn't do much to pure LC. 06:01:40 The point is that it has pattern-matching, data types, conditionals, etc. 06:01:44 That turns into _functional_ term rewriting code. 06:01:52 You could just as easily write pure LC-style code at the lower layer. 06:01:59 yeah yeah anyway thats irrelevant to the point 06:02:09 The reason to use a compiler is because implementing ADTs at the term-rewriting layer would be stupidly slow at runtime for no gain. 06:02:20 ~pure~ lc gives me a bit of spooks 06:02:34 monqy: you have to get used to church encodings 06:02:47 not that sort of spooks 06:02:51 alphaconversion sort of spooks 06:02:55 o 06:02:58 debruijn! 06:03:04 sure 06:03:08 use your indices! 06:03:10 but is it still "pure" then 06:03:10 FSVO pure equal to not the original 06:03:52 Does anyone know what the Emacs-for-OS X of the season is, I CBA to put any other OS on this right now 06:03:53 -!- Jafet has joined. 06:03:56 anyway, im going to muck around with an FPGA simulator to see what i can see :) 06:04:04 Hmm, http://emacsformacosx.com/ seems reasonable 06:04:07 elliott: aquamacs 06:04:13 augur: No. 06:04:21 you asked for the one of the season! 06:04:28 The good one of the season. 06:04:31 o 06:06:35 augur: Post your C code already. 06:06:51 oh i didnt realize you cared 06:07:07 I... vaguely care? 06:09:01 * elliott wants a statically-typed, non-strict term rewriting language. 06:09:32 * augur wants non-von-neumann architecture 06:09:47 * monqy wants 06:09:50 Yeah yeah, so does everybody. 06:09:57 http://pastebin.com/DPvpgnL8 06:10:16 elliott: the point tho is that this is simple enough to design a non-von-neumann architecture with :) 06:10:42 Lam? 06:10:44 watch out for memory leaks. its not designed to be memory friendly. 06:10:48 lambda! 06:10:53 So it's actually just LC, not term-rewriting. 06:10:55 lamb 06:11:05 i didnt say anything about term-rewriting, you did 06:11:05 Also you haven't heard of switch statements. 06:11:12 You said graph-rewriting, same thing. 06:11:23 i said it was a graph-reducing evaluator 06:11:27 elliott: Wait, you're running Mac OS X these days? 06:11:28 Excellent. 06:11:37 shachaf: Why is that excellent? 06:11:43 If you need reassurance, I still hate it. 06:11:43 shachaf: hes been on os x for forever... 06:11:45 You're finally showing your true colours. 06:11:49 augur: No I haven't. 06:11:52 really? 06:12:00 ever since ive known you, i think 06:12:11 I used it for a bit, then I stopped because it sucks. 06:12:12 But you've never known elliott. 06:12:19 ahh i see 06:12:21 well 06:12:22 anyway 06:13:25 shachaf: Can you write me a statically-typed, non-strict term rewriting language? 06:13:57 elliott: Sure. 06:14:06 #!/bin/bash 06:14:11 read 06:14:16 echo SYNTAX ERROR >&2 06:14:18 exit 1 06:14:25 shachaf: Excellent. 06:14:36 elliott: If you figure out the right syntax, it does just what you want. 06:14:38 elliott: how old are you now? 17> 06:14:48 26. 06:15:06 lets see, you were 13 in 2006, so youre 18 now surely 06:15:10 at least 06:15:22 You are really bad at arithmetic and memory. 06:15:33 uh 06:15:58 2011 - 2006 = 5; 13 + 5 = 18 06:16:05 give or take, depending on when your birthday is 06:16:21 iinm its something like november 3 or something 06:16:32 I... 06:16:34 (im almost certainly mistaken) 06:16:36 but! 06:16:44 youre within a year of 18 06:16:49 It's like you're trying to be as mistaken as humanly possible. 06:16:53 And succeeding. 06:16:58 i dont need to try. 06:17:09 elliott: You're -4, aren't you? 06:17:18 -4 + 2i 06:17:21 (a) I wasn't 13 in 2006 (b) I'm not within a year of 18 (c) You didn't even know me in 2006 06:17:24 shachaf: -6 06:17:26 I had a birthday. 06:17:27 ehhh.. 06:17:33 maybe 2007 then. 06:17:35 elliott: What date is your birthday? 06:17:48 I remember when you said you had a birthday but I didn't note it down. 06:17:48 i knew you within a year of getting to stony brook, possibly within the first few months of being there 06:17:48 shachaf: November 37th. 06:17:52 so late 600 early 2007 06:18:03 shachaf: Pls abandon piece of paper with elliott notes. 06:18:04 elliott: Did you read _The 35th of May_? 06:18:06 november 3, november 37, SAME DIFF 06:18:08 fosh 06:18:10 gosh even 06:18:18 shachaf: No. Should I? 06:18:21 elliott: Which one? 06:18:26 All of them. 06:18:26 elliott: Yes, it's a good book. 06:18:50 OK, how about this proposal: 06:18:52 Stop with the ageism. 06:18:57 hm 06:18:57 This includes discussing ages. 06:19:15 elliott is a dawg so you have to measure his age in dawg years. 06:19:16 my earliest logs for this channel are may 2008 06:19:19 i suppose thats plausible 06:19:32 but that means you're even younger, elliott D: 06:19:35 * elliott thinks letting people know his age was the most annoyance-causing decision he ever made. 06:19:42 * shachaf too 06:19:48 Fortunately I'm old now. 06:19:54 Were you ever not old? 06:19:59 Yes. 06:20:15 elliott: how else am i supposed to figure out what david deutsch looked like as a young man? 06:20:25 if not by looking at you 06:20:46 * elliott is actually David Deutsch. 06:20:50 :O 06:21:04 WORLD RENOWNED PHYSICIST DAVID DEUTSCH IN THIS VERY CHANNEL! 06:22:32 I'm considering going to sleep in evenings instead of mornings. 06:22:34 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 06:42:14 -!- PiRSquaredAway has joined. 06:47:19 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP). 07:00:18 -!- Jafet has quit (Ping timeout: 252 seconds). 07:13:41 -!- madbright has quit (Quit: Page closed). 07:17:46 -!- elliott has quit (Remote host closed the connection). 07:30:35 -!- elliott_ has joined. 07:31:01 -!- elliott_ has changed nick to Guest55419. 07:39:48 Oh. 07:39:58 shachaf: You didn't tell me erus` asked that SO question. 07:40:34 Guest55419: I don't know what that SO question is. 07:40:40 http://stackoverflow.com/questions/8756456/how-to-test-equality-of-recursive-structures 07:40:42 And I don't know much about erus`. 07:40:56 01:32:28 erus` pasted “babbys first type system” at http://hpaste.org/56146 07:40:57 erus` is a much better nick than "Guest55419", though. 07:41:03 Guest55419 is the best nick. 07:41:09 It's a commentary on the meaninglessness of identity. 07:41:29 Oh? 07:41:33 -!- Guest554110 has joined. 07:41:35 TAKE THAT 07:41:47 By the way, the Applicative operators should be called .$ and *$, I think. 07:42:08 -!- Guest554110 has changed nick to Guest554111. 07:42:22 Guest55419: Are you reading #haskell logs? 07:42:23 Except that ($) should be called something lighter, and be infixl. 07:42:28 shachaf: Maybe. 07:42:31 Shame on you. 07:42:39 You'll find the places where I mad. 07:42:56 In another channel I even more mad. 07:43:09 08:14 < shachaf> Approximately half of #haskell ought to be eliminated. 07:43:14 08:14 < shachaf> I hate everybody. 07:43:18 08:14 < shachaf> That probably has to do with how I haven't eaten all day. 07:43:43 Let's rename ($) to (•), (<$>) to (‹•), and (<*>) to (‹•›). 07:44:27 Let's have infixl $, infixl *, ($) = (*) = id 07:44:33 join ∘ putStrLn • (+) ‹• readLn ‹•› readLn 07:44:34 That's the logical way to do it. 07:44:44 Objectively nicer. 07:44:52 By the way, my IRC client is racist. Is that thing after "join " a "::" character? 07:45:02 No, it's the composition operator. 07:45:11 http://codu.org/logs/log/_esoteric/2012-01-07#074433Guest55419 07:45:13 Oh. 07:45:22 Although that renders the guillemet-bullet things uglily thanks to monospacedness. 07:45:25 I DON'T READ LOGS 07:45:42 Guillaume's Face 07:45:46 shachaf: Also, is #not-haskell actually a thing? 07:46:20 Guest55419: Why don't you join it and see? 07:46:38 It might be bad! It might, say, have people who name themselves after violating rules. 07:46:45 Or people who sha the chaf. 07:46:58 Name themselves after violating rules? 07:47:08 Yes, like some kind of... cheater. 07:47:23 * Guest55419 plays the TITLE OF FILM OCCURS IN DIALOGUE IN FILM ITSELF fanfare. 07:47:49 Guest55419: Ew. 07:47:54 No cheater in there. 07:48:34 Guest55419: cheater got a job or something, by the way, so he's not in #haskell-blah much either these days. 07:48:51 Guest55419: I was typing, not fair! 07:49:03 shachaf: Oh, I assumed he'd just stopped bothering us in favour of you guys. 07:49:11 Good to know the tranquil is global. 07:51:39 shachaf: I agree that #haskell is crappy. 07:58:19 -!- Guest554111 has changed nick to Guest554112. 07:58:31 Hi. 07:58:34 Guest55419: But imagine that all the nonsense was gone! 07:58:37 Then it would be good. 07:59:05 kmc has pretty much abandoned it, I believe. 07:59:07 shachaf: Sorry, I go for mediums that don't inevitably break all my verbose questions into 2, 3 or more units of text nowadays :) 07:59:11 *media 07:59:27 Although I miss out on all the VALUABLE CHAT. 07:59:31 Those monad tutorial jokes? 07:59:33 I see none of 'em. 07:59:41 -!- Guest554112 has changed nick to Guest554113. 08:00:24 05:17:16 there are functors that don't have 'pure' 08:00:24 05:17:16 i meant the opposite 08:00:24 05:17:31 yes sorry 08:00:25 05:17:32 hpc: any concrete example? 08:00:27 05:17:36 i can't think of any off the top of my head 08:00:31 Oh come on. 08:00:59 05:20:05 All examples which I know of functors, can be made Applicative by undefined 08:01:07 shachaf: DYK you can define anything as undefined in Haskell? 08:01:09 teneen has a point. 08:01:13 GET IT??? 08:01:19 HA HA HA HA HA HA no. 08:01:26 As in pointed functor. 08:01:30 OH MY GOD STOP TALKING ABOUT SET 08:01:31 GUYS 08:01:32 GUYS 08:01:34 (,) 08:01:36 IT'S SO TRIVIAL 08:01:36 Guest55419 08:01:38 (,) 08:01:40 (,) 08:01:43 smiley 08:01:43 (,) 08:01:44 (,) 08:01:45 Guest55419: MORE LIKE (x,)! 08:01:47 it's bird 08:01:48 -!- Guest554113 has changed nick to Guest554114. 08:01:53 shachaf: NO TUPLE SECTIONS FOR TYPES!!! I THINK 08:01:57 Guest554114: YOU'LL OVERFLOW THE INT 08:02:23 05:21:41 teneen : using that, i think `CoYoneda IORef' is an example 05:22:08 ski: but it can be made an instance of Applicative very easily 05:22:15 teneen : how ? 05:23:34 instance Applicative (CoYenda f) where pure x = undefined; _ <*> _ = undefined 08:02:34 Guest55419: THAT SECTION IS CONCEPTUAL 08:02:37 shachaf: You said half of #haskell should be eliminated. 08:02:39 Guest55419: LIKE (r ->) 08:02:40 Try 90%. 08:03:21 -!- Jafet has joined. 08:03:21 Guest55419: You should tell teneen that the definition for <*> is too defined. 08:03:29 It should be (<*>) = undefined 08:03:30 shachaf, not given up permanently, just yet 08:03:30 kmc: You have 2 new messages. '/msg lambdabot @messages' to read them. 08:03:38 maybe i should /join #haskell only on tuesdays and alternate fridays 08:04:16 Tuesdays are the worst. The monad-tutorial-jokes of Sunday have been forgotten and so are new again, and the questionless daze of Monday subsides. 08:04:19 (NB: Not based on facts.) 08:04:23 There should be a channel where only the cool people from #haskell go. 08:04:23 it's more like "it's bad for me to spend 18 hours a day in #haskell" 08:04:24 MAYBE IT EXISTS AND I JUST WASN'T INVITED. 08:04:31 maybe it's #esoteric 08:04:33 shachaf: Maybe it's #esoteric! 08:04:37 kmc: Thank you. 08:04:38 (,) can make a comonad always, and a monad if the first type is monoid. While (->) make a monad always, and a comonad if the first type is monoid. And then I figured out the indexed ones as well, can be the first type is a category, instead of a monoid. 08:04:42 Well, I wasn't invited to #esoteric. 08:04:45 Guest55419, PWN'd 08:04:57 shachaf: Yes, we were doing so well at the "cool people" thing before you barged in. 08:05:24 05:24:41 teneen: but that instance clearly breaks the Applicative laws 08:05:25 05:25:44 rostayob: which one? 08:05:26 :D 08:05:40 * Guest55419 is viewing this as an elaborate comedy routine. 08:06:14 shachaf: Ooh, then we get, on Set having an Ord constraint instead of Eq: haskell is a research language that prides itself on purity, it didnt have a proper way to handle side effects, but refused to compromise like other languages then stm came along, im just saying im suprised to find a compromise thats all 08:06:21 * Guest55419 stops reading this log. 08:06:28 Guest55419: To be fair, most of the monad laws etc. are typically stated "modulo undefined". 08:06:41 the thing that's annoying me right now is that nobody has any interest in writing down answers to the common questions 08:06:47 shachaf: Which gives us horrors like the definition of `evaluate`. :( 08:06:52 in anywhere permanent / editable / easily linkable 08:06:52 kmc: Sometimes it's the opposite. 08:06:55 What common questions? 08:06:56 Oh. 08:06:58 Right. 08:07:10 kmc: A nice thing about SO is that it avoids that problem by definition. 08:07:14 That ehird fellow writes answers on StackOverflow. 08:07:14 yes 08:07:23 shachaf: I hear he's FAMOUS. 08:07:29 I think SO is great for common questions, and IRC might be better for deep / open-ended discussion 08:07:37 If you do that well enough, kmc, you end up with ##c++ 08:07:47 * Guest55419 thinks SO's strong hostility to discussion is counterproductive. 08:07:49 Jafet, but if you don't do it, you end up with #haskell 08:07:55 But it's understandable, since it'd require about 2x the work to be good at it. 08:08:05 @karma ##c 08:08:06 ##c has a karma of 2 08:08:26 kmc: I'm kind of sceptical that IRC is a good medium for deep discussion, though. People usually end up tripping over each others' definitions and revising their viewpoints faster than everyone else can update them. 08:08:37 Guest55419, do you think other media avoid that problem? 08:08:39 It works if everyone has the same clock speed, though. 08:08:42 'cause I've seen it happen IRL ;) 08:08:49 kmc: No :) But IRC's quick-fire real-time nature exasperates it. 08:09:02 Slow media like email even it out because you can't go fast. 08:09:08 Well, you can, but it fills up everybody's inboxes. 08:09:08 kmc: The other problem is that most -- or at least a lot of -- people who write permanenty linkable answers to things have no idea what they're talking about. 08:09:18 Monad tutorials are the obvious examples but it's a lot more common than that. 08:09:27 shachaf: I've just read the first two chapters of LYAH! Who wants to read my Haskell tutorial? 08:09:34 Haskell is purely functional, which means that it can't print to the screen. 08:09:39 shachaf, yeah. if we encourage people to put things on the wiki, then we can fix them 08:09:44 Instead we use GHCi to execute our code, which turns into side effects behind the scenes. 08:09:48 but in practice many wiki articles are shite too 08:09:51 GHCi is written in C/C++. 08:10:01 guest should write a tutorial 08:10:03 kmc: That's true, except that wiki articles tend to end up at local optima. 08:10:04 Guest55419, I see you've been taking lessons from shachaf on how to troll me 08:10:11 NOTE: The following recursive fibonacci program is slower than this iterative C version. 08:10:11 shachaf, better than local pessima 08:10:24 This is because we don't have to declare the types in Haskell, as it is an interpreted language, so the interpreter cannot optimis eit. 08:10:30 kmc: Hey, I pretty much stopped doing those things when you asked! Didn't I? 08:10:36 shachaf: No. 08:10:42 data D = D deriving (Eq) 08:10:48 instance Num D where { fromIntegral 8 = D } 08:10:53 (========) = (==) 08:11:10 kmc: You're giving a great demonstration of how IRC maintains a high level of discourse. 08:11:33 -!- Guest55419 has changed nick to elliott. 08:11:35 -!- elliott has quit (Changing host). 08:11:35 -!- elliott has joined. 08:12:08 The main problem with SO is that people give out upvotes way too easily, and there's a tragedy of the commons for questions with common misconceptions. 08:12:26 For instance, I am fairly sure the monads-as-containers explanation would get upvoted pretty heavily. 08:12:36 elliott: That's true of IRC too, pretty much. 08:12:44 Except upvotes = visibility = volume of posts. 08:12:59 But, what monads is, is a kind of mathematical structure supporting certain operations following certain laws. 08:13:12 Also there was a question about describing FRP where Conal gave a simple explanation of it and how to come up with it yourself, and there was another answer going "it's about events which cause signals to travel through event handlers in a network" where everyone commented going "Much nicer than the abstract nonsense explanation +1!!!". 08:13:26 Some types that are monads might be containers, but some might have a different purpose 08:13:29 elliott, I think "monads as containers" is a decent analogy, if you're upfront about the fact that it *is* an analogy, and not universal 08:13:40 But it's mitigated by (a) most questions having a single, obvious answer and (b) the most knowledgable community members being the most active early voters. 08:13:49 a lot of monads are nicely described this way, though not all 08:13:50 kmc: I think it only apply to some types. Some monad types can be as containers 08:13:51 kmc: Yes, fair enough. I should have typed "space suit" instead or similar. 08:13:52 kmc: I think it's harmful. 08:14:02 I agree with shachaf though, I don't condone teaching monads like that. 08:14:06 in fact there may be a formal mathematical distinction between the monads nicely described by it and the ones which aren't 08:14:11 At the point that someone wants to "understand monads", at least. 08:14:15 It could be useful for developing further intuition about when to apply monads after you know what they are. 08:14:36 But starting people off on it just leads to misconceptions where people think (m a) always has to contain an a in there. 08:14:43 right 08:15:02 if you show them ((->) r) then it's obvious that it needn't *literally* contain an a 08:15:04 shachaf: Hey, you want to know the real comedy? 08:15:08 while showing how it can *conceptually* contain one 08:15:08 We're talking about monad tutorials. 08:15:13 If you pace around the room slowly while chanting with your hands cupped together like this for two weeks, you will understand monads 08:15:38 pie jesu domine, dona eis requiem 08:15:43 @google monads are essentially decorators with method chaining 08:15:44 http://news.ycombinator.com/item?id=439429 08:15:44 Title: So monads are essentially decorators with method chaining? | Hacker News 08:15:45 I think you should describe monads in terms of join and fmap as well as >>= and even mean it is applicative functor too, and in terms of mathematics. Understand Haskell better by understanding mathematics better and vice versa. 08:15:55 shachaf: Um, excuse me, monads are about sequencing. 08:15:55 That's the best explanation of monads. 08:15:55 sigh 08:16:03 Oops. 08:16:06 elliott: No only some can be 08:16:10 [] is just sequencing a lot of things and the reverse state monad is sequencing things backwards and forwards at the same time! 08:16:14 I heard it on reddit. 08:16:15 Let's go back to the pedagogical discussion. That or data D = D. 08:16:21 Yes, D = D is better than this. 08:16:24 kmc: Expand. 08:16:30 i'm glad you understand the brilliance of my type and Num instance 08:16:45 oh noes i wrote fromIntegral instead of fromInteger 08:16:47 data D where D :: D 08:16:52 * kmc hangs head in shame 08:16:52 ::D 08:17:01 kmc: Hey, if you want it to be in Num, it is. 08:17:05 Nobody knows what's in Num. 08:17:08 You also forgot Eq. 08:17:08 so this is basically the cool kids version of #haskell 08:17:14 You can remember about 2/3rds of it at the best of times. 08:17:18 shachaf: He derived that. 08:17:22 Oh. 08:17:24 kmc: Sometimes. 08:17:28 Show, then. 08:17:32 #esoteric : #haskell :: YOSPOS : SH/SC 08:17:47 How did Num even get defined? 08:17:55 Like, I want to know how they actually decided which arbitrary subset of methods to include. 08:18:22 Do you know what monads and comonads that a digraph category can have? 08:18:35 I tried to explain but am unsure if it is correct 08:18:42 Makes two of us. 08:18:50 . o O ( C : Haskell :: Exoteric : Esoteric ) 08:18:59 Haskell is the ultimate esoteric language 08:19:06 See, only in #esoteric is our Haskell talk punctuated with zzo38 and itidus21. 08:19:08 that or C++ 08:19:24 kmc: Not true, people have actually read the Haskell report. 08:19:35 There's at least one well-liked esolang that nobody has read the entire spec to. 08:19:43 Now *that's* dictionary-definition esoteric. 08:19:58 http://esoteric.voxelperfect.net/wiki/Special:Recentchanges I like how we have multiple spambots editing the main page IN SUCCESSION. 08:20:09 Editing each other's spam. 08:22:34 I'm contemplating whether to go to Hac Boston. 08:22:45 do it 08:22:57 This Hac Boston thing has been talked about for like three years and it still hasn't happened. 08:23:01 Boston just can't be Hacced. 08:23:09 elliott: It's in two weeks. 08:25:19 Do *you* know monad/comonad that a digraph category can have??? 08:26:08 * elliott wants sameIORef :: IORef a -> IORef b -> Maybe (a :=: b) in Data.IORef. 08:26:11 * elliott wonders if he can get it. 08:27:17 O_O 08:27:19 I said that a digraph category with a final object has a Proxy monad but I am a bit unsure 08:27:24 ...what are you doing that wants that 08:27:41 you are a strange person with strange cares 08:27:47 kmc: I want an equivalent type in http://hackage.haskell.org/package/vault, since it expresses the core type-system feature vault needs unsafeCoerce to get. 08:27:55 But apfelmus wants to keep the API IORef-compatible. 08:28:13 "The data structure is analogous to a bank vault, where you can access different bank boxes with different keys" 08:28:15 kmc: Basically, it lets you write a heterogeneous map where the type information is stored in the keys. 08:28:15 COOL ANALOGY BRO 08:28:19 Hey, not my package. 08:28:21 http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault.html 08:28:27 That's the easiest way to understand the API. 08:29:07 *nod* 08:29:18 Anyway, you can implement it all given 08:29:20 newKey :: IO (Key a) 08:29:27 sameKey :: Key a -> Key b -> Maybe (a :=: b) 08:29:32 Literally just that. 08:29:51 (It's slow, of course, because you're reduced to using an a-list.) 08:30:21 I like "type Vault = Vault RealWorld" 08:30:40 http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault-ST.html :p 08:31:03 Yes, yes. 08:32:52 sameIORef :: IORef a -> IORef b -> Maybe (a :=: b) 08:32:52 sameIORef a b 08:32:52 | a' == b' = Just (unsafeCoerce refl) 08:32:54 | otherwise = Nothing 08:32:56 where a', b' :: IORef () 08:32:58 a' = unsafeCoerce a 08:33:00 b' = unsafeCoerce b 08:33:02 See, it's easy! 08:33:04 Even works with the data a :=: b = Equal { subst :: forall p. p a -> p b } definition. 08:34:53 "unsafeCoerce refl" is pretty good. 08:37:52 @brain 08:37:52 Now, Pinky, if by any chance you are captured during this mission, 08:37:53 remember you are Gunther Heindriksen from Appenzell. You moved to Grindelwald 08:37:53 to drive the cog train to Murren. Can you repeat that? 08:39:13 Oh, hmm, I'm not sure that definition of (:=:) actually works for this. 08:39:35 Oh, yes it does. 08:41:06 @hoogle (a -> Maybe b) -> [a] -> Maybe b 08:41:06 Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m () 08:41:06 Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m () 08:41:07 Control.Monad forM_ :: Monad m => [a] -> (a -> m b) -> m () 08:41:15 No, you silly bot! 08:41:24 @hoogle [Maybe a] -> Maybe a 08:41:24 Control.Monad msum :: MonadPlus m => [m a] -> m a 08:41:24 Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a 08:41:24 Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a 08:41:34 Ah, msum. 08:43:10 kmc: shachaf: http://sprunge.us/QMbF 08:44:46 This is the way I used for execution of a token list, is there a better way? execute p @ ProgramState { psTokens = h : t } = let { p' = t <$: p; } in execute . either ($ p') (p' =>>:) $ meaning h p'; 08:44:57 Actually Unique is better than (IORef ()) there. 08:46:24 Is this similar to the way you would have done, or not? 08:47:48 kmc: anyway, it's not *that* a weird thing to want -- it's just a way of being able to reveal the type of an existential, because if two Key/IORef/whatever values are identical, they have to have the same type 08:48:13 You should be allowed to pattern match "lookup k (Vault xs) = ... xs" as "(lookup k . Vault) = ...". IT MAKES PERFECT SENSE 08:48:24 shachaf: I just wished for that earlier today. In here. 08:48:42 elliott: Sounds like the reverse state monad's been doing some sequencing! 08:48:48 :D 08:49:35 elliott: What's the point of using IORef there? 08:49:40 Oh, you already talked about that. 08:49:42 shachaf: I understand but I think you are wrong because of the way that patterns are working; it cannot possibly work properly using that way so maybe it should be some kind of macro instead; if they had macros then you could make it up in a way that work always 08:49:43 08:44 Actually Unique is better than (IORef ()) there. 08:50:13 zzo38: You've crushed my argument completely. 08:50:29 Zanks, zzo38. zzo38. 08:50:51 shachaf: Actually, you don't even need RankNTypes: http://sprunge.us/KEhV 08:51:14 Although sameKey tells you distinctly less about the types there. 08:51:40 How would you do a token expansion/execution loop in Haskell, anyways? I did it one way but maybe there is better way, I don't know 08:52:40 shachaf: Can you write a proper statically-typed lazy term rewriting language for me? 08:52:54 elliott: I already did that earlier today. 08:53:00 shachaf: It wasn't proper enough. 08:53:00 @let proper = undefined 08:53:01 Defined. 08:53:11 elliott: Sure it was. It obeys all the proper laws, see? 08:53:22 :( 08:53:31 (The <$: and =>>: are pretending that it is a environment comonad) 08:53:44 Aw, there, there, elliott. Don't be sad. I'll write a statically-typed lazy term rewriting language for you. 08:54:05 elliott: What do you want it for, anyway? 08:54:57 Because it'd be neat. 08:55:46 -!- DeStRoYeR87 has joined. 08:56:02 -!- DeStRoYeR87 has quit. 08:56:04 rip 08:56:07 destroyer 08:56:11 we will miss you :'( 08:56:13 "destroyed" 08:56:17 yes 08:56:29 -!- Ngevd has joined. 08:56:51 Aw, kmc visited #not-haskell and I didn't notice. 08:56:58 He didn't get the special elliott treatment. 08:56:59 you're the worst channel founder ever 08:57:04 Hello 08:57:08 kmc: I was kicking everyone else who came in there! 08:57:40 At least the signal-to-noise ratio -- well, I don't know about the ratio, but there was very little noise. 08:59:35 0:0 09:00:12 INFINITE SIGNAL 09:00:22 > 0/0 09:00:23 NaN 09:00:28 Naan is delicious. QED 09:02:19 -!- Vorpal has joined. 09:02:44 shachaf: You know what would be great? If our compilers automatically rewrote pattern-matching as applications of a fold combinator, and you could extend data-types simply by writing a constructor and adding a clause to the fold combinator. 09:04:03 make it hapen 09:04:17 monqy: The problem is all those pesky non-structurally-recursive functions. :( 09:04:28 who cares about those 09:05:22 Me. 09:06:32 -!- zzo38 has quit (Remote host closed the connection). 09:06:35 elliott: all functions are structurally recursive over some structure or other! :D 09:06:49 except maybe the anamorphisms 09:07:05 Theorem: delicious naan. Proof. eauto. Qed. 09:07:29 get out of here with your fake coq 09:08:48 -!- Patashu has joined. 09:09:59 kmc: You should end all your proofs with "Admitted.". 09:10:03 Then you can never go wrong. 09:10:41 I feel left out for not knowing Coq. :-( 09:11:47 get out of here with your 8" purple vibrating coq 09:12:03 One day someone will talk about Coq and not make a really boring joke. 09:12:16 at least i didn't make a santorum joke 09:12:36 shachaf: Coq is like Agda, except the messes of Unicode are replaced by messes of half-sentences. 09:12:56 eauto. subst in H. split e'. assert (Q : hy_u r42). 09:13:18 the best thing is that H, e', etc. have implicit binding occurrences 09:13:33 each tactic can introduce hypotheses with auto-generated names 09:13:35 yeah i always used to go back and bind everything explicitly at the end 09:13:36 and then you can refer to those 09:13:41 because 09:13:43 i couldn't cope 09:13:47 coq bondage 09:14:00 I think we should ban kmc. 09:14:13 i think you should k-line me 09:14:37 Aye. 09:14:45 I vote Naan. 09:14:46 bindage and bondage aren't even the same thing 09:15:01 elliott is moving to Boston, by the way, I hear. 09:15:09 shachaf: Stop it, you'll enhungrify me and I'll have to move to Boston. 09:15:11 let's have a long, pedantic argument about the difference 09:15:23 kmc: Bindage tutorial joke! 09:15:37 i would read The S&M Guide to Haskell 09:16:09 "IMPROVMENTS" IS NOT A GOOD EDIT SUMMARY 09:16:13 WHY AM I REVIEWING THIS CRAP 09:16:25 "I MAED IT WURSE" 09:16:33 elliott: Just think of the badges!!! 09:16:48 StackOverflow should give badges at randomised intervals rather than at set milestones. 09:16:53 So you never know. You know? 09:16:57 I don't give a shit about badges, all I want is for my little ticky counter to go up to at least 20k. 09:17:05 s/badges/points/ 09:17:07 Badges don't have a cap. 09:17:10 we don't need no stinkin' badges 09:17:12 It should be like monster drops. 09:17:29 The people who ask questions are monsters, and you slay them. 09:17:38 Come to think of it, that system might make me feel better about #haskell too. 09:17:39 shachaf, you're reusing my reddit metaphor 09:17:43 This edit replaces a single occurrence of the word "i" in a question title with "I". 09:17:47 Its summary is "Fixed grammar". 09:17:55 kmc: What metaphor is that? 09:17:57 The question itself has many more errors, and they're actually grammatical errors. 09:18:17 reddit comments are like one of those video games where enemies spawn forever 09:18:20 faster and faster 09:18:32 you can't win; the only way to win is to quit 09:18:37 elliott: I'LL FIX YOUR GRAMMER 09:18:43 "added more tag". Edit adds a signle tag. 09:18:44 *single 09:18:47 Argh 09:18:48 *tags 09:18:50 I ruined my entire point :P 09:18:56 let's also have a long, pedantic argument about the difference between "grammar" and "syntax" 09:19:12 kmc: This is orthography, you illiterate fuck. 09:19:30 Or, it might even be typography, I'm not sure. 09:19:46 Man, it's been a long time since I've been involved in a good argument about definitions. 09:19:58 shachaf: What IS "is"? 09:20:19 One might ask the same thing about naan. 09:20:26 What ARE breads? We just don't know. 09:20:32 naan is pretty easy to make 09:20:38 if you have a sourdough culture and a frying pan 09:20:55 injera is much harder :/ 09:20:59 shachaf: I think this Nigel Lambert text-to-speech engine in my head will never go away or stop automatically firing. 09:21:13 kmc: I'm pretty sure sour dough culture is reserved to the east coast. 09:21:25 shachaf, San Francisco is world-famous for its sourdough 09:21:27 The culture is very different around here. 09:21:36 happy dough culture 09:21:42 Lactobacillus sanfranciscensis 09:21:46 kmc: Hella dough! Wait, no, that's northerlywards of that isn't it. Fuck you guys. 09:21:48 Fuck America. 09:21:51 I can't keep up with your bullshit. 09:21:59 what 09:22:05 You guys move too fast. 09:22:08 we all living in america 09:22:21 everythings an america 09:22:23 america, ist wunderbar 09:22:38 sorry that's "amerika" 09:22:46 (tm) 09:23:12 I like the city of San Juan... 09:23:26 (Pronounced "So What".) 09:24:02 Oh, category theory in #haskell 09:24:12 excitement 09:24:13 Is that better or worse? 09:24:18 widely known for its production of indigo, coffee, sugar, tobacco, and silver 09:24:34 A functor, F, is dense if Lan_F F ~ Id, and Y (the Yoneda embedding) is dense, so Lan_Y Y ~ Id Y /= Id clearly. 09:24:59 Exercise: Append "clearly" to every statement. 09:25:13 your exercise is trivial 09:25:17 clearly 09:25:39 kmc: You failed! 09:25:44 clearly 09:25:53 do i at least win a goat 09:25:58 kmc: No, clearly. 09:26:03 kmc would much rather have a goat than a car. 09:26:08 it's true 09:26:19 -!- Guest554114 has changed nick to Guest554115. 09:26:22 Goat-car. 09:26:23 goats are cheaper 09:26:35 http://www.goatclassifieds.com/PriceGraph.php 09:26:49 kmc: Don't they emit more CO₂, though? 09:26:55 shachaf, per km? 09:26:56 DO YOU HATE THE ENVIRONMENT 09:27:04 Per year. 09:27:45 Also, goat registration looks expensive. 09:27:50 Way more than car registration. 09:27:58 You probably have to pay insurance too. 09:28:00 I MUST HAVE RAINBOW PARENTHESES 09:28:27 Hmm. So I get home at 2:30. 09:28:30 Do I want to sleep? 09:28:41 Meh, not really. 09:29:16 @time pikhq 09:29:17 Local time for pikhq is Sat Jan 7 02:29:01 2012 09:29:36 @time 09:29:39 Local time for shachaf is Sat Jan 7 12:29:20 2012 09:29:42 WRONG 09:29:46 @time finland 09:30:53 British Double Summertime would be a good name for a band 09:31:09 So many band names, so few bands. 09:31:13 == 09:31:25 is there a website where i can share my bandnames with prospective band-havers? 09:32:19 @time elliott 09:32:19 Local time for elliott is 2012-01-07 09:32:03 +0000 09:32:26 kmc: And then pay you royalties? 09:32:28 kmc: /dev/null 09:32:28 elliott: I presume you've been up? 09:32:40 Any band that picks a name using such a website isn't a band worth banding. 09:32:40 pikhq: I woke up at 2012-01-07 10:00:00. 09:32:58 i'm still waiting for a band named BADNESS 10,000 09:32:59 elliott: Impressive, considering that's in the future. 09:33:27 Unless somehow the UK's *not* on GMT right now? 09:33:37 (I thought daylight saving was the summer, so...) 09:33:48 pikhq, maybe in the western hemisphere 09:34:31 I like how kmc accuses other people of being trolls. 09:34:36 haha 09:34:38 do i? 09:35:05 Don't you? 09:35:06 Greenwich Mean Time. 09:35:17 Apparently Greenwich isn't pronounced like Sandwich. 09:35:26 And apparently it's not moldy. 09:35:30 Nor mouldy. 09:35:45 is it mouldey 09:35:47 Yeah, I have to work hard to get myself to do it right, but it's something like Gren-ich, IIRC. 09:35:58 pikhq: Are you going to Hac Boston? 09:36:15 shachaf: No, I am a pitifully broke college student and in Colorado. 09:36:31 kmc: You should buy a ticket for pikhq instead of for me. 09:36:40 wait, i was going to do one of these things? 09:36:52 You weren't going to buy me a ticket? :-( 09:37:19 * shachaf will have to walk to Boston now. 09:41:06 Quite a walk, I imagine. 09:41:14 (where are you, anyways?) 09:41:18 boston 09:41:55 you should hitchhike 09:41:59 Oh, so more "hella-long ride on the T" 09:42:17 pikhq: California. 09:42:27 I *should* hitchhike! 09:42:30 That would be exciting. 09:42:34 it would take a while 09:42:37 I've never hitchhiked a long distance. 09:42:49 you can ask lexande about it 09:42:58 he hitchhiked from sf to canada 09:43:02 also from cambridge uk to paris 09:43:03 Who's lexande? 09:43:12 He hitchhiked over the sea? 09:43:13 a friend of mine since longtime 09:43:14 he's in #cslounge sometime 09:43:16 yes 09:43:18 Ah. 09:43:18 yes he did 09:43:27 My definition of "hitchhiking" is car-specific. 09:43:35 Did he hitchhike in a car which then went on a ferry or something? 09:43:43 a car which went on a train which went through a tunnel 09:43:50 OK, I'll grant it. 09:43:50 but what you said is also an option 09:43:52 I picked up a hitchhiker for a short distance once. My grandfather got very upset when he heard about that and told me that all hitchhikers are murderers. 09:44:07 Especially in the US. 09:44:10 shachaf: At least you know how to become a murderer now. 09:44:19 an especially murderer 09:44:24 well in the US if you don't have your own car then you're pretty much a terrorist 09:44:29 elliott: Without even breaking any laws! 09:45:05 shachaf: I find that pretty amusing, considering we're heading down to 60s levels of violent crime. 09:45:35 And people hitchhiked all the time in the 60s, I'm led to understand. 09:46:05 don't mind my attorney, he's just admiring the shape of your skull 09:46:22 it is a very nice skull 09:46:41 Would make a very nice glass. 09:47:42 hitchhiking: trading a cheap or free ride and the convenience of a stranger with the risks of being robbed, beaten, raped, kidnapped, brainwashed or murdered 09:48:10 stranger convenience 09:48:19 it's part of the thrill 09:48:21 yeah in the 60's the CIA was going around kidnapping and brainwashing people 09:48:32 is hitchhiking addiction a thing 09:49:05 kind of like skydiving or drugs but 09:49:09 more cars?? 09:49:28 speaking of, is skydiving addiction a thing 09:49:33 is sky a thing 09:50:00 kind of like hitchhiking or drugs but 09:50:01 more sky 09:50:04 and diving?? 09:50:05 ah 09:50:08 it's owned by rupert murdoch 09:50:23 monqy: the trouble is that some would say skydiving lacks any utility.. and they might be right 09:50:35 i use skydiving to get to work 09:50:48 itidus21: Fun is a form of utility. 09:51:39 i use fun to get to work 09:51:39 1440x900 is so much nicer than 1336x768 09:51:46 haha 09:52:02 mock me and my tiny screens will you 09:52:18 it's just funny because i've been agonizing over that difference 09:52:30 and decided it wasn't significant ;P 09:52:35 you made the wrong choice 09:52:53 like i'm always scrolling around and resizing things and shit on the smaller resolution 09:53:03 and 1440x900 is just enough to make that irrelevant 09:53:07 the higher dpi is nice too 09:53:13 yeah 09:53:25 Why are you people using these tiny resolutions? 09:53:28 i have a thinkpad x200s and i decided "upgrading" to the x220 would give me basically a slightly worse machine 09:53:35 1920x1080 is, like, the bare minimum, man. 09:53:35 shachaf: I used to think the same thing! 09:53:36 except, i broke the lcd on my x200s :/ 09:53:45 then I got a computer which I can move about freely and put on my lap and shit without even thinking about it 09:53:54 elliott: I use one of those too. 09:53:55 -!- pikhq_ has joined. 09:53:55 it's really liberating for some weird reason 09:54:02 15.6", 1920x1080 09:54:06 shachaf: "Without thinking about it" is a low threshold. 09:54:21 I don't think about it. 09:54:28 elliott: Have you considered getting a 7 year old monitor? Like, 1920x1200? 09:54:29 I have, what, 1680x1050? oops. 09:54:29 Maybe that just means I'm slow-witted. 09:54:40 ... Says I from a 1440x900 monitor. 09:54:44 It takes a lot more to move a 15.6" laptop than a lightweight ~13" laptop, even if you don't consciously think about it. 09:54:52 thinking is hard 09:54:52 pikhq_: That would be rather heavier than my computer. 09:54:57 kmc: Agreed. 09:55:03 elliott: On the other hand this is my only computer. 09:55:09 Leaving computer is hard 09:55:14 shachaf: Me too. Well, no, there's the 1336x768 one. 09:55:23 leaving computers is NP hard 09:55:25 I also don't have an external monitor. 09:55:27 pikhq_: Go to bed. 09:55:29 shachaf: Me too. 09:55:29 i have.. five machines hooked up in my room 09:55:35 there are good reasons for each one to exist, i swear! 09:55:36 My entire life is on this 13" display. 09:55:43 elliott: NEIN 09:55:43 OK, not entire life. 09:55:46 But the parts that matter!! 09:56:01 kmc: Enumerate them. 09:56:09 really 09:56:17 "1, 2, 3, 4, 5." 09:56:23 fizzie wins. 09:56:29 kmc: Are the ThinkPad X-series machines nice, by the way? 09:56:37 elliott, very nice 09:56:43 ISTR disliking them for some reason when I looked into them a few years ago. 09:56:47 -!- pikhq has quit (Ping timeout: 260 seconds). 09:57:03 Istr. That's a name, isn't it? 09:57:23 It sounds like an assmbly mnemonic. 09:57:33 Assmbly. 09:57:34 I think it's a book of the bible. 09:57:50 laptop, wireless bridge, desktop, media server, laser cutter controller 09:58:26 http://www.google.co.uk/search?client=safari&rls=en&q=Wireless+bridge&ie=UTF-8&oe=UTF-8&redir_esc=&ei=IBcIT_LAJ4vY8QPAnIyeAQ#client=safari&rls=en&q=Wireless+bridge&oe=UTF-8&redir_esc=&um=1&ie=UTF-8&hl=en&tbo=u&tbm=shop&source=og&sa=N&tab=wf 09:58:37 How much crap can Google put in one URL? 09:58:38 thanks google 09:58:49 what are you getting at sir 09:58:58 kmc: You have a computer without a good reason to be a computer. 09:58:59 :p 09:59:10 elliott, if I owned one of these I would consider it to be a computer 09:59:20 kmc: I can disprove that. 09:59:28 well, maybe they are dumber than i think 09:59:30 There is no possible way one of those causes as much pain and upset as any computer does. 09:59:36 Only a computer can do that. 09:59:41 wireless bridges are real people so they can't be computers 09:59:45 my wireless bridge "computer" provides very little pain and upset 09:59:53 it's an old netbook running debian 09:59:59 kmc: That just means you're so drowning in computer-related pain and upset you don't even feel it. 10:00:06 Try throwing some out of the window. 10:00:11 it's required basically zero maintenance since i set it up 10:00:15 from Gk. biblion "paper, scroll," the ordinary word for "book," originally a diminutive of byblos "Egyptian papyrus," possibly so called from Byblos (modern Jebeil, Lebanon), the name of the Phoenician port from which Egyptian papyrus was exported to Greece (cf. parchment). Or the place name might be from the Greek word, which then would be probably of Egyptian origin. 10:00:21 yeah, you're right 10:00:29 " I think it's a book of the bible." 10:00:30 the only way to be sure i'm free of computer-related pain is to replace it all with macs 10:00:37 Heck no. 10:00:42 That will approximately quadruple your pain. 10:00:47 elliott: I don't know, after you stick OpenWRT on one and start to break things on it a bit, I'm sure it can generate a respectable amount of pain, if not quite real-computer levels. 10:00:57 fizzie: That's turning it into a minicomputer. 10:01:05 hehe "minicomputer" 10:01:13 -!- pikhq has joined. 10:01:14 You could also rip it apart and shove computer parts into it; that doesn't make the original thing a computer. 10:01:15 yeah i'm running a vax emulator on my WRT54G 10:01:20 kmc: Who isn't? 10:01:29 itidus21: ? 10:01:39 -!- pikhq_ has quit (Ping timeout: 244 seconds). 10:01:40 etymology of bible 10:01:40 > map succ "vms" 10:01:41 "wnt" 10:01:45 Wnt. 10:01:45 Would you prefer "scroll of the bible"? 10:01:53 how is bibble formed 10:01:57 kmc: HEY THAT ONE'S MINE 10:02:02 i was thinking "book of the book" 10:02:40 itidus21: In particular, a book of the third of the three books of the bible, which is known as "the writings". 10:02:42 elliott, anyway, I already had the netbook, so using it thus cost me $0, whereas the devices you linked cost > $0 10:02:47 and as i'm unemployed, my time has rather low value 10:03:09 kmc: Ohh, you have an even better solution. Throw away *all* your computers, then you won't need the bridge thingy. 10:03:09 That latter sentence isn't really true. 10:03:15 haha 10:04:03 one can always reference a book in the bible codex book 10:04:44 I forgot to mention that it was a scroll. 10:05:12 but nobody objected to "laser cutter controller"... 10:05:18 why would you need a bridge? What are you doing? 10:05:27 kmc, you control a boat with a laser? 10:05:28 how? 10:05:30 accessing the internet 10:05:42 kmc: Well, that sounds like it produces significantly more fun than any pain it could cause. 10:05:43 kmc, well sure but usually most people don't need bridges to do so 10:05:49 kmc: Do you ever just feed it a random bitstring to see what happens? 10:05:53 no 10:05:57 "Maybe the next thing it cuts... will be ME." 10:06:21 kmc: I hear elliott has a bridge to sell you. 10:06:29 It's made out of @. 10:06:31 Vorpal, my Internet connection is via roommates' wireless router 10:06:43 kmc, so just connect by the wlan? 10:06:46 several of those machines have no wireless hardware 10:06:52 Does kmc know what @ is? 10:06:58 shachaf, some nethack shit 10:06:58 Does anyone truly know what @ is? 10:06:59 but nobody objected to "laser cutter controller"... <-- please tell me this refers to the boat type known as cutter :/ 10:07:03 yes 10:07:05 it's a boat 10:07:06 Yeah, it's some nethack shit. 10:07:07 i'm on a fucking boat 10:07:16 kmc drives his boat with his computer on his boat. 10:07:22 elliott, great! 10:07:30 you may be interpreting the word "bridge" in a more precise technical sense than i meant 10:07:53 Transatlantic bridge. 10:07:55 shachaf: Can you imagine going through life not knowing what @ is? 10:08:08 elliott: No. I cannot imagine it. 10:08:15 The suffering kmc must be undergoing. 10:08:18 it is a Debian GNU/Linux machine with one wireless and one wired Ethernet interface, the former in Managed mode, serving DHCP and DNS on the latter, with NAT routing between the two 10:08:27 kmc: One day you will be at peace. 10:08:31 haha 10:08:37 kmc: Peace of @. 10:08:53 elliott: You should write an @ tutorial. 10:08:56 Full of analogies. 10:09:01 @ is like an @. 10:09:08 The basic operations on @s are @ and @. 10:09:10 @ : @ -> @ 10:09:11 elliott: A-ha! 10:09:19 @ : @ 10:09:19 Now we know that what @ expands to starts with a vowel! 10:09:24 Or at least a glottal stop. 10:09:25 shachaf: Um, dude. 10:09:31 You don't know that. 10:09:34 "an @" 10:09:35 It's meant to be an intentionally-bad tutorial. 10:09:39 They're not necessarily well-written. 10:09:42 Sheesh. 10:09:45 :-( 10:11:48 hilarious 10:12:11 kmc: Do you seriously not know what @ is? 10:12:17 I understand it's cool to deny The Knowledge. 10:12:20 yes 10:12:22 srsly 10:12:26 h 10:12:27 how 10:12:31 kmc: Okay. You know how computers suck? 10:12:40 @ changes all that; with @, they only mostly suck. 10:12:46 apparently @ is "at"... but that would be presumptuous 10:12:53 elliott, go on 10:12:59 kmc: @ is basically the embodiment of elliott's hubris. 10:13:04 pikhq: No, that's you. 10:13:08 At least, it would be if it existed. 10:13:10 @ is a miracle drug 10:13:14 -!- AnotherTest has joined. 10:13:16 *gasp* I don't exist! 10:13:21 -!- AnotherTest has left. 10:13:21 *disappears* 10:13:23 AnotherTest: hi, does chocolate still contain sugar? 10:13:26 aw 10:13:32 kmc: You know how computers are all imperative and ugly and shit? 10:13:42 And, like, buggy, and shit. 10:13:44 @ changes all that! 10:13:48 They're only mostly buggy. 10:14:00 go on 10:14:07 What, that not enough for you? 10:14:28 elliott: You're not very good at this. 10:14:41 shachaf: I estimate that kmc currently harbours 0 negative thoughts about @. 10:15:46 kmc: @ is an environment thingy. 10:15:58 shachaf: elliott was just imitating your use of "an @" i think 10:16:06 kmc: Mostly consisting of a runtime system. 10:17:15 `pastelog an @ 10:17:24 lol.. 10:17:37 01:02:28 is there any good tutorials/blogs on the Store comonad? 10:17:45 shachaf: What is it with people and wanting Store comonad tutorials lately? 10:17:53 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24714 10:18:07 hmm 10:18:34 can someone fix " `pastelog an @ " for me 10:18:42 I have no idea why it doesn't work. 10:18:53 ok 10:19:02 `presentelog 10:19:07 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: presentelog: not found 10:19:16 it's probably not caused by a @ 10:19:23 `pastelog deep breath 10:19:36 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22681 10:20:06 `pastelog breath 10:20:14 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19658 10:21:29 How do you just look at the logs? 10:21:38 http://codu.org/logs/_esoteric/ 10:21:47 lol @ how does mouthbreathing make your teeth crowded. 10:21:51 How do you search them online? 10:22:19 `pastelog inhale 10:22:26 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21914 10:22:27 i think what shachaf means is, how to overcome [too many lines; stopping] ? 10:23:07 You can't. 10:23:13 It's there to stop a timeout. 10:23:15 itidus21: Well, ideally I don't want my search to be logged publicly. 10:23:19 Tough. 10:23:22 ohh 10:23:23 lol 10:23:27 Download the logs yourself if you must. 10:23:36 * shachaf looked up: how to search esoteric logs online 10:23:42 You can't. 10:23:50 * shachaf looked up: esoteric goats 10:23:55 * elliott goat 10:24:07 Anyway, I think kmc has lost all interest in @. 10:24:15 Just like you, elliott. 10:24:28 :( 10:24:32 `pastelog @ 10:24:36 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3499 10:24:55 2003-07-25.txt:03:21:16: -!- andreou changed the modes of #esoteric: +b *!*@bespin.org 10:24:55 2003-07-25.txt:03:25:04: -!- andreou changed the modes of #esoteric: +b clog!*@* 10:24:55 2003-07-26.txt:03:28:36: HATE HATE SYSAD@$%!$%!#$!@#$@#NO CARRIER 10:24:56 SamB used to be in here? 10:24:57 What. 10:25:01 shachaf: Yes. 10:25:05 Isn't he a #python guy? 10:25:11 I think we had a lot of #python guys in the olden day.s 10:25:12 days. 10:25:13 He is? 10:25:17 Not necessarily. 10:25:20 That was just a random guess. 10:25:21 He's certainly a #haskell person. 10:25:24 Or was. 10:25:24 Oh. 10:25:25 SamB_XP 10:25:28 Probably just that, then. 10:25:35 edwardk has been in here a few times too. 10:25:39 And he's British, so you probably know him. 10:25:43 Before he MONOPOLISED THE HASKELLOSPHERE. 10:27:23 `pastelog haskell 10:27:27 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13599 10:27:52 2005-07-26.txt:07:13:31: it's written in haskell, I compiled it using ghc, usage is bf2c < brainfuck-source > c-source. no options. 10:27:53 Oh! 10:27:57 I wonder if _he_ is the author of that compiler. 10:29:20 12:14:24: -!- andreou has joined #esoteric. 10:29:21 12:20:35: erm 10:29:21 12:20:43: anyone has halflife/counterstrike serial or keygen? 10:29:22 12:20:46: pleeeaaazeeee ;p 10:29:24 12:22:13: -!- andreou has quit (). 10:29:26 shachaf: Did you know our channel used to be great? 10:29:53 elliott: You think you've got it bad? 10:29:57 Try #nethack 10:30:30 shachaf, right now or in general? 10:30:36 shachaf: To fully appreciate my statement, /cs info #esoteric and examine the "founder" field. 10:30:58 elliott, wow 10:31:01 13:30 -!- Irssi: Unknown command: cs 10:31:08 /msg chanserv 10:31:11 Yes, yes. 10:31:11 shachaf, try /msg chanserv 10:31:11 womp womp 10:31:18 shachaf, are you sick of #haskell too 10:31:36 kmc: Sometimes. 10:31:44 Not enough to leave it, so far. 10:31:54 what are your complaints 10:31:56 don't do /msg chanserv 10:32:07 It's not going to get any better unless moderation steps up. 10:32:08 do /^msg chanserv 10:32:15 monqy: what's the difference? 10:32:16 but really make an alias for it 10:32:27 /^msg doesn't open a new window 10:32:45 But what if I want a new window? 10:32:49 then you're bad 10:33:05 kmc: It's full of people who don't know what they're talking about talking to other people who don't know what they're talking about. 10:33:07 `pastelog 10:33:11 haha 10:33:14 monqy: that's in irssi? ^msg is an unknown command according to my client 10:33:17 Spreading general nonsense back and forth with very little signal. 10:33:20 olsner: yeah 10:33:22 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19986 10:33:25 OMFG THIS GUY KEEPS PROPOSING 10:33:30 "READABILITY IMPROVEMENTS" 10:33:31 in any case, chanserv didn't respond anyway 10:33:35 THAT INEVITABLY MISUSE BULLETED LISTS TERRIBLY 10:33:36 LIKE 10:33:43 That's not always the case, but when the channel reaches a critical mass of nonsense it gets pretty annoying. 10:33:44 what the 10:33:56 shachaf, it doesn't seem that bad... any question will get about 8 answers, 6 of which are correct / useful 10:34:02 what the fuck does that mean :D 10:34:10 There's also the general IRC thing where people ask the same questions over and over and over again. 10:34:12 shachaf: http://ompldr.org/vYzQ2NA 10:34:16 Look at this shit! 10:34:23 SOMEONE TEACH THIS GUY WHAT BULLETED LISTS ARE FOR 10:34:30 And people who are bad at asking questions are overrepresented in terms of channel volume. 10:34:46 shachaf, wouldn't it be great if someone made a wiki page with the frequently-asked questions and standard answers, which can be edited and improved 10:34:51 * kmc not bitter, I swear 10:35:06 kmc: I thoroughly approve of your efforts! 10:35:11 kmc: And crowd-sourced it, and gave incentives for doing so. 10:35:11 thanks shachaf 10:35:14 I even made some comments once, if I remember correctly. 10:35:22 And called it, I dunno, Fencepost Error. 10:35:23 elliott, what incentives do you propose 10:35:25 Going so far as to edit it myself is, y'know... 10:35:26 Segmentation Fault. 10:35:30 lolz i get it 10:35:42 General Protection Fault 10:36:32 A nice way to do it might be basically having a big string -> SO answer mapping. 10:36:48 The idea being that you cherry-pick well-worded questions and good answers and can just grep it whenever a predictable question comes up. 10:36:50 elliott, if I get enough points on Stack Overflow, maybe Joel Spolsky will hire me!!!!!!!!!!!!!!!! 10:36:53 !!!!!!!!!!!!!!!! 10:36:58 !!!!!!!!!!!!!!!123 10:36:59 kmc: Then you'd have to work for Joel Spolsky. 10:37:13 `pastelog < 10:37:16 elliott, he understands that I value free soda higher than respect or a paycheck 10:37:17 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20792 10:37:23 kmc: Hmm... me too. 10:37:37 elliott: A person in another channel I'm in is StackOverflow user #13 10:37:46 shachaf, wow, you're internet famous 10:37:50 shachaf: Chris Jester-Young is, like, the worst, man. 10:37:51 kmc: TOTALLY 10:37:58 elliott: Why? 10:38:04 shachaf: I dunno, I just keyed in the number. 10:38:09 ...This channel happens to be #stackoverflow. 10:38:10 wtf, chanserv's response ended up in the #haskell window 10:38:29 olsner: chanserv responses go wherever :P 10:38:33 since they're notices 10:38:52 olsner, in many clients notices ends up in a channel where that person who sent it happens to be 10:38:55 kind of stupid 10:38:57 shachaf: Well *I'm* Stack Overflow user #1097181! Take that! 10:39:04 IMO they should go into a separate notice tab 10:39:05 or suc 10:39:07 such* 10:39:14 since I'm not reading anything that happens in #haskell, it was just not very useful for the response to end up there 10:39:25 I know the issue 10:39:32 2003-01-19.txt:06:09:05: yay, nothing at all. 10:39:39 elliott: NOT AS COOL AS STACKOVERFLOW USER "MOMAN" 10:39:41 but indeed ChanServ is in #haskell and not in any other freenode channel I'm in 10:40:59 `pastelog http 10:41:03 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24538 10:42:24 shachaf, anyway I think the cluefulness of the average #haskell answer is pretty high 10:42:35 the problem is more than everyone has their own pet way of explaining everything 10:42:41 and they trip all over each other trying to do it 10:42:48 i am quite good at devising `pastelog queries 10:42:55 and then get derailed in endless arguments over terminology and teaching strategy 10:43:00 its on my CV 10:43:00 of course this is what i did too 10:43:03 but i got sick of it 10:43:37 kmc: That's part of the problem, I agree. 10:43:49 :o 10:44:02 Maybe I just call things that aren't my pet theory "nonsense". 10:44:08 `pastelog changed the topic 10:44:13 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11439 10:44:30 But I don't think it's just that. 10:44:38 also the answers are skewed by a heavy dose of politics 10:44:46 Politics? 10:44:56 "you don't really want regex / an IDE / a debugger, those things are for Java weenies, that's why we don't have them" 10:45:12 I think one problem with #haskell is that there are a lot of well-intentioned good Haskell programmers who aren't any good at explaining things or maybe hold some weird unpopular Haskell-related view (and might not even know it's weird), and if they engage a newbie enough at an early stage they kinda work that worldview into their subsequent questions, and so everyone gets really confused trying to decode their warped newbiespeak. 10:45:12 elliott: hi 10:45:18 But I could be imagining that. 10:45:25 elliott: no that's the impression I've gotten. 10:45:30 yeah 10:45:49 elliott, do you think the monad tutorial analogies are an example of that? 10:45:55 kmc: definitely 10:46:34 Occasionally someone asks "what are monads?" and people go into the standard "keep reading LYAH" talk but someone says "I wrote a tutorial about monads: " and the newbie goes "oh, thanks, I'll read that!" because it sounds more concrete. 10:46:46 right 10:46:47 I don't know how you could solve that other than punishing linking monad tutorials, which would probably be unpopular. 10:47:07 Basically we need to divide people into questioners and answerers and ban answerers who step out of the party line. :p 10:47:20 also there is too much hype about monads, so people want to read A Monad Tutorial rather than just some chapter in the book 10:47:27 and they want to read it way too early 10:48:04 It'll be really great when we switch to a different primary system for modelling effects and can finally have people not ask about monads any more. 10:48:32 i think most of the people who claim to "know Haskell" are very far from being able to write large, practical software in Haskell 10:48:50 Anyway, I think #haskell would be basically impossible to police effectively without coming across as fascist, because it's essentially an undistinguished muddle where everyone gets a completely equal voice, and there's a heavy IRC culture of only banning for outright abusive behaviour. 10:48:55 and that most of the people who can do the latter don't hang out on IRC 10:49:05 that's probably a jerk / elitist thing for me to say, but there you go 10:49:10 It's just too large to rely on the fact that most people active are experienced. 10:49:37 elliott, so what if you started a new channel, #haskell-fascists, with explicit policies 10:49:39 kmc: Hey, my version of that would probably include names. Although that's also the reason I wouldn't say it. 10:50:06 blame allocation is always difficult 10:50:10 And yes, a spinoff with more tightly enforced rules would be nice, but (a) nobody will go there, because it's not #haskell; (b) it'd be really hard to gain momentum — "go here and we'll be dicks about your answering!". 10:50:34 well the hope is to lure the burnt-out veterans 10:50:40 first 10:51:05 * shachaf would join such a channel. 10:51:05 but i don't think it would work 10:51:10 kmc: Could you stop it devolving into veteran chit-chat before it comes useful? It's one of the cliquiest initial seed groups you could pick, even if it's the best from a long-run POV. 10:51:11 elliott: it may not even be a good idea anyway. I don't think it would be a place with a good channel culture. 10:51:12 Of course, with me, that's not saying much. 10:51:35 i think most people just don't care that much, because they have better things to do with their time anyway 10:51:55 kallisti: #haskell doesn't really have a culture any more, beyond the constant bouts of regulars joking. 10:51:57 i really don't 10:52:03 -!- Phantom_Hoover has joined. 10:52:09 When you reach a certain mass you have to be utilitarian about what the channel is trying to achieve, and it's not social. 10:52:15 i think one big problem is the internet 10:52:16 if i can keep helping people learn haskell with low commitment and low stress to me 10:52:18 then i wanna keep doing that 10:52:25 the internet is surely bad for haskell 10:52:36 Surely. 10:52:36 I sometimes wonder what brings some of the people in #haskell to #haskell. 10:52:47 haskell programmers probably are best left to code in relative isolation 10:52:53 or at workplaces 10:53:14 itidus21, on the contrary, I think #haskell is essential because they don't fucking write down all the important shit you need to know 10:53:24 elliott: I think transmitting some minor misunderstandings through a question-answer method of learning are to be expected. This isn't a phenomenon unique to Haskell, but it may be more problematic because there's a lot of information to be wrong about. 10:53:47 kmc: Except for over and over and over again in IRC-sized snippets. 10:53:48 elliott: I get plenty of incorrect information from people on #perl 10:53:49 kallisti: It's not minor understandings, it's that almost every question turns into a definitions debate. 10:53:58 oh, I see. 10:54:01 kmc: the trouble here is that most people learn regular languages by buying books at a bookstore, bringing it home.. and doing it 10:54:07 Which would be OK, if anyone ever conceded, but they don't, because everyone thinks they're #1 enlightened Haskell thinker. 10:54:09 that's happened once with me on #perl as well. it was silly. 10:54:15 or borrowing library books 10:54:19 how to write Haskell code: 1) write some code 2) shit don't work 3) lurk #haskell for two years until you see an off-hand description of the thing you are missing 10:54:36 * kallisti is #1 enlightened Haskell thinker. 10:54:38 im sorry to bring this to light.. 10:54:42 kmc: Anyway, I think the situation is simply that IRC can't support effective support communities beyond a certain size. 10:54:47 but irc is not good for learning something 10:54:54 yeah, and LYAH + RWH is still maybe half of what you need to know, imo 10:54:55 it's helpful sometimes. 10:55:06 It relies essentially on human intervention to function correctly, but that's impossible beyond a certain volume, and the culture is biased against it. 10:55:06 When you reach a certain mass you have to be utilitarian about what the channel is trying to achieve, and it's not social. 10:55:10 Ooh, metadiscussion. 10:55:14 Phantom_Hoover: About #haskell. 10:55:38 kmc: A real-time format optimised for discussion/learning would be an interesting thing. 10:55:50 yeah 10:56:01 I think SO handles the long-form Q&A stuff perfectly, but obviously its "chat" feature is just IRC with editing and Markdown, so that's worthless. 10:56:02 we could call it "IRC but with more bots" 10:56:13 the false association between haskell and the internet 10:56:21 i think this creates a lot of problems 10:56:25 kallisti: I think you really need something like separate discussions. 10:56:37 A newbie asking a question should have their answer detached from the monad tutorial jokes going on concurrently. 10:56:52 the usual way to learn is to get a poorly written book on a topic.. read it.. go off halfcocked 10:57:12 and then get corrected by people and taught again, more painfullly 10:57:27 -!- Taneb has joined. 10:57:31 * elliott 's usual method of language learning is reading half a tutorial, getting bored, and then returning a year later to find out he can code competently in the language. 10:57:37 Then it's the long haul of learning all the APIs. 10:57:43 yeah 10:57:48 tutorials are dependant on the internet 10:58:08 maybe the internet is good for learning...... maybe 10:58:09 The cycle is a bit longer with Haskell :) 10:58:09 -!- Ngevd has quit (Read error: Connection reset by peer). 10:58:12 elliott, that works when the language is just new syntax for another language you already know 10:58:26 elliott: hmmm yes that' a good idea. With a good interface it would be feasible. 10:58:35 kmc: Yeah, it's not a general-case thing. But it did get me started with Haskell. 10:59:03 I already had knowledge of Scheme and such, so half of YAHT + later half of LYAH were enough to brew into a basic working knowledge. 10:59:27 I'm not convinced you can teach Haskell from the bottom-up. 10:59:33 i think the reading a book and doing exercises can teach 80% of something.. and then irc could teach that last 20% 10:59:35 Not to someone who already knows a language. 10:59:41 The temptation to analogise is just too much. 10:59:47 * kallisti doesn't remember what he read to understand monads. 10:59:53 we need some sort of brainwashing drug 11:00:30 elliott: analogizing isn't that damaging.. 11:00:39 itidus21, it is with Haskell. 11:00:45 ..the Haskell cult is seeking a brainwashing drug to indoctrinate their fanboys. I knew it! 11:00:53 To be honest, just banning chat outright would probably make #haskell better than it is, but it'd be stifling. 11:01:03 what do you mean by 'chat' 11:01:05 You don't know Haskell, so you don't know the nature of the problem. 11:01:39 kmc: Up to the op's whim, of course :P But broadly "anything not in the process of furthering an actual question or discussion". 11:01:45 -!- nooga has joined. 11:01:46 Clearly, itidus21 is a burrito. 11:01:53 itidus21: I think the problem in this case is a lack of easy to find literature that corresponds to exactly what you need to know.' 11:01:56 i really like that people in #haskell will talk about the language without having some concrete question at hand 11:02:04 interesting stuff comes out of that discussion 11:02:12 Yes, that's why I said it'd be stifling. 11:02:26 the endless injokes (like the one Sgeo just made) are probably a group-identity thing 11:02:35 i think its well meaning but misguided views about the learning process.. you can't just drop analogies 11:02:39 Haskell is the cool kids club in programming, of course 11:02:41 I think you could solve a good chunk of the issues #haskell has simply by having a discussion organisation system. 11:02:43 its like trying to drop subvocalization in order to speed read 11:02:47 and so we all want to indicate we're in the club 11:03:02 The problem of discussions being relevant to each other is less than the problem of all discussions being mushed together into one gigantic stream. 11:03:03 -!- Taneb has quit (Ping timeout: 252 seconds). 11:03:23 kmc: I mostly just do it for cheap jokes. 11:03:40 I don't really want to be thought of as a Haskell programmer, although that probably doesn't stop anyone. 11:03:48 elliott, you're special 11:04:01 kmc: You forgot shachaf! He also does it for the cheap jokes. 11:04:10 shachaf is also special 11:04:16 #haskell-special 11:04:19 yes 11:04:23 was about to say that 11:04:41 "functor? I 'ardly knew 'er." 11:05:07 * kallisti good joke. original. 11:05:15 i admit that there should be a feeling that they are going down a rabbit hole as a world of counter-intuitive mathematical concepts descends upon them... but even then i think they are guided by analogy 11:05:31 counter-intuitive? 11:05:36 mathematical? 11:05:48 Wait, I'm special? 11:05:50 * shachaf wasn't following. 11:05:52 kmc: Now would be a good time to note that itidus21 doesn't know a single lick of Haskell. 11:06:00 farmers usually don't know math 11:06:01 i gathered as much 11:06:11 * kallisti esteemed member of joke-clique 11:06:13 itidus21 seems a bit like zzo38 to me 11:06:16 joklique 11:06:18 from small info 11:06:20 that is because you have to basically sit at a table for years before it can occur to you 11:06:28 it is not intuitive 11:06:32 kmc: What, you don't think zzo38 knows a lot? 11:06:42 no, he clearly does 11:06:52 He certainly does, it's just that he performs a completely different function on that knowledge to everyone else in the universe. 11:07:24 zzo38 seems to know Haskell pretty well 11:07:33 well enough to identify all the ways it's unlike INFORM 7 or Magic: The Gathering 11:07:47 :D 11:08:02 Have you read one of his Haskell programs? 11:08:08 zzo38 is my best #esoteric friend. 11:08:11 !logs 11:09:45 i don't really know why hilbert cared about halting problem.. i don't know why turing and church cared about decision problem.. i don't know what neumann was after either 11:10:22 * Sgeo blinks 11:10:29 in general, i don't know what the purpose of computation is 11:10:47 kmc: See? #esoteric is the bets 11:10:48 best. 11:10:49 dude, what if we're, like, all a computer, man 11:10:53 and how i could convince a child why it's better than candy 11:11:16 * kallisti opens up emacs. "It's time... to make portal chess happen." 11:11:25 * kallisti is doing it. He's making it happen. 11:11:25 is it all just about making slave machines? 11:11:30 * Sgeo thinks "It's interesting" is a sufficient answer to why someone would be interested in a mathematical subject. 11:11:33 because we're lazy? :D 11:12:00 kmc: If this darn log download wasn't going so slowly you'd have a wonderful zzoskell program right now. 11:12:07 haha 11:12:31 kallisti, do continuous chess and we won't hate you any more. 11:13:03 Phantom_Hoover: Sorry I don't feed off of the esteem given to me by peers. :> 11:13:11 also how would you even do that. 11:13:20 floating point numbers? ha. ha. ha. 11:13:37 Coq, like I said. 11:13:39 gonna sleep, ttyl 11:13:48 kmc: But the log download just finished! 11:13:51 lol 11:14:00 kmc: good night, sir. 11:14:03 'night 11:14:33 kmc: http://sprunge.us/bCgV 11:14:34 Phantom_Hoover: anyway, portal chess is a much better game than continuous chess. 11:14:39 Note the consistent use of whitespace. 11:15:17 I feel a little sick. 11:15:26 Phantom_Hoover: It is the Scottish Illness. 11:16:01 Phantom_Hoover: did you ever give continuous chess a consistent, sane set of rules that are easy to play and decidable? 11:16:16 FSVO 'easy to play' and 'decidable'. 11:16:16 kallisti: Two of those principles go directly against the spirit of continuous chess. 11:16:25 hmmmm. sane , decidable? 11:16:34 rules? 11:16:37 easy? 11:16:40 play? 11:16:48 Not decidable, but that's not a problem for Coq. 11:17:01 You give it the proof that your move is correct. 11:17:47 if we say that the parts and the composites are both classed as objects, and that we can only perform operations on objects, and that all operations have equal weight, then there is the tradeoff that group operations are faster but clumsier 11:17:51 something like that 11:18:21 i dunno what this means 11:18:25 me neither. 11:18:56 uh.. if the operation on a ball is throwing 11:19:17 elliott: uh this is probably a really dumb question. But how did I get a module structure where there's X and X.Y 11:19:18 compared to uh.. moving each individual molecule of the ball 11:19:24 do I just make X.hs and X/Y.hs ? 11:19:27 kallisti: ...yes 11:24:04 `pastelog terminal 11:24:23 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11767 11:24:52 `pastelog itidus21 11:24:59 `quote 11:25:11 71) I want to read about Paris in the period 1900-1914 not about the sexual preferences of a bunch of writers >.> 11:25:12 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5623 11:25:28 `quote 11:25:29 680) I personally use while ("Cogito, ergo sum") { ... } because since that is a priori true, it is true in all possible universes, and therefore ensures maximum portability. 11:25:31 `delquote 71 11:25:35 ​*poof* I want to read about Paris in the period 1900-1914 not about the sexual preferences of a bunch of writers >.> 11:25:39 `quote 11:25:39 `quote 11:25:40 `quote 11:25:46 112) use "grep --crazy" 11:26:44 306) Phantom_Hoover: mutation is often considerably harder for both humans and compilers can analyze it much more difficult' part that induces bloody vomit... huh....intriguing 11:26:44 315) elliott: hey, thinking's easier than using the Internet 11:27:53 heh, fungot really has the right idea about mutation :) 11:27:53 olsner: you really wish your side. 11:29:50 ...and fungot just reminded me of a terrible book I read when I was young 11:29:50 Sgeo: really, it is a free card in your sylladex. she is holding. it appears the red glass. you are starting to get agitated about 11:30:29 -!- elliott has quit (Remote host closed the connection). 11:30:47 http://www.amazon.com/Wishing-Well-Making-Your-Every/dp/0786884738/ref=sr_1_14?ie=UTF8&qid=1325935808&sr=8-14 11:30:52 I lapped it up when I was a kid 11:31:09 Along with lies from that terrible Ian Stewart. 11:31:46 i was wiki'ing io and found http://en.wikipedia.org/wiki/Io_%28programming_language%29 11:31:56 looks curious 11:33:19 Phantom_Hoover, am I not allowed to rant about an ending of an authors book without it being perceived as a slight against the author? 11:33:55 hmmm, interestingly I think portal chess pieces keep the same relative ordering of importance as they do in traditional chess 11:34:01 ah, no, the queen is lower than the two rooks 11:34:32 and someone on the discussion page of Io made some other wiki contribution "04:06, 27 May 2005 (diff | hist) Esoteric programming language ‎ (→External links: added link to esolang wiki) " 11:34:41 small world 11:34:59 itidus21: I see you've discovered io 11:35:30 kallisti: yes i explained such quite formally 11:35:51 but i guess what i left out is i was looking for input/output 11:39:25 -!- cheater has joined. 11:40:23 the esolang homepage has been spammed again.. since i dont know how often this happens not sure of the urgency of announcing such 11:41:22 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com). 11:47:24 -!- cheater has quit (Ping timeout: 240 seconds). 11:48:45 -!- cheater has joined. 11:51:01 :t generate 11:51:02 Not in scope: `generate' 11:51:13 @hoogle generate 11:51:14 Graphics.Rendering.OpenGL.GL.Hints GenerateMipmap :: HintTarget 11:51:14 Graphics.Rendering.OpenGL.GL.Texturing.Parameters generateMipmap :: TextureTarget -> StateVar Capability 11:51:14 Graphics.Rendering.OpenGL.GLU.Quadrics GenerateTextureCoordinates :: QuadricTexture 12:00:00 is there a name for non-pawn chess pieces 12:00:32 oh they're just called "pieces" 12:00:35 and pawns are called pawns. 12:02:21 Down with the arbitrary piece class divisions. 12:02:44 I am not a piece, I am a human being! 12:03:52 Here, have some of PWP's pseudo-philosophy-bullshit on the topic of chess pieces on an unexpanded VIC-20: http://www.youtube.com/watch?v=O19SNCIf1rk -- four kilobytes should be enough for everyone, right? 12:04:29 * kallisti is trying to figure out how to use records in a way that's not ugly 12:04:30 This one sadly I think lacks the "speech synthesizer". 12:05:17 @hoogle (//) 12:05:17 Data.Array.IArray (//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e 12:05:17 Data.Array (//) :: Ix i => Array i e -> [(i, e)] -> Array i e 12:05:56 -!- Taneb has joined. 12:07:05 thats pretty cool 12:07:12 Hello 12:09:51 -!- oklopol has joined. 12:12:39 pawn = ?. board = ?. death = ?. ? = ?. 12:13:04 > '?' == '?' 12:13:05 True 12:14:19 ? <- board -> ? 12:14:52 board <- board -> board ? 12:15:09 ah screw it 12:15:14 board 12:15:40 infinity <- board -> infinity ? 12:15:54 -!- azaq23 has joined. 12:15:55 ▒ 12:16:13 the trouble is it goes into 2 dimensions.. 12:16:26 infinity <- board -> infinity ? ! 12:16:44 infinity <- board -> infinity ! 12:17:09 infinity X board X infinity ! 12:17:09 The board is just 6x6 in the bubbles. :/ 12:18:03 ! ▒ X infinity ! 12:19:16 black pawn > white pawn?; knight > pawn?; queen or king(?) > knight? 12:19:31 black pawn = white pawn!; knight = pawn!; queen or king(?) = knight! 12:20:17 -!- Phantom___Hoover has joined. 12:20:57 I had some continuous chess thoughts which I have since forgotten 12:21:12 I saw a continuous chess writeup once on chessvariants 12:21:42 I saw that; it's a pale shadow of true continuous chess. 12:21:51 lol... pawn + hand hand = pawn with hands 12:21:58 ▒ ⨯ ∞ and ♟♞♝♜♛♚♙♘♗♖♕♔ and so on; Unicode power. 12:22:05 -!- Taneb has quit (Ping timeout: 240 seconds). 12:22:11 pawn with hands > pawn ! 12:22:20 wow 12:22:22 pawn with hands > king !! 12:22:24 those all work in my current font! 12:22:33 which is... fixedsys excelsior! 12:23:00 Patashu: The chesspieces are in the old-and-well-established "miscellaneous symbols" block. 12:23:30 esoteric 12:23:32 !!! 4 pawns with hands > pyramid eye symbol !!! 12:24:22 Anyway, the chessvariants continuous chess is merely space-continuous. 12:25:54 what am i? what is the world? what is death? what is what? ... what is beyond the board? infinity! are black pawns better than white pawns? are knights better than pawns? are kings better than knights? 12:26:15 What have I done. 12:27:07 -!- monqy has quit (Quit: hello). 12:27:49 black pawns are equal to white pawns! knights are equal to pawns! kings are equal to knights! pawns with hands are better than pawns. pawns with hands are better than kings. together, pawns with hands are unsurpassed. 12:28:04 thats my translation 12:30:20 the matrix of chess :P 12:31:43 the fact that i could interpret all that without any text is kind of cool 12:31:50 im impressed 12:33:15 Ah, right, the thing I was trying to fix was the interaction between the capture and nonintersection rules. 12:33:45 -!- Phantom___Hoover has quit (Ping timeout: 240 seconds). 12:35:07 -!- Ngevd has joined. 12:35:28 If the line between f(p) and p contains piece of the opposite colour, then either f(p) must lie on that piece or some other piece must capture it. 12:35:39 Hello 12:35:47 This makes capture possible, as it happens. 12:36:21 fizzie: i don't understand why philosophy + retro gaming + symbols is so interesting 12:36:45 but it is very cool 12:37:19 This one sadly I think lacks the "speech synthesizer". 12:37:32 Something something something speech recognition sucks? 12:37:41 I think elliott's better at this than me. 12:37:44 Synthesis, not recognition! 12:37:45 And yes. 12:38:47 What does PWP stand for? 12:39:15 Uh... "Pers' Wastaiset Produktiot", if I recall correctly. 12:39:58 Finding cool stuff is easy enough. Viewing it is easy enough. Recognizing that it would be therefore a good thing to be involved in is easy enough. 12:40:19 The trouble is this other detail of trying to find a purpose for being involved. 12:40:49 The negative proof that X isn't necessarily the best use of your time. 12:41:00 -!- elliott has joined. 12:41:26 -!- elliott has changed nick to Guest84924. 12:41:43 Guest554115, quick, say something nasty about speech recognition. 12:41:56 Sure, you can try to measure it... If I did X would I regret spending my time that way. If I did Y would I regret it? 12:41:58 Phantom_Hoover: It's, like... uh, fi:perse = en:arse; fi:vastainen (adj.) = something like the anti-, in-, un- prefixes in English, and spelling it with 'w' makes it "old-fashiony", like Ye Olde Englishe; and fi:produktiot = en:productions. 12:42:51 Speech recognition is for Finns. 12:42:55 And you can try to measure and compare the regret of investing time in X compared to the regret of investing time in nothing. 12:42:57 THE ULTIMATE INSULT. 12:43:04 Phantom_Hoover: See http://pelulamu.net/pwp/ -- or maybe don't. 12:43:15 Any time he uses technical terms, ask for their meaning. There are many countries, which take part in offshore web site style; the most well known are India, Russia, Ukraine, Romania, Philippines. It's also not a problem - you can make payment by credit card, PayPal, wire transfer, Western Union, etc. This will conserve you cash, time and effort in the long run. Here are some facts and figures from across the U. For the mil 12:43:15 lions of web surfers out there, your web style is their first impression of your business and your credibility. If you are shopping for web style quotes, don't forget to ask the web style vendor some simple issues: Do you grant client references? Will I be capable to edit my own web pages? Are the web sites you pattern search engine friendly? Is logo style incorporated in the web quote? How many pattern concepts and revisi 12:43:15 ons will you give? Avoid the Template Trap. The problem with Web templates is that they are closed systems. The big difference between advertising and not trading on the web, and being found or buried on page 15 of the search engine benefits, is know-how in building a search engine friendly site. 12:43:16 However, it's not a 100% guarantee. There are plenty of web designers offered. Executing your homework and asking the correct requests is significant to decide if they are correct for the job. What does your ongoing web site style say about your business? Does it portray a professional, reliable business? If not here's a few tips for finding and selecting a web designer. NJ Web Designer Other industries, like food processing 12:43:18 or construction, aren't so strict about academic qualifications, but they do have standards that have to be met - like health and safety or food hygiene standards. If that is the case, do you have the original graphic that can be emailed? It will be crucial to make use of that on your web site. Their promotion can inform you on how well they promote others. The key issue in web pattern is how to add value to the user's experience 12:43:20 , how to make them feel that they truly got something out of browsing your web site. 12:43:22 The pages load easily, you thought. The more individuals you have to test your web site, the more thorough your benefits will be. If this is the case it's not a serious problem, although you could ask your web designer to precise them. A few minutes? It's regular if this is a Flash site simply because usually the overall site is loaded at one time, not only the home page; or it's a Flash intro which goes ahead entering the site an 12:43:24 d also can load longer simply because of movie and sound. 12:43:26 Web designing as a profession is most benefited by this phenomenon. They read search benefits, news items, how-to articles and forums. You may get to realize some interesting facts. Designing a web site for search engines with clean code that utilizes cascading style sheets is important to getting your content indexed in the leading search engines, such as Google and Bing. NJ Web Design Also, the most eye-catching elements should 12:43:28 load first. 3) Kind of works Look attentively at each work in the portfolio. Regardless of whether your color theme turns out prosperous depends heavily on the first step Determining the style of your website. These firms are stuck in the past and are not as effectual as they pretend to be. 12:43:30 This details applies even whenever you are designing a personal website. Where do I start? you say. WebDesigners123 connects the Freelance Web Designer with Webmasters who need their services. I do my very best to discover as much as I can, each and every day. 12:43:35 pastebin motherfucker 12:43:38 OH NO ELLIOTT AM BECOME SPAMBOT 12:44:13 Patashu: spam is sacred 12:44:19 perhaps even every spam 12:44:55 12:03:52: Here, have some of PWP's pseudo-philosophy-bullshit on the topic of chess pieces on an unexpanded VIC-20: http://www.youtube.com/watch?v=O19SNCIf1rk -- four kilobytes should be enough for everyone, right? 12:45:07 fizzie: Oh, it's that viznut guy. I really like the aesthetic, though. 12:47:12 Who's viznut? 12:47:13 -!- Ngevd has quit (Read error: Connection reset by peer). 12:47:28 Phantom_Hoover: The guy behind that one-line code music thing; or at least the maker of the videos. 12:47:31 Robotic Liberation would've probably been a "better" "introduction", it's just that the chess-piece discussion is what sparked the thing. 12:47:40 And the author of that one bad demo I laughed at. 12:47:57 What was it? 12:47:57 (Okay, it was probably quite impressive, technologically, for DOS.) 12:49:09 fizzie: He seems rather obsessed with the premise. 12:49:22 http://en.wikipedia.org/wiki/PWP ooh, it's NOTABLE. 12:49:24 Nice voice synth thing on a VIC-20 though. :p 12:49:26 i look forward to the day when haskell is turned to such things 12:49:36 Reebuttic libera shun. 12:49:40 (Or at least nobody has bothered to nominate for deletion.) 12:49:51 fizzie: http://www.youtube.com/watch?v=2SdGkkp1aq8 is the aforementioned Robotic Liberation one. 12:50:21 I... know? 12:50:25 Er. 12:50:26 Phantom_Hoover: ^ 12:50:30 fizzie: You're basically Phantom_Hoover. 12:50:34 He asked for links, you get them. 12:50:47 Well, my upper half is, if I've understood correctly. 12:51:13 Nah, I moved that Phantom_Hoover back into Edinburgh quite some time ago. 12:51:33 Okay, so now I'm just a half the fizzie I used to be. 12:54:43 Guest84924: http://sprunge.us/JSZF hi criticize my Haskell code. 12:54:58 Why are you deriving Typeable? 12:55:23 Why are you deriving Ord for Piece? Why aren't you deriving Eq for Board? 12:55:32 I am. 12:55:37 Why are you using (Vector (Vector a))? 12:55:41 and, -shrug- YOU NEVER KNOW YOU MAY NEED TYPEABLE 12:56:07 Guest84924: because you told me to. 12:56:33 No. 12:56:57 You're also using the wrong kind of Vector. 12:57:10 ? 12:58:37 which Vector did you recommend? 12:59:08 Phantom_Hoover: This is the one I mentioned above disliking: http://www.youtube.com/watch?v=F1537t45xm8 12:59:11 kallisti: Storable. 12:59:54 I'll remove the Typeable since it's not really needed for anything. 13:00:08 fizzie: DYK: Scientists are propagandists who want to mechanise you? 13:00:17 I just think "if I needed Typeable for a library type and it wasn't derived, that would be annoying." 13:00:20 Man, this is amazingly crap. 13:00:30 "Note if all these routines are used simultaneously the data space might overflow. For serious floating point usage the large model might be needed." SDCC's float support is amusing. (They've also just stolen GCC floatlib's IEEE single-precision C code without optimizing them for their targets.) 13:00:37 Phantom_Hoover: The one I just linked? It really is. 13:01:38 "We will never again let an algorithm make a decision for us!" 13:02:01 "How much change do I have?" "WE WILL NEVER LET ALGORITHMS MAKE DECISIONS FOR US" 13:02:06 Phantom_Hoover: Grep /Let me elaborate the setting/ http://countercomplex.blogspot.com/2011/09/new-propaganda-tool-post-apocalyptic.html if you want more BACKGROUND. 13:02:28 Phantom_Hoover: Nonono, brains aren't algorithmic, he makes that clear in the uploader comments. 13:02:32 Guest84924: I imported Vector.Storable and got this http://sprunge.us/fYPP 13:02:35 am I missing a deriving somewhere? 13:02:45 kallisti: You're missing the fact that I told you not to use Vector (Vector a). 13:03:06 ?? 13:03:41 are you suggesting I use MVector? 13:03:46 No. 13:04:06 *(Vector (Vector a)). 13:04:14 are you going to explain? or should I just guess at what you mean? 13:04:24 because you said to use Storable vectors... 13:04:26 kallisti, hey, you removed the knights! 13:04:32 12:55 Why are you using (Vector (Vector a))? 13:04:34 12:55 Guest84924: because you told me to. 13:04:36 12:56 No. 13:05:01 Guest84924: I was referring to earlier when I asked what I should use to represent a chess board and you said "oh you probably want Map or Vector" 13:05:08 fizzie: Hey, what's your opinion on STATE OF THE ART?!?!?! (I am emulate pundit: find topic claimed to be controversial by semi-reliable sources, slam in face of interviewee.) 13:05:20 State of the art? 13:05:24 kallisti: Please attempt the basic literacy required to distinguish (Vector a) and (Vector (Vector a)). 13:05:39 Phantom_Hoover: http://www.youtube.com/watch?v=aykuVMf4uIQ 13:05:45 Guest84924: okay, but why should I use a 1d vector to represent a 2-dimensional grid? 13:05:56 kallisti: Because that gives you a contiguous region of memory. 13:06:35 hmmm, okay. 13:06:50 Phantom_Hoover: what knights? 13:06:51 You have to handle row/column indexing yourself; something like Vector is a more raw interface than C arrays. 13:07:02 kallisti, the ones that aren't in portal chess. 13:07:10 lame. those suck. 13:07:15 because they're not in portal chess. 13:07:17 Your original code used an array of pointers pointing to vectors which have an array of pointers pointing to boxed Maybe values which ... 13:07:23 and they can only hop two squares! 13:07:31 BTW, wrap (Maybe PIece) so you can write a Storable instance for it. 13:07:31 portals can hop THREE! yeah... stepping up the game. 13:07:45 Guest84924: what do you mean by "wrap" 13:07:59 newtype? 13:08:01 kallisti: newtype JesusChrist = JesusChrist (Maybe Piece) 13:08:21 fizzie deftly avoids controversy by not responding. 13:09:16 Guest84924: why do I need a newtype for that? 13:09:28 "so you can write a Storable instance for it." 13:09:32 right 13:09:33 why 13:09:33 So you can put it in a storable Vector. 13:09:39 BTW, you need to import the vector module qualified. 13:09:57 I'm asking: why is it required to have a newtype in order to write an instance of Storable 13:10:17 Well, you could write the instance directly, but (a) error-prone (b) requires FlexibleInstances (c) could overlap 13:10:24 ah 13:10:38 (a) in that you could easily mistakenly use the instance elsewhere without intending to. 13:11:20 I'm not really sure about this Storable stuff. It seems to require a lot of low-level information 13:11:49 for what gain? a more efficient 8x8 grid. 13:11:58 -!- oerjan has joined. 13:12:00 Storable is trivial. 13:12:07 You just want to define a bijection to Word8. 13:12:25 poke p Nothing = poke (0 :: Word8); poke p (Just Blah) = poke (1 :: Word8); ... 13:12:28 In fact 13:12:36 poke p a = poke (toEnum a :: Word8) 13:12:38 and the obvious for peek 13:12:45 -!- sebbu has quit (Ping timeout: 240 seconds). 13:13:07 sizeOf = const 1 -- ?? 13:13:15 Yes. 13:13:17 That's all you need. 13:13:26 ...oh 13:13:47 that's much easier than I thought it was. 13:14:38 fizzie: Robotic Liberation is now stuck in my head, I'm annoyed. :/ 13:14:41 wrapping a Maybe in a newtype seems marginally annoying though.. 13:14:47 Guest84924: I don't have much of an opinion; I mean, I recall I thought it looked nice, no matter how video-capturey it was. 13:14:59 kallisti: You're writing your own indexing functions anyway. 13:15:02 You can unwrap it at that point. 13:15:17 fizzie: Neutrality! What a rare thing from a fizzi. 13:15:19 fizzie. 13:15:43 -!- oerjan has set topic: Official revolting channel of the frequent stupid topic change plurality, the Prequel: The Attack of the Nerds | http://codu.org/logs/_esoteric/. 13:16:26 Maybe if I'd have "been there" I'd have more of an opinion, but I don't think I even knew about any demosceney stuff in 1992, really. 13:16:45 Guest84924: oh hey I've got a great name for my newtype. Cell. WOW 13:16:47 so good. 13:16:49 so. descriptive. 13:16:54 er 13:16:55 Square 13:16:56 maybe 13:16:59 Cell. 13:16:59 Square is more chess-like 13:17:04 i don't know, sounds a bit imprisoning 13:17:13 Well, I guess Square is more correct. 13:17:42 I've been having difficulty naming all of these things 13:18:04 because they're very similar. I wasn't sure if I wanted to call Board something like GameState and then s/GridSpace/Board/ 13:18:20 but GameState is, bleh. 13:18:22 Sqoor, Buurd. 13:18:48 * kallisti almost named fillColumns philCollins until he realized a) that 13:18:58 kallisti: Board should definitely just be a board. 13:19:01 -!- sebbu has joined. 13:19:06 's stupid b) he doesn't need that function 13:19:11 kallisti: Also, it's rank and file these days, no? 13:19:15 In modern commentary, the columns (called files) are labeled by the letters a to h from left to right from the white player's point of view, and the rows (called ranks) by the numbers 1 to 8, with 1 being closest to the white player, thus providing a standard notation called algebraic chess notation. 13:19:20 Guest84924: ah, yes. 13:19:46 Guest84924: for someone who's implementing a chess variant, I don't know very much about actual chess. 13:20:01 Ditto, but I have Wikipedia to help me be a snarky asshole. 13:20:11 Guest84924: anyway it makes sense conceptually that the board also includes these invisible loop sets. 13:20:16 -!- Jafet1 has joined. 13:20:23 You should remove the hidden state. 13:20:39 the... loop sets? 13:20:50 I need those. :P 13:20:55 Make them board state! 13:20:58 Use colours or some shit. 13:21:07 oh you mean visually. yes they'll be displayed. 13:21:11 they're "invisible" in the physical game. 13:21:26 No, I mean they hsould be part of the piece type. 13:22:01 well, that's a possibility however I think (but I'm not sure) it will be easier to work with them if they're stored as a set 13:22:10 because multiple loop squares are associated with one another.\ 13:22:24 -!- Jafet has quit (Ping timeout: 240 seconds). 13:22:32 a move can remove an entire set of loop squares and I don't feel like calculating what those are 13:22:37 easier to just have a set of them that I chop off. 13:23:46 also they have properties as a set that I haven't added yet 13:24:41 such as a direction of clockwise and counterclockwise for the unidirectional loops, and "oscillating" I guess for the bidirectional case (I'll get around to encoding that later once I can see other things implemented) 13:25:37 hmmm, actually 13:25:49 I could have the Loop squares have a direction. 13:26:12 and then to build a collection of related loop squares I just follow the path based on directions. 13:26:22 or something. 13:27:38 Guest84924: oh one problem with your Storable instance is that Pieces are not actually Enums. 13:27:46 or, I can't derive them as such 13:27:50 I'd have to write the instance. 13:27:58 Just write your own instance, there's like 16 elements. 13:28:20 is a game a language? 13:28:23 any way I can make that not tedious? 13:28:39 kallisti: If you think this is tedious, wait until you actually write something that isn't a type. 13:29:02 itidus21: a sequence of discrete moves could be viewed as a language, I think. 13:29:17 er 13:29:20 the set of those moves 13:29:27 is a game a set of moves? :D 13:29:29 the program is a specific string of moves 13:29:37 itidus21: no it also has an underlying state. 13:30:00 hummm 13:30:13 Guest84924: but really is there an easier way than "lol pattern matching 16 cases" 13:30:19 jesus christ 13:30:24 ok well you can obviously derive enum for piecetype 13:30:33 i'll let you figure out the basic arithmetic to handle the additional player field 13:30:34 in piece 13:30:38 noep I tried earlier. but maybe it works suddenly now? 13:31:20 i guess in chess there is the question of whether to represent board state or piece state 13:31:42 kallisti: piecetype has 7 constructors. coord and enum already are enum 13:31:47 actually oh 13:31:54 Portal is the only tricky one 13:31:58 yes 13:32:02 but it's trivial 13:32:04 since the range is (8,8) 13:32:06 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 13:32:07 so use 13:32:07 :t index 13:32:08 forall a. (Ix a) => (a, a) -> a -> Int 13:32:48 Guest84924: also I could do something horrible like data Rank = A | B | C ... 13:32:49 -!- Jafet1 has quit (Quit: Leaving.). 13:33:02 and Data File = One | Two | ... -- bahahahahahah 13:33:07 yeah, do it 13:33:10 except F1 | F2 | ... 13:33:14 ah yeah 13:33:16 that's better 13:33:16 derive Enum, write Ix instance 13:33:19 .... 13:33:24 better than using Int 13:33:25 no I was just going to use my indexing function 13:33:33 Ix is useful though because 13:33:34 :t index 13:33:35 forall a. (Ix a) => (a, a) -> a -> Int 13:33:35 to abstract that 13:33:36 :t range 13:33:37 forall a. (Ix a) => (a, a) -> [a] 13:33:39 ah yes 13:33:40 etc. 13:33:56 I'm surprised Ix can't be derived from Enum 13:33:59 with board state you could literally have 64 cells with the alphabet {"R", "N", "B", "Q", "K", "P", "r", "n", "b", "q", "k", "p", " "} 13:34:07 itidus21: noep 13:34:11 kallisti: it's more than Enum 13:34:16 itidus21: PORTAL CHESS IS MORE COMPLICATED THAN THAT 13:34:25 oh well portal chess yeah 13:34:40 but regular chess you could get away with it so long as you allowed for invalid moves to happen 13:35:12 I thought using Rank and File would be ridiculous but it actually kind of works nicely. 13:35:34 except that arithmetic will be weird without a bunch of fromEnum stuff. 13:35:59 oh hmm the Rank is the number the file is the letter. 13:36:13 whats the deal with chess and not killing the king 13:36:17 i mean SERIOUSLY 13:36:27 :)) 13:36:36 that will actually be one of the more difficult things to calculate in protal cehess 13:36:39 err capturing 13:36:43 because there are many weird capturing rules 13:37:14 for example, if your two portals are facing each other and within capturing range of one another 13:37:15 nevermind im being very very dumb 13:37:22 the enemy king cannot be adjacent to those portals 13:37:52 because of the explosion rule where portals explode when they try to pass through each other. 13:37:58 :) 13:38:37 Is there actually a published ruleset for portal chess? 13:38:39 well.. in chess. suppose that you made the rule that you could capture the king.. 13:38:41 no. 13:38:41 Or continuous chess? 13:38:47 no 13:38:51 Oh, darn 13:38:53 continuous chess happened like... yesterday? 13:38:59 -!- Guest84924 has quit (Remote host closed the connection). 13:39:01 -!- Ngevd has joined. 13:39:05 but I have pretty much a definitive ruleset in my brain at the moment. 13:39:06 Hello! 13:39:13 My Latin vocab tester is going well 13:39:16 I'm just... too lazy to write chess rules. that will be very boring. :P 13:39:38 Sgeo, the rules of continuous chess aren't terribly complex. 13:40:23 Ngevd, your Latin vocab tester? 13:40:31 Guest554115: wait maybe this isn't a good idea. 13:41:07 -!- elliott has joined. 13:41:13 -!- elliott has quit (Changing host). 13:41:13 -!- elliott has joined. 13:41:15 elliott: maybe using a Rank and File type isn't a good idea 13:41:24 also Rank and File are basically the same I could probably just make them one type. 13:41:54 Fine, make one type 13:42:01 Phantom_Hoover, it's more of a flashcards program 13:42:02 eh but that's gross too 13:42:03 DON'T KNOW IF WANT 13:42:09 It's not gross. 13:42:11 maybe I just want integers but then I can't derive Enum and I'll have to write that. 13:42:14 NO WAY. TO AVOID. TEDIUM. 13:42:50 hmmm I'll try Rank and File 13:42:54 as seperate types. 13:43:00 There is no way this thing will progress to the working stage. 13:43:10 even though they're exactly the same and I'll probably being doing a lot of arithmetic on them as integers. 13:43:10 Phantom_Hoover, I'm just adding more features now 13:43:35 elliott: it will. 13:43:49 It won't. 13:44:08 Ngevd, ah, right. Javascript gravity guy was working on a Latin thing too and I was wondering if you were in cahoots, at which point I would break down crying because that's like Hexham levels of crazy. 13:44:23 Nah, I'm doing it in Haskell 13:44:37 Phantom_Hoover: Don't believe him. 13:44:40 It's too good to be false. 13:45:04 whats the deal with chess and not killing the king <-- it was probably politically incorrect at one time to kill kings, even in games 13:45:07 -!- olsner has quit (Quit: Leaving). 13:45:25 elliott, worse still, he had the opportunity to be one of the interviewers when I went to Cambridge. 13:45:33 Phantom_Hoover: omg 13:45:35 That would have been upsetting in the extreme. 13:45:41 would you have said 13:45:45 "JAVASCRIPT GRAVITY GUY!!!" 13:45:53 "I SHALL USURP YOUR GAME" 13:45:55 I doubt it. 13:46:57 My Latin vocab tester is going well <-- VERBVM NECESSE EST 13:47:13 elliott: oh oops E is a File and a Direction 13:47:31 the IsInCheck(chessboard) function is diabolical eh 13:47:41 is it the most difficult of all to write? 13:47:51 itidus21: probably not 13:47:56 but it won't be as easy as normal chess. 13:47:57 sounds trivial 13:48:23 What does IsInCheck do? 13:48:36 it determines if the king is in check 13:48:38 oklopol, did you read about continuous chess (it's the best chess). 13:48:40 determines if a player is in check I'd imagine. 13:48:42 it uses magic to know whose turn it is 13:48:45 nope 13:48:49 by "the king" I imagine he means it returns something like Maybe Player 13:48:57 hmm 13:48:58 what is it 13:49:03 Alternately bicontinuous chess because some loser already made his own crappy continuous chess. 13:49:19 oklopol, chess, except the board and the pieces are continuous. 13:49:21 real chess?? 13:49:28 Phantom_Hoover: Excuse me you need to invent tricontinuous so that it's continuous in time too still? 13:49:40 oklopol: 13:49:43 data Direction = North | Northeast | East | Southeast | South | Southwest | West | Northwest 13:49:55 I don't know about how I feel about these expand direction names 13:49:56 kallisti: yeah player in check i meant 13:50:03 >_> 13:50:04 elliott, don't paste him the original definition; I've altered it significantly. 13:50:08 23:02:46: Basically, the board is a continuous square, and each area corresponding to an initial piece is instead full of continuous piece. 23:04:45: To perform a move, you take some measurable subset of one batch of piece and move them such that the measure of the piece remains the same (this is inelegant but, I think, necessary) and \int ddp is equal to a valid move vector. 13:50:10 23:05:37: Capture consists of moving some quantity of piece over some of your opponent's piece, which erases the target piece. 13:50:15 Phantom_Hoover: i don't know what that means 13:50:15 oklopol: ^ 13:50:18 Oh. 13:50:24 Phantom_Hoover: Well, now you get to tell oklopol the diff. 13:50:28 `pastelog continuous time 13:50:45 is a piece an Borel subset of measure 1 where the measure of the board is 64? 13:51:01 No output. 13:51:12 and is the board [0, 8] times [0, 8]? 13:51:16 oklopol, well, um, at the start of the game you have squares of piece (that's like piece but an uncountable noun) occupying the subset of [0,8]^2 corresponding to their initial positions in normal chess. 13:51:24 `pastelog continuous in time 13:51:24 elliott: if I combine Board and GridSpace into one type would you recommend using a newtype to seperate Board from being just another Vector (Maybe Piece)? 13:51:39 kallisti: Dunno. 13:51:39 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31615 13:51:42 I don't see a need particularly. 13:51:48 okay that much i guessed 13:52:28 oklopol, a move is a measure-preserving bijection f. 13:52:37 A move is valid if: 13:52:38 so, many. types. 13:52:59 Haskell is the language of 22 billion types. 13:53:05 it's the hinduism of languages. 13:53:11 -!- Ngevd has quit (Ping timeout: 252 seconds). 13:53:21 - The vector from the centroid of P to the centroid of f(P) corresponds to a legal move in standard chess of that piece. 13:53:22 -!- iconmaster_ has joined. 13:53:27 Phantom_Hoover: i think [0,8)^2 might be more elegant 13:53:41 hm except it's not symmetric 13:53:43 - f(P) intersects only piece of the opposite colour, which is then captured. 13:53:50 oerjan: i was assuming it doesn't matter because of measure stuff 13:54:13 centroid in the measure theoretical sense? 13:54:33 why do all the moves take the form of [a,b] x [c,d] ? 13:54:36 oklopol: some people keep insisting this should allow nonmeasurable pieces 13:54:39 how did this happen.. hahaha 13:54:49 is that continued fraction form? 13:54:54 oerjan: some people think they can make this work 13:55:03 - if P is not knight, then forall p in P, the line segment between p and f(P) contains no different piece of the same colour, and contains piece of the opposite colour only if it is captured in the same move. 13:55:04 It would have worked with the older definition. 13:55:08 oklopol: it's 2d, banach-tarski doesn't apply 13:55:09 oklopol, of course. 13:55:12 Phantom_Hoover: Special-casing the knight is not cool man. 13:55:22 elliott, normal chess does it? 13:55:28 FINE 13:55:50 oerjan, banach-tarski doesn't apply, but there's no restriction to rigid motions. 13:56:09 the last one prevents playing normal chess with this 13:56:15 Yes, it does. 13:56:32 Unless you change the initial distribution of piece to allow diagonal moves. 13:56:38 elliott: please tell me that (Enum a) => Maybe a is an Enum. 13:56:51 kallisti: If it's not, it takes four lines to implement an instance. 13:56:57 yes. 13:56:58 true 13:57:00 THAT'S NOT THE IMPORTANT PART. 13:57:14 But that's kind of messy, and so are most other ways of solving it. 13:57:23 Normal chess is inelegant anyway. 13:57:25 f.e., it's discrete. 13:57:29 lol 13:57:34 f.e., it doesn't have portals. 13:57:40 Iron. 13:57:44 discreteness is bestness. 13:57:59 oklopol: Well Phantom_Hoover has yet to make time continuous so continuous chess is still lame. 13:58:02 But once he does it'll be perfect. 13:58:28 Oh, also: any pawn that comes within 1 unit of the far side of the board becomes queen. 13:59:19 The batch from which the pawn came is then effectively treated as two batches of piece, a pawn and a queen batch, and they are both moved simultaneously. 13:59:22 hmmm I think instead of listing my types bottom-to-top I'll go top-to-bottom 13:59:47 meh. too much trouble. this way is fine. 14:00:05 Does anyone know a compression algorithm that produces really good results on almost-universally-English plaintext? 14:00:11 Phantom_Hoover: what, not choice of promotion? 14:00:16 xz -9 is only doing 303 megs -> 47 megs, which seems like it could be a lot better. 14:00:16 oerjan, oh, right, yes. 14:00:33 (I had that originally, but I forgot it.) 14:00:38 The mechanics are otherwise the same. 14:00:43 are there 8 hues of pawn or can you move all your pawn at once? 14:00:58 elliott: huffman encoding? 14:01:21 elliott: n 14:01:33 . o O (no not that one.. one that a room full of ingenious computer scientists must rack their brains for) 14:01:35 -!- Ngevd has joined. 14:01:42 itidus21: Yeah yeah, I'm more interested in an already-written tool than a general technique :P 14:01:44 actually i'm starting to think this thing could work 14:01:45 oerjan: thx 14:01:54 oklopol, originally, it was all at once, but then the move definition switched from the integral to the centroid (i.e. slightly different integral) definition, which makes treating it all at once screwy. 14:01:56 elliott: np 14:02:23 By which I mean even orthogonal movements in normal chess become impossible. 14:02:57 Hello 14:03:10 Hey 14:03:17 now i wonder who wins this game, i can't see a trivial winning strategy 14:03:28 oklopol: Do you for Chess? 14:03:34 Defining check is especially fun. 14:03:44 elliott: isn't there some compression that allows you to start with a dictionary (essentially prepended)? 14:04:00 oerjan: Do you mean... Huffman encoding? 14:04:06 MAYBE 14:04:10 Phantom_Hoover: err, isn't it just that all your king are belong to us? 14:04:15 basically.. the IsPlayerInCheck() function becomes more expensive as the movespace 14:04:17 if allowed a further move 14:04:21 Yes. 14:04:26 ^increases 14:04:31 What do people recommend for Haskell regexes? 14:05:08 Deewiant: Ping 14:05:14 Pong 14:05:15 Ngevd: You probably don't want to 14:05:15 i believe if all the king has to be taken at once, then the solution is stalemate 14:05:17 But then checkmate is... wait, no, you could hem in all your opponents king with pawn or something, and then use knight to actually threaten it. 14:05:33 Deewiant: What's a good compressor for majority-plain-English text that can take advantage of that structure, esp. dictionary 14:05:47 Deewiant: xz -9 only does ~300 megs -> ~40 megs and I want better 14:05:53 -!- derdon has joined. 14:06:17 Ngevd: But ask Deewiant for the one he uses, ISTR it being good :P 14:06:56 Deewiant: Oh, you might find this (very) mildly amusing; it's from the AI course channel, which is still empty since it hasn't started: http://p.zem.fi/t027 14:07:02 I think it's more likely that the brains of all involved will melt, though. 14:07:08 Ngevd: regex-tdfa 14:07:28 fizzie: ... okay 14:07:33 fizzie: :D 14:07:36 > toEnum False 14:07:36 Couldn't match expected type `GHC.Types.Int' 14:07:37 against inferred type ... 14:07:41 > fromEnum False 14:07:41 0 14:07:45 fizzie: Your humbleness in explaining the lack of AI systems in the channel is amazing. 14:08:11 oklopol, I challenge you to a game! 14:08:28 I'll be white, you can be black, and we play it on a 3x3 board with king at opposite corners. 14:08:32 not sure i'm interested :D 14:08:35 elliott: Data.Vector.Storable is pretty cool. 14:08:37 sounds hard. 14:08:53 and nothing else? 14:08:59 -!- Taneb has joined. 14:09:12 -!- Ngevd has quit (Ping timeout: 240 seconds). 14:09:17 oklopol, no. 14:10:12 k i shall play. 14:11:23 hey so 14:11:28 elliott: er, I'm not really sure how to write peek. 14:11:32 you have an advantage because you made this game 14:11:59 kallisti: fmap (fromEnum . fromIntegral :: Word8 -> Foo) . peek 14:12:02 so can i have the small extra rule that i remove the *closure* of whatever i manage to take from ya instead of just the set 14:12:16 i don't think it changes much 14:12:36 Phantom_Hoover: DON'T DOOO IIII 14:12:37 T\ 14:12:39 -!- Ngevd has joined. 14:12:42 You're clearly planning something, but it'll be an entertaining something, so fine. 14:12:44 Assuming the pieces are at [0,1]^2 and [2,3]^2, I move the king contained in the triangle with corners (0,0), (0,1) and (1,0) to that with corners (2,2), (2,3), (3,2). 14:13:39 -!- olsner has joined. 14:13:43 -!- Taneb has quit (Ping timeout: 252 seconds). 14:14:08 so we note that Q^2 \cap board is a countable dense subset of the board with measure zero 14:14:09 and i win 14:14:18 :'D 14:14:19 but umm 14:14:22 let me see what you wrote 14:14:24 `log [f]inite euclidean 14:14:32 2012-01-06.txt:17:17:23: do you know whats dissapointing? having an idea and then googling it.. well time for me to google this finite euclidean plane chess idea of mine 14:14:40 oops wrong 1 14:14:43 `log [f]inite euclidean 14:14:58 2012-01-06.txt:17:09:46: ok, what about chess on a finite euclidean plane 14:15:06 i don't see how that's a legal move 14:15:14 yours i mean 14:15:24 oh 14:15:30 oklopol, piece can intersect itself during a move. 14:15:35 elliott: zpaq 14:15:45 @hoogle (a -> b) -> (a, a) -> (b, b) 14:15:45 Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 14:15:45 Data.Graph.Inductive.Query.Monad mapSnd :: (a -> b) -> (c, a) -> (c, b) 14:15:45 Data.Graph.Inductive.Query.Monad mapFst :: (a -> b) -> (a, c) -> (b, c) 14:15:51 okay so 14:15:54 it is likely that i started this with that innocent comment 14:15:55 that's in check, you can't move there 14:16:01 Deewiant: This is going to be one of those state-of-the-art ones that take 3 years to compress isn't t 14:16:02 it 14:16:13 Ngevd: join (***) 14:16:16 oklopol, it can't possibly be in check; you only have 0.5 king and I have 1. 14:16:27 :t join (***) 14:16:28 (Assuming we're leaving out the closure rule, because duh.) 14:16:28 forall (a :: * -> * -> *) b c. (Arrow a) => a b c -> a (b, b) (c, c) 14:16:37 :t join 14:16:38 forall (m :: * -> *) a. (Monad m) => m (m a) -> m a 14:16:44 Oh, duh. 14:16:47 elliott, what do I need to work this magic? 14:16:54 Ngevd: Control.Arrow, Control.Monad 14:16:59 Thanks 14:17:03 Ngevd: I suggest defining 14:17:09 elliott: It's just the best one I found on AUR 14:17:10 both :: (a -> b) -> (a, a) -> (b, b) 14:17:11 both = join (***) 14:17:12 no wait i'm confused 14:17:23 elliott: the best compression technique of all is to have the entire contents of the document contained in the decompression software, reproduced upon running the decompressor 14:17:27 Deewiant: Funny, it's not in my package manager, so I'll have to compile it myself :P 14:17:32 you seem to have moved 2 in both axes. 14:17:38 Ugh, and it's in separate zip(!) files 14:18:29 elliott: Maybe nanozip is if that one isn't 14:18:33 Or freearc 14:18:41 nope 14:18:52 garden of eden decompression 14:19:03 garden of eden wait what's going on here? 14:19:07 well.. 14:19:15 so i assume that has nothing to do with CA 14:19:30 oklopol: when you check the state of the output of the decompressor it just happens to be the correct state 14:19:32 oklopol, currently my king consists of two triangles, symmetric about the line joining (0,3) and (3,0) and that joining (0,0) and (3,3); the centroid is thus obviously at (1.5,1.5); the initial centroid was at (0,5,0.5). 14:19:42 i guess the word garden of eden is very not appropriate 14:19:44 Well, this is going really well 14:19:48 Thanks elliott! 14:19:52 :t fromEnum 14:19:53 forall a. (Enum a) => a -> Int 14:19:58 Thanks also kallisti, but that was earlier! 14:20:01 toEnum, w/e. 14:20:06 Ngevd: what did I do? 14:20:06 Thanks probably other people too! 14:20:08 oh triangles sorry 14:20:11 like uh.. 14:20:14 kallisti, helped me debug the other day 14:20:20 -!- iconmaster_ has quit (Quit: Pardon me, but I have to die in NetHack again.). 14:20:22 :t toEnum 14:20:23 forall a. (Enum a) => Int -> a 14:20:31 elliott: And if you want to tune zpaq more, you can try using this config: http://mattmahoney.net/dc/max_enwik9.cfg 14:20:54 @hoogle Int -> Word8 14:20:55 Data.ByteString index :: ByteString -> Int -> Word8 14:20:55 Data.ByteString.Unsafe unsafeIndex :: ByteString -> Int -> Word8 14:20:55 Prelude (!!) :: [a] -> Int -> a 14:21:05 Deewiant: I'm not compiling it myself manually :P 14:21:12 Especially since it doesn't seem to come with a build system. 14:21:28 elliott: https://aur.archlinux.org/packages/zp/zpaq/PKGBUILD 14:21:51 Phantom_Hoover: strictly speaking, i guess i have no legal moves from here, since i don't have a legal starting position, can you clarify what a legal move is? 14:21:55 No guarantee that'll work on my OS 14:22:02 But meh, I might try it sometime 14:22:12 the vector between centroids is one that the piece can move in normal chess? 14:22:14 oklopol, one in which the centroid moves by a legal chess move. 14:22:18 Yeah. 14:22:20 mm okey 14:22:20 elliott: Generally "$CXX $CXXFLAGS $LDFLAGS" should work 14:22:23 > fromIntegral (5 :: Int) :: Word8 14:22:24 5 14:22:26 ah 14:22:33 Deewiant: But might need different cflags for e.g. -D platform stuff. 14:22:55 It's conceivable, but I doubt it 14:23:21 Suppose that you want to decompress a text document named "accounts4.txt" . and someone just happened to have a copy of that document and named it data.zip .. and created a batch file "unzip" .. and unzip contained "rename data.zip to accounts4.txt" 14:23:26 > fromIntegral (5 :: Word8) :: Int 14:23:27 5 14:23:30 good. 14:23:34 itidus21: Pls look up Kolgomorov complexity 14:24:17 Phantom_Hoover: can i just say i move my centroid by (-1, -1) and distribute my position evenly enough around the board? i don't really want to come up with a concrete way to do this :D 14:24:35 some portion of your king is taken :o 14:24:38 hmm 14:24:46 i suppose you need to know quite a bit more 14:25:05 oklopol, you need to preserve measure and not move through piece that you haven't captured, too. 14:25:06 elliott: What about good old paq (paq9a), is that available? 14:25:12 i'm not really fluent in functions on reals. 14:25:13 oh right 14:25:21 Deewiant: Nope 14:25:24 -!- shachaf has quit (*.net *.split). 14:25:24 -!- jix has quit (*.net *.split). 14:25:25 -!- yiyus has quit (*.net *.split). 14:25:25 -!- SimonRC_ has quit (*.net *.split). 14:25:31 elliott: Your system sucks 14:25:39 Deewiant: Yep 14:25:43 `peek' is not a (visible) method of class `Storable' 14:25:59 i don't understand when everyone did so much research 14:25:59 now this is kind of interesting, perhaps there is a way to take a zero measure set and move it around the other guy's pieces so that none of them can move 14:25:59 -!- shachaf has joined. 14:25:59 -!- jix has joined. 14:25:59 -!- yiyus has joined. 14:25:59 -!- SimonRC_ has joined. 14:26:08 -!- shachaf has quit (Max SendQ exceeded). 14:26:18 while i wasted my life away trying to cope 14:26:18 -!- shachaf has joined. 14:26:27 oh I need Foreign.Storable I think 14:26:38 oklopol, it used to be, but then I altered the conditions to let you work around that. 14:27:01 Phantom_Hoover: and what are those conditions? 14:27:18 If your opponent tries to corral you by fuzzing a set of zero measure around your piece, you can just take it all in a move with a set of zero measure of your own piece and make your move anyway. 14:27:24 also i proved that you can do that 14:27:38 ah 14:27:39 Sets of zero measure are basically irrelevant, I think. 14:27:53 hmmm so now Square is: data Square = Square (Maybe Piece) (Maybe Loop) 14:27:56 right i do recall that small detail now 14:27:59 which is not a derivable Enum. 14:28:21 Since they can't make any significant capture, and they can be taken without restriction. 14:29:41 -!- iconmaster_ has joined. 14:29:49 so umm let's see what happens if i just move 1 down 14:30:05 yeah the problem is that Enum can't be derived like that. 14:30:10 oh. 14:30:39 then you win 14:30:41 * kallisti cracks knuckles and gets to instance writing 14:31:22 wait do you... 14:31:23 -!- cheater has quit (Ping timeout: 276 seconds). 14:31:26 Yay I've actually written a Haskell program that actually does something well! 14:31:35 yes, you do 14:31:40 elliott: help do I write enum instances sanely I'm afraid . 14:31:43 +how 14:31:46 Now for the tricky part.. 14:32:36 Making it standalone 14:33:03 * kallisti thinks GHC should be able to derive Enum if all of the inner types are Enums... 14:33:14 -!- iconmaster_ has quit (Client Quit). 14:33:52 Phantom_Hoover: well, would you care to make your move? 14:34:07 Did you make yours? 14:34:14 yeah one down 14:34:35 well left 14:35:05 Yes, I win then, although strictly you're just not allowed to make that move. 14:35:28 true. 14:35:38 but we have just kings to that seems like a silly rule 14:35:52 how would one write instance (Enum a, Enum b) => (a, b) 14:35:56 er 14:35:59 how would one write instance (Enum a, Enum b) => Enum (a, b) 14:36:09 because i'm guessing a perfect game is infinite 14:38:46 elliott: I don't think this is as simple as you're claiming it to be. 14:38:53 or well, it's not now that I've changed the type. 14:39:16 but PieceType could never have Enum derived for it; 14:39:19 and now: 14:39:21 data Square = Square (Maybe Piece) (Maybe Loop) 14:39:28 w/e it's seriously not har 14:39:29 d 14:39:33 data Loop = Loop Direction LoopKind 14:39:41 you're getting hung up on some really trivial functions just because they're instance methods 14:39:54 it has nothing to do with instance methods. 14:41:37 * kallisti thinks GHC should be able to derive Enum if all of the inner types are Enums... <-- doesn't work, consider data Test = I Integer | B Bool -- what is pred (B False) ? 14:42:00 er I mean product types specifically 14:42:37 What's the deal with multiline strings in Haskell? 14:42:46 ok then, how do do succ (3, True) using _only_ Enum methods 14:42:48 -!- cheater has joined. 14:42:53 *do you do 14:43:00 Maybe Loop has 1 + (8 * 2) enumerations, Maybe Piece has 1 + (2 * (5 + 8 + 8 * (1 + (8 * 8)))) enumerations 14:43:10 Ngevd: they suck, hth 14:43:38 elliott: do you suggest I write these cases out with pattern matching? or is there a convenient bit of math I'm missing. 14:44:11 oerjan: I suppose you would need Bounded also wouldn't you? 14:44:14 dude just use fromENums on the fields 14:44:29 followed by..... 14:45:04 blargh just pack it however, the whole point is to store everything in [0,256) in the end 14:45:06 I can't add them, or multiply them. what is the maths to take these two numbers and magically enumerate the product type. 14:45:11 although hmm 14:45:16 wait nm 14:45:33 kallisti: Bounded, Enum, Eq 14:45:38 is it really worth being able to compress a 8x8 grid into 64 bytes? 14:46:20 kallisti: If you ever want to write an AI, yes; anyway you're overcomplicating this massively 14:46:30 I'm getting thrown off because you're telling me to do all of these ridiculous things I wouldn't want to do to begin with. 14:46:33 am I? 14:46:39 Then why are you asking me for advice 14:47:24 > (1 + (8 * 2)) * (1 + (2 * (5 + 8 + 8 * (1 + (8 * 8))))) 14:47:25 18139 14:47:38 > maxBound :: Word16 14:47:39 65535 14:47:43 Ngevd: you can do either line continuation with \n\ ... \ or you can use unlines on a list of strings 14:48:09 elliott: ah I see what you mean. How do I take bytes and pack them together? 14:48:19 Basically, I'm making a standalone version of my latin flash-cards thing, and want the CSV containing the words in the same file 14:48:36 So I can exploit a loophole in my school's ridiculously tight security 14:48:39 kallisti: Bitshifts and .|.? 14:48:43 IT security 14:48:45 the works. 14:48:47 *that 14:48:53 there's probably something with template haskell 14:48:59 > (1 + (2 * (5 + 8 + 8 * (1 + (8 * 8))))) 14:49:00 1067 14:49:18 hmm that's going to require more than a Word8 14:49:19 kallisti: Really, I'd just write all the cases out manually at the top level 14:49:23 ... 14:49:28 If it's so much bother 14:49:40 -!- cheater has quit (Quit: Ex-Chat). 14:49:41 that's basically the opposite of what I want to do. 14:49:50 Have fun 14:50:09 you're making this sound much easier than it actually is. 14:50:42 Because I've done similar things before and it was easy 14:50:59 sounds are easy even if you don't make them easy 14:51:04 that's why they are called sounds. 14:51:34 Ngevd: tight security, they don't allow data files? 14:51:45 Gregor: Where did the old rezzo agents repo go? 14:51:53 The one with my stuff in it :P 14:52:22 oerjan, they don't allow executable files 14:52:36 oerjan, except for some bizarre reason in .zip archives 14:52:48 Ngevd: well .zip it then? 14:53:08 oerjan, can't access files from within a zip 14:53:13 It's a weird system 14:53:22 ... 14:53:26 .....ugh 14:53:27 * oerjan leaves this to elliott 14:53:29 my brain 14:53:29 hurts. 14:53:43 * elliott leaves this to oerja 14:53:44 n 14:53:59 * oerjan infloops 14:54:06 Just trust me. 14:54:09 flashcards eh 14:54:18 You don't go to my school, you don't need to know why I need to do this 14:54:24 its probably best to think in terms of association forming time thresholds 14:54:44 so minimally complete definition for Enum is fromEnum toEnum right? 14:55:00 like.. expose self to one stimulus.. then to another 14:56:16 then again.. maybe not 14:56:44 a lot of learning is subtle 14:57:00 meanings of words are necessarily anticipated 14:57:11 you can't force the meanings 14:57:20 you can learn through anticipating the meaning 14:57:55 then.. you use the word.. and get corrected 14:58:08 i dont know 14:59:37 > 1067 - 16 14:59:38 1051 14:59:49 instance Enum Loop where fromEnum (Loop d Unidirectional) = fromEnum d fromEnum (Loop d Bidirectional) = 7 + fromEnum d toEnum i = Loop (toEnum (i `mod` 8)) (toEnum ((i+1) / 8)) 14:59:53 16 down, 1051 more to go. 15:00:31 actually I think that should be i not i+1 15:00:42 yes 15:00:53 also `div` 15:01:07 also... divmod 15:01:10 also... quotrem 15:01:51 Thanks to my crazy fear of linebreaks where I do not think linebreaks should be, I have a line that is 56844 characters long 15:02:01 oh good. 15:02:08 * kallisti is OCD about whitespace layout 15:02:28 and striking a balance between not having way too many lines and not condensing everything into one line 15:02:47 basically, the best way to learn a language is to read it 15:02:51 or speak it 15:03:00 err i mean listen to it 15:03:05 *54952 15:03:12 Less impressive, but still a lot 15:03:14 elliott: hi correct my math provide suggestions 15:03:24 reading may not be sufficient 15:03:25 hummmm 15:03:53 oh hmmm I could use Bounded I think. 15:04:13 ah 15:04:17 a formula! 15:05:04 Actually, do I really need the standalone version? 15:05:59 fromEnum (Loop d t) = fromEnum t * 8 + fromEnum d 15:05:59 toEnum i = Loop (toEnum d) (toEnum m) 15:06:00 where 15:06:00 (d,m) = i `quoteRem` 8 15:06:04 * kallisti suddenly remembers how to do math 15:06:12 so can binary lambda calculus be encoded as unary lambda calculus? 15:06:41 im guessing the only problem is leading zeros 15:06:56 Yes, but it would be stupid 15:07:11 actually I'm going to use let instead of where 15:07:13 Nah, just assume whatstisface 15:07:20 because I think let doesn't get as much love as where. :P 15:07:26 Binominal base 2 or something 15:07:31 Binary without zeroes 15:07:34 elliott: hi I learned how to do math 15:07:34 it wouldn't be stupid :D 15:08:11 though I'm pretty sure PieceInfo will be a number of special cases 15:08:24 kallisti: ok 15:08:39 kallisti: really you could autogenerate the enumeration stuff 15:08:45 .. 15:08:49 just generate a list of inhabitants with functor 15:08:49 this was kind of like 15:08:52 what I was asking for. 15:08:54 and use the indices 15:09:01 well you still need to manually write stuff 15:09:02 but 15:09:09 data T = A S U | B Q 15:09:11 you'd do 15:09:16 itidus21: to solve the leading zeros, just add a 1 to the beginning of every string of 0's and 1's 15:09:16 "list of inhabitates with functor" wat 15:09:28 oh you mean do list stuff.. 15:09:30 instance Elems T where elems = A <$> elems <*> elems <|> B <$> elems 15:09:48 then you can trivially define toEnum/fromEnum implemenetations for Elems things 15:10:19 wat 15:10:34 ok so .. if we run with the idea of unary lambda calculus, then programming becomes a matter of bounding defining groups of objects into sets 15:10:37 what does elems return 15:10:46 ^bounding 15:10:54 kallisti: [a] 15:11:01 class Elems a where elems :: [a] 15:11:04 oh hmmm 15:11:07 instance Elems Rank where elems = [R1, R2, ...] 15:11:10 right 15:11:20 instance (Elems a) => Elems (Maybe a) where elems = Nothing <|> Just <$> elems 15:11:25 > [1,2,3] <|> [4,5,6] 15:11:25 [1,2,3,4,5,6] 15:11:48 like for instance... you could hand someone a bucket of marbles and say "here is your program" 15:11:50 ah 15:11:51 kallisti: make sure to be careful with the definition of toEnum/fromEnum based on Elems, you want to avoid recomputing indices each time, this is easy if you know how pure memoisation works 15:11:59 I don't 15:12:15 well... it's not actually that easy for the toEnum case 15:12:20 but anyway 15:12:25 and just by adding or subtracting marbles from a bucket you can code 15:12:29 actually i think you can, hmm 15:12:32 i think it is pretty cool 15:12:32 gimme a sec, lemme whip something up 15:13:10 * kallisti was bogged down in arithmetic that he forgot he could just use lists or something. 15:13:18 +so much 15:13:19 or something 15:13:23 make that sentence make sense kthx 15:13:27 yeah that probably isn't the best idea though because of the traversal overhead each time, however i'm writing something which should avoid that trivially 15:13:32 and allow the same simple Elems instances 15:14:04 well you could avoid the traversal overhead by using a different data structure 15:14:07 such as an array 15:14:08 or... vector. 15:14:12 better to parameterise on the structure 15:14:14 and no, that doesn't work 15:14:24 i'll get bored of this and stop implementing it if you keep proposing stupid alternatives :p 15:14:33 OKAY FINE WHATEVER 15:15:00 most results are "If Steve Jobs decides that some unary lambda calculus is the language of choice for the iPhone 4.0, the developer community is going to find away to ..." 15:15:32 elliott: also note that I'm pretty sure Word16 is the word size I'll need for Storable 15:15:35 if that's relevant at all 15:15:40 don't think it is 15:15:51 kallisti: i'm pretty sure you could pack it into one byte but okay 15:16:19 sorry multiplication dawg 15:16:32 ahh heres quote "If Steve Jobs decides that some unary lambda calculus is the language of choice for the iPhone 4.0, the developer community is going to find a way to rationalize his selection and talk about how much they love the language." 15:16:45 the main reason I can't do that is because there are 8 * 8 * 8 different kinds of portals. 15:17:46 which I can't avoid unless I remove the coordinate pair from the definition of PieceInfo 15:18:16 which is a possibility I guess, but then I'll have to hunt down the sister portal manually or store their associative seperately, which isn't out of the question. 15:18:44 Hunt it down if it's deterministic; you can cache it in a memo table later. 15:19:06 it's just a coordinate to the other portal. 15:19:13 I guess that's deterministic? 15:19:19 I'm not sure what you mean by that. 15:20:00 yeah okay I'll take out the coordinate 15:20:03 the simplifies the storable stuff 15:20:14 *that 15:20:43 I can just store the association seperately. it's literally just a 4-element table. 15:21:24 okay that's much easier I could probably just handwrite this now. 15:21:41 the PieceInfo Enum is much simpler. basically 8 Arrows and 8 Portals and 1 of all the other pieces. 15:22:56 @hoogle interleave 15:22:56 package interleave 15:22:56 Graphics.Rendering.OpenGL.GL.VertexArrays data InterleavedArrays 15:22:57 Graphics.Rendering.OpenGL.GL.VertexArrays interleavedArrays :: InterleavedArrays -> Stride -> Ptr a -> IO () 15:23:05 @hoogle [a] -> [a] -> [a] 15:23:05 Prelude (++) :: [a] -> [a] -> [a] 15:23:05 Data.List (++) :: [a] -> [a] -> [a] 15:23:06 Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a] 15:23:27 Control.Monad.Logic.Class I believe 15:23:38 :t interleave 15:23:39 forall (m :: * -> *) a. (MonadLogic m) => m a -> m a -> m a 15:26:15 kallisti: Anyway, turns out it's trivial 15:26:21 http://sprunge.us/IZVC or something 15:26:42 Though I think you can avoid overhead and the Ord constraint there 15:26:45 -!- Ngevd has quit (Ping timeout: 255 seconds). 15:27:19 -!- oerjan has quit (Quit: Later). 15:27:21 elliott: why Map and not array 15:27:48 Well, because arrays can;t be indexed by *a*s... 15:27:57 It'd work for the fromEnum case, but who cares. 15:28:04 Don't use a Vector by default. 15:29:20 elliott: how often does Storable require that conversion to happen. 15:29:42 Every single time you take an element out or put one in 15:29:47 So, every single operation 15:29:57 Unless you want to traverse a >thousand-element list each time? 15:30:15 Part 3487234 in the ongoing series "it's your algorithms". 15:31:07 elliott: ..I never suggested traversing a thousand element list each time? 15:31:26 Well, I presumed you were implying it was overengineering wrt "how often" 15:31:47 no I'm just wondering if it would be better to use an array in the fromEnum case 15:31:54 Oh 15:31:58 Probably irrelevant 15:32:08 Profile first, etc. 15:32:09 you mentioned it does some kind of memoization? how does that work. 15:32:19 It's not really. 15:32:33 It's just floating the shared data outside the lambda so that it's shared. 15:32:44 It's just related. 15:33:31 under what conditions does that occur. 15:33:37 When you do it. 15:33:43 >_> 15:34:11 I can't explain to you how to take advantage of sharing in a vacuum detached from the fact that you don't really understand the lazy evaluation model, sorry. 15:34:37 are you sure about that? what do you think I don't understand? 15:34:49 I don't know, but you think seq has side-effects 15:34:57 So you clearly misunderstand /something/ 15:35:17 Everything is side-effectful at the GHC level. Observing a value mutates memory 15:35:20 I thought we discovered it was because I didn't use the same definition of side-effect 15:35:32 You might have discovered that 15:35:46 Unfortunately any definition of side-effect like that is contradictory with your observed viewpoints as Sgeo points out 15:37:09 I suppose seq could just be considered a language primitive. 15:37:14 Here we go again 15:37:16 -!- Ngevd has joined. 15:38:14 It has well-defined denotational semantics, and can be implemented operationally with no trouble at all (evidence: GHC) 15:38:31 Hello! 15:38:32 So it's as "special" as any other Prelude function or whatever 15:38:48 hmmmmmm 15:38:54 elliott, but can it be implemented without having implemented seq first? 15:39:13 null can be defined without null, just with pattern matching 15:39:34 Sgeo: Good luck trying to define the entirety of Haskell without relying on a few primitives. 15:40:24 Ints, Chars, (actually not Chars), IO stuff 15:40:29 Not sure what else needs primitives 15:40:33 seq :: a -> b -> b 15:40:33 -!- iconmaster has joined. 15:40:34 seq = let x = x in x 15:40:37 good prelude function 15:40:41 newtype Int = Int Bool Bool Bool ... thirty one Bools 15:40:48 kallisti: Oh snap, evidence by GHC implementation! 15:40:52 I can prove SO MUCH about Haskell in that way. 15:41:00 For instance, the function arrow (->) is impure, as evidenced by the definition of IO. 15:41:01 elliott: is that the actual implmenetation? 15:41:03 No. 15:41:08 Read the comment at the top. 15:41:34 so then it's not like "any ther Prelude function" 15:41:37 +o 15:41:38 newtype Bool = Bool (a -> a -> a) 15:41:40 Sgeo: Anyway, things like defining data constructors etc. are primitives; seq just happens to be a value 15:41:56 You could also implement seq in terms of some other primitive, say ($!) 15:42:16 kallisti: You're quoting GHC source code, your argument has no applicability to Haskell the language whatsoever in the first place. 15:42:25 elliott: what is my argument? 15:42:27 Isn't ($!) defined in terms of seq? 15:42:37 kallisti: I have no idea, it's too stupid to work out. 15:42:48 `log parts and the composites are 15:42:49 Ngevd: You could make ($!) the primitive and define seq as (id $!). 15:42:55 True 15:42:56 2012-01-07.txt:11:17:47: if we say that the parts and the composites are both classed as objects, and that we can only perform operations on objects, and that all operations have equal weight, then there is the tradeoff that group operations are faster but clumsier 15:42:56 if you think my arguing is "lol this is why seq has side effects" then you're wrong. 15:43:34 i realized that this is referring to the rules of lambda calculus contrasted with whole lambda calculus programs 15:44:28 elliott: I was simply saying that seq is not like "any other Prelude function" because it has a special implement as a primitive. 15:44:44 kallisti: Int (+) is also implemented as a Primitive in GHC. 15:44:47 yes. 15:44:53 However you can implement (+) on Ints yourself. 15:45:05 So your argument is really fucking stupid, it's "one implementation does it this way so I'm too dumb to imagine any other way". 15:45:05 not as efficiently though, right? 15:45:14 Oh! Efficiency! The definition of a language. 15:45:27 elliott: ....I'm not even making an argument about seq being a side-effect, dude. 15:45:35 Seriously, the fact that GHC defines this way does not mean that is somehow specially related to . 15:45:43 kallisti: You're the only person who's said "side-effect" in like the last 20 messages. 15:46:24 so the question is, how many 1's of unary lambda calculus is required to have a haskell interpreter... ahh.. if only one could know 15:46:24 elliott: seq is a primitive of the language. therefore, it's not a side-effect. 15:46:33 God this is really stupid shut up about seq 15:48:03 such a number must exist :D 15:48:55 elliott, with primitives: data type definitions including data constructors and the full type system, pattern matching, guards, what in the Prelude cannot be defined in terms of those primitives 15:49:10 seq 15:49:19 Sgeo: Don't know/care, especially because it's irrelevant 15:49:30 Doubly especially because it'll encourage kallist 15:49:31 i 15:49:37 encourage me to do... what? 15:49:44 elliott, actually, I think my question is partially kallisti's point 15:49:44 I am not even arguing anything 15:49:47 Maybe. 15:50:17 kallisti: No, you're doing the thing where you just say stupid things continually and reply to people who try and explain why you're wrong while adamantly insisting you're not actually engaging in any kind of disagreement. 15:50:31 I literally just made a statement about a particular thing you said about seq being like any other Prelude function. other than that I've said "well I guess seq is a language primitive" 15:50:52 therefore I'm wrong. 15:50:54 about everything 15:50:56 or something. 15:51:29 an argument where there was none. fun. I'm going to go do something else. 15:52:06 Good god. 15:58:07 !perl `ls 'stuff'` 15:58:10 ​/bin/ls: cannot access stuff: No such file or directory 15:58:19 `run perl -e '`ls 'stuff'`' 15:58:24 ls: cannot access stuff: No such file or directory 15:58:25 `run perl -e '`ls q(stuff)`' 15:58:28 sh: Syntax error: "(" unexpected 15:59:07 `run perl -e '`ls q/stuff/`' 15:59:11 ls: cannot access q/stuff/: No such file or directory 15:59:27 `run perl -e '`echo 'hi'`' 15:59:31 No output. 15:59:45 `run perl -e 'qx(echo q(hi))' 15:59:48 sh: Syntax error: "(" unexpected 15:59:51 ? 16:00:02 `run perl -e 'qx{echo q{hi}}' 16:00:05 No output. 16:02:48 -!- nooga has quit (Ping timeout: 240 seconds). 16:10:04 -!- elliott has quit (Remote host closed the connection). 16:19:50 so I've come to the conclusion 16:19:55 that I'm completely incapable of copypasting something into emacs. 16:20:36 I thought I knew how but it's not working :P 16:20:44 and... suddenly it works! 16:21:44 that I'm completely incapable of copypasting something into emacs. <-- middle mouse button? 16:21:51 if you are in X that is 16:22:20 I generally don't use the ctrl-v/ctrl-c buffer outside stuff like gimp 16:22:36 I have no idea how you access that in emacs 16:24:58 I don't even know how to /type/ in emacs 16:25:40 Ngevd, uh it is easy just hit the keys on your keyboard 16:26:40 emacs is a really nice editor. Of course it has some flaws, but I find it generally have less flaws than other editors. 16:27:37 (of course that depend on what I'm doing, I tend to use other editors for some specific languages, or for some specific tasks) 16:30:25 what are the benefits of levenshtein coding over regular binary coding? 16:31:07 Vorpal: you have to use C-y in emacs 16:31:10 but it wasn't working for some reason.. 16:31:14 kallisti, heh 16:31:43 or.... 16:31:46 C-y uses the same buffer as selected text in X 16:32:07 does levenshtein coding mean that in one series of 0s and 1s you can encode multiple integers? 16:32:28 thats amazing 16:42:26 it is? 16:42:59 -!- Ngevd has quit (Read error: Connection reset by peer). 16:45:23 also i don't think it means that 16:45:27 -!- Ngevd has joined. 16:46:17 itidus21: wat 16:46:33 !perl `echo 'hi'` 16:46:34 No output. 16:46:37 !perl print `echo 'hi'` 16:46:37 hi 16:47:07 coping from wiki 0101100 = 0 1 2? :D 16:47:19 [0][10][1100] = 0 1 2 16:48:41 0000 = [0][0][0][0] = 0 0 0 0 16:49:14 [10][10][10][10][0] = 1 1 1 1 0 16:49:14 bash really 16:49:15 really 16:49:20 really needs perl quote-like operators 16:49:24 but... perhaps what i am doing wrong is wording my statement 16:50:19 well herp derp yes, the levenshtein code is a code, so you can stick integers in a sequence and decode uniquely. 16:50:58 sorry about that 16:50:59 but you can also just encode sets of integers in an integer and use a single codeword 16:51:44 :-? 16:51:51 in fact it's even a prefix code, another such code is coding n to 0^n1 16:51:53 Not just any code, a prefix code. (Also why is "prefix code" and "prefix-free code" the same thing nurrrr?) 16:52:23 its weird how all of this is obvious to you guys 16:52:26 fizzie: please don't restate my lines. that doesn't make you sound smart. 16:52:40 You were just TOO FAST for me. 16:53:02 But that's all right, "it's no shame to be fast", like we say here in Finn land. 16:53:05 i mean you must have taken math as a hobby rather than a school thing 16:53:14 itidus21: i've had a lot of this stuff on courses. from the coding perspective and the combinatorics on words perspective. 16:53:24 math is my profession 16:53:39 not sure that's a word though 16:53:42 You could even go as far as to say oklopol eats math for breakfast. 16:53:59 profession is a word 16:54:06 I eat little hoops of wholegrain, covered in chocolate for breakfast 16:54:15 i'm just wondering if it's as general term for job as i think it is. 16:54:22 combinatorics however is probably not what you intended 16:54:28 but might be a word 16:54:32 no, i meant combinatorics on words 16:54:51 which has almost nothing to do with combinatorics 16:55:27 2. (5) profession -- (an occupation requiring special education (especially in the liberal arts or sciences)) 16:55:37 -!- derdon has quit (Remote host closed the connection). 16:55:42 math doesn't require any sort of education 16:55:52 So it's just your occupation. 16:55:57 jobulation 16:56:13 Tribulation. 16:56:55 OED's definition just says you need to know some stuff, not get an education. 16:56:58 "An occupation in which a professed knowledge of some subject, field, or science is applied; a vocation or career, especially one that involves prolonged training and a formal qualification. Also occas. as mass noun: occupations of this kind." 16:57:19 "More widely: any occupation by which a person regularly earns a living." 16:57:22 well i suppose you need to know some stuff 16:58:00 itidus21: do you have a university degree yet? 16:58:10 no 16:58:25 have you considered getting a university degree0 16:58:27 ? 16:58:51 i am living in a weird kind of dire strait... 16:59:11 the world has defeated me from every angle 16:59:32 well i'm aware of that, i felt the question was orthogonal enough 16:59:57 success is mostly an illusion 16:59:57 fizzie: how many phd's do you have? 17:00:28 more time is spent discussing the rules of chess than playing chess 17:00:39 the actual pieces are like a distant memory 17:01:13 my mom is extraordinarily inefficient at walking up and down the passageway here at 4am 17:01:24 its like she takes the maximum walking path 17:01:54 well that's an np-complete problem so she might be smarter than you think. 17:03:00 well actually certainly not 17:03:28 well depends on what you mean by maximal 17:03:29 uhm.. ok what she does is.. she doesn't queue up tasks at locations.. instead she goes back and forth between locations 17:03:35 but maybe the edge problem is more natural 17:04:10 but the only reason this bothers me, is that my brothers hearing is too good.. 17:04:22 and everything makes him angry 17:04:37 i see, i see 17:04:47 i don't have brothers 17:04:48 and part of him blames my mom for all that is wrong in his life which he kind of admits once 17:05:13 has he considered blaming himself? 17:05:33 so.. to me.. its like when my mom makes noise, she is hitting a hornets nest with a stick 17:05:38 although she has the right to 17:05:49 well.. he bought 2 books.. 1 about anger, 1 about shame 17:06:01 shame? 17:06:02 so, he means well on some level 17:06:06 yup 17:06:12 why is he ashamed 17:06:23 i dunno.. and probably dangerous to ask him :D 17:06:37 awesome family you have there 17:06:45 nah its not so bad 17:06:49 if only you were 18 and could move away 17:06:55 okay 17:07:00 a lot of my problems is in me though 17:07:15 I've got a nice round number. 17:07:15 that i am basically the cause of my problems 17:07:32 i have trouble with everyone i meet since i was child 17:07:34 fizzie: which number? 17:07:45 -!- derdon has joined. 17:07:48 itidus21: is it because you keep telling them that you suck and they get tired of it? 17:08:01 have you considered letting them find out on their own? 17:08:17 -!- Ngevd has quit (Quit: Goodbye). 17:08:34 Zero, the roundest number. (Well, I suppose that's a matter of definition.) 17:09:04 It's true 17:09:15 You can't round it down to the nearest 10^n! 17:09:26 It's already all rounded! 17:09:41 and 1 isn't? 17:09:45 oklopol: part of what i have become now involves telling people how i want them to see me.. i can't just stop it 17:10:07 itidus21: you cannot stop it even with new people you meet? 17:10:41 my behaviour is basically uniform 17:10:43 it's certainly understandable not to be able to change your role amongst people you already have a history with, but new people are a chance to modify yourself. 17:11:09 i think i may be cursed 17:11:29 sounds likely. 17:12:17 i have become refuse of society 17:12:22 sometimes my hands start bleeding uncontrollably and i hear a choir of angels that tells me to kill myself and everyone around me. 17:12:33 so i have a hunch i know how you feeel 17:12:34 *feel 17:13:33 the way it works is the weaker someone is, the more severely is the punishment if they stand up for themselves 17:13:40 what does it mean to be refuse of society 17:13:47 since in a very subtle way, it is like a class war 17:14:06 stand up for themselves? i have no idea how that concept applies to modern society. 17:16:21 oklopol: he means he's literally trash from society. 17:16:24 stand up to who? my family? my friends? my coworkers? 17:16:36 this is who i have to stand up to day to day? 17:16:43 how can it work? 17:16:49 yeah and i'm not sure what you mean by that 17:16:58 why should they be the enemy? 17:17:09 are they telling you to do things? will they hurt you if you don't? 17:17:37 how can someone stand up to everyone? 17:17:52 kallisti: like someone's poop that learned to talk? that would be impressive. 17:18:06 itidus21: what is "standing up to someone"? 17:18:33 i never quite understood 17:18:57 thats how society works... the ones in real trouble are the ones where their closest humans have turned against them 17:19:35 err, if someone turns against you, you walk away from them? 17:20:23 surely i can't be the only one 17:20:30 i bet you aren't 17:20:54 an undercurrent becomes established 17:21:14 well at least my dad wasn't abusive alcoholic 17:21:24 so.. i see that on tv shows 17:21:27 it is for some 17:21:48 he was in his own words( :-P ) perfect 17:22:05 :t Map.! 17:22:06 parse error on input `Map.!' 17:22:18 :t Map.(!) 17:22:19 Not in scope: data constructor `Map' 17:22:21 :t (Map.!) 17:22:22 Couldn't find qualified module. 17:23:02 but, when my father died.. i slowly learned the world is a very lonely place 17:23:11 my dad was a bit of an abusive alcoholic. i didn't really mind. 17:23:59 -!- derdon has quit (Remote host closed the connection). 17:27:54 -!- sebbu2 has joined. 17:28:12 if the world feels like a lonely place, your friends probably suck 17:28:36 yep 17:28:58 :-) it wasn't their fault 17:29:03 you should try kallisti for instance, he's a great friend 17:29:05 -!- sebbu has quit (Ping timeout: 244 seconds). 17:29:19 well true, so maybe you can let them live. 17:30:00 the first guy.. his father was some kind of abusive.. his mother divorced.. the older brother, in 2nd grade i was told would steal his mothers rings and make him take the blame for it 17:30:35 i do not know what else happened to him 17:30:51 and that still somehow magically affects his life? 17:31:01 * kallisti is the best friend ever. 17:31:01 i will never understand people 17:31:24 no.. i knew him in 2nd grade :P 17:31:40 oh okay. 17:33:33 another guy, divorced parents again... living with his dad who had a string of failed relationships.. i ended up at the same school as him for people who were having trouble with school for some reason or other 17:33:43 i dunno the full story of him 17:34:26 second guy had .. endless stream of girlfriends.. then finally had a baby.. ended up leaving it apparently 17:34:45 i dunno 17:34:55 i have spent a long time with such weird people 17:35:37 and since i don't argue back, fight back.. eventually things always leads to abuse 17:35:58 physical abuse? 17:36:16 any sort 17:36:19 No; "FFS iti would you *please* shut up for once" abuse. 17:36:55 well your life certainly sounds interesting. 17:37:01 but you should really stop bragging about it 17:37:22 how do you expect to keep living our perfect lives after that. 17:37:41 i have to leave and be an asshole somewhere else, see you later :) 17:39:48 since my father died, the motivation to program has started to dwindle.. hard to explain the deep rut.. withholding all my energy.. 17:40:00 :t curry 17:40:01 forall a b c. ((a, b) -> c) -> a -> b -> c 17:40:12 :t uncurry 17:40:13 forall a b c. (a -> b -> c) -> (a, b) -> c 17:40:16 have you considered math, it's like programming but better 17:40:25 clearly they are the same thing 17:40:38 now.. you run along :D 17:40:41 you'd think 17:40:42 programming is more like a subset of math. 17:40:49 she has to brush her hair or something 17:40:53 the subset that's mostly concerned with computable things. 17:41:02 so i have another 20 min 17:41:08 ahhhh 17:41:10 women 17:42:36 so, theres combinatrics and lambda calculus right? 17:42:45 and they are effectively capable of the same things right? 17:43:00 um 17:43:04 ^combinatorics 17:43:19 combinatorics is like... counting things 17:44:03 I'm sure more interesting stuff happens in advanced combinatorics, but the introduction to combinatorics is always stuff like "how many poker hands are three of a kinds" and that sort of thing. 17:44:12 women 17:44:12 so, theres combinatrics and lambda calculus right? 17:44:15 The Combinatrix. 17:44:21 :o 17:44:24 Phantom_Hoover: ... 17:44:42 thats probably what i was thinking 17:44:43 Combinatrix and Lambda Calculus. 17:45:37 "In the theory of computation, a diversity of mathematical models of computers have been developed." hmm.. 17:45:43 itidus21: combinatory logic and combinatoric are rather different things 17:45:44 now that I've allowed elliott to pollute my program with typeclass magic I can't make sense of these type errors. 17:46:08 *s 17:47:11 combinatory logic is taking a subset of lc where you can only use some fixed set of functions, which are usually named, say s and k. 17:47:53 combinatorics is where you say a mugglative set is a finite set with additional structure blah and then you ask how many mugglative sets exist 17:48:11 heh mugglative 17:48:16 so many fun words. 17:48:33 unfortunately i don't think that's an actual term in math 17:48:36 and blah isn't either 17:49:04 mugglative blah-theory 17:49:10 there is a concept called sex entropy though, have i mentioned 17:50:17 no. 17:50:26 sounds fun. 17:50:35 -!- sebbu2 has changed nick to sebbu. 18:09:16 -!- MSleep has changed nick to MDude. 18:17:22 @hoogle Ptr a -> IO a 18:17:22 Foreign.Storable peek :: Storable a => Ptr a -> IO a 18:17:22 Foreign.Marshal.Alloc free :: Ptr a -> IO () 18:17:22 Network.Socket.Internal peekSockAddr :: Ptr SockAddr -> IO SockAddr 18:23:45 -!- kallisti_ has joined. 18:25:16 -!- kallisti has quit (Ping timeout: 252 seconds). 18:32:06 @tell elliott do you think using Ix and switching elemFromEnum to an array implementation would be faster or slower than using Map? or does an Ix instance basically require the same kind of lookup code? 18:32:06 Consider it noted. 18:33:41 -!- Klisz has joined. 18:43:17 -!- PiRSquaredAway has changed nick to PiRSquared17. 18:43:22 -!- kallisti_ has changed nick to kallisti. 18:47:52 -!- sebbu2 has joined. 18:47:52 -!- sebbu2 has quit (Changing host). 18:47:52 -!- sebbu2 has joined. 18:48:52 -!- sebbu has quit (Ping timeout: 240 seconds). 19:03:17 -!- nooga has joined. 19:14:29 -!- Ngevd has joined. 19:14:41 I've just had an idea for an esolang! 19:14:59 A mixture of lambda calculus and the Copenhagen interpretation of quantum mechanics! 19:15:48 BUT WITHOUT QUANTUM MECHANICS! 19:15:55 So, lambda calculus 19:16:13 Hmm... 19:16:20 It could be a functional extension to ORK... 19:18:12 There is a magic box called Trevor. 19:19:56 When the first thing is put into Trevor, Trevor is to turn the first thing into a magic box called Jean such that when the second thing is put into Jean it is turned into the first thing. 19:20:42 Trevor = const 19:20:44 :) 19:21:52 Of course, I know not enough about Ork at all.. 19:29:55 -!- yiyus has quit (Ping timeout: 240 seconds). 19:31:03 -!- Ngevd has quit (Ping timeout: 276 seconds). 19:41:23 -!- Ngevd has joined. 19:43:24 -!- yiyus has joined. 19:43:46 so what is a function? i feel like a jackass asking this again 19:43:52 Hello 19:44:01 is there any deep intuition of what a function is? 19:44:20 A function is a subroutine that returns a value 19:44:41 lol 19:44:55 hmm 19:45:07 In some languages, in other languages it is THE DIFFERENCE BETWEEN LIFE AND DEATH 19:45:20 so if you use church numerals to encode back and forth between arabic numerals and church numerals 19:45:44 Can you reprhase that? I don't quite get what you mean 19:45:48 can you use lambda calculus to write.. say.. ummm 19:45:53 well... 19:46:12 suppose you have some number like 555 19:46:18 and you want to square it 19:46:38 then you could find an encoding of 555 in lambda calculus 19:47:26 which i understand is like succ(succ(succ(zero))) with 555 succ 19:48:05 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 19:48:11 and then.. does there exist a lambda calculus expression for squaring a number.. which you could put next to your 555 19:48:11 That is the method of creating the Church numeral 555 that is the most simple 19:48:23 \n f.n (n f) 19:49:03 > let square = \n f -> n (n f) in square (ap (.) (join (,))) (+1) 0 19:49:03 Occurs check: cannot construct the infinite type: a = a -> b 19:49:15 Haskell doesn't like this 19:49:27 and.. then you take that result.. and convert it from a church numeral.. 19:49:40 back to arabic numerals 19:50:11 is such a thing possible for any function one might find in a library such as c's math.h? 19:50:44 With an appropriate representation for, eg, fractions, negative numbers, etc. 19:50:45 Yes 19:51:06 Of course, I know nothing about math.h, and very little about C 19:51:11 lol 19:51:16 hummmmm 19:52:44 Does anyone here play Sopio? 19:53:27 the whole process of course seems kind of longwinded if you consider the shorthand of 555 x 555 = 308025 .. but i figure theres better ways to store a number based on what you said etc 19:55:06 > ap (.) (join (.)) (+1) 0 19:55:07 3 19:55:10 like, at some stage, someone must kind of agree that computation based on strings of binary digits is more efficient than church numerals 19:55:28 but then again.... maybe it will prove to be otherwise 19:55:33 @pl (\x y -> z) 19:55:34 const (const z) 19:55:35 Yes, church numerals is unary, not very efficient 19:55:48 For large numbers 19:56:10 Hmm... 19:56:30 Now I'm going to make LC things for church lists of booleans 19:56:44 so, it seems each scheme has a unique strength to it 19:58:13 decimals are easy to compute with by hand 19:58:23 binary is easy to compute with for a computer 19:58:57 Decimals are only easy to us because we are used to them 19:59:11 And we can count on our hands 19:59:33 church can be performed by a computer and allows numbers to be used in lambda calculus 20:01:00 what i mean by performed is we are saved the burden by a computer 20:01:42 and i assume that almost always optimized into binary 20:05:14 -!- Phantom_Hoover has joined. 20:05:36 Ngevd, they do have another advantage over binary too for humans: I'm pretty sure I heard somewhere that we can only keep track of a limited amount of "units" in our short term memory. We can group stuff (like when you read out a telephone number to someone) to reduce several bits of information to one unit. Using binary would probably be less efficient there. I may be wrong about that last thing though. 20:06:07 You're probably right 20:06:13 well.. its not just vs binary 20:06:22 Also, I'm going to suck at TF2 now. 20:06:23 Bye 20:06:27 Ngevd, I'm pretty sure I wouldn't be able to remember my telephone number in binary :P 20:06:30 so i got to thinking 20:06:50 there could be an operation on a number where you do something to a number and it's reverse 20:06:51 There's not so many good reasons to favour 10 over 16, though. 20:06:52 itidus21, anyway binary is useful for computers because it keeps the electronics simple. 20:07:06 fizzie, indeed. I'm not saying decimal is optimal 20:07:14 just that binary isn't for a human. 20:07:24 Vorpal: plurality of numeral encoding is revolting 20:07:28 60 is comparatively common among human civilizations 20:07:29 itidus21, eh? 20:07:32 itidus21, what? 20:07:39 Vorpal: plurality of numeral encoding is great 20:07:43 Ngevd, ah yes, the Babylonians used that, right? 20:07:50 Vorpal, so I believe 20:07:50 itidus21, you mean there are many bases? 20:07:54 itidus21, or what? 20:08:01 more than bases even 20:08:05 well sure 20:08:11 there are an infinite number of bases anyway 20:08:24 so anything else doesn't matter unless it is uncountable 20:08:25 i mean like say.. church numerals, electronic binary numerals, arabic decimal numerals 20:08:39 itidus21, why did you call it revolting? 20:08:49 because of the topic 20:08:54 Ngevd, anyway I think we should count using gray code. :D 20:09:20 godel numerals which i wouldnt know 20:09:51 itidus21, what is the topic then? 20:10:04 Official revolting channel of the frequent stupid topic change plurality, the Prequel: The Attack of the Nerds | http://codu.org/logs/_esoteric/ 20:10:09 ah 20:10:30 -!- ais523 has joined. 20:10:34 I thought you meant because of the topic of the discssion 20:10:37 discussion* 20:10:40 but so yeah.. so i was thinking like func(2012) = 2012 + 2102; func(2012) = 2012 x 2102; func(2012) = 2012 - 2102; func(2012) = 2012 / 2102 20:10:41 rather than because of the channel topic 20:10:43 ais523, hi 20:10:50 yeah.. it was ambiguous and weird of me 20:11:04 hi 20:11:23 itidus21, also those definitions of func are incompatible with each other 20:11:28 I've actually spent most of the time since I was last online asleep 20:11:34 true.. 20:11:40 for a 24-hour period, I was awake for only about 3 hours or so in the middle 20:11:42 i don't know what to name them 20:11:45 and maybe a fewm inutes at each end 20:11:56 i don't know if such an operation is common 20:12:52 ais523, ouch 20:13:23 like ... func_blah1(12345) = 12345 + 54321; func_blah2(12345) = 12345 * 54321 20:13:32 ais523, anyway I tried both the java.nio stuff with one thread and java.io with many threads and I have to say I find the async IO a lot more intuitive and easier to deal with. 20:13:43 ais523, yet it seems people prefer the thread approach? Why? 20:14:01 Vorpal: because it means that things that should be independent, actually are 20:14:12 or to put it another way, a round-robin scheduler written by hand is not ideal for every application 20:14:43 i was basically wondering if by taking a number and it's reverse as being 2 operands instead of 1, that you could compress the number 20:14:59 with an extra bit of info saying whether to do this operation 20:15:51 ais523, a) They are not independent connections, they interact, so they aren't independent. b) true, but it isn't like this is computational expensive. I'm not going to gain anything from SMP here. Probably I'll lose quite a bit if the threads end up on different CPUs due to the large amount of working with shared resources, that also need to be syncronized. 20:16:22 well, in that case you have an unusual use pattern, and your solution might actually be best 20:17:19 ais523, indeed, the only independent part is really the packet parsing, and that is quite trivial. Since it is a game server (and a small world) the threads all interact on the same shared state once the parsing is done. 20:17:42 also turn based 20:18:25 http://sprunge.us/dDgO hi someone complain about this code. 20:18:41 ais523, btw erlang does have a form of a sync IO, it is kind of unusual though, it is based on message passing 20:18:45 async* 20:18:46 so like f(int a,bit b) = { if b == 0 return a; else return a * reversed_digits(a); } 20:19:32 -!- Zuu has quit (Ping timeout: 252 seconds). 20:20:20 I'm still not sure if I want to use the (File, Rank) coordinate system. 20:20:29 ais523, basically you get a message to the process that tells you a socket is ready for IO, then you read like normal. (There is also a form that sends all the data as messages, but that is not recommended unless the rate of packets is rather low) 20:20:53 Vorpal: hmm, that exists in Linux too 20:20:59 you can request a SIGIO when data's available 20:20:59 better yet func(5.0) = 5.0 x 0.5 = 2.5 ... yeesh this is absurd 20:21:39 -!- Zuu has joined. 20:22:05 ais523, well, erlang has quite a bit more advanced message passing than plain signals. I believe you actually get the first packet of data (and a flag for if there is any more) when you put it in the trigger-once mode I described. 20:22:40 or func(a^b) = a^b * b^a 20:23:15 ais523, anyway for linux that sounds rather inefficient. Unless SIGIO has a payload saying which fd it was. 20:24:12 Vorpal: yep, it can have a payload 20:24:21 although you have to specifically request one, probably for backwards compatibility 20:24:26 heh 20:25:41 * kallisti wonders if doing map lookups on each access is worth the trouble of having a continguous 64 byte representation of the portal chess game state. 20:25:56 it's certainly memory efficient. 20:26:07 -!- Zuu has quit (Ping timeout: 252 seconds). 20:26:31 ais523, in general erlang networking is unusual. I don't know any other high level language with built in support for SCTP for example. Or that has it's own DNS resolver that it uses if the OS doesn't provide one. 20:27:11 (I have no idea what sort of systems the latter was meant for) 20:27:21 microwaves 20:28:52 something that doesn't have an OS. 20:28:58 hah 20:29:06 Erlang is basically a standalone mini-OS. 20:29:15 kallisti, might be for some sort of embedded target. Erlang runs on vxworks for example. 20:30:13 kallisti, also I know other environment that transparently lets you send an open file descriptor to another computer and have it work properly :P 20:31:07 Haskell should get library support for that kind of stuff. 20:31:09 (might not necessarily be efficient though, but iirc you can tell the VM about nfs mounts and such so it can make use of shared files. 20:31:37 kallisti, also hot-swapping currently executing code :P That might be more annoying in haskell. 20:32:00 I'm familiar with that one. 20:32:05 it takes a bit of effort to get that working. 20:32:23 their framework thing is kind of weird. 20:32:29 in erlang or in haskell? 20:32:36 erlang 20:32:41 you do need to provide code if the state representation changed 20:32:45 yes 20:32:55 obviously 20:33:13 Haskell solution: write perfect code that never needs to change 20:33:49 kallisti, but apart from that if you use the built in behaviours (such as gen_server) it is trivial 20:34:13 kallisti, anyway I wrote my own module doing this once where gen_server, gen_fsm and so on weren't suitable. It was quite easy 20:34:28 I couldn't really make sense of their documentation on those. 20:34:34 you just use the proc_lib module 20:34:39 I recally being very confused at the time of reading. 20:34:56 also hi everyone: complain about my Haskell 20:34:59 http://sprunge.us/dDgO 20:35:00 oh and sys I believe 20:35:09 kallisti, about gen_server? 20:35:10 oklopol: complain 20:35:24 Vorpal: the whole thing. I don't remember the name of it. they gave it some weird name. 20:35:29 kallisti, eh, basically you implement a callback module and gen_server provides the event loop and such. 20:35:30 their library thing. 20:35:49 kallisti, err they gave their db library a weird name, is that what you mean? 20:36:05 I think so. 20:36:09 kallisti, mnesia? 20:36:13 also hi everyone: complain about my Haskell 20:36:14 I never used it 20:36:15 but I recall gen_server being part of like some standard erlang pattern that had a weird name 20:36:19 or something. 20:37:04 Sgeo: I can only assume you're writing a huge reply about how terrible my code is. 20:37:07 this is good. 20:37:08 kallisti, well you generally put your gen_servers in a supervisor tree, to allow error-recovery if a process crashes. 20:37:14 kallisti, no, I'm not 20:37:15 but that isn't really weird 20:37:26 I thought people thought you were asking them to complain about Erlang 20:37:34 wat 20:37:38 how does that even happen 20:37:40 Sgeo, no? 20:38:30 it's currently the best portal chess implementation in the world. still in the early alpha stages. 20:38:37 kallisti, anyway erlang is quite nice. Sure there are some issues with it, but nothing major enough to make me dislike it. 20:38:53 -!- Zuu has joined. 20:38:57 kallisti, it is also the only one :P 20:39:05 Vorpal: I recall the line seperators being annoying, but I'm sure I'd get used to it. 20:39:11 oh that 20:39:20 yeah that annoyed me for like the first week or so 20:39:25 I'm used to it now 20:39:34 @src lines 20:39:34 Source not found. And you call yourself a Rocket Scientist! 20:40:11 if I profile later and find that I need some more speed in my indexing function then I might rewrite that general Enum-maker thing that elliott wrote with some hardcoded arithmetic. 20:41:15 -!- DCliche has joined. 20:41:58 honestly it's not much at the moment. Just a definition of the game board, code to set up the board's initial configuration, an indexing function, and a map function. 20:44:51 -!- Klisz has quit (Ping timeout: 268 seconds). 20:46:13 the physical version of the game should use actual mirrors and penlights :P 20:46:31 except that nothing in the game actually corresponds to a mirror 20:46:39 Hello 20:46:43 oh right.. just portals 20:46:46 cool cool 20:47:07 something or other just disregard my comment 20:47:21 In that case, it should just use actual portals. 20:47:40 incidentally does a pen light create a beam as it bounces off a mirror? 20:48:14 pen laser might be the term 20:48:38 disregard that also......... 20:48:54 itidus21, I would suggest you do not look at the reflection of a laser. 20:49:45 -!- Guest554115 has changed nick to Guest554116. 20:49:59 would it bounce off neatly like a >| ? 20:50:14 Ooh, I recall the safety instructions on the physics labs. There was a list of the different gruesome ways lasers of different wavelengths mess up your eyes. Like, if it's infrared, the eye-closing reflex won't happen, and it'll boil some stuff, and so on. 20:50:26 fizzie, heh 20:50:33 I don't recall lasers even being involved in any of the tasks. 20:50:34 yes like usual in mirrors 20:50:42 itidus21, ^ 20:50:58 itidus21, so you would get pretty much the same result as looking straight into a laser 20:51:04 itidus21, which is obviously bad 20:51:20 i meant looking on from the side 20:51:40 well you wouldn't see any beam anyway unless the air was dusty 20:51:51 Or if it's bright enough. 20:52:09 Well, okay, not if it's really non-dusty and non-humid. 20:52:14 fizzie, I don't think you can ever see a laser beam passing through a transparent medium? 20:52:15 ok suppose someone has just slammed a bag of flour on the ground yet remembered to keep the mirror clean 20:52:24 fizzie, maybe if it turns the air to plasma? 20:52:32 -!- oerjan has joined. 20:52:36 but then you have other problems 20:52:48 itidus21, eh. No idea 20:52:50 and somehow you bounce a laser off this mirror, through flour 20:52:57 do you think you would get a bounce? 20:52:58 "good luck" 20:53:00 Vorpal: Well, no, but "air" in most places isn't absolutely free of particles. 20:53:03 ok :D 20:53:27 fizzie, well yes, but is it usually enough to actually see the laser? 20:53:30 Vorpal: Anyway, it's got molecules in it. 20:53:41 Vorpal: "Higher-power and higher-frequency green or blue lasers may produce a beam visible even in clean air because of Rayleigh scattering from air molecules, especially when viewed in moderately-to-dimly lit conditions." 20:53:44 this evening's morbid discovery: there is apparently a small bird hanging from the neighbor's flag. 20:53:49 fizzie, ooh, cool 20:53:51 ok i understand the point here.. light is only visible when it is reflected off something 20:54:28 "Such pointers, particularly in the green-light output range, are used as astronomical-object pointers for teaching purposes." 20:54:31 err rather 20:54:34 itidus21, light not hitting your eye is not visible :P 20:54:49 -!- Ngevd has quit (Read error: Connection reset by peer). 20:55:08 itidus21, and if a laser pointing away from you isn't reflected off something it isn't going to hit your eye 20:55:32 (sorry, i still don't have a camera.) 20:55:46 oerjan, what about your cell phone? 20:55:57 neither does that. 20:56:05 oerjan, also is the bird dead? 20:56:16 Or just "hanging out"? 20:56:30 Vorpal: deep frozen, if i judge by the sound effects of its hitting the flag pole. 20:56:40 oerjan, how does it stay up? 20:56:50 oerjan, rather than fall to the ground? 20:57:13 it looked like the end of the flag had twirled around it a bit 20:57:41 i guess its claws got stuck to it 20:57:55 ah 20:58:04 oerjan, so not a rope around the neck then? 20:58:25 it was a little hard to see in the dark, but it looked like a birdy shape 20:58:46 oerjan, I meant a rope around the neck of the bird... 20:58:46 tail and head visible 20:59:12 (hm hanging wouldn't work on birds, they could just hover to avoid it killing them) 20:59:13 no... i'd guess bumping into the flag pole would tend to do the killing 20:59:32 due to the wind 20:59:39 oerjan, I'm surprised, birds bumping into windows and such doesn't tend to kill them. Hm. 20:59:57 It doesn't? 20:59:58 Vorpal: i've definitely seen a bird killed by bumping into a window 21:00:01 doesn't tend to die* 21:00:07 Sometimes they do die from that. 21:00:25 in fact it was a pretty eerie omen when it happened, just before my mom died 21:00:51 Sgeo, no? I seen various small birds eating old fermenting fruit lying around, getting drunk, flying into a window, fall down, lie around for a few minutes and then get up 21:00:58 oerjan, ouch 21:01:47 what is rönn in English hm 21:01:54 ah: https://en.wikipedia.org/wiki/Sorbus_aucuparia 21:02:00 Sgeo, usually those fruits ^ 21:02:34 very sour fruits. 21:02:36 "Window collisions kill as many as 100 million birds every year in the United States, more than every other cause of death (including outdoor cats, cell phone towers, and wind turbines) combined", says a newspaper. (Disclaimer: no idea about reliability.) 21:02:49 fizzie, hm 21:03:06 Certainly they don't *always* die from it. 21:03:20 fizzie, never seen a bird die from a window collision, probably does happen though. Maybe the Swedish birds are smarter? ;) 21:04:05 Vorpal: i'd assume it depends on the speed of the bird 21:04:20 So maybe the Swedish birds are just lazier. 21:04:22 if they're drunk, they probably don't do very high speed flying 21:04:40 oerjan: sure? drunk drivers often drive faster then non-drunk drivers 21:04:47 although sometimes they drive very slowly instead 21:04:59 ais523: yeah but they don't have to use their own muscle power :P 21:05:08 Drunk runners don't run so terribly fast, I don't think. 21:05:13 Or straight. 21:06:10 oerjan, I never seen a non-drunk bird collide with windows. Might depend on what sort of birds you have in the area. It is mostly various small birds (house sparrow and other birds of that sort of size) and jackdaws around here. 21:06:21 And iirc jackdaws are rather smart for being birds. 21:07:14 Vorpal: well i didn't _see_ it colliding, i heard a *bang* and found a dead bird afterwards 21:07:59 oerjan, well I never claimed to count actually seen collisions 21:08:08 err to only* 21:08:37 oerjan, I never found any other evidence either for such deadly collisions 21:08:53 has anyone complained about my Haskell yet? 21:08:55 http://sprunge.us/dDgO 21:11:06 Gads, was there a way to stop Google from messing around with outgoing links? The "copy link address" is so useless now. 21:11:39 fizzie, using a firefox addon for that works 21:11:49 customizegoogle iirc 21:11:55 "Meh." 21:11:57 does this mean birds would enter houses often if the windows weren't there? 21:12:16 The commonly accepted explanation is that it's the reflection that confuses them. 21:12:21 They think there's empty space ahead. 21:12:24 is this the sound of people complaining about my Haskell? 21:12:28 fizzie, that doesn't explain water 21:12:31 it seems oddly unlikely that. 21:12:34 -ly 21:12:37 werjiwejrojwetjwoerj owiejr oiwjertoijweoirjwoeitjoiwjeroijwetoijweoirjwoietjiowjer 21:12:46 kallisti, nobody cares? 21:12:55 Vorpal: maybe they think its water 21:12:57 kallisti: the complaints seem to suffer from an elliott deficiency 21:13:05 alas. 21:13:19 Vorpal: Birds have had a rather longer to come to grips with water than vertical sheets of glass. (Also water surfaces are, I suppose, mostly horizontal.) 21:13:27 itidus21, usually birds doesn't try to fly straight into water like that though. Not unless they are like seagulls 21:13:37 (And rarely flat.) 21:13:38 fizzie, true 21:13:55 fizzie, on a calm day you can find flat ponds and such 21:14:20 when we invent proper force fields we can test how birds react to vertical water. 21:14:21 Well, yes. Still, not flat vertical ponds, for the most of the time. 21:14:27 indeed 21:14:34 oerjan: In the interests of science. 21:14:44 ok probably not water 21:14:49 fizzie: precisely! 21:15:08 fizzie, and waterfalls are usually not reflective hm 21:15:53 it is not for us to know 21:16:03 fizzie, anyway normal glass doesn't really let UV-light through right? 21:16:09 and iirc birds can see a bit into UV 21:16:20 Anyway, bird-window collisions are a much-studied thing; cf. http://training.fws.gov/EC/Resources/mig_birds/handouts/Window_Collision_Bibliography.pdf 21:16:25 so I guess it couldn't be that they see through it, but rather it must be the reflection 21:17:00 fizzie, I wonder if normal glass looks like a mirror in UV 21:17:05 Vorpal: it may be different shades of UV that's involved 21:17:06 Vorpal: yeah i have heard of such kind of senses.. specifically in some kind of magic shrimp 21:17:11 ais523, well yes 21:17:12 the ultraviolet range is much larger than the visible range 21:17:20 hm 21:17:22 and I'm moderately sure that at least near UV can get through glass 21:17:43 I just wonder how much of UV that birds can see 21:18:22 ais523, and yes I very much doubt that glass exactly matches the visible range of humans 21:19:28 Vorpal: among other things, it transmits green better than other colors 21:19:37 if you ever look at a sheet of glass edge-on, that will be reasonably obvious 21:19:43 well yes I know 21:19:45 elliott, but can it be implemented without having implemented seq first? <-- no, you need to do a type-specific pattern match and for functions even that doesn't work (and seq in fact forces the semantics of functions to change so \x -> undefined x is no longer the same as undefined, i.e. breaking eta equivalence) 21:20:06 ais523, looks like green with a slight blue tint 21:20:40 ais523, you can't really notice it unless edge on though. Hm. 21:20:45 -!- Zuu has quit (Ping timeout: 252 seconds). 21:20:52 or I guess very thick layer of glass 21:21:13 -!- zzo38 has joined. 21:22:50 http://www.tate.org.uk/research/tateresearch/tatepapers/05spring/images/charman_fig2.gif -- 'a' is claimed to be standard window glass. 21:23:09 fizzie, and b and c? 21:23:38 > fromEnum (Just False) 21:23:39 No instance for (GHC.Enum.Enum (Data.Maybe.Maybe GHC.Bool.Bool)) 21:23:39 arising... 21:23:58 Vorpal: b is specifically "colourless" and "UV-absorbing" sort of glass; c is some sort of UV-absorbing acrylic. 21:24:14 and d is some sort of optimal? 21:24:21 And d is some sort of "ideal" UV filter, yes. 21:24:47 It's in context of UV protection for covered paintings. 21:24:53 ah 21:25:25 probably b is the best solution unless the colours are such that the cut-off of the acrylic doesn't matter 21:26:02 -!- nooga has quit (Ping timeout: 252 seconds). 21:29:18 Let's stop lying about monads please 21:29:27 who did that? 21:30:09 -!- oerjan has set topic: Official revolting channel of the frequent stupid topic change plurality, the Prequel: The Revenge of the Monad | http://codu.org/logs/_esoteric/. 21:30:35 Vorpal: Also apparently one species of bird (European starling) has maximum responsivity at 362 nm, and still 40% at 300 nm, for one of its four types of cone cells, in case you were wondering how far into UV they go. 21:30:54 Vorpal: Also their cones seem to be rather more sensibly distributed than human ones: http://www.webexhibits.org/causesofcolor/images/content/Absorption_peaks.jpg 21:31:05 Something to complain if you happen to meet your own designer. 21:31:12 Giving all the good eyes to some stupid birds. 21:32:28 fizzie, well, I wouldn't want to change atm. It would mess up using monitors so badly. 21:32:32 http://www.webexhibits.org/causesofcolor/images/content/Absorption_peaksZ.jpg -- that's a bit larger. 21:33:02 if we ever meet aliens, they are going to find our color reproduction schemes hilarious 21:33:08 indeed 21:33:31 oerjan, and we would probably find the same about them 21:33:32 But with tetrachromatic vision they could sensibly use a 2x2 color filter pattern instead of going all RG/GB or so. 21:33:56 Three primaries is such an awkward number. 21:34:01 yes 21:34:15 fizzie, I doubt it is arranged like RGGB in our eyes though 21:34:29 fizzie, anyway can't you tile a plane with triangles iirc? 21:34:32 Also four components of 8 bits would fit nicely into a 32-bit quantity. (Though then you wouldn't have room for an alpha channel in there.) 21:34:41 Of course it is always made approximate 21:35:19 Sure you can, but grids are much easier. 21:35:21 If you had a computer display that can change its wavelength then you could make better quality colors, probably 21:35:30 Maybe if we'd also go to triangular monitors? 21:35:33 fizzie, anyway can't you tile a plane with triangles iirc? 21:35:33 ....... 21:36:29 Vorpal: unless the aliens have eyes based on actual spectography 21:36:58 oerjan: Or maybe before we meet them we've just upgraded our eyes too. 21:37:07 Phantom_Hoover, what? 21:37:21 'iirc'. 21:37:22 Phantom_Hoover, it is obviously possible if you consider it. 21:37:33 This is not something you could trivially state to be correct. 21:38:04 Phantom_Hoover, I don't see the issue. I don't deal with tiling infinite planes on an every-day basis. *shrug* 21:38:09 Phantom_Hoover: now prove that you can tile the plane with _any_ shape of triangle >:) 21:38:32 oerjan, rotate it 180°, fit two sides together. 21:38:33 oerjan, that is patently obvious. A proof might take a bit of work though 21:38:45 Fit the resulting parallelograms into strips. 21:38:50 Fit the strips together. 21:38:54 oerjan: Can't you just take the equilateral triangle tiling and transform those triangles? 21:38:59 That too. 21:39:43 In Dungeons&Dragons game my characters are the monster character some character might even have different number of eyes and some have dark vision probabily it is simplest to assume for purpose of game rules, you can everyone see colors in same way unless you are color blind. Otherwise you can make even more confusion than spell/etc! And I have already used relativity for resolving spells in D&D game, now this 21:40:02 I seem to recall something about the "physics" of darkvision somewhere. 21:40:12 > logBase 2 64 21:40:12 6.0 21:40:22 zzo38, that got cut off 21:40:24 fizzie: hm it's not entirely obvious that the transform will give triangles and upside down ones the same shape afterward (of course you can probably choose the transform to give what Phantom_Hoover said) 21:41:17 (which afaict is the same as what i was thinking of) 21:41:23 Vorpal: Did it? My last words were ", now this" but I did not put any period at the end or anything like that sorry 21:41:30 zzo38, ah 21:41:40 -!- Ngevd has joined. 21:42:15 Hello 21:43:25 Olé 21:47:00 -!- Zuu has joined. 21:52:47 > fromEnum False 21:52:48 0 21:53:22 -!- sebbu2 has changed nick to sebbu. 21:57:26 -!- Zuu has quit (Ping timeout: 252 seconds). 21:57:36 test = print (toEnum . fromEnum $ Square (Just (Piece White (Arrow North))) (Just (Loop North Bidirectional)) :: Square) 21:57:37 oerjan: Well, assuming an affine map is enough to turn an equilateral triangle into any sort of triangle, T = [a1 a2 b1; a3 a4 b2; 0 0 1], R = [-1 0 0; 0 -1 0; 0 0 1], RTR = [a1 a2 -b1; a3 a4 -b2; 0 0 1], and that just means if you make the upside-down triangle (Rx), transform it (TRx), and rotate it again (RTRx) it just gets shifted to the opposite direction; that sounds quite obviously congruent with transformed right-side-up triangles (Tx). 21:57:45 *PortalChess> test 21:57:47 Square Nothing Nothing 21:57:50 FFFFFFFFFUUUUUUUUUU 22:02:20 fizzie, hm I wonder why digital cameras use RGBG and such rather than triangular RGB sensors 22:02:36 fizzie: ok congruent but possibly mirrored 22:02:37 BECAUSE THEY LOVE GREEN 22:03:01 or wait 22:03:02 Vorpal: Possibly because people want to get rectangular images? 22:03:40 > quotRem 0 8 22:03:40 (0,0) 22:03:51 > quotRem 8 8 22:03:52 (1,0) 22:03:54 -!- Zuu has joined. 22:04:04 fizzie, eh, you don't need to make the whole sensors triangular, just the elements 22:04:09 * oerjan doesn't really grasp homogeneous coordinates used that way 22:04:16 although i assume that's what it is 22:04:18 you get an uneven edge sure, but I don't see why that is a problem 22:04:52 oerjan, looks to me like the same way they are used in opengl kind of? 22:04:53 oerjan: could you maybe take a look at the Enum instances in this program and see if you see anything strange? http://sprunge.us/ALeN 22:04:59 or is that what you don't grasp? 22:05:22 oerjan: I seem to be getting zeros something. Because my test case becomes Square Nothing Nothing 22:06:57 fizzie: i think i have another intuitive argument that affine transformations do what you say, though. (just assume it keeps the triangle base fixed) 22:07:28 Vorpal: i'm just not very used to actually using them 22:07:36 oerjan, ah 22:08:22 oh I found it 22:08:24 I think 22:08:53 noep 22:09:06 oerjan: Come to think of it, if you nail one point of a triangle to (0,0), isn't a linear map enough to move the other two points anywhere you want, giving you the possibility of getting (right-side-up) triangles of any shape you could want? In that case you wouldn't even need to speak about homogenous coordinates, and RTR = T. 22:09:25 then the midpoint of the base is also fixed, and it's on the line between the remaining vertices of the right-side up and upside down triangles when put on that same base, so those vertices are skewed to each side 22:10:02 fizzie: well yes, linear map = affine map fixing the origin 22:12:25 Vorpal: It might also be easier to manufacture grids. Anyway, they're not all using RGBG; some I think do (or at least it has been suggested) RGBW, where one pixel is transparent and therefore gets all wavelengths, in order to increase the overall light sensitivity of the sensor. 22:12:44 I guess that's a bit analoguous to "three types of cones and then the rods" sort of arrangement. 22:13:13 And there was that one with an "emerald" pixel. :p 22:13:30 (Which I think was named just because it sounds so good in PR literature.) 22:13:39 fizzie, hm 22:13:58 fizzie, so you mean some sort of extra colour humans can't see? 22:14:03 or well, not directly 22:14:12 > quotRem 2 8 22:14:12 (0,2) 22:14:21 > quotRem 10 8 22:14:21 (1,2) 22:14:25 kallisti: in your Enum PieceInfo, you have some toEnum x 's that should be toEnum m 22:14:38 oerjan: yes I spotted that, but it didn't fix anything.. 22:15:06 same output 22:15:10 so that case never happened 22:15:48 I'm guessing it's some minor mismatch of variables somewhere 22:15:56 but I'm tired and can't spot it. :P 22:16:52 Vorpal: Well, they'd obviously transform those to (sRGB or someRGB) pixels in post-processing; but you already need to do that "demosaicing" thing for RGBG sensors since the R, G and B samples are from different locations, and I guess you might get more accurate reproduction with four types of samples, I don't know? 22:17:55 Incidentally, I've sometimes wondered if any cameras, if you turn a "black-and-white" mode on, produces "double-resolution" images. 22:19:21 I seem to recall that dcraw has a flag for that. 22:19:54 "-d: Show the raw data as a grayscale image with no interpolation. Good for photographing black-and-white documents. 22:19:54 -D: Same as -d, but totally raw (no color scaling)." 22:19:59 Right, that small-d one. 22:21:22 kallisti: Enum Piece has a mismatch between fromEnum and toEnum, i think 22:21:25 I suppose for a colour scene you won't get very good "greyscale" images from the individual filtered pixels. 22:23:12 -!- nooga has joined. 22:24:53 -!- monqy has joined. 22:26:39 fromEnum (Piece p i) = (fromEnum p * 21) + fromEnum i 22:26:39 toEnum i = let (d,m) = i `quotRem` 21 22:26:40 in Piece (toEnum d) (toEnum m) 22:26:44 Incidentally, I suppose camera sensor pixel counts count all "subpixels" separately and then reconstruct an image with an RGB pixel at each spatial location, no matter which color channel was sampled at that point? If so, then it's a bit asymmetric w.r.t. monitors, since nobody there advertises the subpixel counts. 22:26:45 oerjan: is the current definition 22:26:50 I think that one is correct. 22:27:05 fizzie, hm true 22:27:54 kallisti: yes that's what i thought 22:28:30 ...still broken. :P 22:28:31 i don't see any other Enum errors, although that's a horrible mess of compile time constants 22:28:38 and, indeed. 22:28:51 I could make bounded instances as well. 22:28:53 :t fromEnum 22:28:54 forall a. (Enum a) => a -> Int 22:28:57 hm 22:29:03 kallisti: you fixed that PieceInfo part too? 22:29:08 :t toEnum 22:29:09 forall a. (Enum a) => Int -> a 22:29:17 oerjan: yes. 22:30:10 @hoogle Piece 22:30:10 package path-pieces 22:30:11 package TimePiece 22:30:15 no... 22:30:19 @src Piece 22:30:19 Source not found. Sorry. 22:30:22 oh well 22:30:39 Vorpal: I have heard of cameras that don't do the Bayer filter thing at all, and instead include three separate CCD sensors and some sort of a prism-splitter thing in the middle. (Apparently mostly in professional video recording use.) 22:30:48 Vorpal: sheesh it's from kallisti's program 22:30:52 oerjan, oh 22:31:01 oerjan, WHY CAN'T HOOGLE INDEX ALL RELEVANT CODE! 22:31:23 fizzie, ah yes I heard about those too 22:31:29 oerjan: you can thank elliott for convincing me to take this route (well, he eventually suggested a cleaner way but this one will be more efficient (blah blah blah profile before you optimize stuff etc)) 22:31:51 kallisti: have you remembered to reload/recompile? >:) 22:31:59 ....yes 22:32:04 unless :l doesn't recompile 22:32:20 use :r just in case 22:32:41 Square Nothing Nothing 22:32:53 I'll try some different inputs 22:32:57 see if I can get something different. 22:32:58 kallisti: do you have a smaller breaking test case? 22:33:19 I can replace either of the two fields with a Nothing and it will still break like that 22:33:37 what happens if you convert a field by itself? 22:34:38 basically, give me the smallest breaking value whose parts don't break 22:34:45 TO THE SCIENCE LAB 22:34:50 WHERE WE EXPERIMENT IN /COMPUTER SCIENCE/ 22:35:20 kallisti, be careful of any lasers 22:35:31 oerjan: well sheesh now that you're forcing me to do thorough testing I can probably just find it myself. 22:35:49 viaInt x = (toEnum $ fromEnum x) `asTypeOf` x might be useful 22:36:13 Vorpal: Oh, and dpreview mentioned this really fancy "Foveon X3" sensor, which works really magically, by sticking three sensors on top of each other and using the fact that light of different wavelength is absorbed at different depths in silicon: http://en.wikipedia.org/wiki/Foveon_X3_sensor -- that's so clever. 22:36:33 ...oh 22:36:38 fizzie, nice 22:37:57 kallisti: you realize that would have been easier than trying to mentally check the code in the first place, right? 22:39:03 oerjan: but testing is tedious 22:39:23 * kallisti logic 22:39:53 -!- nooga has quit (Ping timeout: 240 seconds). 22:40:51 oerjan: it would appear that the smallest breaking test case is the one I started with. 22:41:00 the only one that messes up is the Square type 22:41:23 hmph 22:42:07 kallisti: can i get the actual fromEnum value of your test case? 22:42:22 fizzie, very cool indeed 22:42:36 fizzie, how are the sensors placed in human eyes? 22:42:51 oerjan: all these good ideas... where do they come from? :P 22:42:51 and about how many megapixels do human eyes produce? 22:43:10 Vorpal: I've seen some pictures somewhere; "rather messily", and the resolution depends very heavily on the angle. 22:43:17 hm okay 22:43:22 All in all, it's clear it hasn't been designed by an *engineer*. 22:43:26 heh 22:43:26 Probably an arts guy. 22:43:29 :D 22:43:38 oerjan: oh hmmm 434 22:44:00 > 434 `quotRem` 17 22:44:01 (25,9) 22:44:46 Vorpal: I mean, look at this stuff: http://www.phys.ufl.edu/~avery/course/3400/vision/rod_cone_distribution2.jpg 22:44:58 fizzie, so what about the average resolution? And what about the resolution near the center? 22:45:47 fizzie, so uh in dark humans see best towards the sides? 22:46:04 Yes. But note that it's not very much towards the sides. 22:46:08 Ten degrees isn't all that much. 22:46:15 hm 22:46:17 true 22:46:25 Also you don't really see any colors except right in the middle. 22:46:47 fizzie, there seem to be a few cones towards the sides, just very few 22:46:49 so hm 22:46:52 -!- iconmaster has quit (Read error: Connection reset by peer). 22:47:30 fizzie, I can kind of see that the floor is greenish in the corner of my eye, not sure how much that is because I know what colour it is or because I can see a bit of it 22:47:31 Apparently there's in total some 120 million rods and 6-7 million cones. 22:47:41 oerjan: I fear I will need more than a Word8 to store board squares. :P 22:48:15 fizzie, doesn't that work out to 120 MP for the first (if it was evenly distributed and so on?) 22:48:24 kallisti: btw when you said every subpart works correctly, does that include the Maybes? 22:48:40 oh.. 22:48:40 Vorpal: Yes, that's how many "pixels" there are. 22:48:43 didn't check those. 22:48:45 actually 22:48:46 forgot 22:48:52 fizzie, quite a good resolution 22:48:52 I bet they result in Nothings 22:48:57 or something 22:48:59 let's fine out 22:49:21 kallisti, sounds like a fine idea 22:49:42 kallisti: oh wait, found the bug :D 22:50:13 toEnum for Maybe misses the Just and so recurses down to Nothing 22:50:47 oh... 22:51:10 the joys of overloaded functions. 22:52:41 at least it bothered to terminate by accident 22:53:09 yep seems fine now. 22:53:33 Vorpal: As for the angular resolution at the center, apparently that's somewhere around 0.3 arc-minutes. So you need almost 600 ppi at a distance of 50 cm to get over that. 22:53:46 * oerjan does the victory dance 22:54:03 fizzie, heh 22:54:05 It's an impressive sensor, sure, but it still feels quite haphazardly designed. I mean, with that blind spot and all. 22:54:17 fizzie, that would be one amazing monitor 22:54:38 probably would require a much better GPU if I wanted a reasonably large monitor as well 22:54:42 The blind spot is an especially good example since it's completely unnecessary. 22:55:00 fizzie, yes the nerves could just go straight back a bit instead first 22:55:05 -!- kallisti_ has joined. 22:55:25 Right, and they do in some species. 22:55:30 heh 22:56:18 fizzie, do humans have one nerve per rod/cone or are they combined early on? 22:56:58 -!- augur has quit (Ping timeout: 252 seconds). 22:57:13 -!- kallisti has quit (Ping timeout: 240 seconds). 22:57:18 Vorpal: I think they're summed up; that's part of the angular resolution calculations. 22:57:25 "In the fovea, which has high acuity, these ganglion cells connect to as few as 5 photoreceptor cells; in other areas of retina, they connect to many thousand photoreceptors." 22:57:33 heh 22:57:52 So at the edges you've got both sparser distribution and less nerves. 22:57:59 ouch 22:58:15 fizzie, they managed to keep the noise level down though 22:58:24 unless my brain is outsmarting me again 22:58:35 Brains are good at lying. 22:58:38 I mean, to themselves too. 22:58:47 well yes 22:59:11 fizzie, I wonder how the SNR of the eye compares to the SNR of professional cameras 22:59:46 fizzie, well mostly in the center. You get some very good averaging when you have a thousand samples 23:00:11 -!- nooga has joined. 23:01:28 Well, it does do averaging over time too. 23:02:06 > (21 * 2 + 1) * (8 * 2) 23:02:07 688 23:02:10 hm. 23:02:13 -!- augur has joined. 23:02:28 > (21 * 2 + 1) * (8 * 2 + 1) 23:02:28 731 23:02:32 there we go. 23:03:18 oerjan: really this is code that GHC could autogenerate for product types where the fields are Bounded and Enum 23:03:47 I think it would also be possible for sum types too 23:04:21 as long as they're bounded, yes 23:04:23 PieceInfo is a sum type, for example. it just calculates offsets 23:05:46 kallisti_: you could get autogeneration if you made your product types newtypes over tuples instead >:) 23:06:01 no thanks 23:06:21 are you actually suggesting what's considering bad practice in the Haskell community? shame on you. 23:06:27 *ed 23:07:30 well given that you cannot presently do generalized deriving for something with more than one field... 23:08:05 Square (Just (Piece (White, Arrow North))) (Just (Loop (Northwest, Unidirectional))) 23:08:09 looks good 23:08:10 maybe they could make that an extension 23:08:38 data Test ... = Test A B deriving (...) uses (A,B) to derive from 23:09:02 *would use 23:09:32 ah yes 23:09:43 that would be good 23:09:49 isn't there a way to derive typeclasses yourself? 23:09:52 maybe someone has already done this. 23:10:01 there's some template haskell stuff 23:12:20 one day I should use that for something. 23:12:24 and something based on autogenerating code, which you have to include in the program if not using template haskell 23:14:49 derivationParams :: String -> ([Type] -> (String -> Decl) -> FullDataDecl -> Either String [Decl]) -> Derivation 23:14:54 good type. for a bright future 23:15:12 also: no documentation 23:16:07 TYPES ARE ALL THE DOCUMENTATIN YOU NEED 23:16:29 * oerjan once again finds typo correction inappropriate 23:16:31 well the Either is a possible error message. 23:17:46 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds). 23:20:21 How should I make the Synthesizer datatype in my program? Probably it should have multiple constructors and recursive structues; I have one OctetStream constructor but I should need to have more, to do sine wave, additive, subtraction, I don't know what else, or exactly how they would be functioned 23:21:32 ..what is this for. 23:22:48 for audio signals: Time -> Int and [(Time, Int)] are good 23:25:14 It is for a program I make, in Haskell, to compile MML to S3M. To load samples, there are two ways, one way is from file, other way is from synthesis. 23:25:37 But I don't know exactly how the mathematical synthesis should be represented in this program 23:26:31 you can't just use an audio signal? 23:27:00 in PCM format? 23:27:15 kallisti_, seems a bit dumb for S3M at least (not sure what MML is) 23:27:41 kallisti_, from what I remember S3M is a tracker file format. Like .mod or such 23:28:31 Yes I could use audio signal, and can be loaded from a file, but the way I am thinking, the other way is to use internal audio synthesis from mathematical formula but am unsure how to make it read the token to make a waveform synthesis from that. 23:28:56 * kallisti_ doesn't know anything about these file formats. 23:29:25 It is not needed to know about these file formats to answer my question 23:32:45 zzo38, what is MML though? Another tracker format? 23:32:54 No, MML is music macro language 23:33:01 never heard of it 23:33:04 did you invent it? 23:33:08 No 23:33:27 But there are many variants of MML although some features are common in most of them 23:33:28 it doesn't sound like any actual synthesis is involed. but I don't know what MML does. 23:35:10 zzo38, MML looks like the thing that you can echo to the PC speaker device on FreeBSD to make it play 23:35:13 MML doesn't itself do any audio synthesis; although one of the features I am adding is to enter the codes for creating the audio waveforms based on sine waves or envelopes or whatever 23:35:13 I wonder if it is the same 23:35:49 I ported that code to Linux using the same method as beep to play. Sadly none of of my current computers have a proper PC speaker 23:35:57 those are getting rarer 23:36:06 Vorpal: I don't know about PC speaker on FreeBSD, but it might be. The PLAY command in QBASIC is a simple kind of MML, so is the PLAY in MegaZeux and the #PLAY in ZZT 23:36:37 zzo38, looks like pretty much the same as PLAY in QBASIC according to wikipedia, plus some extensions 23:37:00 What extensions? 23:37:11 zzo38, I don't remember exactly. Check the man page? 23:37:19 I don't have FreeBSD 23:37:27 they have man pages on their websites 23:37:32 OK 23:37:52 I have written a PlayBP subroutine for use in QBASIC, which works the same as PLAY but using Bohlen-Pierce temperaments 23:38:52 zzo38, http://www.freebsd.org/cgi/man.cgi?query=spkr&sektion=4&apropos=0&manpath=FreeBSD+8.2-RELEASE 23:39:16 you can set articulation and such 23:39:37 amusingly the source for that indicates ESR wrote it. 23:40:20 -!- Madoka-Kaname has joined. 23:40:21 -!- Madoka-Kaname has quit (Changing host). 23:40:21 -!- Madoka-Kaname has joined. 23:41:48 http://www.reddit.com/r/math/comments/o6o0o/having_an_existential_math_crisis_help/ 23:41:52 It's itidus21! 23:47:33 Phantom_Hoover, heh 23:49:42 I'm afraid I don't really understand bitcoin 23:49:44 -!- Patashu has joined. 23:52:12 I have modified the MegaZeux code to allow its MML to specify any frequency instead of only the 12-TET notes, by using * and the frequency number to play that one 23:55:33 night 23:57:19 -!- DCliche has quit (Quit: SLEEP, GLORIOUS SLEEP). 23:58:27 > 6.5 * 5 23:58:28 32.5 23:59:13 ya found me 23:59:32 tidus is trying to nut out the meaning of SK 23:59:46 and he is pretty close