←2012-01-06 2012-01-07 2012-01-08→ ↑2012 ↑all
00:01:41 <elliott> Phantom_Hoover: How many times do I have to point out CONTINUOUS TIME
00:02:04 <Phantom_Hoover> And for which C(f(P)) = C(P) + move.
00:02:08 <oerjan> <Phantom_Hoover> 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 <Phantom_Hoover> oerjan, failing to see the problem??
00:04:08 <kallisti> hmmm I think I made a command abbreviation / typo checker that works slightly better than lambdabots.
00:04:19 <elliott> Phantom_Hoover: Well it does mean you can move a bit too quickly...
00:04:24 <oerjan> Phantom_Hoover: like, a pawn on e4 could move half 2 steps backward and half 4 steps forward
00:04:49 <kallisti> 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 <kallisti> otherwise it lists all of the matches.
00:05:16 <Phantom_Hoover> oerjan, of course; what of it?
00:05:21 <oerjan> Phantom_Hoover: O KAY
00:05:34 <Phantom_Hoover> You can take half a piece that way, sure.
00:05:47 <elliott> Phantom_Hoover: And then another, with one left movement and another acceleration.
00:05:51 <kallisti> this means that you can both abbreviate commands as well as have minor typos corrected for you
00:05:59 <itidus21> 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 <itidus21> although there are of course other ways to go about that
00:06:32 <Phantom_Hoover> itidus21, TbH, by now, it's not too hard to understand.
00:06:55 <itidus21> hmm..
00:07:10 <itidus21> i like the dirty version
00:07:26 <itidus21> the impossible to play one
00:08:05 <elliott> It's still impossible to play.
00:08:07 <elliott> Phantom_Hoover: CONTINUOUS TIME
00:08:09 <Phantom_Hoover> That was mainly because I made a hash of the definition.
00:08:19 <kallisti> is there a possible to play version of this game?
00:08:22 <Phantom_Hoover> elliott, it's not elegantly generalisable, I think.
00:08:32 <Phantom_Hoover> kallisti, only one way to find out...
00:09:12 <kallisti> 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 <elliott> Phantom_Hoover: :(
00:09:33 <elliott> kallisti: No.
00:09:44 <elliott> Well, it would be easy if you used the rationals or whatever.
00:09:46 <elliott> But also boring.
00:10:00 <Phantom_Hoover> That post-apocalyptic chess thing is pretty cool now, although it will never see the light of anything interesting.
00:10:29 <Phantom_Hoover> elliott, um, use Coq????
00:10:30 <kallisti> elliott: I think you took me seriously just slightly beyond the reasonable threshold.
00:11:13 <zzo38> 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 <elliott> Phantom_Hoover: What thing?
00:11:22 <itidus21> it seems to be the type of game which there is no board..
00:11:38 <itidus21> and the board is constructed as necessary to help the player determine the game state
00:11:38 <Phantom_Hoover> http://codu.org/logs/log/_esoteric/2012-01-06#171155PhantomHoover
00:11:41 <Phantom_Hoover> Read on.
00:11:42 <zzo38> And yet before, I did not know any purpose of a comonad in the program. But now I do.
00:11:53 <Phantom_Hoover> Up to Vorpal's SCSI fetish.
00:12:59 <zzo38> (=>>:) :: ProgramState -> (ProgramState -> [Token]) -> ProgramState; (=>=:) :: (ProgramState -> [Token]) -> (ProgramState -> [Token]) -> (ProgramState -> [Token]); (<$:) :: [Token] -> ProgramState -> ProgramState;
00:13:38 <elliott> Phantom_Hoover: Maybe I'll just read the whole log?
00:16:00 <kallisti> @m
00:16:00 <lambdabot> Maybe you meant: map messages messages? more msg . ? @ v
00:16:14 -!- MDude has joined.
00:16:47 <itidus21> the chess topics started going berzerk once vorpal said: "* Vorpal imagines chess with HP and headshots"
00:17:45 <zzo38> 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 <elliott> 16:41:08: <kallisti> 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 <elliott> kallisti: the idea is that it encourages competition by encouraging people to innovate
00:19:03 <elliott> and discouraging copying
00:19:58 <kallisti> sure, but a state of perfect competition exists when you have multiple sellers selling the same thing at the same quality.
00:20:01 <kallisti> patents make this difficult.
00:21:28 <elliott> i nominate Phantom_Hoover to explain the idea of a bigger picture.
00:21:51 <kallisti> nope. you're not allowed to get people to explain your points for you.
00:21:55 <kallisti> unless I get someone too
00:21:58 <elliott> 17:09:02: <Phantom_Hoover> (All the school computers have Halo because.... I don't know.)
00:22:00 <kallisti> we can have a proxy debate
00:22:02 <elliott> Phantom_Hoover: So they can kick people out for it.
00:22:18 <zzo38> I dislike patents. I think is better not patented, and not patented you can still competition, innovation, unrestriction, etc.
00:25:38 <elliott> 17:20:44: <fizzie> 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 <elliott> fizzie: That was impressively quick.
00:25:43 <kallisti> elliott: I suppose if there's always innovation then the patent system does not produce monopolies.
00:26:05 <kallisti> but it does restrict competition / create a barrier of entry
00:26:57 <elliott> 17:28:25: <fizzie> 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 <elliott> 17:28:38: <fizzie> +23 is pretty much room temperature, though.
00:26:57 <elliott> 17:28:40: <Vorpal> fizzie, I had an old sempron that idled at 28 C
00:26:57 <elliott> 17:28:50: <Vorpal> when it was like 17 C inside
00:27:04 <elliott> fizzie: My CPU idles BELOW ROOM TEMPERATURE.
00:27:06 <zzo38> kallisti: Yes I agree it does restrict competition and other thing too
00:27:06 <elliott> With AIR COOLING.
00:29:20 <kallisti> oh I misread lambdabots code. my bot and it do the exact same thing..
00:30:43 <elliott> Good to know yours will suck at typo-corrections then
00:31:06 <kallisti> I tried applying weights but... it's hard to determine how they interact with one another.
00:32:03 <kallisti> elliott: oh also it checks identification on bot admins which makes it immediately better.
00:32:32 <zzo38> 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 <elliott> 17:32:52: <Vorpal> anyway is there any realtime chess I wonder
00:34:06 <elliott> yes
00:34:14 <elliott> i dont have a link though
00:34:26 <zzo38> Yes there is a lot of chess variants, there is some kind of realtime chess
00:34:35 <elliott> 17:35:15: <kallisti> Vorpal: FRP maintains a sample-independent abstraction that logically resembles continuity.
00:34:42 <elliott> kallisti: that doesn't mean computers are continuous
00:34:49 <kallisti> I would weigh levenshtein distance by distance on a QWERTY keyboard but that makes it non-keyboard-agnostic.
00:34:52 <elliott> frp is carefully restricted to not actually let you do anything non-discrete.
00:34:53 <kallisti> elliott: of course not.
00:35:05 <kallisti> s/would/could/
00:54:41 <oerjan> 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 <kallisti> hmm how difficult would it be to augment the wagner-fisher algorithm to include character swaps as an operation.
00:57:07 <Vorpal> kallisti, remember dvorak and so on
00:57:16 * oerjan thinks maybe he should have flipped g's arguments
00:57:24 <kallisti> for example: help vs. hlep instead of being 2 substitutions this could be 1 character swap
00:57:28 <kallisti> a very common case in typos
00:58:01 <Vorpal> night
00:58:11 <elliott> kallisti: http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance
00:59:40 <kallisti> but... but
00:59:42 <kallisti> there's no...
00:59:45 <kallisti> there's no CPAN module
01:00:54 <oerjan> <elliott> 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 <elliott> oerjan: yeah
01:01:09 <elliott> oerjan: linear temporal logic
01:01:11 <elliott> I think you mean
01:01:41 <oerjan> hm i think it was a slightly different mention
01:02:47 -!- Vorpal has quit (Ping timeout: 276 seconds).
01:03:07 <kallisti> http://search.cpan.org/~ugexe/Text-Levenshtein-Damerau-0.02/Levenshtein/Damerau/lib/Text/Levenshtein/Damerau.pm
01:03:10 <kallisti> oh hi
01:03:38 <oerjan> kallisti: is there a rule 34 variant for perl
01:03:51 <oerjan> if it exists, there's a cpan module for it.
01:03:54 <elliott> if there exists, there's a cpan module containing porn of it
01:03:55 <elliott> mine's better
01:04:00 <elliott> including "if there exists"
01:04:14 -!- iconmaster has quit (Quit: iconmaster is gone!).
01:04:17 <oerjan> O KSY
01:04:30 <elliott> o ksy
01:04:41 * oerjan found it iresponsible to correct typos under the circumstances
01:05:21 <elliott> iresponsible
01:05:29 <oerjan> very much so
01:05:51 <kallisti> 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 <elliott> kallisti: It probably does.
01:06:09 <elliott> Edit distance is a huge pain to calculate :p
01:06:17 <elliott> What if someone does @[GIGANTIC COMMAND]?!?!?!
01:06:28 <kallisti> then they're a jerk.
01:06:38 <kallisti> @23jj3o4jioj4o34509i34509832049834oitjkgjohjgoihjrfoijsdvoihweeoihsdvfoijhweroijwroijweoirjweegoijweogijsdoifjaskldnwiurghoiwehfijajsfoiwrg
01:06:39 <lambdabot> Unknown command, try @list
01:09:24 <kallisti> hmmm for some reason it's not installing.
01:09:59 <kallisti> hmmm it has no makefile. perhaps that's the issue.
01:14:49 * kallisti installs manually.
01:17:50 <pikhq> One doesn't really need a makefile, anyways.
01:18:07 <pikhq> Let's say you've got a single-file C program foo.c. make foo
01:18:08 <pikhq> Bam.
01:18:48 <pikhq> (make, the build tool with domain-specific knowledge that somehow lacks important parts of the same!)
01:19:38 <zzo38> 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 <zzo38> 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 <kallisti> > product []
02:52:23 <lambdabot> 1
02:52:39 <kallisti> @src product
02:52:39 <lambdabot> product = foldl (*) 1
03:05:22 <zzo38> Do you know about digraph categories?
03:10:40 <kallisti> nope
03:10:46 -!- nooga has quit (Ping timeout: 260 seconds).
03:11:55 <zzo38> 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 <kallisti> oh
03:14:44 <kallisti> directed graph
03:14:52 <zzo38> Yes
03:14:57 <kallisti> yes I know what that is. I wasn't familiar with that term.
03:15:02 <zzo38> It is also called "digraph" for short.
03:21:21 <tswett> Isn't the monad for categories one that's over the category of digraphs?
03:21:37 <tswett> 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 <tswett> And I don't remember how monads work, categorically theoretically; I just remember that Catsters video.
03:26:59 <zzo38> 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 <zzo38> 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 <zzo38> Can you please tell me in case I did it wrong?
04:08:25 <zzo38> <CTCP>
04:08:50 <monqy> <CTCP>HI<CTCP>
04:09:06 <zzo38> <CTCP>Hello!!!<CTCP>
04:09:25 <Sgeo> <CTCP>CTCP<CTCP>
04:09:53 <zzo38> clog and iamcal have error message for unknown command
04:23:03 <coppro> <CTCP>SHUT the fuck up<CTCP>
04:31:35 <zzo38> !!!
04:32:46 -!- elliott_ has joined.
04:32:55 <elliott_> sup
04:33:11 -!- elliott_ has changed nick to Guest96751.
04:33:34 <Guest96751> fuck that shit
04:33:46 <Guest96751> fizzie: hi
04:33:50 <Guest96751> kallisti: hi
04:34:34 <Guest96751> kallisti: hi hi hi
04:34:53 <monqy> Guest96751: hi
04:34:57 <Guest96751> hi
04:40:12 -!- Jafet has quit (Quit: Leaving.).
04:41:40 <Sgeo> If MSPA updates (which is looking more and more unlikely), don't expect me to remember to ping you
04:42:09 <Sgeo> Does glogbot log CTCP/
04:42:16 <Guest96751> I AM SO DISAPPOINTED!!!
04:42:18 <Guest96751> im cry
04:42:19 <Guest96751> betray :(
04:42:33 <Sgeo> Apparently not.
04:42:45 <Sgeo> SECRET UNLOGGED MESSAGES MUAHAHAHAHAHHHHHHHHHHHHHHAAAAAAAAA
04:42:58 <Guest96751> Sgeo: see: raw log
04:43:52 <Sgeo> Ah
04:48:40 <zzo38> Raw log includes everything it receives, except for the secret password
04:49:41 <Guest96751> What secret password
04:49:48 <monqy> 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 <shachaf> <CTCP>HEY_EVERYONE_AM_I_LATE? <CTCP>
05:51:10 <augur> well
05:51:11 <augur> so
05:51:19 <augur> ive done what i had been curious about doing for years now
05:51:29 <augur> i build a graph reducing evaluator
05:52:49 <elliott> it
05:52:52 <elliott> took you that long
05:52:57 <elliott> or is this something different from a term rewriting language
05:53:10 <zzo38> Do you know if the things I wrote about monad/comonad of digraph category is correct or is wrong or confuse?
05:53:41 <augur> elliott: oh its completely different
05:54:10 <elliott> ok
05:54:33 <augur> this is a little C program that does reduction of terms-as-structs
05:55:33 <augur> 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 <elliott> Sounds like term rewriting to me.
05:56:22 <augur> well it is, except theres sharing due to using pointers
05:57:00 <elliott> 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 <augur> no, it indeed does not
05:58:11 <elliott> SO HA
05:58:15 <augur> but because its got sharing, you get call by need for free
05:58:16 <elliott> But go on.
05:58:54 <augur> but the cool thing is that its simple enough that you could built the controller directly in a chip
05:59:08 <elliott> See: Reduceron.
05:59:13 <augur> no
05:59:16 <elliott> Yes.
05:59:20 <elliott> It's a graph-rewriting machine in hardware.
05:59:29 <augur> yes, it is, but it has some fancy intermediate language for this
05:59:43 <augur> it compiles LC into a specialized language
05:59:50 <elliott> No.
05:59:51 <augur> this uses the LC /as the machine language/
06:00:02 <elliott> It compiles a sugary Haskell-alike into a term-rewriting language.
06:00:10 <elliott> The latter is what the Reduceron deals with.
06:00:26 -!- MDude has changed nick to MSleep.
06:00:30 <augur> "it compiles LC into a specialized language"
06:00:49 <monqy> by lc what do you mean
06:00:53 <augur> ok so its not pure LC its something modified
06:00:59 <augur> same diff
06:01:21 <augur> the point is, the reduceron doesnt use LC as the machine code
06:01:31 <augur> whereas in principle you could do so with this evaluator
06:01:34 <elliott> augur: OK, you're confused. It doesn't do much to pure LC.
06:01:40 <elliott> The point is that it has pattern-matching, data types, conditionals, etc.
06:01:44 <elliott> That turns into _functional_ term rewriting code.
06:01:52 <elliott> You could just as easily write pure LC-style code at the lower layer.
06:01:59 <augur> yeah yeah anyway thats irrelevant to the point
06:02:09 <elliott> 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 <monqy> ~pure~ lc gives me a bit of spooks
06:02:34 <augur> monqy: you have to get used to church encodings
06:02:47 <monqy> not that sort of spooks
06:02:51 <monqy> alphaconversion sort of spooks
06:02:55 <augur> o
06:02:58 <augur> debruijn!
06:03:04 <monqy> sure
06:03:08 <augur> use your indices!
06:03:10 <monqy> but is it still "pure" then
06:03:10 <elliott> FSVO pure equal to not the original
06:03:52 <elliott> 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 <augur> anyway, im going to muck around with an FPGA simulator to see what i can see :)
06:04:04 <elliott> Hmm, http://emacsformacosx.com/ seems reasonable
06:04:07 <augur> elliott: aquamacs
06:04:13 <elliott> augur: No.
06:04:21 <augur> you asked for the one of the season!
06:04:28 <elliott> The good one of the season.
06:04:31 <augur> o
06:06:35 <elliott> augur: Post your C code already.
06:06:51 <augur> oh i didnt realize you cared
06:07:07 <elliott> 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 <elliott> Yeah yeah, so does everybody.
06:09:57 <augur> http://pastebin.com/DPvpgnL8
06:10:16 <augur> elliott: the point tho is that this is simple enough to design a non-von-neumann architecture with :)
06:10:42 <elliott> Lam?
06:10:44 <augur> watch out for memory leaks. its not designed to be memory friendly.
06:10:48 <augur> lambda!
06:10:53 <elliott> So it's actually just LC, not term-rewriting.
06:10:55 <monqy> lamb
06:11:05 <augur> i didnt say anything about term-rewriting, you did
06:11:05 <elliott> Also you haven't heard of switch statements.
06:11:12 <elliott> You said graph-rewriting, same thing.
06:11:23 <augur> i said it was a graph-reducing evaluator
06:11:27 <shachaf> elliott: Wait, you're running Mac OS X these days?
06:11:28 <shachaf> Excellent.
06:11:37 <elliott> shachaf: Why is that excellent?
06:11:43 <elliott> If you need reassurance, I still hate it.
06:11:43 <augur> shachaf: hes been on os x for forever...
06:11:45 <shachaf> You're finally showing your true colours.
06:11:49 <elliott> augur: No I haven't.
06:11:52 <augur> really?
06:12:00 <augur> ever since ive known you, i think
06:12:11 <elliott> I used it for a bit, then I stopped because it sucks.
06:12:12 <shachaf> But you've never known elliott.
06:12:19 <augur> ahh i see
06:12:21 <augur> well
06:12:22 <augur> anyway
06:13:25 <elliott> shachaf: Can you write me a statically-typed, non-strict term rewriting language?
06:13:57 <shachaf> elliott: Sure.
06:14:06 <shachaf> #!/bin/bash
06:14:11 <shachaf> read
06:14:16 <shachaf> echo SYNTAX ERROR >&2
06:14:18 <shachaf> exit 1
06:14:25 <elliott> shachaf: Excellent.
06:14:36 <shachaf> elliott: If you figure out the right syntax, it does just what you want.
06:14:38 <augur> elliott: how old are you now? 17>
06:14:48 <elliott> 26.
06:15:06 <augur> lets see, you were 13 in 2006, so youre 18 now surely
06:15:10 <augur> at least
06:15:22 <elliott> You are really bad at arithmetic and memory.
06:15:33 <augur> uh
06:15:58 <augur> 2011 - 2006 = 5; 13 + 5 = 18
06:16:05 <augur> give or take, depending on when your birthday is
06:16:21 <augur> iinm its something like november 3 or something
06:16:32 <elliott> I...
06:16:34 <augur> (im almost certainly mistaken)
06:16:36 <augur> but!
06:16:44 <augur> youre within a year of 18
06:16:49 <elliott> It's like you're trying to be as mistaken as humanly possible.
06:16:53 <elliott> And succeeding.
06:16:58 <augur> i dont need to try.
06:17:09 <shachaf> elliott: You're -4, aren't you?
06:17:18 <augur> -4 + 2i
06:17:21 <elliott> (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 <elliott> shachaf: -6
06:17:26 <elliott> I had a birthday.
06:17:27 <augur> ehhh..
06:17:33 <augur> maybe 2007 then.
06:17:35 <shachaf> elliott: What date is your birthday?
06:17:48 <shachaf> I remember when you said you had a birthday but I didn't note it down.
06:17:48 <augur> i knew you within a year of getting to stony brook, possibly within the first few months of being there
06:17:48 <elliott> shachaf: November 37th.
06:17:52 <augur> so late 600 early 2007
06:18:03 <elliott> shachaf: Pls abandon piece of paper with elliott notes.
06:18:04 <shachaf> elliott: Did you read _The 35th of May_?
06:18:06 <augur> november 3, november 37, SAME DIFF
06:18:08 <augur> fosh
06:18:10 <augur> gosh even
06:18:18 <elliott> shachaf: No. Should I?
06:18:21 <shachaf> elliott: Which one?
06:18:26 <elliott> All of them.
06:18:26 <shachaf> elliott: Yes, it's a good book.
06:18:50 <shachaf> OK, how about this proposal:
06:18:52 <shachaf> Stop with the ageism.
06:18:57 <augur> hm
06:18:57 <shachaf> This includes discussing ages.
06:19:15 <shachaf> elliott is a dawg so you have to measure his age in dawg years.
06:19:16 <augur> my earliest logs for this channel are may 2008
06:19:19 <augur> i suppose thats plausible
06:19:32 <augur> 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 <shachaf> Fortunately I'm old now.
06:19:54 <elliott> Were you ever not old?
06:19:59 <shachaf> Yes.
06:20:15 <augur> elliott: how else am i supposed to figure out what david deutsch looked like as a young man?
06:20:25 <augur> if not by looking at you
06:20:46 * elliott is actually David Deutsch.
06:20:50 <augur> :O
06:21:04 <augur> WORLD RENOWNED PHYSICIST DAVID DEUTSCH IN THIS VERY CHANNEL!
06:22:32 <shachaf> 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 <Guest55419> Oh.
07:39:58 <Guest55419> shachaf: You didn't tell me erus` asked that SO question.
07:40:34 <shachaf> Guest55419: I don't know what that SO question is.
07:40:40 <Guest55419> http://stackoverflow.com/questions/8756456/how-to-test-equality-of-recursive-structures
07:40:42 <shachaf> And I don't know much about erus`.
07:40:56 <Guest55419> 01:32:28 <hpaste> erus` pasted “babbys first type system” at http://hpaste.org/56146
07:40:57 <shachaf> erus` is a much better nick than "Guest55419", though.
07:41:03 <Guest55419> Guest55419 is the best nick.
07:41:09 <Guest55419> It's a commentary on the meaninglessness of identity.
07:41:29 <shachaf> Oh?
07:41:33 -!- Guest554110 has joined.
07:41:35 <Guest554110> TAKE THAT
07:41:47 <Guest55419> By the way, the Applicative operators should be called .$ and *$, I think.
07:42:08 -!- Guest554110 has changed nick to Guest554111.
07:42:22 <shachaf> Guest55419: Are you reading #haskell logs?
07:42:23 <Guest55419> Except that ($) should be called something lighter, and be infixl.
07:42:28 <Guest55419> shachaf: Maybe.
07:42:31 <shachaf> Shame on you.
07:42:39 <shachaf> You'll find the places where I mad.
07:42:56 <shachaf> In another channel I even more mad.
07:43:09 <shachaf> 08:14 < shachaf> Approximately half of #haskell ought to be eliminated.
07:43:14 <shachaf> 08:14 < shachaf> I hate everybody.
07:43:18 <shachaf> 08:14 < shachaf> That probably has to do with how I haven't eaten all day.
07:43:43 <Guest55419> Let's rename ($) to (•), (<$>) to (‹•), and (<*>) to (‹•›).
07:44:27 <shachaf> Let's have infixl $, infixl *, ($) = (*) = id
07:44:33 <Guest55419> join ∘ putStrLn • (+) ‹• readLn ‹•› readLn
07:44:34 <shachaf> That's the logical way to do it.
07:44:44 <Guest55419> Objectively nicer.
07:44:52 <shachaf> By the way, my IRC client is racist. Is that thing after "join " a "::" character?
07:45:02 <Guest55419> No, it's the composition operator.
07:45:11 <Guest55419> http://codu.org/logs/log/_esoteric/2012-01-07#074433Guest55419
07:45:13 <shachaf> Oh.
07:45:22 <Guest55419> Although that renders the guillemet-bullet things uglily thanks to monospacedness.
07:45:25 <shachaf> I DON'T READ LOGS
07:45:42 <shachaf> Guillaume's Face
07:45:46 <Guest55419> shachaf: Also, is #not-haskell actually a thing?
07:46:20 <shachaf> Guest55419: Why don't you join it and see?
07:46:38 <Guest55419> It might be bad! It might, say, have people who name themselves after violating rules.
07:46:45 <Guest55419> Or people who sha the chaf.
07:46:58 <shachaf> Name themselves after violating rules?
07:47:08 <Guest55419> 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 <shachaf> Guest55419: Ew.
07:47:54 <shachaf> No cheater in there.
07:48:34 <shachaf> Guest55419: cheater got a job or something, by the way, so he's not in #haskell-blah much either these days.
07:48:51 <shachaf> Guest55419: I was typing, not fair!
07:49:03 <Guest55419> shachaf: Oh, I assumed he'd just stopped bothering us in favour of you guys.
07:49:11 <Guest55419> Good to know the tranquil is global.
07:51:39 <Guest55419> shachaf: I agree that #haskell is crappy.
07:58:19 -!- Guest554111 has changed nick to Guest554112.
07:58:31 <Guest55419> Hi.
07:58:34 <shachaf> Guest55419: But imagine that all the nonsense was gone!
07:58:37 <shachaf> Then it would be good.
07:59:05 <shachaf> kmc has pretty much abandoned it, I believe.
07:59:07 <Guest55419> 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 <Guest55419> *media
07:59:27 <Guest55419> Although I miss out on all the VALUABLE CHAT.
07:59:31 <Guest55419> Those monad tutorial jokes?
07:59:33 <Guest55419> I see none of 'em.
07:59:41 -!- Guest554112 has changed nick to Guest554113.
08:00:24 <Guest55419> 05:17:16 <hpc> there are functors that don't have 'pure'
08:00:24 <Guest55419> 05:17:16 <rostayob> i meant the opposite
08:00:24 <Guest55419> 05:17:31 <rostayob> yes sorry
08:00:25 <Guest55419> 05:17:32 <teneen> hpc: any concrete example?
08:00:27 <Guest55419> 05:17:36 <hpc> i can't think of any off the top of my head
08:00:31 <Guest55419> Oh come on.
08:00:59 <Guest55419> 05:20:05 <teneen> All examples which I know of functors, can be made Applicative by undefined
08:01:07 <Guest55419> shachaf: DYK you can define anything as undefined in Haskell?
08:01:09 <shachaf> teneen has a point.
08:01:13 <shachaf> GET IT???
08:01:19 <Guest55419> HA HA HA HA HA HA no.
08:01:26 <shachaf> As in pointed functor.
08:01:30 <Guest55419> OH MY GOD STOP TALKING ABOUT SET
08:01:31 <Guest55419> GUYS
08:01:32 <Guest55419> GUYS
08:01:34 <Guest55419> (,)
08:01:36 <Guest55419> IT'S SO TRIVIAL
08:01:36 <monqy> Guest55419
08:01:38 <monqy> (,)
08:01:40 <Guest55419> (,)
08:01:43 <Guest55419> smiley
08:01:43 <Guest55419> (,)
08:01:44 <monqy> (,)
08:01:45 <shachaf> Guest55419: MORE LIKE (x,)!
08:01:47 <Guest55419> it's bird
08:01:48 -!- Guest554113 has changed nick to Guest554114.
08:01:53 <Guest55419> shachaf: NO TUPLE SECTIONS FOR TYPES!!! I THINK
08:01:57 <Guest55419> Guest554114: YOU'LL OVERFLOW THE INT
08:02:23 <Guest55419> 05:21:41 <ski> teneen : using that, i think `CoYoneda IORef' is an example 05:22:08 <teneen> ski: but it can be made an instance of Applicative very easily 05:22:15 <ski> teneen : how ? 05:23:34 <teneen> instance Applicative (CoYenda f) where pure x = undefined; _ <*> _ = undefined
08:02:34 <shachaf> Guest55419: THAT SECTION IS CONCEPTUAL
08:02:37 <Guest55419> shachaf: You said half of #haskell should be eliminated.
08:02:39 <shachaf> Guest55419: LIKE (r ->)
08:02:40 <Guest55419> Try 90%.
08:03:21 -!- Jafet has joined.
08:03:21 <shachaf> Guest55419: You should tell teneen that the definition for <*> is too defined.
08:03:29 <shachaf> It should be (<*>) = undefined
08:03:30 <kmc> shachaf, not given up permanently, just yet
08:03:30 <lambdabot> kmc: You have 2 new messages. '/msg lambdabot @messages' to read them.
08:03:38 <kmc> maybe i should /join #haskell only on tuesdays and alternate fridays
08:04:16 <Guest55419> 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 <Guest55419> (NB: Not based on facts.)
08:04:23 <shachaf> There should be a channel where only the cool people from #haskell go.
08:04:23 <kmc> it's more like "it's bad for me to spend 18 hours a day in #haskell"
08:04:24 <shachaf> MAYBE IT EXISTS AND I JUST WASN'T INVITED.
08:04:31 <kmc> maybe it's #esoteric
08:04:33 <Guest55419> shachaf: Maybe it's #esoteric!
08:04:37 <Guest55419> kmc: Thank you.
08:04:38 <zzo38> (,) 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 <shachaf> Well, I wasn't invited to #esoteric.
08:04:45 <kmc> Guest55419, PWN'd
08:04:57 <Guest55419> shachaf: Yes, we were doing so well at the "cool people" thing before you barged in.
08:05:24 <Guest55419> 05:24:41 <rostayob> teneen: but that instance clearly breaks the Applicative laws
08:05:25 <Guest55419> 05:25:44 <teneen> rostayob: which one?
08:05:26 <Guest55419> :D
08:05:40 * Guest55419 is viewing this as an elaborate comedy routine.
08:06:14 <Guest55419> shachaf: Ooh, then we get, on Set having an Ord constraint instead of Eq: <gregATio> 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 <shachaf> Guest55419: To be fair, most of the monad laws etc. are typically stated "modulo undefined".
08:06:41 <kmc> 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 <Guest55419> shachaf: Which gives us horrors like the definition of `evaluate`. :(
08:06:52 <kmc> in anywhere permanent / editable / easily linkable
08:06:52 <shachaf> kmc: Sometimes it's the opposite.
08:06:55 <zzo38> What common questions?
08:06:56 <shachaf> Oh.
08:06:58 <shachaf> Right.
08:07:10 <Guest55419> kmc: A nice thing about SO is that it avoids that problem by definition.
08:07:14 <shachaf> That ehird fellow writes answers on StackOverflow.
08:07:14 <kmc> yes
08:07:23 <Guest55419> shachaf: I hear he's FAMOUS.
08:07:29 <kmc> I think SO is great for common questions, and IRC might be better for deep / open-ended discussion
08:07:37 <Jafet> 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 <kmc> Jafet, but if you don't do it, you end up with #haskell
08:07:55 <Guest55419> But it's understandable, since it'd require about 2x the work to be good at it.
08:08:05 <shachaf> @karma ##c
08:08:06 <lambdabot> ##c has a karma of 2
08:08:26 <Guest55419> 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 <kmc> Guest55419, do you think other media avoid that problem?
08:08:39 <Guest55419> It works if everyone has the same clock speed, though.
08:08:42 <kmc> 'cause I've seen it happen IRL ;)
08:08:49 <Guest55419> kmc: No :) But IRC's quick-fire real-time nature exasperates it.
08:09:02 <Guest55419> Slow media like email even it out because you can't go fast.
08:09:08 <Guest55419> Well, you can, but it fills up everybody's inboxes.
08:09:08 <shachaf> 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 <shachaf> Monad tutorials are the obvious examples but it's a lot more common than that.
08:09:27 <Guest55419> shachaf: I've just read the first two chapters of LYAH! Who wants to read my Haskell tutorial?
08:09:34 <Guest55419> Haskell is purely functional, which means that it can't print to the screen.
08:09:39 <kmc> shachaf, yeah. if we encourage people to put things on the wiki, then we can fix them
08:09:44 <Guest55419> Instead we use GHCi to execute our code, which turns into side effects behind the scenes.
08:09:48 <kmc> but in practice many wiki articles are shite too
08:09:51 <Guest55419> GHCi is written in C/C++.
08:10:01 <Jafet> guest should write a tutorial
08:10:03 <shachaf> kmc: That's true, except that wiki articles tend to end up at local optima.
08:10:04 <kmc> Guest55419, I see you've been taking lessons from shachaf on how to troll me
08:10:11 <Guest55419> NOTE: The following recursive fibonacci program is slower than this iterative C version.
08:10:11 <kmc> shachaf, better than local pessima
08:10:24 <Guest55419> 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 <shachaf> kmc: Hey, I pretty much stopped doing those things when you asked! Didn't I?
08:10:36 <Guest55419> shachaf: No.
08:10:42 <kmc> data D = D deriving (Eq)
08:10:48 <kmc> instance Num D where { fromIntegral 8 = D }
08:10:53 <kmc> (========) = (==)
08:11:10 <Guest55419> 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 <elliott> 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 <elliott> For instance, I am fairly sure the monads-as-containers explanation would get upvoted pretty heavily.
08:12:36 <shachaf> elliott: That's true of IRC too, pretty much.
08:12:44 <shachaf> Except upvotes = visibility = volume of posts.
08:12:59 <zzo38> But, what monads is, is a kind of mathematical structure supporting certain operations following certain laws.
08:13:12 <elliott> 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 <zzo38> Some types that are monads might be containers, but some might have a different purpose
08:13:29 <kmc> 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 <elliott> 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 <kmc> a lot of monads are nicely described this way, though not all
08:13:50 <zzo38> kmc: I think it only apply to some types. Some monad types can be as containers
08:13:51 <elliott> kmc: Yes, fair enough. I should have typed "space suit" instead or similar.
08:13:52 <shachaf> kmc: I think it's harmful.
08:14:02 <elliott> I agree with shachaf though, I don't condone teaching monads like that.
08:14:06 <kmc> 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 <shachaf> At the point that someone wants to "understand monads", at least.
08:14:15 <elliott> It could be useful for developing further intuition about when to apply monads after you know what they are.
08:14:36 <elliott> 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 <kmc> right
08:15:02 <kmc> if you show them ((->) r) then it's obvious that it needn't *literally* contain an a
08:15:04 <elliott> shachaf: Hey, you want to know the real comedy?
08:15:08 <kmc> while showing how it can *conceptually* contain one
08:15:08 <elliott> We're talking about monad tutorials.
08:15:13 <Jafet> 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 <kmc> pie jesu domine, dona eis requiem
08:15:43 <shachaf> @google monads are essentially decorators with method chaining
08:15:44 <lambdabot> http://news.ycombinator.com/item?id=439429
08:15:44 <lambdabot> Title: So monads are essentially decorators with method chaining? | Hacker News
08:15:45 <zzo38> 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 <elliott> shachaf: Um, excuse me, monads are about sequencing.
08:15:55 <shachaf> That's the best explanation of monads.
08:15:55 <kmc> sigh
08:16:03 <shachaf> Oops.
08:16:06 <zzo38> elliott: No only some can be
08:16:10 <elliott> [] 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 <elliott> I heard it on reddit.
08:16:15 <shachaf> Let's go back to the pedagogical discussion. That or data D = D.
08:16:21 <elliott> Yes, D = D is better than this.
08:16:24 <elliott> kmc: Expand.
08:16:30 <kmc> i'm glad you understand the brilliance of my type and Num instance
08:16:45 <kmc> oh noes i wrote fromIntegral instead of fromInteger
08:16:47 <monqy> data D where D :: D
08:16:52 * kmc hangs head in shame
08:16:52 <elliott> ::D
08:17:01 <elliott> kmc: Hey, if you want it to be in Num, it is.
08:17:05 <elliott> Nobody knows what's in Num.
08:17:08 <shachaf> You also forgot Eq.
08:17:08 <kmc> so this is basically the cool kids version of #haskell
08:17:14 <elliott> You can remember about 2/3rds of it at the best of times.
08:17:18 <elliott> shachaf: He derived that.
08:17:22 <shachaf> Oh.
08:17:24 <zzo38> kmc: Sometimes.
08:17:28 <shachaf> Show, then.
08:17:32 <kmc> #esoteric : #haskell :: YOSPOS : SH/SC
08:17:47 <elliott> How did Num even get defined?
08:17:55 <elliott> Like, I want to know how they actually decided which arbitrary subset of methods to include.
08:18:22 <zzo38> Do you know what monads and comonads that a digraph category can have?
08:18:35 <zzo38> I tried to explain but am unsure if it is correct
08:18:42 <elliott> Makes two of us.
08:18:50 <itidus21> . o O ( C : Haskell :: Exoteric : Esoteric )
08:18:59 <kmc> Haskell is the ultimate esoteric language
08:19:06 <elliott> See, only in #esoteric is our Haskell talk punctuated with zzo38 and itidus21.
08:19:08 <kmc> that or C++
08:19:24 <elliott> kmc: Not true, people have actually read the Haskell report.
08:19:35 <elliott> There's at least one well-liked esolang that nobody has read the entire spec to.
08:19:43 <elliott> Now *that's* dictionary-definition esoteric.
08:19:58 <elliott> http://esoteric.voxelperfect.net/wiki/Special:Recentchanges I like how we have multiple spambots editing the main page IN SUCCESSION.
08:20:09 <elliott> Editing each other's spam.
08:22:34 <shachaf> I'm contemplating whether to go to Hac Boston.
08:22:45 <kmc> do it
08:22:57 <elliott> This Hac Boston thing has been talked about for like three years and it still hasn't happened.
08:23:01 <elliott> Boston just can't be Hacced.
08:23:09 <shachaf> elliott: It's in two weeks.
08:25:19 <zzo38> 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 <kmc> O_O
08:27:19 <zzo38> I said that a digraph category with a final object has a Proxy monad but I am a bit unsure
08:27:24 <kmc> ...what are you doing that wants that
08:27:41 <kmc> you are a strange person with strange cares
08:27:47 <elliott> 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 <elliott> But apfelmus wants to keep the API IORef-compatible.
08:28:13 <kmc> "The data structure is analogous to a bank vault, where you can access different bank boxes with different keys"
08:28:15 <elliott> kmc: Basically, it lets you write a heterogeneous map where the type information is stored in the keys.
08:28:15 <kmc> COOL ANALOGY BRO
08:28:19 <elliott> Hey, not my package.
08:28:21 <elliott> http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault.html
08:28:27 <elliott> That's the easiest way to understand the API.
08:29:07 <kmc> *nod*
08:29:18 <elliott> Anyway, you can implement it all given
08:29:20 <elliott> newKey :: IO (Key a)
08:29:27 <elliott> sameKey :: Key a -> Key b -> Maybe (a :=: b)
08:29:32 <elliott> Literally just that.
08:29:51 <elliott> (It's slow, of course, because you're reduced to using an a-list.)
08:30:21 <shachaf> I like "type Vault = Vault RealWorld"
08:30:40 <elliott> http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault-ST.html :p
08:31:03 <shachaf> Yes, yes.
08:32:52 <elliott> sameIORef :: IORef a -> IORef b -> Maybe (a :=: b)
08:32:52 <elliott> sameIORef a b
08:32:52 <elliott> | a' == b' = Just (unsafeCoerce refl)
08:32:54 <elliott> | otherwise = Nothing
08:32:56 <elliott> where a', b' :: IORef ()
08:32:58 <elliott> a' = unsafeCoerce a
08:33:00 <elliott> b' = unsafeCoerce b
08:33:02 <elliott> See, it's easy!
08:33:04 <elliott> Even works with the data a :=: b = Equal { subst :: forall p. p a -> p b } definition.
08:34:53 <shachaf> "unsafeCoerce refl" is pretty good.
08:37:52 <shachaf> @brain
08:37:52 <lambdabot> Now, Pinky, if by any chance you are captured during this mission,
08:37:53 <lambdabot> remember you are Gunther Heindriksen from Appenzell. You moved to Grindelwald
08:37:53 <lambdabot> to drive the cog train to Murren. Can you repeat that?
08:39:13 <elliott> Oh, hmm, I'm not sure that definition of (:=:) actually works for this.
08:39:35 <elliott> Oh, yes it does.
08:41:06 <elliott> @hoogle (a -> Maybe b) -> [a] -> Maybe b
08:41:06 <lambdabot> Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
08:41:06 <lambdabot> Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
08:41:07 <lambdabot> Control.Monad forM_ :: Monad m => [a] -> (a -> m b) -> m ()
08:41:15 <elliott> No, you silly bot!
08:41:24 <elliott> @hoogle [Maybe a] -> Maybe a
08:41:24 <lambdabot> Control.Monad msum :: MonadPlus m => [m a] -> m a
08:41:24 <lambdabot> Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a
08:41:24 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
08:41:34 <elliott> Ah, msum.
08:43:10 <elliott> kmc: shachaf: http://sprunge.us/QMbF
08:44:46 <zzo38> 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 <elliott> Actually Unique is better than (IORef ()) there.
08:46:24 <zzo38> Is this similar to the way you would have done, or not?
08:47:48 <elliott> 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 <shachaf> You should be allowed to pattern match "lookup k (Vault xs) = ... xs" as "(lookup k . Vault) = ...". IT MAKES PERFECT SENSE
08:48:24 <elliott> shachaf: I just wished for that earlier today. In here.
08:48:42 <shachaf> elliott: Sounds like the reverse state monad's been doing some sequencing!
08:48:48 <elliott> :D
08:49:35 <shachaf> elliott: What's the point of using IORef there?
08:49:40 <shachaf> Oh, you already talked about that.
08:49:42 <zzo38> 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 <elliott> 08:44 <elliott> Actually Unique is better than (IORef ()) there.
08:50:13 <shachaf> zzo38: You've crushed my argument completely.
08:50:29 <shachaf> Zanks, zzo38. zzo38.
08:50:51 <elliott> shachaf: Actually, you don't even need RankNTypes: http://sprunge.us/KEhV
08:51:14 <elliott> Although sameKey tells you distinctly less about the types there.
08:51:40 <zzo38> 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 <elliott> shachaf: Can you write a proper statically-typed lazy term rewriting language for me?
08:52:54 <shachaf> elliott: I already did that earlier today.
08:53:00 <elliott> shachaf: It wasn't proper enough.
08:53:00 <shachaf> @let proper = undefined
08:53:01 <lambdabot> Defined.
08:53:11 <shachaf> elliott: Sure it was. It obeys all the proper laws, see?
08:53:22 <elliott> :(
08:53:31 <zzo38> (The <$: and =>>: are pretending that it is a environment comonad)
08:53:44 <shachaf> Aw, there, there, elliott. Don't be sad. I'll write a statically-typed lazy term rewriting language for you.
08:54:05 <shachaf> elliott: What do you want it for, anyway?
08:54:57 <elliott> Because it'd be neat.
08:55:46 -!- DeStRoYeR87 has joined.
08:56:02 -!- DeStRoYeR87 has quit.
08:56:04 <elliott> rip
08:56:07 <elliott> destroyer
08:56:11 <elliott> we will miss you :'(
08:56:13 <monqy> "destroyed"
08:56:17 <elliott> yes
08:56:29 -!- Ngevd has joined.
08:56:51 <shachaf> Aw, kmc visited #not-haskell and I didn't notice.
08:56:58 <shachaf> He didn't get the special elliott treatment.
08:56:59 <kmc> you're the worst channel founder ever
08:57:04 <Ngevd> Hello
08:57:08 <shachaf> kmc: I was kicking everyone else who came in there!
08:57:40 <shachaf> At least the signal-to-noise ratio -- well, I don't know about the ratio, but there was very little noise.
08:59:35 <elliott> 0:0
09:00:12 <shachaf> INFINITE SIGNAL
09:00:22 <shachaf> > 0/0
09:00:23 <lambdabot> NaN
09:00:28 <shachaf> Naan is delicious. QED
09:02:19 -!- Vorpal has joined.
09:02:44 <elliott> 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 <monqy> make it hapen
09:04:17 <elliott> monqy: The problem is all those pesky non-structurally-recursive functions. :(
09:04:28 <monqy> who cares about those
09:05:22 <elliott> Me.
09:06:32 -!- zzo38 has quit (Remote host closed the connection).
09:06:35 <augur> elliott: all functions are structurally recursive over some structure or other! :D
09:06:49 <augur> except maybe the anamorphisms
09:07:05 <kmc> Theorem: delicious naan. Proof. eauto. Qed.
09:07:29 <augur> get out of here with your fake coq
09:08:48 -!- Patashu has joined.
09:09:59 <elliott> kmc: You should end all your proofs with "Admitted.".
09:10:03 <elliott> Then you can never go wrong.
09:10:41 <shachaf> I feel left out for not knowing Coq. :-(
09:11:47 <kmc> get out of here with your 8" purple vibrating coq
09:12:03 <elliott> One day someone will talk about Coq and not make a really boring joke.
09:12:16 <kmc> at least i didn't make a santorum joke
09:12:36 <elliott> shachaf: Coq is like Agda, except the messes of Unicode are replaced by messes of half-sentences.
09:12:56 <elliott> eauto. subst in H. split e'. assert (Q : hy_u r42).
09:13:18 <kmc> the best thing is that H, e', etc. have implicit binding occurrences
09:13:33 <kmc> each tactic can introduce hypotheses with auto-generated names
09:13:35 <elliott> yeah i always used to go back and bind everything explicitly at the end
09:13:36 <kmc> and then you can refer to those
09:13:41 <elliott> because
09:13:43 <elliott> i couldn't cope
09:13:47 <kmc> coq bondage
09:14:00 <elliott> I think we should ban kmc.
09:14:13 <kmc> i think you should k-line me
09:14:37 <elliott> Aye.
09:14:45 <shachaf> I vote Naan.
09:14:46 <monqy> bindage and bondage aren't even the same thing
09:15:01 <shachaf> elliott is moving to Boston, by the way, I hear.
09:15:09 <elliott> shachaf: Stop it, you'll enhungrify me and I'll have to move to Boston.
09:15:11 <kmc> let's have a long, pedantic argument about the difference
09:15:23 <elliott> kmc: Bindage tutorial joke!
09:15:37 <kmc> i would read The S&M Guide to Haskell
09:16:09 <elliott> "IMPROVMENTS" IS NOT A GOOD EDIT SUMMARY
09:16:13 <elliott> WHY AM I REVIEWING THIS CRAP
09:16:25 <kmc> "I MAED IT WURSE"
09:16:33 <shachaf> elliott: Just think of the badges!!!
09:16:48 <shachaf> StackOverflow should give badges at randomised intervals rather than at set milestones.
09:16:53 <shachaf> So you never know. You know?
09:16:57 <elliott> 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 <shachaf> s/badges/points/
09:17:07 <elliott> Badges don't have a cap.
09:17:10 <kmc> we don't need no stinkin' badges
09:17:12 <shachaf> It should be like monster drops.
09:17:29 <shachaf> The people who ask questions are monsters, and you slay them.
09:17:38 <shachaf> Come to think of it, that system might make me feel better about #haskell too.
09:17:39 <kmc> shachaf, you're reusing my reddit metaphor
09:17:43 <elliott> This edit replaces a single occurrence of the word "i" in a question title with "I".
09:17:47 <elliott> Its summary is "Fixed grammar".
09:17:55 <shachaf> kmc: What metaphor is that?
09:17:57 <elliott> The question itself has many more errors, and they're actually grammatical errors.
09:18:17 <kmc> reddit comments are like one of those video games where enemies spawn forever
09:18:20 <kmc> faster and faster
09:18:32 <kmc> you can't win; the only way to win is to quit
09:18:37 <shachaf> elliott: I'LL FIX YOUR GRAMMER
09:18:43 <elliott> "added more tag". Edit adds a signle tag.
09:18:44 <elliott> *single
09:18:47 <elliott> Argh
09:18:48 <elliott> *tags
09:18:50 <elliott> I ruined my entire point :P
09:18:56 <kmc> let's also have a long, pedantic argument about the difference between "grammar" and "syntax"
09:19:12 <elliott> kmc: This is orthography, you illiterate fuck.
09:19:30 <elliott> Or, it might even be typography, I'm not sure.
09:19:46 <shachaf> Man, it's been a long time since I've been involved in a good argument about definitions.
09:19:58 <elliott> shachaf: What IS "is"?
09:20:19 <shachaf> One might ask the same thing about naan.
09:20:26 <shachaf> What ARE breads? We just don't know.
09:20:32 <kmc> naan is pretty easy to make
09:20:38 <kmc> if you have a sourdough culture and a frying pan
09:20:55 <kmc> injera is much harder :/
09:20:59 <elliott> shachaf: I think this Nigel Lambert text-to-speech engine in my head will never go away or stop automatically firing.
09:21:13 <shachaf> kmc: I'm pretty sure sour dough culture is reserved to the east coast.
09:21:25 <kmc> shachaf, San Francisco is world-famous for its sourdough
09:21:27 <shachaf> The culture is very different around here.
09:21:36 <monqy> happy dough culture
09:21:42 <kmc> Lactobacillus sanfranciscensis
09:21:46 <elliott> kmc: Hella dough! Wait, no, that's northerlywards of that isn't it. Fuck you guys.
09:21:48 <elliott> Fuck America.
09:21:51 <elliott> I can't keep up with your bullshit.
09:21:59 <kmc> what
09:22:05 <elliott> You guys move too fast.
09:22:08 <kmc> we all living in america
09:22:21 <monqy> everythings an america
09:22:23 <kmc> america, ist wunderbar
09:22:38 <kmc> sorry that's "amerika"
09:22:46 <elliott> (tm)
09:23:12 <shachaf> I like the city of San Juan...
09:23:26 <elliott> (Pronounced "So What".)
09:24:02 <shachaf> Oh, category theory in #haskell
09:24:12 <monqy> excitement
09:24:13 <elliott> Is that better or worse?
09:24:18 <kmc> widely known for its production of indigo, coffee, sugar, tobacco, and silver
09:24:34 <shachaf> <ddarius> 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 <elliott> Exercise: Append "clearly" to every statement.
09:25:13 <kmc> your exercise is trivial
09:25:17 <monqy> clearly
09:25:39 <elliott> kmc: You failed!
09:25:44 <monqy> clearly
09:25:53 <kmc> do i at least win a goat
09:25:58 <elliott> kmc: No, clearly.
09:26:03 <shachaf> kmc would much rather have a goat than a car.
09:26:08 <kmc> it's true
09:26:19 -!- Guest554114 has changed nick to Guest554115.
09:26:22 <elliott> Goat-car.
09:26:23 <kmc> goats are cheaper
09:26:35 <kmc> http://www.goatclassifieds.com/PriceGraph.php
09:26:49 <shachaf> kmc: Don't they emit more CO₂, though?
09:26:55 <kmc> shachaf, per km?
09:26:56 <shachaf> DO YOU HATE THE ENVIRONMENT
09:27:04 <shachaf> Per year.
09:27:45 <shachaf> Also, goat registration looks expensive.
09:27:50 <shachaf> Way more than car registration.
09:27:58 <shachaf> You probably have to pay insurance too.
09:28:00 <kmc> I MUST HAVE RAINBOW PARENTHESES
09:28:27 <pikhq> Hmm. So I get home at 2:30.
09:28:30 <pikhq> Do I want to sleep?
09:28:41 <pikhq> Meh, not really.
09:29:16 <elliott> @time pikhq
09:29:17 <lambdabot> Local time for pikhq is Sat Jan 7 02:29:01 2012
09:29:36 <shachaf> @time
09:29:39 <lambdabot> Local time for shachaf is Sat Jan 7 12:29:20 2012
09:29:42 <shachaf> WRONG
09:29:46 <elliott> @time finland
09:30:53 <kmc> British Double Summertime would be a good name for a band
09:31:09 <elliott> So many band names, so few bands.
09:31:13 <kmc> ==
09:31:25 <kmc> is there a website where i can share my bandnames with prospective band-havers?
09:32:19 <pikhq> @time elliott
09:32:19 <lambdabot> Local time for elliott is 2012-01-07 09:32:03 +0000
09:32:26 <shachaf> kmc: And then pay you royalties?
09:32:28 <elliott> kmc: /dev/null
09:32:28 <pikhq> elliott: I presume you've been up?
09:32:40 <shachaf> Any band that picks a name using such a website isn't a band worth banding.
09:32:40 <elliott> pikhq: I woke up at 2012-01-07 10:00:00.
09:32:58 <kmc> i'm still waiting for a band named BADNESS 10,000
09:32:59 <pikhq> elliott: Impressive, considering that's in the future.
09:33:27 <pikhq> Unless somehow the UK's *not* on GMT right now?
09:33:37 <pikhq> (I thought daylight saving was the summer, so...)
09:33:48 <kmc> pikhq, maybe in the western hemisphere
09:34:31 <shachaf> I like how kmc accuses other people of being trolls.
09:34:36 <kmc> haha
09:34:38 <kmc> do i?
09:35:05 <shachaf> Don't you?
09:35:06 <shachaf> Greenwich Mean Time.
09:35:17 <shachaf> Apparently Greenwich isn't pronounced like Sandwich.
09:35:26 <shachaf> And apparently it's not moldy.
09:35:30 <shachaf> Nor mouldy.
09:35:45 <monqy> is it mouldey
09:35:47 <pikhq> Yeah, I have to work hard to get myself to do it right, but it's something like Gren-ich, IIRC.
09:35:58 <shachaf> pikhq: Are you going to Hac Boston?
09:36:15 <pikhq> shachaf: No, I am a pitifully broke college student and in Colorado.
09:36:31 <shachaf> kmc: You should buy a ticket for pikhq instead of for me.
09:36:40 <kmc> wait, i was going to do one of these things?
09:36:52 <shachaf> You weren't going to buy me a ticket? :-(
09:37:19 * shachaf will have to walk to Boston now.
09:41:06 <pikhq> Quite a walk, I imagine.
09:41:14 <pikhq> (where are you, anyways?)
09:41:18 <elliott> boston
09:41:55 <kmc> you should hitchhike
09:41:59 <pikhq> Oh, so more "hella-long ride on the T"
09:42:17 <shachaf> pikhq: California.
09:42:27 <shachaf> I *should* hitchhike!
09:42:30 <shachaf> That would be exciting.
09:42:34 <kmc> it would take a while
09:42:37 <shachaf> I've never hitchhiked a long distance.
09:42:49 <kmc> you can ask lexande about it
09:42:58 <kmc> he hitchhiked from sf to canada
09:43:02 <kmc> also from cambridge uk to paris
09:43:03 <shachaf> Who's lexande?
09:43:12 <elliott> He hitchhiked over the sea?
09:43:13 <kmc> a friend of mine since longtime
09:43:14 <kmc> he's in #cslounge sometime
09:43:16 <kmc> yes
09:43:18 <shachaf> Ah.
09:43:18 <kmc> yes he did
09:43:27 <elliott> My definition of "hitchhiking" is car-specific.
09:43:35 <elliott> Did he hitchhike in a car which then went on a ferry or something?
09:43:43 <kmc> a car which went on a train which went through a tunnel
09:43:50 <elliott> OK, I'll grant it.
09:43:50 <kmc> but what you said is also an option
09:43:52 <shachaf> 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 <shachaf> Especially in the US.
09:44:10 <elliott> shachaf: At least you know how to become a murderer now.
09:44:19 <monqy> an especially murderer
09:44:24 <kmc> well in the US if you don't have your own car then you're pretty much a terrorist
09:44:29 <shachaf> elliott: Without even breaking any laws!
09:45:05 <pikhq> shachaf: I find that pretty amusing, considering we're heading down to 60s levels of violent crime.
09:45:35 <pikhq> And people hitchhiked all the time in the 60s, I'm led to understand.
09:46:05 <kmc> don't mind my attorney, he's just admiring the shape of your skull
09:46:22 <monqy> it is a very nice skull
09:46:41 <pikhq> Would make a very nice glass.
09:47:42 <itidus21> 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 <monqy> stranger convenience
09:48:19 <monqy> it's part of the thrill
09:48:21 <kmc> yeah in the 60's the CIA was going around kidnapping and brainwashing people
09:48:32 <monqy> is hitchhiking addiction a thing
09:49:05 <monqy> kind of like skydiving or drugs but
09:49:09 <monqy> more cars??
09:49:28 <monqy> speaking of, is skydiving addiction a thing
09:49:33 <elliott> is sky a thing
09:50:00 <monqy> kind of like hitchhiking or drugs but
09:50:01 <monqy> more sky
09:50:04 <monqy> and diving??
09:50:05 <elliott> ah
09:50:08 <kmc> it's owned by rupert murdoch
09:50:23 <itidus21> monqy: the trouble is that some would say skydiving lacks any utility.. and they might be right
09:50:35 <monqy> i use skydiving to get to work
09:50:48 <pikhq> itidus21: Fun is a form of utility.
09:51:39 <monqy> i use fun to get to work
09:51:39 <elliott> 1440x900 is so much nicer than 1336x768
09:51:46 <kmc> haha
09:52:02 <elliott> mock me and my tiny screens will you
09:52:18 <kmc> it's just funny because i've been agonizing over that difference
09:52:30 <kmc> and decided it wasn't significant ;P
09:52:35 <elliott> you made the wrong choice
09:52:53 <elliott> like i'm always scrolling around and resizing things and shit on the smaller resolution
09:53:03 <elliott> and 1440x900 is just enough to make that irrelevant
09:53:07 <elliott> the higher dpi is nice too
09:53:13 <kmc> yeah
09:53:25 <shachaf> Why are you people using these tiny resolutions?
09:53:28 <kmc> i have a thinkpad x200s and i decided "upgrading" to the x220 would give me basically a slightly worse machine
09:53:35 <shachaf> 1920x1080 is, like, the bare minimum, man.
09:53:35 <elliott> shachaf: I used to think the same thing!
09:53:36 <kmc> except, i broke the lcd on my x200s :/
09:53:45 <elliott> 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 <shachaf> elliott: I use one of those too.
09:53:55 -!- pikhq_ has joined.
09:53:55 <elliott> it's really liberating for some weird reason
09:54:02 <shachaf> 15.6", 1920x1080
09:54:06 <elliott> shachaf: "Without thinking about it" is a low threshold.
09:54:21 <shachaf> I don't think about it.
09:54:28 <pikhq_> elliott: Have you considered getting a 7 year old monitor? Like, 1920x1200?
09:54:29 <monqy> I have, what, 1680x1050? oops.
09:54:29 <shachaf> Maybe that just means I'm slow-witted.
09:54:40 <pikhq_> ... Says I from a 1440x900 monitor.
09:54:44 <elliott> 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 <kmc> thinking is hard
09:54:52 <elliott> pikhq_: That would be rather heavier than my computer.
09:54:57 <elliott> kmc: Agreed.
09:55:03 <shachaf> elliott: On the other hand this is my only computer.
09:55:09 <pikhq_> Leaving computer is hard
09:55:14 <elliott> shachaf: Me too. Well, no, there's the 1336x768 one.
09:55:23 <itidus21> leaving computers is NP hard
09:55:25 <shachaf> I also don't have an external monitor.
09:55:27 <elliott> pikhq_: Go to bed.
09:55:29 <elliott> shachaf: Me too.
09:55:29 <kmc> i have.. five machines hooked up in my room
09:55:35 <kmc> there are good reasons for each one to exist, i swear!
09:55:36 <elliott> My entire life is on this 13" display.
09:55:43 <pikhq_> elliott: NEIN
09:55:43 <elliott> OK, not entire life.
09:55:46 <elliott> But the parts that matter!!
09:56:01 <shachaf> kmc: Enumerate them.
09:56:09 <kmc> really
09:56:17 <fizzie> "1, 2, 3, 4, 5."
09:56:23 <shachaf> fizzie wins.
09:56:29 <elliott> kmc: Are the ThinkPad X-series machines nice, by the way?
09:56:37 <kmc> elliott, very nice
09:56:43 <elliott> 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 <shachaf> Istr. That's a name, isn't it?
09:57:23 <fizzie> It sounds like an assmbly mnemonic.
09:57:33 <elliott> Assmbly.
09:57:34 <shachaf> I think it's a book of the bible.
09:57:50 <kmc> laptop, wireless bridge, desktop, media server, laser cutter controller
09:58:26 <elliott> 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 <elliott> How much crap can Google put in one URL?
09:58:38 <monqy> thanks google
09:58:49 <kmc> what are you getting at sir
09:58:58 <elliott> kmc: You have a computer without a good reason to be a computer.
09:58:59 <elliott> :p
09:59:10 <kmc> elliott, if I owned one of these I would consider it to be a computer
09:59:20 <elliott> kmc: I can disprove that.
09:59:28 <kmc> well, maybe they are dumber than i think
09:59:30 <elliott> There is no possible way one of those causes as much pain and upset as any computer does.
09:59:36 <elliott> Only a computer can do that.
09:59:41 <monqy> wireless bridges are real people so they can't be computers
09:59:45 <kmc> my wireless bridge "computer" provides very little pain and upset
09:59:53 <kmc> it's an old netbook running debian
09:59:59 <elliott> kmc: That just means you're so drowning in computer-related pain and upset you don't even feel it.
10:00:06 <elliott> Try throwing some out of the window.
10:00:11 <kmc> it's required basically zero maintenance since i set it up
10:00:15 <itidus21> 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 <kmc> yeah, you're right
10:00:29 <itidus21> "<shachaf> I think it's a book of the bible."
10:00:30 <kmc> the only way to be sure i'm free of computer-related pain is to replace it all with macs
10:00:37 <elliott> Heck no.
10:00:42 <elliott> That will approximately quadruple your pain.
10:00:47 <fizzie> 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 <elliott> fizzie: That's turning it into a minicomputer.
10:01:05 <kmc> hehe "minicomputer"
10:01:13 -!- pikhq has joined.
10:01:14 <elliott> You could also rip it apart and shove computer parts into it; that doesn't make the original thing a computer.
10:01:15 <kmc> yeah i'm running a vax emulator on my WRT54G
10:01:20 <elliott> kmc: Who isn't?
10:01:29 <shachaf> itidus21: ?
10:01:39 -!- pikhq_ has quit (Ping timeout: 244 seconds).
10:01:40 <itidus21> etymology of bible
10:01:40 <kmc> > map succ "vms"
10:01:41 <lambdabot> "wnt"
10:01:45 <elliott> Wnt.
10:01:45 <shachaf> Would you prefer "scroll of the bible"?
10:01:53 <kmc> how is bibble formed
10:01:57 <shachaf> kmc: HEY THAT ONE'S MINE
10:02:02 <itidus21> i was thinking "book of the book"
10:02:40 <shachaf> itidus21: In particular, a book of the third of the three books of the bible, which is known as "the writings".
10:02:42 <kmc> elliott, anyway, I already had the netbook, so using it thus cost me $0, whereas the devices you linked cost > $0
10:02:47 <kmc> and as i'm unemployed, my time has rather low value
10:03:09 <elliott> kmc: Ohh, you have an even better solution. Throw away *all* your computers, then you won't need the bridge thingy.
10:03:09 <shachaf> That latter sentence isn't really true.
10:03:15 <kmc> haha
10:04:03 <itidus21> one can always reference a book in the bible codex book
10:04:44 <shachaf> I forgot to mention that it was a scroll.
10:05:12 <kmc> but nobody objected to "laser cutter controller"...
10:05:18 <Vorpal> why would you need a bridge? What are you doing?
10:05:27 <Vorpal> kmc, you control a boat with a laser?
10:05:28 <Vorpal> how?
10:05:30 <kmc> accessing the internet
10:05:42 <elliott> kmc: Well, that sounds like it produces significantly more fun than any pain it could cause.
10:05:43 <Vorpal> kmc, well sure but usually most people don't need bridges to do so
10:05:49 <elliott> kmc: Do you ever just feed it a random bitstring to see what happens?
10:05:53 <kmc> no
10:05:57 <elliott> "Maybe the next thing it cuts... will be ME."
10:06:21 <shachaf> kmc: I hear elliott has a bridge to sell you.
10:06:29 <elliott> It's made out of @.
10:06:31 <kmc> Vorpal, my Internet connection is via roommates' wireless router
10:06:43 <Vorpal> kmc, so just connect by the wlan?
10:06:46 <kmc> several of those machines have no wireless hardware
10:06:52 <shachaf> Does kmc know what @ is?
10:06:58 <kmc> shachaf, some nethack shit
10:06:58 <elliott> Does anyone truly know what @ is?
10:06:59 <Vorpal> <kmc> but nobody objected to "laser cutter controller"... <-- please tell me this refers to the boat type known as cutter :/
10:07:03 <kmc> yes
10:07:05 <kmc> it's a boat
10:07:06 <elliott> Yeah, it's some nethack shit.
10:07:07 <kmc> i'm on a fucking boat
10:07:16 <elliott> kmc drives his boat with his computer on his boat.
10:07:22 <Vorpal> elliott, great!
10:07:30 <kmc> you may be interpreting the word "bridge" in a more precise technical sense than i meant
10:07:53 <shachaf> Transatlantic bridge.
10:07:55 <elliott> shachaf: Can you imagine going through life not knowing what @ is?
10:08:08 <shachaf> elliott: No. I cannot imagine it.
10:08:15 <shachaf> The suffering kmc must be undergoing.
10:08:18 <kmc> 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 <elliott> kmc: One day you will be at peace.
10:08:31 <kmc> haha
10:08:37 <elliott> kmc: Peace of @.
10:08:53 <shachaf> elliott: You should write an @ tutorial.
10:08:56 <shachaf> Full of analogies.
10:09:01 <elliott> @ is like an @.
10:09:08 <elliott> The basic operations on @s are @ and @.
10:09:10 <elliott> @ : @ -> @
10:09:11 <shachaf> elliott: A-ha!
10:09:19 <elliott> @ : @
10:09:19 <shachaf> Now we know that what @ expands to starts with a vowel!
10:09:24 <shachaf> Or at least a glottal stop.
10:09:25 <elliott> shachaf: Um, dude.
10:09:31 <elliott> You don't know that.
10:09:34 <shachaf> "an @"
10:09:35 <elliott> It's meant to be an intentionally-bad tutorial.
10:09:39 <elliott> They're not necessarily well-written.
10:09:42 <elliott> Sheesh.
10:09:45 <shachaf> :-(
10:11:48 <kmc> hilarious
10:12:11 <elliott> kmc: Do you seriously not know what @ is?
10:12:17 <elliott> I understand it's cool to deny The Knowledge.
10:12:20 <kmc> yes
10:12:22 <kmc> srsly
10:12:26 <monqy> h
10:12:27 <monqy> how
10:12:31 <elliott> kmc: Okay. You know how computers suck?
10:12:40 <elliott> @ changes all that; with @, they only mostly suck.
10:12:46 <itidus21> apparently @ is "at"... but that would be presumptuous
10:12:53 <kmc> elliott, go on
10:12:59 <pikhq> kmc: @ is basically the embodiment of elliott's hubris.
10:13:04 <elliott> pikhq: No, that's you.
10:13:08 <pikhq> At least, it would be if it existed.
10:13:10 <monqy> @ is a miracle drug
10:13:14 -!- AnotherTest has joined.
10:13:16 <pikhq> *gasp* I don't exist!
10:13:21 -!- AnotherTest has left.
10:13:21 <pikhq> *disappears*
10:13:23 <elliott> AnotherTest: hi, does chocolate still contain sugar?
10:13:26 <elliott> aw
10:13:32 <elliott> kmc: You know how computers are all imperative and ugly and shit?
10:13:42 <elliott> And, like, buggy, and shit.
10:13:44 <elliott> @ changes all that!
10:13:48 <elliott> They're only mostly buggy.
10:14:00 <kmc> go on
10:14:07 <elliott> What, that not enough for you?
10:14:28 <shachaf> elliott: You're not very good at this.
10:14:41 <elliott> shachaf: I estimate that kmc currently harbours 0 negative thoughts about @.
10:15:46 <elliott> kmc: @ is an environment thingy.
10:15:58 <itidus21> shachaf: elliott was just imitating your use of "an @" i think
10:16:06 <elliott> kmc: Mostly consisting of a runtime system.
10:17:15 <itidus21> `pastelog an @
10:17:24 <itidus21> lol..
10:17:37 <elliott> 01:02:28 <MaskRay> is there any good tutorials/blogs on the Store comonad?
10:17:45 <elliott> shachaf: What is it with people and wanting Store comonad tutorials lately?
10:17:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24714
10:18:07 <itidus21> hmm
10:18:34 <itidus21> can someone fix " `pastelog an @ " for me
10:18:42 <elliott> I have no idea why it doesn't work.
10:18:53 <itidus21> ok
10:19:02 <shachaf> `presentelog
10:19:07 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: presentelog: not found
10:19:16 <itidus21> it's probably not caused by a @
10:19:23 <shachaf> `pastelog deep breath
10:19:36 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22681
10:20:06 <shachaf> `pastelog breath
10:20:14 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19658
10:21:29 <shachaf> How do you just look at the logs?
10:21:38 <elliott> http://codu.org/logs/_esoteric/
10:21:47 <itidus21> lol @ <CakeProphet> how does mouthbreathing make your teeth crowded.
10:21:51 <shachaf> How do you search them online?
10:22:19 <shachaf> `pastelog inhale
10:22:26 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21914
10:22:27 <itidus21> i think what shachaf means is, how to overcome [too many lines; stopping] ?
10:23:07 <elliott> You can't.
10:23:13 <elliott> It's there to stop a timeout.
10:23:15 <shachaf> itidus21: Well, ideally I don't want my search to be logged publicly.
10:23:19 <elliott> Tough.
10:23:22 <itidus21> ohh
10:23:23 <itidus21> lol
10:23:27 <elliott> Download the logs yourself if you must.
10:23:36 * shachaf looked up: how to search esoteric logs online
10:23:42 <elliott> You can't.
10:23:50 * shachaf looked up: esoteric goats
10:23:55 * elliott goat
10:24:07 <shachaf> Anyway, I think kmc has lost all interest in @.
10:24:15 <shachaf> Just like you, elliott.
10:24:28 <elliott> :(
10:24:32 <itidus21> `pastelog @
10:24:36 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3499
10:24:55 <elliott> 2003-07-25.txt:03:21:16: -!- andreou changed the modes of #esoteric: +b *!*@bespin.org
10:24:55 <elliott> 2003-07-25.txt:03:25:04: -!- andreou changed the modes of #esoteric: +b clog!*@*
10:24:55 <elliott> 2003-07-26.txt:03:28:36: <andreou> HATE HATE SYSAD@$%!$%!#$!@#$@#NO CARRIER
10:24:56 <shachaf> SamB used to be in here?
10:24:57 <elliott> What.
10:25:01 <elliott> shachaf: Yes.
10:25:05 <elliott> Isn't he a #python guy?
10:25:11 <elliott> I think we had a lot of #python guys in the olden day.s
10:25:12 <elliott> days.
10:25:13 <shachaf> He is?
10:25:17 <elliott> Not necessarily.
10:25:20 <elliott> That was just a random guess.
10:25:21 <shachaf> He's certainly a #haskell person.
10:25:24 <shachaf> Or was.
10:25:24 <elliott> Oh.
10:25:25 <shachaf> SamB_XP
10:25:28 <elliott> Probably just that, then.
10:25:35 <elliott> edwardk has been in here a few times too.
10:25:39 <shachaf> And he's British, so you probably know him.
10:25:43 <elliott> Before he MONOPOLISED THE HASKELLOSPHERE.
10:27:23 <itidus21> `pastelog haskell
10:27:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13599
10:27:52 <elliott> 2005-07-26.txt:07:13:31: <int-e> it's written in haskell, I compiled it using ghc, usage is bf2c < brainfuck-source > c-source. no options.
10:27:53 <elliott> Oh!
10:27:57 <elliott> I wonder if _he_ is the author of that compiler.
10:29:20 <elliott> 12:14:24: -!- andreou has joined #esoteric.
10:29:21 <elliott> 12:20:35: <andreou> erm
10:29:21 <elliott> 12:20:43: <andreou> anyone has halflife/counterstrike serial or keygen?
10:29:22 <elliott> 12:20:46: <andreou> pleeeaaazeeee ;p
10:29:24 <elliott> 12:22:13: -!- andreou has quit ().
10:29:26 <elliott> shachaf: Did you know our channel used to be great?
10:29:53 <shachaf> elliott: You think you've got it bad?
10:29:57 <shachaf> Try #nethack
10:30:30 <Vorpal> shachaf, right now or in general?
10:30:36 <elliott> shachaf: To fully appreciate my statement, /cs info #esoteric and examine the "founder" field.
10:30:58 <Vorpal> elliott, wow
10:31:01 <shachaf> 13:30 -!- Irssi: Unknown command: cs
10:31:08 <elliott> /msg chanserv
10:31:11 <shachaf> Yes, yes.
10:31:11 <Vorpal> shachaf, try /msg chanserv
10:31:11 <kmc> womp womp
10:31:18 <kmc> shachaf, are you sick of #haskell too
10:31:36 <shachaf> kmc: Sometimes.
10:31:44 <shachaf> Not enough to leave it, so far.
10:31:54 <kmc> what are your complaints
10:31:56 <monqy> don't do /msg chanserv
10:32:07 <elliott> It's not going to get any better unless moderation steps up.
10:32:08 <monqy> do /^msg chanserv
10:32:15 <olsner> monqy: what's the difference?
10:32:16 <monqy> but really make an alias for it
10:32:27 <monqy> /^msg doesn't open a new window
10:32:45 <shachaf> But what if I want a new window?
10:32:49 <monqy> then you're bad
10:33:05 <shachaf> 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 <itidus21> `pastelog
10:33:11 <kmc> haha
10:33:14 <olsner> monqy: that's in irssi? ^msg is an unknown command according to my client
10:33:17 <shachaf> Spreading general nonsense back and forth with very little signal.
10:33:20 <monqy> olsner: yeah
10:33:22 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19986
10:33:25 <elliott> OMFG THIS GUY KEEPS PROPOSING
10:33:30 <elliott> "READABILITY IMPROVEMENTS"
10:33:31 <olsner> in any case, chanserv didn't respond anyway
10:33:35 <elliott> THAT INEVITABLY MISUSE BULLETED LISTS TERRIBLY
10:33:36 <elliott> LIKE
10:33:43 <shachaf> That's not always the case, but when the channel reaches a critical mass of nonsense it gets pretty annoying.
10:33:44 <itidus21> what the
10:33:56 <kmc> shachaf, it doesn't seem that bad... any question will get about 8 answers, 6 of which are correct / useful
10:34:02 <itidus21> what the fuck does that mean :D
10:34:10 <shachaf> There's also the general IRC thing where people ask the same questions over and over and over again.
10:34:12 <elliott> shachaf: http://ompldr.org/vYzQ2NA
10:34:16 <elliott> Look at this shit!
10:34:23 <elliott> SOMEONE TEACH THIS GUY WHAT BULLETED LISTS ARE FOR
10:34:30 <shachaf> And people who are bad at asking questions are overrepresented in terms of channel volume.
10:34:46 <kmc> 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 <shachaf> kmc: I thoroughly approve of your efforts!
10:35:11 <elliott> kmc: And crowd-sourced it, and gave incentives for doing so.
10:35:11 <kmc> thanks shachaf
10:35:14 <shachaf> I even made some comments once, if I remember correctly.
10:35:22 <elliott> And called it, I dunno, Fencepost Error.
10:35:23 <kmc> elliott, what incentives do you propose
10:35:25 <shachaf> Going so far as to edit it myself is, y'know...
10:35:26 <elliott> Segmentation Fault.
10:35:30 <kmc> lolz i get it
10:35:42 <shachaf> General Protection Fault
10:36:32 <elliott> A nice way to do it might be basically having a big string -> SO answer mapping.
10:36:48 <elliott> 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 <kmc> elliott, if I get enough points on Stack Overflow, maybe Joel Spolsky will hire me!!!!!!!!!!!!!!!!
10:36:53 <kmc> !!!!!!!!!!!!!!!!
10:36:58 <kmc> !!!!!!!!!!!!!!!123
10:36:59 <elliott> kmc: Then you'd have to work for Joel Spolsky.
10:37:13 <itidus21> `pastelog <
10:37:16 <kmc> elliott, he understands that I value free soda higher than respect or a paycheck
10:37:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20792
10:37:23 <elliott> kmc: Hmm... me too.
10:37:37 <shachaf> elliott: A person in another channel I'm in is StackOverflow user #13
10:37:46 <kmc> shachaf, wow, you're internet famous
10:37:50 <elliott> shachaf: Chris Jester-Young is, like, the worst, man.
10:37:51 <shachaf> kmc: TOTALLY
10:37:58 <shachaf> elliott: Why?
10:38:04 <elliott> shachaf: I dunno, I just keyed in the number.
10:38:09 <shachaf> ...This channel happens to be #stackoverflow.
10:38:10 <olsner> wtf, chanserv's response ended up in the #haskell window
10:38:29 <elliott> olsner: chanserv responses go wherever :P
10:38:33 <elliott> since they're notices
10:38:52 <Vorpal> olsner, in many clients notices ends up in a channel where that person who sent it happens to be
10:38:55 <Vorpal> kind of stupid
10:38:57 <elliott> shachaf: Well *I'm* Stack Overflow user #1097181! Take that!
10:39:04 <Vorpal> IMO they should go into a separate notice tab
10:39:05 <Vorpal> or suc
10:39:07 <Vorpal> such*
10:39:14 <olsner> 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 <Vorpal> I know the issue
10:39:32 <itidus21> 2003-01-19.txt:06:09:05: <lament> yay, nothing at all.
10:39:39 <shachaf> elliott: NOT AS COOL AS STACKOVERFLOW USER "MOMAN"
10:39:41 <olsner> but indeed ChanServ is in #haskell and not in any other freenode channel I'm in
10:40:59 <itidus21> `pastelog http
10:41:03 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24538
10:42:24 <kmc> shachaf, anyway I think the cluefulness of the average #haskell answer is pretty high
10:42:35 <kmc> the problem is more than everyone has their own pet way of explaining everything
10:42:41 <kmc> and they trip all over each other trying to do it
10:42:48 <itidus21> i am quite good at devising `pastelog queries
10:42:55 <kmc> and then get derailed in endless arguments over terminology and teaching strategy
10:43:00 <itidus21> its on my CV
10:43:00 <kmc> of course this is what i did too
10:43:03 <kmc> but i got sick of it
10:43:37 <shachaf> kmc: That's part of the problem, I agree.
10:43:49 <itidus21> :o
10:44:02 <shachaf> Maybe I just call things that aren't my pet theory "nonsense".
10:44:08 <itidus21> `pastelog changed the topic
10:44:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11439
10:44:30 <shachaf> But I don't think it's just that.
10:44:38 <kmc> also the answers are skewed by a heavy dose of politics
10:44:46 <shachaf> Politics?
10:44:56 <kmc> "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 <elliott> 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 <kallisti> elliott: hi
10:45:18 <elliott> But I could be imagining that.
10:45:25 <kallisti> elliott: no that's the impression I've gotten.
10:45:30 <kmc> yeah
10:45:49 <kmc> elliott, do you think the monad tutorial analogies are an example of that?
10:45:55 <elliott> kmc: definitely
10:46:34 <elliott> 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: <X>" and the newbie goes "oh, thanks, I'll read that!" because it sounds more concrete.
10:46:46 <kmc> right
10:46:47 <elliott> I don't know how you could solve that other than punishing linking monad tutorials, which would probably be unpopular.
10:47:07 <elliott> Basically we need to divide people into questioners and answerers and ban answerers who step out of the party line. :p
10:47:20 <kmc> 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 <kmc> and they want to read it way too early
10:48:04 <elliott> 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 <kmc> 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 <elliott> 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 <kmc> and that most of the people who can do the latter don't hang out on IRC
10:49:05 <kmc> that's probably a jerk / elitist thing for me to say, but there you go
10:49:10 <elliott> It's just too large to rely on the fact that most people active are experienced.
10:49:37 <kmc> elliott, so what if you started a new channel, #haskell-fascists, with explicit policies
10:49:39 <elliott> kmc: Hey, my version of that would probably include names. Although that's also the reason I wouldn't say it.
10:50:06 <itidus21> blame allocation is always difficult
10:50:10 <elliott> 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 <kmc> well the hope is to lure the burnt-out veterans
10:50:40 <kmc> first
10:51:05 * shachaf would join such a channel.
10:51:05 <kmc> but i don't think it would work
10:51:10 <elliott> 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 <kallisti> 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 <shachaf> Of course, with me, that's not saying much.
10:51:35 <kmc> i think most people just don't care that much, because they have better things to do with their time anyway
10:51:55 <elliott> kallisti: #haskell doesn't really have a culture any more, beyond the constant bouts of regulars joking.
10:51:57 <kmc> i really don't
10:52:03 -!- Phantom_Hoover has joined.
10:52:09 <elliott> 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 <itidus21> i think one big problem is the internet
10:52:16 <kmc> if i can keep helping people learn haskell with low commitment and low stress to me
10:52:18 <kmc> then i wanna keep doing that
10:52:25 <itidus21> the internet is surely bad for haskell
10:52:36 <elliott> Surely.
10:52:36 <shachaf> I sometimes wonder what brings some of the people in #haskell to #haskell.
10:52:47 <itidus21> haskell programmers probably are best left to code in relative isolation
10:52:53 <itidus21> or at workplaces
10:53:14 <kmc> 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 <kallisti> 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 <shachaf> kmc: Except for over and over and over again in IRC-sized snippets.
10:53:48 <kallisti> elliott: I get plenty of incorrect information from people on #perl
10:53:49 <elliott> kallisti: It's not minor understandings, it's that almost every question turns into a definitions debate.
10:53:58 <kallisti> oh, I see.
10:54:01 <itidus21> 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 <elliott> Which would be OK, if anyone ever conceded, but they don't, because everyone thinks they're #1 enlightened Haskell thinker.
10:54:09 <kallisti> that's happened once with me on #perl as well. it was silly.
10:54:15 <itidus21> or borrowing library books
10:54:19 <kmc> 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 <itidus21> im sorry to bring this to light..
10:54:42 <elliott> kmc: Anyway, I think the situation is simply that IRC can't support effective support communities beyond a certain size.
10:54:47 <itidus21> but irc is not good for learning something
10:54:54 <kmc> yeah, and LYAH + RWH is still maybe half of what you need to know, imo
10:54:55 <kallisti> it's helpful sometimes.
10:55:06 <elliott> 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 <Phantom_Hoover> <elliott> 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 <Phantom_Hoover> Ooh, metadiscussion.
10:55:14 <elliott> Phantom_Hoover: About #haskell.
10:55:38 <elliott> kmc: A real-time format optimised for discussion/learning would be an interesting thing.
10:55:50 <kmc> yeah
10:56:01 <elliott> 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 <kallisti> we could call it "IRC but with more bots"
10:56:13 <itidus21> the false association between haskell and the internet
10:56:21 <itidus21> i think this creates a lot of problems
10:56:25 <elliott> kallisti: I think you really need something like separate discussions.
10:56:37 <elliott> A newbie asking a question should have their answer detached from the monad tutorial jokes going on concurrently.
10:56:52 <itidus21> the usual way to learn is to get a poorly written book on a topic.. read it.. go off halfcocked
10:57:12 <itidus21> 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 <elliott> Then it's the long haul of learning all the APIs.
10:57:43 <kmc> yeah
10:57:48 <itidus21> tutorials are dependant on the internet
10:58:08 <itidus21> maybe the internet is good for learning...... maybe
10:58:09 <elliott> The cycle is a bit longer with Haskell :)
10:58:09 -!- Ngevd has quit (Read error: Connection reset by peer).
10:58:12 <kmc> elliott, that works when the language is just new syntax for another language you already know
10:58:26 <kallisti> elliott: hmmm yes that' a good idea. With a good interface it would be feasible.
10:58:35 <elliott> kmc: Yeah, it's not a general-case thing. But it did get me started with Haskell.
10:59:03 <elliott> 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 <elliott> I'm not convinced you can teach Haskell from the bottom-up.
10:59:33 <itidus21> 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 <elliott> Not to someone who already knows a language.
10:59:41 <elliott> The temptation to analogise is just too much.
10:59:47 * kallisti doesn't remember what he read to understand monads.
10:59:53 <kmc> we need some sort of brainwashing drug
11:00:30 <itidus21> elliott: analogizing isn't that damaging..
11:00:39 <Phantom_Hoover> itidus21, it is with Haskell.
11:00:45 <kallisti> ..the Haskell cult is seeking a brainwashing drug to indoctrinate their fanboys. I knew it!
11:00:53 <elliott> To be honest, just banning chat outright would probably make #haskell better than it is, but it'd be stifling.
11:01:03 <kmc> what do you mean by 'chat'
11:01:05 <Phantom_Hoover> You don't know Haskell, so you don't know the nature of the problem.
11:01:39 <elliott> 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 <Sgeo> Clearly, itidus21 is a burrito.
11:01:53 <kallisti> 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 <kmc> i really like that people in #haskell will talk about the language without having some concrete question at hand
11:02:04 <kmc> interesting stuff comes out of that discussion
11:02:12 <elliott> Yes, that's why I said it'd be stifling.
11:02:26 <kmc> the endless injokes (like the one Sgeo just made) are probably a group-identity thing
11:02:35 <itidus21> i think its well meaning but misguided views about the learning process.. you can't just drop analogies
11:02:39 <kmc> Haskell is the cool kids club in programming, of course
11:02:41 <elliott> I think you could solve a good chunk of the issues #haskell has simply by having a discussion organisation system.
11:02:43 <itidus21> its like trying to drop subvocalization in order to speed read
11:02:47 <kmc> and so we all want to indicate we're in the club
11:03:02 <elliott> 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 <elliott> kmc: I mostly just do it for cheap jokes.
11:03:40 <elliott> I don't really want to be thought of as a Haskell programmer, although that probably doesn't stop anyone.
11:03:48 <kmc> elliott, you're special
11:04:01 <elliott> kmc: You forgot shachaf! He also does it for the cheap jokes.
11:04:10 <kmc> shachaf is also special
11:04:16 <elliott> #haskell-special
11:04:19 <kmc> yes
11:04:23 <kmc> was about to say that
11:04:41 <kallisti> "functor? I 'ardly knew 'er."
11:05:07 * kallisti good joke. original.
11:05:15 <itidus21> 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 <Sgeo> counter-intuitive?
11:05:36 <kmc> mathematical?
11:05:48 <shachaf> Wait, I'm special?
11:05:50 * shachaf wasn't following.
11:05:52 <elliott> kmc: Now would be a good time to note that itidus21 doesn't know a single lick of Haskell.
11:06:00 <itidus21> farmers usually don't know math
11:06:01 <kmc> i gathered as much
11:06:11 * kallisti esteemed member of joke-clique
11:06:13 <kmc> itidus21 seems a bit like zzo38 to me
11:06:16 <kallisti> joklique
11:06:18 <kmc> from small info
11:06:20 <itidus21> that is because you have to basically sit at a table for years before it can occur to you
11:06:28 <itidus21> it is not intuitive
11:06:32 <elliott> kmc: What, you don't think zzo38 knows a lot?
11:06:42 <kmc> no, he clearly does
11:06:52 <elliott> 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 <kmc> zzo38 seems to know Haskell pretty well
11:07:33 <kmc> well enough to identify all the ways it's unlike INFORM 7 or Magic: The Gathering
11:07:47 <elliott> :D
11:08:02 <elliott> Have you read one of his Haskell programs?
11:08:08 <kallisti> zzo38 is my best #esoteric friend.
11:08:11 <elliott> !logs
11:09:45 <itidus21> 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 <itidus21> in general, i don't know what the purpose of computation is
11:10:47 <elliott> kmc: See? #esoteric is the bets
11:10:48 <elliott> best.
11:10:49 <kmc> dude, what if we're, like, all a computer, man
11:10:53 <itidus21> 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 <itidus21> 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 <itidus21> because we're lazy? :D
11:12:00 <elliott> kmc: If this darn log download wasn't going so slowly you'd have a wonderful zzoskell program right now.
11:12:07 <kmc> haha
11:12:31 <Phantom_Hoover> kallisti, do continuous chess and we won't hate you any more.
11:13:03 <kallisti> Phantom_Hoover: Sorry I don't feed off of the esteem given to me by peers. :>
11:13:11 <kallisti> also how would you even do that.
11:13:20 <kallisti> floating point numbers? ha. ha. ha.
11:13:37 <Phantom_Hoover> Coq, like I said.
11:13:39 <kmc> gonna sleep, ttyl
11:13:48 <elliott> kmc: But the log download just finished!
11:13:51 <kallisti> lol
11:14:00 <kallisti> kmc: good night, sir.
11:14:03 <kmc> 'night
11:14:33 <elliott> kmc: http://sprunge.us/bCgV
11:14:34 <kallisti> Phantom_Hoover: anyway, portal chess is a much better game than continuous chess.
11:14:39 <elliott> Note the consistent use of whitespace.
11:15:17 <Phantom_Hoover> I feel a little sick.
11:15:26 <elliott> Phantom_Hoover: It is the Scottish Illness.
11:16:01 <kallisti> Phantom_Hoover: did you ever give continuous chess a consistent, sane set of rules that are easy to play and decidable?
11:16:16 <Phantom_Hoover> FSVO 'easy to play' and 'decidable'.
11:16:16 <elliott> kallisti: Two of those principles go directly against the spirit of continuous chess.
11:16:25 <kallisti> hmmmm. sane , decidable?
11:16:34 <kallisti> rules?
11:16:37 <kallisti> easy?
11:16:40 <kallisti> play?
11:16:48 <Phantom_Hoover> Not decidable, but that's not a problem for Coq.
11:17:01 <Phantom_Hoover> You give it the proof that your move is correct.
11:17:47 <itidus21> 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 <itidus21> something like that
11:18:21 <itidus21> i dunno what this means
11:18:25 <kallisti> me neither.
11:18:56 <itidus21> uh.. if the operation on a ball is throwing
11:19:17 <kallisti> 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 <itidus21> compared to uh.. moving each individual molecule of the ball
11:19:24 <kallisti> do I just make X.hs and X/Y.hs ?
11:19:27 <elliott> kallisti: ...yes
11:24:04 <itidus21> `pastelog terminal
11:24:23 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11767
11:24:52 <itidus21> `pastelog itidus21
11:24:59 <olsner> `quote
11:25:11 <HackEgo> 71) <Madelon> I want to read about Paris in the period 1900-1914 <Madelon> not about the sexual preferences of a bunch of writers >.>
11:25:12 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5623
11:25:28 <olsner> `quote
11:25:29 <HackEgo> 680) <yrlnry> 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 <elliott> `delquote 71
11:25:35 <HackEgo> ​*poof* <Madelon> I want to read about Paris in the period 1900-1914 <Madelon> not about the sexual preferences of a bunch of writers >.>
11:25:39 <olsner> `quote
11:25:39 <olsner> `quote
11:25:40 <olsner> `quote
11:25:46 <HackEgo> 112) <alise> use "grep --crazy"
11:26:44 <HackEgo> 306) <fungot> 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 <HackEgo> 315) <ais523> elliott: hey, thinking's easier than using the Internet
11:27:53 <olsner> heh, fungot really has the right idea about mutation :)
11:27:53 <fungot> olsner: you really wish your side.
11:29:50 <Sgeo> ...and fungot just reminded me of a terrible book I read when I was young
11:29:50 <fungot> 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 <Sgeo> 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 <Sgeo> I lapped it up when I was a kid
11:31:09 <Phantom_Hoover> Along with lies from that terrible Ian Stewart.
11:31:46 <itidus21> i was wiki'ing io and found http://en.wikipedia.org/wiki/Io_%28programming_language%29
11:31:56 <itidus21> looks curious
11:33:19 <Sgeo> 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 <kallisti> hmmm, interestingly I think portal chess pieces keep the same relative ordering of importance as they do in traditional chess
11:34:01 <kallisti> ah, no, the queen is lower than the two rooks
11:34:32 <itidus21> 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 <itidus21> small world
11:34:59 <kallisti> itidus21: I see you've discovered io
11:35:30 <itidus21> kallisti: yes i explained such quite formally
11:35:51 <itidus21> but i guess what i left out is i was looking for input/output
11:39:25 -!- cheater has joined.
11:40:23 <itidus21> 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 <kallisti> :t generate
11:51:02 <lambdabot> Not in scope: `generate'
11:51:13 <kallisti> @hoogle generate
11:51:14 <lambdabot> Graphics.Rendering.OpenGL.GL.Hints GenerateMipmap :: HintTarget
11:51:14 <lambdabot> Graphics.Rendering.OpenGL.GL.Texturing.Parameters generateMipmap :: TextureTarget -> StateVar Capability
11:51:14 <lambdabot> Graphics.Rendering.OpenGL.GLU.Quadrics GenerateTextureCoordinates :: QuadricTexture
12:00:00 <kallisti> is there a name for non-pawn chess pieces
12:00:32 <kallisti> oh they're just called "pieces"
12:00:35 <kallisti> and pawns are called pawns.
12:02:21 <fizzie> Down with the arbitrary piece class divisions.
12:02:44 <itidus21> I am not a piece, I am a human being!
12:03:52 <fizzie> 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 <fizzie> This one sadly I think lacks the "speech synthesizer".
12:05:17 <kallisti> @hoogle (//)
12:05:17 <lambdabot> Data.Array.IArray (//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e
12:05:17 <lambdabot> Data.Array (//) :: Ix i => Array i e -> [(i, e)] -> Array i e
12:05:56 -!- Taneb has joined.
12:07:05 <itidus21> thats pretty cool
12:07:12 <Taneb> Hello
12:09:51 -!- oklopol has joined.
12:12:39 <itidus21> pawn = ?. board = ?. death = ?. ? = ?.
12:13:04 <Taneb> > '?' == '?'
12:13:05 <lambdabot> True
12:14:19 <itidus21> ? <- board -> ?
12:14:52 <itidus21> board <- board -> board ?
12:15:09 <itidus21> ah screw it
12:15:14 <monqy> board
12:15:40 <itidus21> infinity <- board -> infinity ?
12:15:54 -!- azaq23 has joined.
12:15:55 <fizzie>
12:16:13 <itidus21> the trouble is it goes into 2 dimensions..
12:16:26 <itidus21> infinity <- board -> infinity ? !
12:16:44 <itidus21> infinity <- board -> infinity !
12:17:09 <itidus21> infinity X board X infinity !
12:17:09 <fizzie> The board is just 6x6 in the bubbles. :/
12:18:03 <itidus21> ! ▒ X infinity !
12:19:16 <itidus21> black pawn > white pawn?; knight > pawn?; queen or king(?) > knight?
12:19:31 <itidus21> black pawn = white pawn!; knight = pawn!; queen or king(?) = knight!
12:20:17 -!- Phantom___Hoover has joined.
12:20:57 <Phantom___Hoover> I had some continuous chess thoughts which I have since forgotten
12:21:12 <Patashu> I saw a continuous chess writeup once on chessvariants
12:21:42 <Phantom___Hoover> I saw that; it's a pale shadow of true continuous chess.
12:21:51 <itidus21> lol... pawn + hand hand = pawn with hands
12:21:58 <fizzie> ▒ ⨯ ∞ and ♟♞♝♜♛♚♙♘♗♖♕♔ and so on; Unicode power.
12:22:05 -!- Taneb has quit (Ping timeout: 240 seconds).
12:22:11 <itidus21> pawn with hands > pawn !
12:22:20 <Patashu> wow
12:22:22 <itidus21> pawn with hands > king !!
12:22:24 <Patashu> those all work in my current font!
12:22:33 <Patashu> which is... fixedsys excelsior!
12:23:00 <fizzie> Patashu: The chesspieces are in the old-and-well-established "miscellaneous symbols" block.
12:23:30 <Phantom___Hoover> esoteric
12:23:32 <itidus21> !!! 4 pawns with hands > pyramid eye symbol !!!
12:24:22 <Phantom___Hoover> Anyway, the chessvariants continuous chess is merely space-continuous.
12:25:54 <itidus21> 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 <fizzie> What have I done.
12:27:07 -!- monqy has quit (Quit: hello).
12:27:49 <itidus21> 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 <itidus21> thats my translation
12:30:20 <itidus21> the matrix of chess :P
12:31:43 <itidus21> the fact that i could interpret all that without any text is kind of cool
12:31:50 <itidus21> im impressed
12:33:15 <Phantom_Hoover> 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 <Phantom_Hoover> 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 <Ngevd> Hello
12:35:47 <Phantom_Hoover> This makes capture possible, as it happens.
12:36:21 <itidus21> fizzie: i don't understand why philosophy + retro gaming + symbols is so interesting
12:36:45 <itidus21> but it is very cool
12:37:19 <Phantom_Hoover> <fizzie> This one sadly I think lacks the "speech synthesizer".
12:37:32 <Phantom_Hoover> Something something something speech recognition sucks?
12:37:41 <Phantom_Hoover> I think elliott's better at this than me.
12:37:44 <fizzie> Synthesis, not recognition!
12:37:45 <fizzie> And yes.
12:38:47 <Phantom_Hoover> What does PWP stand for?
12:39:15 <fizzie> Uh... "Pers' Wastaiset Produktiot", if I recall correctly.
12:39:58 <itidus21> 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 <itidus21> The trouble is this other detail of trying to find a purpose for being involved.
12:40:49 <itidus21> 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 <Phantom_Hoover> Guest554115, quick, say something nasty about speech recognition.
12:41:56 <itidus21> 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 <fizzie> 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 <Guest84924> Speech recognition is for Finns.
12:42:55 <itidus21> 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 <Guest84924> THE ULTIMATE INSULT.
12:43:04 <fizzie> Phantom_Hoover: See http://pelulamu.net/pwp/ -- or maybe don't.
12:43:15 <Guest84924> 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 <Guest84924> 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 <Guest84924> 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 <Guest84924> 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 <Guest84924> 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 <Guest84924> , how to make them feel that they truly got something out of browsing your web site.
12:43:22 <Guest84924> 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 <Guest84924> d also can load longer simply because of movie and sound.
12:43:26 <Guest84924> 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 <Guest84924> 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 <Guest84924> 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 <Patashu> pastebin motherfucker
12:43:38 <Phantom_Hoover> OH NO ELLIOTT AM BECOME SPAMBOT
12:44:13 <Guest84924> Patashu: spam is sacred
12:44:19 <Guest84924> perhaps even every spam
12:44:55 <Guest84924> 12:03:52: <fizzie> 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 <Guest84924> fizzie: Oh, it's that viznut guy. I really like the aesthetic, though.
12:47:12 <Phantom_Hoover> Who's viznut?
12:47:13 -!- Ngevd has quit (Read error: Connection reset by peer).
12:47:28 <Guest84924> Phantom_Hoover: The guy behind that one-line code music thing; or at least the maker of the videos.
12:47:31 <fizzie> 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 <Guest84924> And the author of that one bad demo I laughed at.
12:47:57 <Phantom_Hoover> What was it?
12:47:57 <Guest84924> (Okay, it was probably quite impressive, technologically, for DOS.)
12:49:09 <Guest84924> fizzie: He seems rather obsessed with the premise.
12:49:22 <fizzie> http://en.wikipedia.org/wiki/PWP ooh, it's NOTABLE.
12:49:24 <Guest84924> Nice voice synth thing on a VIC-20 though. :p
12:49:26 <itidus21> i look forward to the day when haskell is turned to such things
12:49:36 <Guest84924> Reebuttic libera shun.
12:49:40 <fizzie> (Or at least nobody has bothered to nominate for deletion.)
12:49:51 <Guest84924> fizzie: http://www.youtube.com/watch?v=2SdGkkp1aq8 is the aforementioned Robotic Liberation one.
12:50:21 <fizzie> I... know?
12:50:25 <Guest84924> Er.
12:50:26 <Guest84924> Phantom_Hoover: ^
12:50:30 <Guest84924> fizzie: You're basically Phantom_Hoover.
12:50:34 <Guest84924> He asked for links, you get them.
12:50:47 <fizzie> Well, my upper half is, if I've understood correctly.
12:51:13 <Phantom_Hoover> Nah, I moved that Phantom_Hoover back into Edinburgh quite some time ago.
12:51:33 <fizzie> Okay, so now I'm just a half the fizzie I used to be.
12:54:43 <kallisti> Guest84924: http://sprunge.us/JSZF hi criticize my Haskell code.
12:54:58 <Guest84924> Why are you deriving Typeable?
12:55:23 <Guest84924> Why are you deriving Ord for Piece? Why aren't you deriving Eq for Board?
12:55:32 <kallisti> I am.
12:55:37 <Guest84924> Why are you using (Vector (Vector a))?
12:55:41 <kallisti> and, -shrug- YOU NEVER KNOW YOU MAY NEED TYPEABLE
12:56:07 <kallisti> Guest84924: because you told me to.
12:56:33 <Guest84924> No.
12:56:57 <Guest84924> You're also using the wrong kind of Vector.
12:57:10 <kallisti> ?
12:58:37 <kallisti> which Vector did you recommend?
12:59:08 <Guest84924> Phantom_Hoover: This is the one I mentioned above disliking: http://www.youtube.com/watch?v=F1537t45xm8
12:59:11 <Guest84924> kallisti: Storable.
12:59:54 <kallisti> I'll remove the Typeable since it's not really needed for anything.
13:00:08 <Guest84924> fizzie: DYK: Scientists are propagandists who want to mechanise you?
13:00:17 <kallisti> I just think "if I needed Typeable for a library type and it wasn't derived, that would be annoying."
13:00:20 <Phantom_Hoover> Man, this is amazingly crap.
13:00:30 <fizzie> "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 <Guest84924> Phantom_Hoover: The one I just linked? It really is.
13:01:38 <Phantom_Hoover> "We will never again let an algorithm make a decision for us!"
13:02:01 <Phantom_Hoover> "How much change do I have?" "WE WILL NEVER LET ALGORITHMS MAKE DECISIONS FOR US"
13:02:06 <Guest84924> 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 <Guest84924> Phantom_Hoover: Nonono, brains aren't algorithmic, he makes that clear in the uploader comments.
13:02:32 <kallisti> Guest84924: I imported Vector.Storable and got this http://sprunge.us/fYPP
13:02:35 <kallisti> am I missing a deriving somewhere?
13:02:45 <Guest84924> kallisti: You're missing the fact that I told you not to use Vector (Vector a).
13:03:06 <kallisti> ??
13:03:41 <kallisti> are you suggesting I use MVector?
13:03:46 <Guest84924> No.
13:04:06 <Guest84924> *(Vector (Vector a)).
13:04:14 <kallisti> are you going to explain? or should I just guess at what you mean?
13:04:24 <kallisti> because you said to use Storable vectors...
13:04:26 <Phantom_Hoover> kallisti, hey, you removed the knights!
13:04:32 <Guest84924> 12:55 <Guest84924> Why are you using (Vector (Vector a))?
13:04:34 <Guest84924> 12:55 <kallisti> Guest84924: because you told me to.
13:04:36 <Guest84924> 12:56 <Guest84924> No.
13:05:01 <kallisti> 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 <Guest84924> 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 <Phantom_Hoover> State of the art?
13:05:24 <Guest84924> kallisti: Please attempt the basic literacy required to distinguish (Vector a) and (Vector (Vector a)).
13:05:39 <Guest84924> Phantom_Hoover: http://www.youtube.com/watch?v=aykuVMf4uIQ
13:05:45 <kallisti> Guest84924: okay, but why should I use a 1d vector to represent a 2-dimensional grid?
13:05:56 <Guest84924> kallisti: Because that gives you a contiguous region of memory.
13:06:35 <kallisti> hmmm, okay.
13:06:50 <kallisti> Phantom_Hoover: what knights?
13:06:51 <Guest84924> You have to handle row/column indexing yourself; something like Vector is a more raw interface than C arrays.
13:07:02 <Phantom_Hoover> kallisti, the ones that aren't in portal chess.
13:07:10 <kallisti> lame. those suck.
13:07:15 <kallisti> because they're not in portal chess.
13:07:17 <Guest84924> 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 <kallisti> and they can only hop two squares!
13:07:31 <Guest84924> BTW, wrap (Maybe PIece) so you can write a Storable instance for it.
13:07:31 <kallisti> portals can hop THREE! yeah... stepping up the game.
13:07:45 <kallisti> Guest84924: what do you mean by "wrap"
13:07:59 <kallisti> newtype?
13:08:01 <Guest84924> kallisti: newtype JesusChrist = JesusChrist (Maybe Piece)
13:08:21 <Guest84924> fizzie deftly avoids controversy by not responding.
13:09:16 <kallisti> Guest84924: why do I need a newtype for that?
13:09:28 <Guest84924> "so you can write a Storable instance for it."
13:09:32 <kallisti> right
13:09:33 <kallisti> why
13:09:33 <Guest84924> So you can put it in a storable Vector.
13:09:39 <Guest84924> BTW, you need to import the vector module qualified.
13:09:57 <kallisti> I'm asking: why is it required to have a newtype in order to write an instance of Storable
13:10:17 <Guest84924> Well, you could write the instance directly, but (a) error-prone (b) requires FlexibleInstances (c) could overlap
13:10:24 <kallisti> ah
13:10:38 <Guest84924> (a) in that you could easily mistakenly use the instance elsewhere without intending to.
13:11:20 <kallisti> I'm not really sure about this Storable stuff. It seems to require a lot of low-level information
13:11:49 <kallisti> for what gain? a more efficient 8x8 grid.
13:11:58 -!- oerjan has joined.
13:12:00 <Guest84924> Storable is trivial.
13:12:07 <Guest84924> You just want to define a bijection to Word8.
13:12:25 <Guest84924> poke p Nothing = poke (0 :: Word8); poke p (Just Blah) = poke (1 :: Word8); ...
13:12:28 <Guest84924> In fact
13:12:36 <Guest84924> poke p a = poke (toEnum a :: Word8)
13:12:38 <Guest84924> and the obvious for peek
13:12:45 -!- sebbu has quit (Ping timeout: 240 seconds).
13:13:07 <kallisti> sizeOf = const 1 -- ??
13:13:15 <Guest84924> Yes.
13:13:17 <Guest84924> That's all you need.
13:13:26 <kallisti> ...oh
13:13:47 <kallisti> that's much easier than I thought it was.
13:14:38 <Guest84924> fizzie: Robotic Liberation is now stuck in my head, I'm annoyed. :/
13:14:41 <kallisti> wrapping a Maybe in a newtype seems marginally annoying though..
13:14:47 <fizzie> 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 <Guest84924> kallisti: You're writing your own indexing functions anyway.
13:15:02 <Guest84924> You can unwrap it at that point.
13:15:17 <Guest84924> fizzie: Neutrality! What a rare thing from a fizzi.
13:15:19 <Guest84924> 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 <fizzie> 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 <kallisti> Guest84924: oh hey I've got a great name for my newtype. Cell. WOW
13:16:47 <kallisti> so good.
13:16:49 <kallisti> so. descriptive.
13:16:54 <kallisti> er
13:16:55 <kallisti> Square
13:16:56 <kallisti> maybe
13:16:59 <Guest84924> Cell.
13:16:59 <kallisti> Square is more chess-like
13:17:04 <oerjan> i don't know, sounds a bit imprisoning
13:17:13 <Guest84924> Well, I guess Square is more correct.
13:17:42 <kallisti> I've been having difficulty naming all of these things
13:18:04 <kallisti> 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 <kallisti> but GameState is, bleh.
13:18:22 <fizzie> Sqoor, Buurd.
13:18:48 * kallisti almost named fillColumns philCollins until he realized a) that
13:18:58 <Guest84924> kallisti: Board should definitely just be a board.
13:19:01 -!- sebbu has joined.
13:19:06 <kallisti> 's stupid b) he doesn't need that function
13:19:11 <Guest84924> kallisti: Also, it's rank and file these days, no?
13:19:15 <Guest84924> 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 <kallisti> Guest84924: ah, yes.
13:19:46 <kallisti> Guest84924: for someone who's implementing a chess variant, I don't know very much about actual chess.
13:20:01 <Guest84924> Ditto, but I have Wikipedia to help me be a snarky asshole.
13:20:11 <kallisti> Guest84924: anyway it makes sense conceptually that the board also includes these invisible loop sets.
13:20:16 -!- Jafet1 has joined.
13:20:23 <Guest84924> You should remove the hidden state.
13:20:39 <kallisti> the... loop sets?
13:20:50 <kallisti> I need those. :P
13:20:55 <Guest84924> Make them board state!
13:20:58 <Guest84924> Use colours or some shit.
13:21:07 <kallisti> oh you mean visually. yes they'll be displayed.
13:21:11 <kallisti> they're "invisible" in the physical game.
13:21:26 <Guest84924> No, I mean they hsould be part of the piece type.
13:22:01 <kallisti> 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 <kallisti> because multiple loop squares are associated with one another.\
13:22:24 -!- Jafet has quit (Ping timeout: 240 seconds).
13:22:32 <kallisti> a move can remove an entire set of loop squares and I don't feel like calculating what those are
13:22:37 <kallisti> easier to just have a set of them that I chop off.
13:23:46 <kallisti> also they have properties as a set that I haven't added yet
13:24:41 <kallisti> 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 <kallisti> hmmm, actually
13:25:49 <kallisti> I could have the Loop squares have a direction.
13:26:12 <kallisti> and then to build a collection of related loop squares I just follow the path based on directions.
13:26:22 <kallisti> or something.
13:27:38 <kallisti> Guest84924: oh one problem with your Storable instance is that Pieces are not actually Enums.
13:27:46 <kallisti> or, I can't derive them as such
13:27:50 <kallisti> I'd have to write the instance.
13:27:58 <Guest84924> Just write your own instance, there's like 16 elements.
13:28:20 <itidus21> is a game a language?
13:28:23 <kallisti> any way I can make that not tedious?
13:28:39 <Guest84924> kallisti: If you think this is tedious, wait until you actually write something that isn't a type.
13:29:02 <kallisti> itidus21: a sequence of discrete moves could be viewed as a language, I think.
13:29:17 <kallisti> er
13:29:20 <kallisti> the set of those moves
13:29:27 <itidus21> is a game a set of moves? :D
13:29:29 <kallisti> the program is a specific string of moves
13:29:37 <kallisti> itidus21: no it also has an underlying state.
13:30:00 <itidus21> hummm
13:30:13 <kallisti> Guest84924: but really is there an easier way than "lol pattern matching 16 cases"
13:30:19 <Guest84924> jesus christ
13:30:24 <Guest84924> ok well you can obviously derive enum for piecetype
13:30:33 <Guest84924> i'll let you figure out the basic arithmetic to handle the additional player field
13:30:34 <Guest84924> in piece
13:30:38 <kallisti> noep I tried earlier. but maybe it works suddenly now?
13:31:20 <itidus21> i guess in chess there is the question of whether to represent board state or piece state
13:31:42 <Guest84924> kallisti: piecetype has 7 constructors. coord and enum already are enum
13:31:47 <Guest84924> actually oh
13:31:54 <Guest84924> Portal is the only tricky one
13:31:58 <kallisti> yes
13:32:02 <Guest84924> but it's trivial
13:32:04 <Guest84924> 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 <Guest84924> so use
13:32:07 <Guest84924> :t index
13:32:08 <lambdabot> forall a. (Ix a) => (a, a) -> a -> Int
13:32:48 <kallisti> Guest84924: also I could do something horrible like data Rank = A | B | C ...
13:32:49 -!- Jafet1 has quit (Quit: Leaving.).
13:33:02 <kallisti> and Data File = One | Two | ... -- bahahahahahah
13:33:07 <Guest84924> yeah, do it
13:33:10 <Guest84924> except F1 | F2 | ...
13:33:14 <kallisti> ah yeah
13:33:16 <kallisti> that's better
13:33:16 <Guest84924> derive Enum, write Ix instance
13:33:19 <kallisti> ....
13:33:24 <Guest84924> better than using Int
13:33:25 <kallisti> no I was just going to use my indexing function
13:33:33 <Guest84924> Ix is useful though because
13:33:34 <Guest84924> :t index
13:33:35 <lambdabot> forall a. (Ix a) => (a, a) -> a -> Int
13:33:35 <kallisti> to abstract that
13:33:36 <Guest84924> :t range
13:33:37 <lambdabot> forall a. (Ix a) => (a, a) -> [a]
13:33:39 <kallisti> ah yes
13:33:40 <Guest84924> etc.
13:33:56 <kallisti> I'm surprised Ix can't be derived from Enum
13:33:59 <itidus21> 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 <kallisti> itidus21: noep
13:34:11 <Guest84924> kallisti: it's more than Enum
13:34:16 <kallisti> itidus21: PORTAL CHESS IS MORE COMPLICATED THAN THAT
13:34:25 <itidus21> oh well portal chess yeah
13:34:40 <itidus21> but regular chess you could get away with it so long as you allowed for invalid moves to happen
13:35:12 <kallisti> I thought using Rank and File would be ridiculous but it actually kind of works nicely.
13:35:34 <kallisti> except that arithmetic will be weird without a bunch of fromEnum stuff.
13:35:59 <kallisti> oh hmm the Rank is the number the file is the letter.
13:36:13 <itidus21> whats the deal with chess and not killing the king
13:36:17 <itidus21> i mean SERIOUSLY
13:36:27 <itidus21> :))
13:36:36 <kallisti> that will actually be one of the more difficult things to calculate in protal cehess
13:36:39 <itidus21> err capturing
13:36:43 <kallisti> because there are many weird capturing rules
13:37:14 <kallisti> for example, if your two portals are facing each other and within capturing range of one another
13:37:15 <itidus21> nevermind im being very very dumb
13:37:22 <kallisti> the enemy king cannot be adjacent to those portals
13:37:52 <kallisti> because of the explosion rule where portals explode when they try to pass through each other.
13:37:58 <kallisti> :)
13:38:37 <Sgeo> Is there actually a published ruleset for portal chess?
13:38:39 <itidus21> well.. in chess. suppose that you made the rule that you could capture the king..
13:38:41 <kallisti> no.
13:38:41 <Sgeo> Or continuous chess?
13:38:47 <kallisti> no
13:38:51 <Sgeo> Oh, darn
13:38:53 <kallisti> 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 <kallisti> but I have pretty much a definitive ruleset in my brain at the moment.
13:39:06 <Ngevd> Hello!
13:39:13 <Ngevd> My Latin vocab tester is going well
13:39:16 <kallisti> I'm just... too lazy to write chess rules. that will be very boring. :P
13:39:38 <Phantom_Hoover> Sgeo, the rules of continuous chess aren't terribly complex.
13:40:23 <Phantom_Hoover> Ngevd, your Latin vocab tester?
13:40:31 <kallisti> 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 <kallisti> elliott: maybe using a Rank and File type isn't a good idea
13:41:24 <kallisti> also Rank and File are basically the same I could probably just make them one type.
13:41:54 <elliott> Fine, make one type
13:42:01 <Ngevd> Phantom_Hoover, it's more of a flashcards program
13:42:02 <kallisti> eh but that's gross too
13:42:03 <kallisti> DON'T KNOW IF WANT
13:42:09 <elliott> It's not gross.
13:42:11 <kallisti> maybe I just want integers but then I can't derive Enum and I'll have to write that.
13:42:14 <kallisti> NO WAY. TO AVOID. TEDIUM.
13:42:50 <kallisti> hmmm I'll try Rank and File
13:42:54 <kallisti> as seperate types.
13:43:00 <elliott> There is no way this thing will progress to the working stage.
13:43:10 <kallisti> even though they're exactly the same and I'll probably being doing a lot of arithmetic on them as integers.
13:43:10 <Ngevd> Phantom_Hoover, I'm just adding more features now
13:43:35 <kallisti> elliott: it will.
13:43:49 <elliott> It won't.
13:44:08 <Phantom_Hoover> 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 <Ngevd> Nah, I'm doing it in Haskell
13:44:37 <elliott> Phantom_Hoover: Don't believe him.
13:44:40 <elliott> It's too good to be false.
13:45:04 <oerjan> <itidus21> 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 <Phantom_Hoover> elliott, worse still, he had the opportunity to be one of the interviewers when I went to Cambridge.
13:45:33 <elliott> Phantom_Hoover: omg
13:45:35 <Phantom_Hoover> That would have been upsetting in the extreme.
13:45:41 <elliott> would you have said
13:45:45 <elliott> "JAVASCRIPT GRAVITY GUY!!!"
13:45:53 <elliott> "I SHALL USURP YOUR GAME"
13:45:55 <Phantom_Hoover> I doubt it.
13:46:57 <oerjan> <Ngevd> My Latin vocab tester is going well <-- VERBVM NECESSE EST
13:47:13 <kallisti> elliott: oh oops E is a File and a Direction
13:47:31 <itidus21> the IsInCheck(chessboard) function is diabolical eh
13:47:41 <itidus21> is it the most difficult of all to write?
13:47:51 <kallisti> itidus21: probably not
13:47:56 <kallisti> but it won't be as easy as normal chess.
13:47:57 <oklopol> sounds trivial
13:48:23 <Phantom_Hoover> What does IsInCheck do?
13:48:36 <itidus21> it determines if the king is in check
13:48:38 <Phantom_Hoover> oklopol, did you read about continuous chess (it's the best chess).
13:48:40 <kallisti> determines if a player is in check I'd imagine.
13:48:42 <itidus21> it uses magic to know whose turn it is
13:48:45 <oklopol> nope
13:48:49 <kallisti> by "the king" I imagine he means it returns something like Maybe Player
13:48:57 <itidus21> hmm
13:48:58 <oklopol> what is it
13:49:03 <Phantom_Hoover> Alternately bicontinuous chess because some loser already made his own crappy continuous chess.
13:49:19 <Phantom_Hoover> oklopol, chess, except the board and the pieces are continuous.
13:49:21 <kallisti> real chess??
13:49:28 <elliott> Phantom_Hoover: Excuse me you need to invent tricontinuous so that it's continuous in time too still?
13:49:40 <elliott> oklopol:
13:49:43 <kallisti> data Direction = North | Northeast | East | Southeast | South | Southwest | West | Northwest
13:49:55 <kallisti> I don't know about how I feel about these expand direction names
13:49:56 <itidus21> kallisti: yeah player in check i meant
13:50:03 <itidus21> >_>
13:50:04 <Phantom_Hoover> elliott, don't paste him the original definition; I've altered it significantly.
13:50:08 <elliott> 23:02:46: <Phantom_Hoover> Basically, the board is a continuous square, and each area corresponding to an initial piece is instead full of continuous piece. 23:04:45: <Phantom_Hoover> 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 <elliott> 23:05:37: <Phantom_Hoover> Capture consists of moving some quantity of piece over some of your opponent's piece, which erases the target piece.
13:50:15 <oklopol> Phantom_Hoover: i don't know what that means
13:50:15 <elliott> oklopol: ^
13:50:18 <elliott> Oh.
13:50:24 <elliott> Phantom_Hoover: Well, now you get to tell oklopol the diff.
13:50:28 <itidus21> `pastelog continuous time
13:50:45 <oklopol> is a piece an Borel subset of measure 1 where the measure of the board is 64?
13:51:01 <HackEgo> No output.
13:51:12 <oklopol> and is the board [0, 8] times [0, 8]?
13:51:16 <Phantom_Hoover> 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 <itidus21> `pastelog continuous in time
13:51:24 <kallisti> 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 <elliott> kallisti: Dunno.
13:51:39 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31615
13:51:42 <kallisti> I don't see a need particularly.
13:51:48 <oklopol> okay that much i guessed
13:52:28 <Phantom_Hoover> oklopol, a move is a measure-preserving bijection f.
13:52:37 <Phantom_Hoover> A move is valid if:
13:52:38 <kallisti> so, many. types.
13:52:59 <kallisti> Haskell is the language of 22 billion types.
13:53:05 <kallisti> it's the hinduism of languages.
13:53:11 -!- Ngevd has quit (Ping timeout: 252 seconds).
13:53:21 <Phantom_Hoover> - 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 <oerjan> Phantom_Hoover: i think [0,8)^2 might be more elegant
13:53:41 <oerjan> hm except it's not symmetric
13:53:43 <Phantom_Hoover> - f(P) intersects only piece of the opposite colour, which is then captured.
13:53:50 <oklopol> oerjan: i was assuming it doesn't matter because of measure stuff
13:54:13 <oklopol> centroid in the measure theoretical sense?
13:54:33 <itidus21> why do all the moves take the form of [a,b] x [c,d] ?
13:54:36 <oerjan> oklopol: some people keep insisting this should allow nonmeasurable pieces
13:54:39 <itidus21> how did this happen.. hahaha
13:54:49 <itidus21> is that continued fraction form?
13:54:54 <oklopol> oerjan: some people think they can make this work
13:55:03 <Phantom_Hoover> - 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 <elliott> It would have worked with the older definition.
13:55:08 <oerjan> oklopol: it's 2d, banach-tarski doesn't apply
13:55:09 <Phantom_Hoover> oklopol, of course.
13:55:12 <elliott> Phantom_Hoover: Special-casing the knight is not cool man.
13:55:22 <Phantom_Hoover> elliott, normal chess does it?
13:55:28 <elliott> FINE
13:55:50 <Phantom_Hoover> oerjan, banach-tarski doesn't apply, but there's no restriction to rigid motions.
13:56:09 <oklopol> the last one prevents playing normal chess with this
13:56:15 <Phantom_Hoover> Yes, it does.
13:56:32 <Phantom_Hoover> Unless you change the initial distribution of piece to allow diagonal moves.
13:56:38 <kallisti> elliott: please tell me that (Enum a) => Maybe a is an Enum.
13:56:51 <elliott> kallisti: If it's not, it takes four lines to implement an instance.
13:56:57 <kallisti> yes.
13:56:58 <oklopol> true
13:57:00 <kallisti> THAT'S NOT THE IMPORTANT PART.
13:57:14 <Phantom_Hoover> But that's kind of messy, and so are most other ways of solving it.
13:57:23 <elliott> Normal chess is inelegant anyway.
13:57:25 <elliott> f.e., it's discrete.
13:57:29 <kallisti> lol
13:57:34 <kallisti> f.e., it doesn't have portals.
13:57:40 <elliott> Iron.
13:57:44 <oklopol> discreteness is bestness.
13:57:59 <elliott> oklopol: Well Phantom_Hoover has yet to make time continuous so continuous chess is still lame.
13:58:02 <elliott> But once he does it'll be perfect.
13:58:28 <Phantom_Hoover> Oh, also: any pawn that comes within 1 unit of the far side of the board becomes queen.
13:59:19 <Phantom_Hoover> 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 <kallisti> hmmm I think instead of listing my types bottom-to-top I'll go top-to-bottom
13:59:47 <kallisti> meh. too much trouble. this way is fine.
14:00:05 <elliott> Does anyone know a compression algorithm that produces really good results on almost-universally-English plaintext?
14:00:11 <oerjan> Phantom_Hoover: what, not choice of promotion?
14:00:16 <elliott> xz -9 is only doing 303 megs -> 47 megs, which seems like it could be a lot better.
14:00:16 <Phantom_Hoover> oerjan, oh, right, yes.
14:00:33 <Phantom_Hoover> (I had that originally, but I forgot it.)
14:00:38 <Phantom_Hoover> The mechanics are otherwise the same.
14:00:43 <oklopol> are there 8 hues of pawn or can you move all your pawn at once?
14:00:58 <itidus21> elliott: huffman encoding?
14:01:21 <oerjan> elliott: n
14:01:33 <itidus21> . 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 <elliott> itidus21: Yeah yeah, I'm more interested in an already-written tool than a general technique :P
14:01:44 <oklopol> actually i'm starting to think this thing could work
14:01:45 <elliott> oerjan: thx
14:01:54 <Phantom_Hoover> 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 <oerjan> elliott: np
14:02:23 <Phantom_Hoover> By which I mean even orthogonal movements in normal chess become impossible.
14:02:57 <Ngevd> Hello
14:03:10 <iconmaster_> Hey
14:03:17 <oklopol> now i wonder who wins this game, i can't see a trivial winning strategy
14:03:28 <elliott> oklopol: Do you for Chess?
14:03:34 <Phantom_Hoover> Defining check is especially fun.
14:03:44 <oerjan> elliott: isn't there some compression that allows you to start with a dictionary (essentially prepended)?
14:04:00 <elliott> oerjan: Do you mean... Huffman encoding?
14:04:06 <oerjan> MAYBE
14:04:10 <oklopol> Phantom_Hoover: err, isn't it just that all your king are belong to us?
14:04:15 <itidus21> basically.. the IsPlayerInCheck() function becomes more expensive as the movespace
14:04:17 <oklopol> if allowed a further move
14:04:21 <Phantom_Hoover> Yes.
14:04:26 <itidus21> ^increases
14:04:31 <Ngevd> What do people recommend for Haskell regexes?
14:05:08 <elliott> Deewiant: Ping
14:05:14 <Deewiant> Pong
14:05:15 <elliott> Ngevd: You probably don't want to
14:05:15 <oklopol> i believe if all the king has to be taken at once, then the solution is stalemate
14:05:17 <Phantom_Hoover> 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 <elliott> Deewiant: What's a good compressor for majority-plain-English text that can take advantage of that structure, esp. dictionary
14:05:47 <elliott> Deewiant: xz -9 only does ~300 megs -> ~40 megs and I want better
14:05:53 -!- derdon has joined.
14:06:17 <elliott> Ngevd: But ask Deewiant for the one he uses, ISTR it being good :P
14:06:56 <fizzie> 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 <Phantom_Hoover> I think it's more likely that the brains of all involved will melt, though.
14:07:08 <Deewiant> Ngevd: regex-tdfa
14:07:28 <Deewiant> fizzie: ... okay
14:07:33 <elliott> fizzie: :D
14:07:36 <kallisti> > toEnum False
14:07:36 <lambdabot> Couldn't match expected type `GHC.Types.Int'
14:07:37 <lambdabot> against inferred type ...
14:07:41 <kallisti> > fromEnum False
14:07:41 <lambdabot> 0
14:07:45 <elliott> fizzie: Your humbleness in explaining the lack of AI systems in the channel is amazing.
14:08:11 <Phantom_Hoover> oklopol, I challenge you to a game!
14:08:28 <Phantom_Hoover> I'll be white, you can be black, and we play it on a 3x3 board with king at opposite corners.
14:08:32 <oklopol> not sure i'm interested :D
14:08:35 <kallisti> elliott: Data.Vector.Storable is pretty cool.
14:08:37 <oklopol> sounds hard.
14:08:53 <oklopol> and nothing else?
14:08:59 -!- Taneb has joined.
14:09:12 -!- Ngevd has quit (Ping timeout: 240 seconds).
14:09:17 <Phantom_Hoover> oklopol, no.
14:10:12 <oklopol> k i shall play.
14:11:23 <oklopol> hey so
14:11:28 <kallisti> elliott: er, I'm not really sure how to write peek.
14:11:32 <oklopol> you have an advantage because you made this game
14:11:59 <elliott> kallisti: fmap (fromEnum . fromIntegral :: Word8 -> Foo) . peek
14:12:02 <oklopol> 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 <oklopol> i don't think it changes much
14:12:36 <elliott> Phantom_Hoover: DON'T DOOO IIII
14:12:37 <elliott> T\
14:12:39 -!- Ngevd has joined.
14:12:42 <Phantom_Hoover> You're clearly planning something, but it'll be an entertaining something, so fine.
14:12:44 <Phantom_Hoover> 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 <oklopol> so we note that Q^2 \cap board is a countable dense subset of the board with measure zero
14:14:09 <oklopol> and i win
14:14:18 <oklopol> :'D
14:14:19 <oklopol> but umm
14:14:22 <oklopol> let me see what you wrote
14:14:24 <itidus21> `log [f]inite euclidean
14:14:32 <HackEgo> 2012-01-06.txt:17:17:23: <itidus21> 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 <itidus21> oops wrong 1
14:14:43 <itidus21> `log [f]inite euclidean
14:14:58 <HackEgo> 2012-01-06.txt:17:09:46: <itidus21> ok, what about chess on a finite euclidean plane
14:15:06 <oklopol> i don't see how that's a legal move
14:15:14 <oklopol> yours i mean
14:15:24 <oklopol> oh
14:15:30 <Phantom_Hoover> oklopol, piece can intersect itself during a move.
14:15:35 <Deewiant> elliott: zpaq
14:15:45 <Ngevd> @hoogle (a -> b) -> (a, a) -> (b, b)
14:15:45 <lambdabot> Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d)
14:15:45 <lambdabot> Data.Graph.Inductive.Query.Monad mapSnd :: (a -> b) -> (c, a) -> (c, b)
14:15:45 <lambdabot> Data.Graph.Inductive.Query.Monad mapFst :: (a -> b) -> (a, c) -> (b, c)
14:15:51 <oklopol> okay so
14:15:54 <itidus21> it is likely that i started this with that innocent comment
14:15:55 <oklopol> that's in check, you can't move there
14:16:01 <elliott> 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 <elliott> it
14:16:13 <elliott> Ngevd: join (***)
14:16:16 <Phantom_Hoover> oklopol, it can't possibly be in check; you only have 0.5 king and I have 1.
14:16:27 <Ngevd> :t join (***)
14:16:28 <Phantom_Hoover> (Assuming we're leaving out the closure rule, because duh.)
14:16:28 <lambdabot> forall (a :: * -> * -> *) b c. (Arrow a) => a b c -> a (b, b) (c, c)
14:16:37 <Phantom_Hoover> :t join
14:16:38 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
14:16:44 <Phantom_Hoover> Oh, duh.
14:16:47 <Ngevd> elliott, what do I need to work this magic?
14:16:54 <elliott> Ngevd: Control.Arrow, Control.Monad
14:16:59 <Ngevd> Thanks
14:17:03 <elliott> Ngevd: I suggest defining
14:17:09 <Deewiant> elliott: It's just the best one I found on AUR
14:17:10 <elliott> both :: (a -> b) -> (a, a) -> (b, b)
14:17:11 <elliott> both = join (***)
14:17:12 <oklopol> no wait i'm confused
14:17:23 <itidus21> 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 <elliott> Deewiant: Funny, it's not in my package manager, so I'll have to compile it myself :P
14:17:32 <oklopol> you seem to have moved 2 in both axes.
14:17:38 <elliott> Ugh, and it's in separate zip(!) files
14:18:29 <Deewiant> elliott: Maybe nanozip is if that one isn't
14:18:33 <Deewiant> Or freearc
14:18:41 <elliott> nope
14:18:52 <itidus21> garden of eden decompression
14:19:03 <oklopol> garden of eden wait what's going on here?
14:19:07 <itidus21> well..
14:19:15 <oklopol> so i assume that has nothing to do with CA
14:19:30 <itidus21> oklopol: when you check the state of the output of the decompressor it just happens to be the correct state
14:19:32 <Phantom_Hoover> 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 <itidus21> i guess the word garden of eden is very not appropriate
14:19:44 <Ngevd> Well, this is going really well
14:19:48 <Ngevd> Thanks elliott!
14:19:52 <kallisti> :t fromEnum
14:19:53 <lambdabot> forall a. (Enum a) => a -> Int
14:19:58 <Ngevd> Thanks also kallisti, but that was earlier!
14:20:01 <elliott> toEnum, w/e.
14:20:06 <kallisti> Ngevd: what did I do?
14:20:06 <Ngevd> Thanks probably other people too!
14:20:08 <oklopol> oh triangles sorry
14:20:11 <itidus21> like uh..
14:20:14 <Ngevd> 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 <kallisti> :t toEnum
14:20:23 <lambdabot> forall a. (Enum a) => Int -> a
14:20:31 <Deewiant> 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 <kallisti> @hoogle Int -> Word8
14:20:55 <lambdabot> Data.ByteString index :: ByteString -> Int -> Word8
14:20:55 <lambdabot> Data.ByteString.Unsafe unsafeIndex :: ByteString -> Int -> Word8
14:20:55 <lambdabot> Prelude (!!) :: [a] -> Int -> a
14:21:05 <elliott> Deewiant: I'm not compiling it myself manually :P
14:21:12 <elliott> Especially since it doesn't seem to come with a build system.
14:21:28 <Deewiant> elliott: https://aur.archlinux.org/packages/zp/zpaq/PKGBUILD
14:21:51 <oklopol> 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 <elliott> No guarantee that'll work on my OS
14:22:02 <elliott> But meh, I might try it sometime
14:22:12 <oklopol> the vector between centroids is one that the piece can move in normal chess?
14:22:14 <Phantom_Hoover> oklopol, one in which the centroid moves by a legal chess move.
14:22:18 <Phantom_Hoover> Yeah.
14:22:20 <oklopol> mm okey
14:22:20 <Deewiant> elliott: Generally "$CXX $CXXFLAGS $LDFLAGS" should work
14:22:23 <kallisti> > fromIntegral (5 :: Int) :: Word8
14:22:24 <lambdabot> 5
14:22:26 <kallisti> ah
14:22:33 <elliott> Deewiant: But might need different cflags for e.g. -D platform stuff.
14:22:55 <Deewiant> It's conceivable, but I doubt it
14:23:21 <itidus21> 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 <kallisti> > fromIntegral (5 :: Word8) :: Int
14:23:27 <lambdabot> 5
14:23:30 <kallisti> good.
14:23:34 <elliott> itidus21: Pls look up Kolgomorov complexity
14:24:17 <oklopol> 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 <oklopol> some portion of your king is taken :o
14:24:38 <oklopol> hmm
14:24:46 <oklopol> i suppose you need to know quite a bit more
14:25:05 <Phantom_Hoover> oklopol, you need to preserve measure and not move through piece that you haven't captured, too.
14:25:06 <Deewiant> elliott: What about good old paq (paq9a), is that available?
14:25:12 <oklopol> i'm not really fluent in functions on reals.
14:25:13 <oklopol> oh right
14:25:21 <elliott> 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 <Deewiant> elliott: Your system sucks
14:25:39 <elliott> Deewiant: Yep
14:25:43 <kallisti> `peek' is not a (visible) method of class `Storable'
14:25:59 <itidus21> i don't understand when everyone did so much research
14:25:59 <oklopol> 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 <itidus21> while i wasted my life away trying to cope
14:26:18 -!- shachaf has joined.
14:26:27 <kallisti> oh I need Foreign.Storable I think
14:26:38 <Phantom_Hoover> oklopol, it used to be, but then I altered the conditions to let you work around that.
14:27:01 <oklopol> Phantom_Hoover: and what are those conditions?
14:27:18 <Phantom_Hoover> 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 <oklopol> also i proved that you can do that
14:27:38 <oklopol> ah
14:27:39 <Phantom_Hoover> Sets of zero measure are basically irrelevant, I think.
14:27:53 <kallisti> hmmm so now Square is: data Square = Square (Maybe Piece) (Maybe Loop)
14:27:56 <oklopol> right i do recall that small detail now
14:27:59 <kallisti> which is not a derivable Enum.
14:28:21 <Phantom_Hoover> Since they can't make any significant capture, and they can be taken without restriction.
14:29:41 -!- iconmaster_ has joined.
14:29:49 <oklopol> so umm let's see what happens if i just move 1 down
14:30:05 <kallisti> yeah the problem is that Enum can't be derived like that.
14:30:10 <oklopol> oh.
14:30:39 <oklopol> then you win
14:30:41 * kallisti cracks knuckles and gets to instance writing
14:31:22 <oklopol> wait do you...
14:31:23 -!- cheater has quit (Ping timeout: 276 seconds).
14:31:26 <Ngevd> Yay I've actually written a Haskell program that actually does something well!
14:31:35 <oklopol> yes, you do
14:31:40 <kallisti> elliott: help do I write enum instances sanely I'm afraid .
14:31:43 <kallisti> +how
14:31:46 <Ngevd> Now for the tricky part..
14:32:36 <Ngevd> 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 <oklopol> Phantom_Hoover: well, would you care to make your move?
14:34:07 <Phantom_Hoover> Did you make yours?
14:34:14 <oklopol> yeah one down
14:34:35 <oklopol> well left
14:35:05 <Phantom_Hoover> Yes, I win then, although strictly you're just not allowed to make that move.
14:35:28 <oklopol> true.
14:35:38 <oklopol> but we have just kings to that seems like a silly rule
14:35:52 <kallisti> how would one write instance (Enum a, Enum b) => (a, b)
14:35:56 <kallisti> er
14:35:59 <kallisti> how would one write instance (Enum a, Enum b) => Enum (a, b)
14:36:09 <oklopol> because i'm guessing a perfect game is infinite
14:38:46 <kallisti> elliott: I don't think this is as simple as you're claiming it to be.
14:38:53 <kallisti> or well, it's not now that I've changed the type.
14:39:16 <kallisti> but PieceType could never have Enum derived for it;
14:39:19 <kallisti> and now:
14:39:21 <kallisti> data Square = Square (Maybe Piece) (Maybe Loop)
14:39:28 <elliott> w/e it's seriously not har
14:39:29 <elliott> d
14:39:33 <kallisti> data Loop = Loop Direction LoopKind
14:39:41 <elliott> you're getting hung up on some really trivial functions just because they're instance methods
14:39:54 <kallisti> it has nothing to do with instance methods.
14:41:37 <oerjan> * 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 <kallisti> er I mean product types specifically
14:42:37 <Ngevd> What's the deal with multiline strings in Haskell?
14:42:46 <oerjan> ok then, how do do succ (3, True) using _only_ Enum methods
14:42:48 -!- cheater has joined.
14:42:53 <oerjan> *do you do
14:43:00 <kallisti> Maybe Loop has 1 + (8 * 2) enumerations, Maybe Piece has 1 + (2 * (5 + 8 + 8 * (1 + (8 * 8)))) enumerations
14:43:10 <oerjan> Ngevd: they suck, hth
14:43:38 <kallisti> 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 <kallisti> oerjan: I suppose you would need Bounded also wouldn't you?
14:44:14 <elliott> dude just use fromENums on the fields
14:44:29 <kallisti> followed by.....
14:45:04 <elliott> blargh just pack it however, the whole point is to store everything in [0,256) in the end
14:45:06 <kallisti> 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 <elliott> although hmm
14:45:16 <elliott> wait nm
14:45:33 <oerjan> kallisti: Bounded, Enum, Eq
14:45:38 <kallisti> is it really worth being able to compress a 8x8 grid into 64 bytes?
14:46:20 <elliott> kallisti: If you ever want to write an AI, yes; anyway you're overcomplicating this massively
14:46:30 <kallisti> 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 <kallisti> am I?
14:46:39 <elliott> Then why are you asking me for advice
14:47:24 <kallisti> > (1 + (8 * 2)) * (1 + (2 * (5 + 8 + 8 * (1 + (8 * 8)))))
14:47:25 <lambdabot> 18139
14:47:38 <kallisti> > maxBound :: Word16
14:47:39 <lambdabot> 65535
14:47:43 <oerjan> Ngevd: you can do either line continuation with \n\ ... \ or you can use unlines on a list of strings
14:48:09 <kallisti> elliott: ah I see what you mean. How do I take bytes and pack them together?
14:48:19 <Ngevd> 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 <Ngevd> So I can exploit a loophole in my school's ridiculously tight security
14:48:39 <elliott> kallisti: Bitshifts and .|.?
14:48:43 <Ngevd> IT security
14:48:45 <kallisti> the works.
14:48:47 <kallisti> *that
14:48:53 <oerjan> there's probably something with template haskell
14:48:59 <kallisti> > (1 + (2 * (5 + 8 + 8 * (1 + (8 * 8)))))
14:49:00 <lambdabot> 1067
14:49:18 <kallisti> hmm that's going to require more than a Word8
14:49:19 <elliott> kallisti: Really, I'd just write all the cases out manually at the top level
14:49:23 <kallisti> ...
14:49:28 <elliott> If it's so much bother
14:49:40 -!- cheater has quit (Quit: Ex-Chat).
14:49:41 <kallisti> that's basically the opposite of what I want to do.
14:49:50 <elliott> Have fun
14:50:09 <kallisti> you're making this sound much easier than it actually is.
14:50:42 <elliott> Because I've done similar things before and it was easy
14:50:59 <oklopol> sounds are easy even if you don't make them easy
14:51:04 <oklopol> that's why they are called sounds.
14:51:34 <oerjan> Ngevd: tight security, they don't allow data files?
14:51:45 <elliott> Gregor: Where did the old rezzo agents repo go?
14:51:53 <elliott> The one with my stuff in it :P
14:52:22 <Ngevd> oerjan, they don't allow executable files
14:52:36 <Ngevd> oerjan, except for some bizarre reason in .zip archives
14:52:48 <oerjan> Ngevd: well .zip it then?
14:53:08 <Ngevd> oerjan, can't access files from within a zip
14:53:13 <Ngevd> It's a weird system
14:53:22 <oerjan> ...
14:53:26 <kallisti> .....ugh
14:53:27 * oerjan leaves this to elliott
14:53:29 <kallisti> my brain
14:53:29 <kallisti> hurts.
14:53:43 * elliott leaves this to oerja
14:53:44 <elliott> n
14:53:59 * oerjan infloops
14:54:06 <Ngevd> Just trust me.
14:54:09 <itidus21> flashcards eh
14:54:18 <Ngevd> You don't go to my school, you don't need to know why I need to do this
14:54:24 <itidus21> its probably best to think in terms of association forming time thresholds
14:54:44 <kallisti> so minimally complete definition for Enum is fromEnum toEnum right?
14:55:00 <itidus21> like.. expose self to one stimulus.. then to another
14:56:16 <itidus21> then again.. maybe not
14:56:44 <itidus21> a lot of learning is subtle
14:57:00 <itidus21> meanings of words are necessarily anticipated
14:57:11 <itidus21> you can't force the meanings
14:57:20 <itidus21> you can learn through anticipating the meaning
14:57:55 <itidus21> then.. you use the word.. and get corrected
14:58:08 <itidus21> i dont know
14:59:37 <kallisti> > 1067 - 16
14:59:38 <lambdabot> 1051
14:59:49 <kallisti> 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 <kallisti> 16 down, 1051 more to go.
15:00:31 <kallisti> actually I think that should be i not i+1
15:00:42 <kallisti> yes
15:00:53 <kallisti> also `div`
15:01:07 <kallisti> also... divmod
15:01:10 <kallisti> also... quotrem
15:01:51 <Ngevd> 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 <kallisti> oh good.
15:02:08 * kallisti is OCD about whitespace layout
15:02:28 <kallisti> and striking a balance between not having way too many lines and not condensing everything into one line
15:02:47 <itidus21> basically, the best way to learn a language is to read it
15:02:51 <itidus21> or speak it
15:03:00 <itidus21> err i mean listen to it
15:03:05 <Ngevd> *54952
15:03:12 <Ngevd> Less impressive, but still a lot
15:03:14 <kallisti> elliott: hi correct my math provide suggestions
15:03:24 <itidus21> reading may not be sufficient
15:03:25 <itidus21> hummmm
15:03:53 <kallisti> oh hmmm I could use Bounded I think.
15:04:13 <kallisti> ah
15:04:17 <kallisti> a formula!
15:05:04 <Ngevd> Actually, do I really need the standalone version?
15:05:59 <kallisti> fromEnum (Loop d t) = fromEnum t * 8 + fromEnum d
15:05:59 <kallisti> toEnum i = Loop (toEnum d) (toEnum m)
15:06:00 <kallisti> where
15:06:00 <kallisti> (d,m) = i `quoteRem` 8
15:06:04 * kallisti suddenly remembers how to do math
15:06:12 <itidus21> so can binary lambda calculus be encoded as unary lambda calculus?
15:06:41 <itidus21> im guessing the only problem is leading zeros
15:06:56 <Ngevd> Yes, but it would be stupid
15:07:11 <kallisti> actually I'm going to use let instead of where
15:07:13 <Ngevd> Nah, just assume whatstisface
15:07:20 <kallisti> because I think let doesn't get as much love as where. :P
15:07:26 <Ngevd> Binominal base 2 or something
15:07:31 <Ngevd> Binary without zeroes
15:07:34 <kallisti> elliott: hi I learned how to do math
15:07:34 <itidus21> it wouldn't be stupid :D
15:08:11 <kallisti> though I'm pretty sure PieceInfo will be a number of special cases
15:08:24 <elliott> kallisti: ok
15:08:39 <elliott> kallisti: really you could autogenerate the enumeration stuff
15:08:45 <kallisti> ..
15:08:49 <elliott> just generate a list of inhabitants with functor
15:08:49 <kallisti> this was kind of like
15:08:52 <kallisti> what I was asking for.
15:08:54 <elliott> and use the indices
15:09:01 <elliott> well you still need to manually write stuff
15:09:02 <elliott> but
15:09:09 <elliott> data T = A S U | B Q
15:09:11 <elliott> you'd do
15:09:16 <oerjan> 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 <kallisti> "list of inhabitates with functor" wat
15:09:28 <kallisti> oh you mean do list stuff..
15:09:30 <elliott> instance Elems T where elems = A <$> elems <*> elems <|> B <$> elems
15:09:48 <elliott> then you can trivially define toEnum/fromEnum implemenetations for Elems things
15:10:19 <kallisti> wat
15:10:34 <itidus21> 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 <kallisti> what does elems return
15:10:46 <itidus21> ^bounding
15:10:54 <elliott> kallisti: [a]
15:11:01 <elliott> class Elems a where elems :: [a]
15:11:04 <kallisti> oh hmmm
15:11:07 <elliott> instance Elems Rank where elems = [R1, R2, ...]
15:11:10 <kallisti> right
15:11:20 <elliott> instance (Elems a) => Elems (Maybe a) where elems = Nothing <|> Just <$> elems
15:11:25 <kallisti> > [1,2,3] <|> [4,5,6]
15:11:25 <lambdabot> [1,2,3,4,5,6]
15:11:48 <itidus21> like for instance... you could hand someone a bucket of marbles and say "here is your program"
15:11:50 <kallisti> ah
15:11:51 <elliott> 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 <kallisti> I don't
15:12:15 <elliott> well... it's not actually that easy for the toEnum case
15:12:20 <elliott> but anyway
15:12:25 <itidus21> and just by adding or subtracting marbles from a bucket you can code
15:12:29 <elliott> actually i think you can, hmm
15:12:32 <itidus21> i think it is pretty cool
15:12:32 <elliott> 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 <kallisti> +so much
15:13:19 <kallisti> or something
15:13:23 <kallisti> make that sentence make sense kthx
15:13:27 <elliott> 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 <elliott> and allow the same simple Elems instances
15:14:04 <kallisti> well you could avoid the traversal overhead by using a different data structure
15:14:07 <kallisti> such as an array
15:14:08 <kallisti> or... vector.
15:14:12 <elliott> better to parameterise on the structure
15:14:14 <elliott> and no, that doesn't work
15:14:24 <elliott> i'll get bored of this and stop implementing it if you keep proposing stupid alternatives :p
15:14:33 <kallisti> OKAY FINE WHATEVER
15:15:00 <itidus21> 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 <kallisti> elliott: also note that I'm pretty sure Word16 is the word size I'll need for Storable
15:15:35 <kallisti> if that's relevant at all
15:15:40 <kallisti> don't think it is
15:15:51 <elliott> kallisti: i'm pretty sure you could pack it into one byte but okay
15:16:19 <kallisti> sorry multiplication dawg
15:16:32 <itidus21> 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 <kallisti> the main reason I can't do that is because there are 8 * 8 * 8 different kinds of portals.
15:17:46 <kallisti> which I can't avoid unless I remove the coordinate pair from the definition of PieceInfo
15:18:16 <kallisti> 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 <elliott> Hunt it down if it's deterministic; you can cache it in a memo table later.
15:19:06 <kallisti> it's just a coordinate to the other portal.
15:19:13 <kallisti> I guess that's deterministic?
15:19:19 <kallisti> I'm not sure what you mean by that.
15:20:00 <kallisti> yeah okay I'll take out the coordinate
15:20:03 <kallisti> the simplifies the storable stuff
15:20:14 <kallisti> *that
15:20:43 <kallisti> I can just store the association seperately. it's literally just a 4-element table.
15:21:24 <kallisti> okay that's much easier I could probably just handwrite this now.
15:21:41 <kallisti> the PieceInfo Enum is much simpler. basically 8 Arrows and 8 Portals and 1 of all the other pieces.
15:22:56 <elliott> @hoogle interleave
15:22:56 <lambdabot> package interleave
15:22:56 <lambdabot> Graphics.Rendering.OpenGL.GL.VertexArrays data InterleavedArrays
15:22:57 <lambdabot> Graphics.Rendering.OpenGL.GL.VertexArrays interleavedArrays :: InterleavedArrays -> Stride -> Ptr a -> IO ()
15:23:05 <elliott> @hoogle [a] -> [a] -> [a]
15:23:05 <lambdabot> Prelude (++) :: [a] -> [a] -> [a]
15:23:05 <lambdabot> Data.List (++) :: [a] -> [a] -> [a]
15:23:06 <lambdabot> Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
15:23:27 <kallisti> Control.Monad.Logic.Class I believe
15:23:38 <oerjan> :t interleave
15:23:39 <lambdabot> forall (m :: * -> *) a. (MonadLogic m) => m a -> m a -> m a
15:26:15 <elliott> kallisti: Anyway, turns out it's trivial
15:26:21 <elliott> http://sprunge.us/IZVC or something
15:26:42 <elliott> 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 <kallisti> elliott: why Map and not array
15:27:48 <elliott> Well, because arrays can;t be indexed by *a*s...
15:27:57 <elliott> It'd work for the fromEnum case, but who cares.
15:28:04 <elliott> Don't use a Vector by default.
15:29:20 <kallisti> elliott: how often does Storable require that conversion to happen.
15:29:42 <elliott> Every single time you take an element out or put one in
15:29:47 <elliott> So, every single operation
15:29:57 <elliott> Unless you want to traverse a >thousand-element list each time?
15:30:15 <elliott> Part 3487234 in the ongoing series "it's your algorithms".
15:31:07 <kallisti> elliott: ..I never suggested traversing a thousand element list each time?
15:31:26 <elliott> Well, I presumed you were implying it was overengineering wrt "how often"
15:31:47 <kallisti> no I'm just wondering if it would be better to use an array in the fromEnum case
15:31:54 <elliott> Oh
15:31:58 <elliott> Probably irrelevant
15:32:08 <elliott> Profile first, etc.
15:32:09 <kallisti> you mentioned it does some kind of memoization? how does that work.
15:32:19 <elliott> It's not really.
15:32:33 <elliott> It's just floating the shared data outside the lambda so that it's shared.
15:32:44 <elliott> It's just related.
15:33:31 <kallisti> under what conditions does that occur.
15:33:37 <elliott> When you do it.
15:33:43 <kallisti> >_>
15:34:11 <elliott> 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 <kallisti> are you sure about that? what do you think I don't understand?
15:34:49 <elliott> I don't know, but you think seq has side-effects
15:34:57 <elliott> So you clearly misunderstand /something/
15:35:17 <Sgeo> Everything is side-effectful at the GHC level. Observing a value mutates memory
15:35:20 <kallisti> I thought we discovered it was because I didn't use the same definition of side-effect
15:35:32 <elliott> You might have discovered that
15:35:46 <elliott> Unfortunately any definition of side-effect like that is contradictory with your observed viewpoints as Sgeo points out
15:37:09 <kallisti> I suppose seq could just be considered a language primitive.
15:37:14 <elliott> Here we go again
15:37:16 -!- Ngevd has joined.
15:38:14 <elliott> It has well-defined denotational semantics, and can be implemented operationally with no trouble at all (evidence: GHC)
15:38:31 <Ngevd> Hello!
15:38:32 <elliott> So it's as "special" as any other Prelude function or whatever
15:38:48 <itidus21> hmmmmmm
15:38:54 <Sgeo> elliott, but can it be implemented without having implemented seq first?
15:39:13 <Sgeo> null can be defined without null, just with pattern matching
15:39:34 <elliott> Sgeo: Good luck trying to define the entirety of Haskell without relying on a few primitives.
15:40:24 <Sgeo> Ints, Chars, (actually not Chars), IO stuff
15:40:29 <Sgeo> Not sure what else needs primitives
15:40:33 <kallisti> seq :: a -> b -> b
15:40:33 -!- iconmaster has joined.
15:40:34 <kallisti> seq = let x = x in x
15:40:37 <kallisti> good prelude function
15:40:41 <elliott> newtype Int = Int Bool Bool Bool ... thirty one Bools
15:40:48 <elliott> kallisti: Oh snap, evidence by GHC implementation!
15:40:52 <elliott> I can prove SO MUCH about Haskell in that way.
15:41:00 <elliott> For instance, the function arrow (->) is impure, as evidenced by the definition of IO.
15:41:01 <kallisti> elliott: is that the actual implmenetation?
15:41:03 <elliott> No.
15:41:08 <elliott> Read the comment at the top.
15:41:34 <kallisti> so then it's not like "any ther Prelude function"
15:41:37 <kallisti> +o
15:41:38 <olsner> newtype Bool = Bool (a -> a -> a)
15:41:40 <elliott> Sgeo: Anyway, things like defining data constructors etc. are primitives; seq just happens to be a value
15:41:56 <elliott> You could also implement seq in terms of some other primitive, say ($!)
15:42:16 <elliott> kallisti: You're quoting GHC source code, your argument has no applicability to Haskell the language whatsoever in the first place.
15:42:25 <kallisti> elliott: what is my argument?
15:42:27 <Ngevd> Isn't ($!) defined in terms of seq?
15:42:37 <elliott> kallisti: I have no idea, it's too stupid to work out.
15:42:48 <itidus21> `log parts and the composites are
15:42:49 <elliott> Ngevd: You could make ($!) the primitive and define seq as (id $!).
15:42:55 <Ngevd> True
15:42:56 <HackEgo> 2012-01-07.txt:11:17:47: <itidus21> 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 <kallisti> if you think my arguing is "lol this is why seq has side effects" then you're wrong.
15:43:34 <itidus21> i realized that this is referring to the rules of lambda calculus contrasted with whole lambda calculus programs
15:44:28 <kallisti> 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 <elliott> kallisti: Int (+) is also implemented as a Primitive in GHC.
15:44:47 <kallisti> yes.
15:44:53 <elliott> However you can implement (+) on Ints yourself.
15:45:05 <elliott> 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 <kallisti> not as efficiently though, right?
15:45:14 <elliott> Oh! Efficiency! The definition of a language.
15:45:27 <kallisti> elliott: ....I'm not even making an argument about seq being a side-effect, dude.
15:45:35 <elliott> Seriously, the fact that GHC defines <anything> this way does not mean that <this way> is somehow specially related to <anything>.
15:45:43 <elliott> kallisti: You're the only person who's said "side-effect" in like the last 20 messages.
15:46:24 <itidus21> 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 <kallisti> elliott: seq is a primitive of the language. therefore, it's not a side-effect.
15:46:33 <elliott> God this is really stupid shut up about seq
15:48:03 <itidus21> such a number must exist :D
15:48:55 <Sgeo> 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 <kallisti> seq
15:49:19 <elliott> Sgeo: Don't know/care, especially because it's irrelevant
15:49:30 <elliott> Doubly especially because it'll encourage kallist
15:49:31 <elliott> i
15:49:37 <kallisti> encourage me to do... what?
15:49:44 <Sgeo> elliott, actually, I think my question is partially kallisti's point
15:49:44 <kallisti> I am not even arguing anything
15:49:47 <Sgeo> Maybe.
15:50:17 <elliott> 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 <kallisti> 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 <kallisti> therefore I'm wrong.
15:50:54 <kallisti> about everything
15:50:56 <kallisti> or something.
15:51:29 <kallisti> an argument where there was none. fun. I'm going to go do something else.
15:52:06 <elliott> Good god.
15:58:07 <kallisti> !perl `ls 'stuff'`
15:58:10 <EgoBot> ​/bin/ls: cannot access stuff: No such file or directory
15:58:19 <kallisti> `run perl -e '`ls 'stuff'`'
15:58:24 <HackEgo> ls: cannot access stuff: No such file or directory
15:58:25 <kallisti> `run perl -e '`ls q(stuff)`'
15:58:28 <HackEgo> sh: Syntax error: "(" unexpected
15:59:07 <kallisti> `run perl -e '`ls q/stuff/`'
15:59:11 <HackEgo> ls: cannot access q/stuff/: No such file or directory
15:59:27 <kallisti> `run perl -e '`echo 'hi'`'
15:59:31 <HackEgo> No output.
15:59:45 <kallisti> `run perl -e 'qx(echo q(hi))'
15:59:48 <HackEgo> sh: Syntax error: "(" unexpected
15:59:51 <kallisti> ?
16:00:02 <kallisti> `run perl -e 'qx{echo q{hi}}'
16:00:05 <HackEgo> 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 <kallisti> so I've come to the conclusion
16:19:55 <kallisti> that I'm completely incapable of copypasting something into emacs.
16:20:36 <kallisti> I thought I knew how but it's not working :P
16:20:44 <kallisti> and... suddenly it works!
16:21:44 <Vorpal> <kallisti> that I'm completely incapable of copypasting something into emacs. <-- middle mouse button?
16:21:51 <Vorpal> if you are in X that is
16:22:20 <Vorpal> I generally don't use the ctrl-v/ctrl-c buffer outside stuff like gimp
16:22:36 <Vorpal> I have no idea how you access that in emacs
16:24:58 <Ngevd> I don't even know how to /type/ in emacs
16:25:40 <Vorpal> Ngevd, uh it is easy just hit the keys on your keyboard
16:26:40 <Vorpal> 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 <Vorpal> (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 <itidus21> what are the benefits of levenshtein coding over regular binary coding?
16:31:07 <kallisti> Vorpal: you have to use C-y in emacs
16:31:10 <kallisti> but it wasn't working for some reason..
16:31:14 <Vorpal> kallisti, heh
16:31:43 <itidus21> or....
16:31:46 <kallisti> C-y uses the same buffer as selected text in X
16:32:07 <itidus21> does levenshtein coding mean that in one series of 0s and 1s you can encode multiple integers?
16:32:28 <itidus21> thats amazing
16:42:26 <oklopol> it is?
16:42:59 -!- Ngevd has quit (Read error: Connection reset by peer).
16:45:23 <oklopol> also i don't think it means that
16:45:27 -!- Ngevd has joined.
16:46:17 <kallisti> itidus21: wat
16:46:33 <kallisti> !perl `echo 'hi'`
16:46:34 <EgoBot> No output.
16:46:37 <kallisti> !perl print `echo 'hi'`
16:46:37 <EgoBot> hi
16:47:07 <itidus21> coping from wiki 0101100 = 0 1 2? :D
16:47:19 <itidus21> [0][10][1100] = 0 1 2
16:48:41 <itidus21> 0000 = [0][0][0][0] = 0 0 0 0
16:49:14 <itidus21> [10][10][10][10][0] = 1 1 1 1 0
16:49:14 <kallisti> bash really
16:49:15 <kallisti> really
16:49:20 <kallisti> really needs perl quote-like operators
16:49:24 <itidus21> but... perhaps what i am doing wrong is wording my statement
16:50:19 <oklopol> well herp derp yes, the levenshtein code is a code, so you can stick integers in a sequence and decode uniquely.
16:50:58 <itidus21> sorry about that
16:50:59 <oklopol> but you can also just encode sets of integers in an integer and use a single codeword
16:51:44 <itidus21> :-?
16:51:51 <oklopol> in fact it's even a prefix code, another such code is coding n to 0^n1
16:51:53 <fizzie> Not just any code, a prefix code. (Also why is "prefix code" and "prefix-free code" the same thing nurrrr?)
16:52:23 <itidus21> its weird how all of this is obvious to you guys
16:52:26 <oklopol> fizzie: please don't restate my lines. that doesn't make you sound smart.
16:52:40 <fizzie> You were just TOO FAST for me.
16:53:02 <fizzie> But that's all right, "it's no shame to be fast", like we say here in Finn land.
16:53:05 <itidus21> i mean you must have taken math as a hobby rather than a school thing
16:53:14 <oklopol> itidus21: i've had a lot of this stuff on courses. from the coding perspective and the combinatorics on words perspective.
16:53:24 <oklopol> math is my profession
16:53:39 <oklopol> not sure that's a word though
16:53:42 <fizzie> You could even go as far as to say oklopol eats math for breakfast.
16:53:59 <itidus21> profession is a word
16:54:06 <Ngevd> I eat little hoops of wholegrain, covered in chocolate for breakfast
16:54:15 <oklopol> i'm just wondering if it's as general term for job as i think it is.
16:54:22 <itidus21> combinatorics however is probably not what you intended
16:54:28 <itidus21> but might be a word
16:54:32 <oklopol> no, i meant combinatorics on words
16:54:51 <oklopol> which has almost nothing to do with combinatorics
16:55:27 <fizzie> 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 <oklopol> math doesn't require any sort of education
16:55:52 <fizzie> So it's just your occupation.
16:55:57 <oklopol> jobulation
16:56:13 <fizzie> Tribulation.
16:56:55 <fizzie> OED's definition just says you need to know some stuff, not get an education.
16:56:58 <fizzie> "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 <fizzie> "More widely: any occupation by which a person regularly earns a living."
16:57:22 <oklopol> well i suppose you need to know some stuff
16:58:00 <oklopol> itidus21: do you have a university degree yet?
16:58:10 <itidus21> no
16:58:25 <oklopol> have you considered getting a university degree0
16:58:27 <oklopol> ?
16:58:51 <itidus21> i am living in a weird kind of dire strait...
16:59:11 <itidus21> the world has defeated me from every angle
16:59:32 <oklopol> well i'm aware of that, i felt the question was orthogonal enough
16:59:57 <itidus21> success is mostly an illusion
16:59:57 <oklopol> fizzie: how many phd's do you have?
17:00:28 <itidus21> more time is spent discussing the rules of chess than playing chess
17:00:39 <itidus21> the actual pieces are like a distant memory
17:01:13 <itidus21> my mom is extraordinarily inefficient at walking up and down the passageway here at 4am
17:01:24 <itidus21> its like she takes the maximum walking path
17:01:54 <oklopol> well that's an np-complete problem so she might be smarter than you think.
17:03:00 <oklopol> well actually certainly not
17:03:28 <oklopol> well depends on what you mean by maximal
17:03:29 <itidus21> 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 <oklopol> but maybe the edge problem is more natural
17:04:10 <itidus21> but the only reason this bothers me, is that my brothers hearing is too good..
17:04:22 <itidus21> and everything makes him angry
17:04:37 <oklopol> i see, i see
17:04:47 <oklopol> i don't have brothers
17:04:48 <itidus21> and part of him blames my mom for all that is wrong in his life which he kind of admits once
17:05:13 <oklopol> has he considered blaming himself?
17:05:33 <itidus21> so.. to me.. its like when my mom makes noise, she is hitting a hornets nest with a stick
17:05:38 <itidus21> although she has the right to
17:05:49 <itidus21> well.. he bought 2 books.. 1 about anger, 1 about shame
17:06:01 <oklopol> shame?
17:06:02 <itidus21> so, he means well on some level
17:06:06 <itidus21> yup
17:06:12 <oklopol> why is he ashamed
17:06:23 <itidus21> i dunno.. and probably dangerous to ask him :D
17:06:37 <oklopol> awesome family you have there
17:06:45 <itidus21> nah its not so bad
17:06:49 <oklopol> if only you were 18 and could move away
17:06:55 <oklopol> okay
17:07:00 <itidus21> a lot of my problems is in me though
17:07:15 <fizzie> I've got a nice round number.
17:07:15 <itidus21> that i am basically the cause of my problems
17:07:32 <itidus21> i have trouble with everyone i meet since i was child
17:07:34 <oklopol> fizzie: which number?
17:07:45 -!- derdon has joined.
17:07:48 <oklopol> itidus21: is it because you keep telling them that you suck and they get tired of it?
17:08:01 <oklopol> have you considered letting them find out on their own?
17:08:17 -!- Ngevd has quit (Quit: Goodbye).
17:08:34 <fizzie> Zero, the roundest number. (Well, I suppose that's a matter of definition.)
17:09:04 <Slereah> It's true
17:09:15 <Slereah> You can't round it down to the nearest 10^n!
17:09:26 <Slereah> It's already all rounded!
17:09:41 <oklopol> and 1 isn't?
17:09:45 <itidus21> 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 <oklopol> itidus21: you cannot stop it even with new people you meet?
17:10:41 <itidus21> my behaviour is basically uniform
17:10:43 <oklopol> 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 <itidus21> i think i may be cursed
17:11:29 <oklopol> sounds likely.
17:12:17 <itidus21> i have become refuse of society
17:12:22 <oklopol> 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 <oklopol> so i have a hunch i know how you feeel
17:12:34 <oklopol> *feel
17:13:33 <itidus21> the way it works is the weaker someone is, the more severely is the punishment if they stand up for themselves
17:13:40 <oklopol> what does it mean to be refuse of society
17:13:47 <itidus21> since in a very subtle way, it is like a class war
17:14:06 <oklopol> stand up for themselves? i have no idea how that concept applies to modern society.
17:16:21 <kallisti> oklopol: he means he's literally trash from society.
17:16:24 <itidus21> stand up to who? my family? my friends? my coworkers?
17:16:36 <itidus21> this is who i have to stand up to day to day?
17:16:43 <itidus21> how can it work?
17:16:49 <oklopol> yeah and i'm not sure what you mean by that
17:16:58 <itidus21> why should they be the enemy?
17:17:09 <oklopol> are they telling you to do things? will they hurt you if you don't?
17:17:37 <itidus21> how can someone stand up to everyone?
17:17:52 <oklopol> kallisti: like someone's poop that learned to talk? that would be impressive.
17:18:06 <oklopol> itidus21: what is "standing up to someone"?
17:18:33 <oklopol> i never quite understood
17:18:57 <itidus21> thats how society works... the ones in real trouble are the ones where their closest humans have turned against them
17:19:35 <oklopol> err, if someone turns against you, you walk away from them?
17:20:23 <itidus21> surely i can't be the only one
17:20:30 <oklopol> i bet you aren't
17:20:54 <itidus21> an undercurrent becomes established
17:21:14 <itidus21> well at least my dad wasn't abusive alcoholic
17:21:24 <itidus21> so.. i see that on tv shows
17:21:27 <itidus21> it is for some
17:21:48 <itidus21> he was in his own words( :-P ) perfect
17:22:05 <kallisti> :t Map.!
17:22:06 <lambdabot> parse error on input `Map.!'
17:22:18 <kallisti> :t Map.(!)
17:22:19 <lambdabot> Not in scope: data constructor `Map'
17:22:21 <kallisti> :t (Map.!)
17:22:22 <lambdabot> Couldn't find qualified module.
17:23:02 <itidus21> but, when my father died.. i slowly learned the world is a very lonely place
17:23:11 <oklopol> 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 <oklopol> if the world feels like a lonely place, your friends probably suck
17:28:36 <kallisti> yep
17:28:58 <itidus21> :-) it wasn't their fault
17:29:03 <oklopol> you should try kallisti for instance, he's a great friend
17:29:05 -!- sebbu has quit (Ping timeout: 244 seconds).
17:29:19 <oklopol> well true, so maybe you can let them live.
17:30:00 <itidus21> 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 <itidus21> i do not know what else happened to him
17:30:51 <oklopol> and that still somehow magically affects his life?
17:31:01 * kallisti is the best friend ever.
17:31:01 <oklopol> i will never understand people
17:31:24 <itidus21> no.. i knew him in 2nd grade :P
17:31:40 <oklopol> oh okay.
17:33:33 <itidus21> 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 <itidus21> i dunno the full story of him
17:34:26 <itidus21> second guy had .. endless stream of girlfriends.. then finally had a baby.. ended up leaving it apparently
17:34:45 <itidus21> i dunno
17:34:55 <itidus21> i have spent a long time with such weird people
17:35:37 <itidus21> and since i don't argue back, fight back.. eventually things always leads to abuse
17:35:58 <oklopol> physical abuse?
17:36:16 <itidus21> any sort
17:36:19 <Phantom_Hoover> No; "FFS iti would you *please* shut up for once" abuse.
17:36:55 <oklopol> well your life certainly sounds interesting.
17:37:01 <oklopol> but you should really stop bragging about it
17:37:22 <oklopol> how do you expect to keep living our perfect lives after that.
17:37:41 <oklopol> i have to leave and be an asshole somewhere else, see you later :)
17:39:48 <itidus21> 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 <kallisti> :t curry
17:40:01 <lambdabot> forall a b c. ((a, b) -> c) -> a -> b -> c
17:40:12 <kallisti> :t uncurry
17:40:13 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c
17:40:16 <oklopol> have you considered math, it's like programming but better
17:40:25 <itidus21> clearly they are the same thing
17:40:38 <itidus21> now.. you run along :D
17:40:41 <oklopol> you'd think
17:40:42 <kallisti> programming is more like a subset of math.
17:40:49 <oklopol> she has to brush her hair or something
17:40:53 <kallisti> the subset that's mostly concerned with computable things.
17:41:02 <oklopol> so i have another 20 min
17:41:08 <itidus21> ahhhh
17:41:10 <itidus21> women
17:42:36 <itidus21> so, theres combinatrics and lambda calculus right?
17:42:45 <itidus21> and they are effectively capable of the same things right?
17:43:00 <kallisti> um
17:43:04 <itidus21> ^combinatorics
17:43:19 <kallisti> combinatorics is like... counting things
17:44:03 <kallisti> 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 <Phantom_Hoover> <itidus21> women
17:44:12 <Phantom_Hoover> <itidus21> so, theres combinatrics and lambda calculus right?
17:44:15 <Phantom_Hoover> The Combinatrix.
17:44:21 <itidus21> :o
17:44:24 <kallisti> Phantom_Hoover: ...
17:44:42 <itidus21> thats probably what i was thinking
17:44:43 <Phantom_Hoover> Combinatrix and Lambda Calculus.
17:45:37 <itidus21> "In the theory of computation, a diversity of mathematical models of computers have been developed." hmm..
17:45:43 <oklopol> itidus21: combinatory logic and combinatoric are rather different things
17:45:44 <kallisti> 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 <oklopol> *s
17:47:11 <oklopol> 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 <oklopol> 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 <kallisti> heh mugglative
17:48:16 <kallisti> so many fun words.
17:48:33 <oklopol> unfortunately i don't think that's an actual term in math
17:48:36 <oklopol> and blah isn't either
17:49:04 <olsner> mugglative blah-theory
17:49:10 <oklopol> there is a concept called sex entropy though, have i mentioned
17:50:17 <kallisti> no.
17:50:26 <kallisti> sounds fun.
17:50:35 -!- sebbu2 has changed nick to sebbu.
18:09:16 -!- MSleep has changed nick to MDude.
18:17:22 <kallisti> @hoogle Ptr a -> IO a
18:17:22 <lambdabot> Foreign.Storable peek :: Storable a => Ptr a -> IO a
18:17:22 <lambdabot> Foreign.Marshal.Alloc free :: Ptr a -> IO ()
18:17:22 <lambdabot> 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 <kallisti_> @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 <lambdabot> 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 <Ngevd> I've just had an idea for an esolang!
19:14:59 <Ngevd> A mixture of lambda calculus and the Copenhagen interpretation of quantum mechanics!
19:15:48 <Ngevd> BUT WITHOUT QUANTUM MECHANICS!
19:15:55 <Ngevd> So, lambda calculus
19:16:13 <Ngevd> Hmm...
19:16:20 <Ngevd> It could be a functional extension to ORK...
19:18:12 <Ngevd> There is a magic box called Trevor.
19:19:56 <Ngevd> 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 <Ngevd> Trevor = const
19:20:44 <Ngevd> :)
19:21:52 <Ngevd> 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 <itidus21> so what is a function? i feel like a jackass asking this again
19:43:52 <Ngevd> Hello
19:44:01 <itidus21> is there any deep intuition of what a function is?
19:44:20 <Ngevd> A function is a subroutine that returns a value
19:44:41 <kallisti> lol
19:44:55 <itidus21> hmm
19:45:07 <Ngevd> In some languages, in other languages it is THE DIFFERENCE BETWEEN LIFE AND DEATH
19:45:20 <itidus21> so if you use church numerals to encode back and forth between arabic numerals and church numerals
19:45:44 <Ngevd> Can you reprhase that? I don't quite get what you mean
19:45:48 <itidus21> can you use lambda calculus to write.. say.. ummm
19:45:53 <itidus21> well...
19:46:12 <itidus21> suppose you have some number like 555
19:46:18 <itidus21> and you want to square it
19:46:38 <itidus21> then you could find an encoding of 555 in lambda calculus
19:47:26 <itidus21> 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 <itidus21> and then.. does there exist a lambda calculus expression for squaring a number.. which you could put next to your 555
19:48:11 <Ngevd> That is the method of creating the Church numeral 555 that is the most simple
19:48:23 <Ngevd> \n f.n (n f)
19:49:03 <Ngevd> > let square = \n f -> n (n f) in square (ap (.) (join (,))) (+1) 0
19:49:03 <lambdabot> Occurs check: cannot construct the infinite type: a = a -> b
19:49:15 <Ngevd> Haskell doesn't like this
19:49:27 <itidus21> and.. then you take that result.. and convert it from a church numeral..
19:49:40 <itidus21> back to arabic numerals
19:50:11 <itidus21> is such a thing possible for any function one might find in a library such as c's math.h?
19:50:44 <Ngevd> With an appropriate representation for, eg, fractions, negative numbers, etc.
19:50:45 <Ngevd> Yes
19:51:06 <Ngevd> Of course, I know nothing about math.h, and very little about C
19:51:11 <itidus21> lol
19:51:16 <itidus21> hummmmm
19:52:44 <Ngevd> Does anyone here play Sopio?
19:53:27 <itidus21> 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 <Ngevd> > ap (.) (join (.)) (+1) 0
19:55:07 <lambdabot> 3
19:55:10 <itidus21> 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 <itidus21> but then again.... maybe it will prove to be otherwise
19:55:33 <kallisti> @pl (\x y -> z)
19:55:34 <lambdabot> const (const z)
19:55:35 <Ngevd> Yes, church numerals is unary, not very efficient
19:55:48 <Ngevd> For large numbers
19:56:10 <Ngevd> Hmm...
19:56:30 <Ngevd> Now I'm going to make LC things for church lists of booleans
19:56:44 <itidus21> so, it seems each scheme has a unique strength to it
19:58:13 <itidus21> decimals are easy to compute with by hand
19:58:23 <itidus21> binary is easy to compute with for a computer
19:58:57 <Ngevd> Decimals are only easy to us because we are used to them
19:59:11 <Ngevd> And we can count on our hands
19:59:33 <itidus21> church can be performed by a computer and allows numbers to be used in lambda calculus
20:01:00 <itidus21> what i mean by performed is we are saved the burden by a computer
20:01:42 <itidus21> and i assume that almost always optimized into binary
20:05:14 -!- Phantom_Hoover has joined.
20:05:36 <Vorpal> 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 <Ngevd> You're probably right
20:06:13 <itidus21> well.. its not just vs binary
20:06:22 <Ngevd> Also, I'm going to suck at TF2 now.
20:06:23 <Ngevd> Bye
20:06:27 <Vorpal> Ngevd, I'm pretty sure I wouldn't be able to remember my telephone number in binary :P
20:06:30 <itidus21> so i got to thinking
20:06:50 <itidus21> there could be an operation on a number where you do something to a number and it's reverse
20:06:51 <fizzie> There's not so many good reasons to favour 10 over 16, though.
20:06:52 <Vorpal> itidus21, anyway binary is useful for computers because it keeps the electronics simple.
20:07:06 <Vorpal> fizzie, indeed. I'm not saying decimal is optimal
20:07:14 <Vorpal> just that binary isn't for a human.
20:07:24 <itidus21> Vorpal: plurality of numeral encoding is revolting
20:07:28 <Ngevd> 60 is comparatively common among human civilizations
20:07:29 <Vorpal> itidus21, eh?
20:07:32 <Vorpal> itidus21, what?
20:07:39 <itidus21> Vorpal: plurality of numeral encoding is great
20:07:43 <Vorpal> Ngevd, ah yes, the Babylonians used that, right?
20:07:50 <Ngevd> Vorpal, so I believe
20:07:50 <Vorpal> itidus21, you mean there are many bases?
20:07:54 <Vorpal> itidus21, or what?
20:08:01 <itidus21> more than bases even
20:08:05 <Vorpal> well sure
20:08:11 <Vorpal> there are an infinite number of bases anyway
20:08:24 <Vorpal> so anything else doesn't matter unless it is uncountable
20:08:25 <itidus21> i mean like say.. church numerals, electronic binary numerals, arabic decimal numerals
20:08:39 <Vorpal> itidus21, why did you call it revolting?
20:08:49 <itidus21> because of the topic
20:08:54 <Vorpal> Ngevd, anyway I think we should count using gray code. :D
20:09:20 <itidus21> godel numerals which i wouldnt know
20:09:51 <Vorpal> itidus21, what is the topic then?
20:10:04 <itidus21> 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 <Vorpal> ah
20:10:30 -!- ais523 has joined.
20:10:34 <Vorpal> I thought you meant because of the topic of the discssion
20:10:37 <Vorpal> discussion*
20:10:40 <itidus21> 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 <Vorpal> rather than because of the channel topic
20:10:43 <Vorpal> ais523, hi
20:10:50 <itidus21> yeah.. it was ambiguous and weird of me
20:11:04 <ais523> hi
20:11:23 <Vorpal> itidus21, also those definitions of func are incompatible with each other
20:11:28 <ais523> I've actually spent most of the time since I was last online asleep
20:11:34 <itidus21> true..
20:11:40 <ais523> for a 24-hour period, I was awake for only about 3 hours or so in the middle
20:11:42 <itidus21> i don't know what to name them
20:11:45 <ais523> and maybe a fewm inutes at each end
20:11:56 <itidus21> i don't know if such an operation is common
20:12:52 <Vorpal> ais523, ouch
20:13:23 <itidus21> like ... func_blah1(12345) = 12345 + 54321; func_blah2(12345) = 12345 * 54321
20:13:32 <Vorpal> 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 <Vorpal> ais523, yet it seems people prefer the thread approach? Why?
20:14:01 <ais523> Vorpal: because it means that things that should be independent, actually are
20:14:12 <ais523> or to put it another way, a round-robin scheduler written by hand is not ideal for every application
20:14:43 <itidus21> 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 <itidus21> with an extra bit of info saying whether to do this operation
20:15:51 <Vorpal> 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 <ais523> well, in that case you have an unusual use pattern, and your solution might actually be best
20:17:19 <Vorpal> 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 <Vorpal> also turn based
20:18:25 <kallisti> http://sprunge.us/dDgO hi someone complain about this code.
20:18:41 <Vorpal> 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 <Vorpal> async*
20:18:46 <itidus21> 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 <kallisti> I'm still not sure if I want to use the (File, Rank) coordinate system.
20:20:29 <Vorpal> 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 <ais523> Vorpal: hmm, that exists in Linux too
20:20:59 <ais523> you can request a SIGIO when data's available
20:20:59 <itidus21> 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 <Vorpal> 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 <itidus21> or func(a^b) = a^b * b^a
20:23:15 <Vorpal> ais523, anyway for linux that sounds rather inefficient. Unless SIGIO has a payload saying which fd it was.
20:24:12 <ais523> Vorpal: yep, it can have a payload
20:24:21 <ais523> although you have to specifically request one, probably for backwards compatibility
20:24:26 <Vorpal> 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 <kallisti> it's certainly memory efficient.
20:26:07 -!- Zuu has quit (Ping timeout: 252 seconds).
20:26:31 <Vorpal> 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 <Vorpal> (I have no idea what sort of systems the latter was meant for)
20:27:21 <kallisti> microwaves
20:28:52 <kallisti> something that doesn't have an OS.
20:28:58 <Vorpal> hah
20:29:06 <kallisti> Erlang is basically a standalone mini-OS.
20:29:15 <Vorpal> kallisti, might be for some sort of embedded target. Erlang runs on vxworks for example.
20:30:13 <Vorpal> 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 <kallisti> Haskell should get library support for that kind of stuff.
20:31:09 <Vorpal> (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 <Vorpal> kallisti, also hot-swapping currently executing code :P That might be more annoying in haskell.
20:32:00 <kallisti> I'm familiar with that one.
20:32:05 <kallisti> it takes a bit of effort to get that working.
20:32:23 <kallisti> their framework thing is kind of weird.
20:32:29 <Vorpal> in erlang or in haskell?
20:32:36 <kallisti> erlang
20:32:41 <Vorpal> you do need to provide code if the state representation changed
20:32:45 <kallisti> yes
20:32:55 <Vorpal> obviously
20:33:13 <kallisti> Haskell solution: write perfect code that never needs to change
20:33:49 <Vorpal> kallisti, but apart from that if you use the built in behaviours (such as gen_server) it is trivial
20:34:13 <Vorpal> 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 <kallisti> I couldn't really make sense of their documentation on those.
20:34:34 <Vorpal> you just use the proc_lib module
20:34:39 <kallisti> I recally being very confused at the time of reading.
20:34:56 <kallisti> also hi everyone: complain about my Haskell
20:34:59 <kallisti> http://sprunge.us/dDgO
20:35:00 <Vorpal> oh and sys I believe
20:35:09 <Vorpal> kallisti, about gen_server?
20:35:10 <kallisti> oklopol: complain
20:35:24 <kallisti> Vorpal: the whole thing. I don't remember the name of it. they gave it some weird name.
20:35:29 <Vorpal> kallisti, eh, basically you implement a callback module and gen_server provides the event loop and such.
20:35:30 <kallisti> their library thing.
20:35:49 <Vorpal> kallisti, err they gave their db library a weird name, is that what you mean?
20:36:05 <kallisti> I think so.
20:36:09 <Vorpal> kallisti, mnesia?
20:36:13 <Sgeo> <kallisti> also hi everyone: complain about my Haskell
20:36:14 <Vorpal> I never used it
20:36:15 <kallisti> but I recall gen_server being part of like some standard erlang pattern that had a weird name
20:36:19 <kallisti> or something.
20:37:04 <kallisti> Sgeo: I can only assume you're writing a huge reply about how terrible my code is.
20:37:07 <kallisti> this is good.
20:37:08 <Vorpal> kallisti, well you generally put your gen_servers in a supervisor tree, to allow error-recovery if a process crashes.
20:37:14 <Sgeo> kallisti, no, I'm not
20:37:15 <Vorpal> but that isn't really weird
20:37:26 <Sgeo> I thought people thought you were asking them to complain about Erlang
20:37:34 <kallisti> wat
20:37:38 <kallisti> how does that even happen
20:37:40 <Vorpal> Sgeo, no?
20:38:30 <kallisti> it's currently the best portal chess implementation in the world. still in the early alpha stages.
20:38:37 <Vorpal> 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 <Vorpal> kallisti, it is also the only one :P
20:39:05 <kallisti> Vorpal: I recall the line seperators being annoying, but I'm sure I'd get used to it.
20:39:11 <Vorpal> oh that
20:39:20 <Vorpal> yeah that annoyed me for like the first week or so
20:39:25 <Vorpal> I'm used to it now
20:39:34 <Sgeo> @src lines
20:39:34 <lambdabot> Source not found. And you call yourself a Rocket Scientist!
20:40:11 <kallisti> 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 <kallisti> 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 <itidus21> the physical version of the game should use actual mirrors and penlights :P
20:46:31 <kallisti> except that nothing in the game actually corresponds to a mirror
20:46:39 <Ngevd> Hello
20:46:43 <itidus21> oh right.. just portals
20:46:46 <itidus21> cool cool
20:47:07 <itidus21> something or other just disregard my comment
20:47:21 <fizzie> In that case, it should just use actual portals.
20:47:40 <itidus21> incidentally does a pen light create a beam as it bounces off a mirror?
20:48:14 <itidus21> pen laser might be the term
20:48:38 <itidus21> disregard that also.........
20:48:54 <Vorpal> 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 <itidus21> would it bounce off neatly like a >| ?
20:50:14 <fizzie> 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 <Vorpal> fizzie, heh
20:50:33 <fizzie> I don't recall lasers even being involved in any of the tasks.
20:50:34 <Vorpal> yes like usual in mirrors
20:50:42 <Vorpal> itidus21, ^
20:50:58 <Vorpal> itidus21, so you would get pretty much the same result as looking straight into a laser
20:51:04 <Vorpal> itidus21, which is obviously bad
20:51:20 <itidus21> i meant looking on from the side
20:51:40 <Vorpal> well you wouldn't see any beam anyway unless the air was dusty
20:51:51 <fizzie> Or if it's bright enough.
20:52:09 <fizzie> Well, okay, not if it's really non-dusty and non-humid.
20:52:14 <Vorpal> fizzie, I don't think you can ever see a laser beam passing through a transparent medium?
20:52:15 <itidus21> ok suppose someone has just slammed a bag of flour on the ground yet remembered to keep the mirror clean
20:52:24 <Vorpal> fizzie, maybe if it turns the air to plasma?
20:52:32 -!- oerjan has joined.
20:52:36 <Vorpal> but then you have other problems
20:52:48 <Vorpal> itidus21, eh. No idea
20:52:50 <itidus21> and somehow you bounce a laser off this mirror, through flour
20:52:57 <itidus21> do you think you would get a bounce?
20:52:58 <Vorpal> "good luck"
20:53:00 <fizzie> Vorpal: Well, no, but "air" in most places isn't absolutely free of particles.
20:53:03 <itidus21> ok :D
20:53:27 <Vorpal> fizzie, well yes, but is it usually enough to actually see the laser?
20:53:30 <fizzie> Vorpal: Anyway, it's got molecules in it.
20:53:41 <fizzie> 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 <oerjan> this evening's morbid discovery: there is apparently a small bird hanging from the neighbor's flag.
20:53:49 <Vorpal> fizzie, ooh, cool
20:53:51 <itidus21> ok i understand the point here.. light is only visible when it is reflected off something
20:54:28 <fizzie> "Such pointers, particularly in the green-light output range, are used as astronomical-object pointers for teaching purposes."
20:54:31 <itidus21> err rather
20:54:34 <Vorpal> 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 <Vorpal> 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 <oerjan> (sorry, i still don't have a camera.)
20:55:46 <Vorpal> oerjan, what about your cell phone?
20:55:57 <oerjan> neither does that.
20:56:05 <Vorpal> oerjan, also is the bird dead?
20:56:16 <fizzie> Or just "hanging out"?
20:56:30 <oerjan> Vorpal: deep frozen, if i judge by the sound effects of its hitting the flag pole.
20:56:40 <Vorpal> oerjan, how does it stay up?
20:56:50 <Vorpal> oerjan, rather than fall to the ground?
20:57:13 <oerjan> it looked like the end of the flag had twirled around it a bit
20:57:41 <oerjan> i guess its claws got stuck to it
20:57:55 <Vorpal> ah
20:58:04 <Vorpal> oerjan, so not a rope around the neck then?
20:58:25 <oerjan> it was a little hard to see in the dark, but it looked like a birdy shape
20:58:46 <Vorpal> oerjan, I meant a rope around the neck of the bird...
20:58:46 <oerjan> tail and head visible
20:59:12 <Vorpal> (hm hanging wouldn't work on birds, they could just hover to avoid it killing them)
20:59:13 <oerjan> no... i'd guess bumping into the flag pole would tend to do the killing
20:59:32 <oerjan> due to the wind
20:59:39 <Vorpal> oerjan, I'm surprised, birds bumping into windows and such doesn't tend to kill them. Hm.
20:59:57 <Sgeo> It doesn't?
20:59:58 <oerjan> Vorpal: i've definitely seen a bird killed by bumping into a window
21:00:01 <Vorpal> doesn't tend to die*
21:00:07 <fizzie> Sometimes they do die from that.
21:00:25 <oerjan> in fact it was a pretty eerie omen when it happened, just before my mom died
21:00:51 <Vorpal> 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 <Vorpal> oerjan, ouch
21:01:47 <Vorpal> what is rönn in English hm
21:01:54 <Vorpal> ah: https://en.wikipedia.org/wiki/Sorbus_aucuparia
21:02:00 <Vorpal> Sgeo, usually those fruits ^
21:02:34 <Vorpal> very sour fruits.
21:02:36 <fizzie> "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 <Vorpal> fizzie, hm
21:03:06 <fizzie> Certainly they don't *always* die from it.
21:03:20 <Vorpal> fizzie, never seen a bird die from a window collision, probably does happen though. Maybe the Swedish birds are smarter? ;)
21:04:05 <oerjan> Vorpal: i'd assume it depends on the speed of the bird
21:04:20 <fizzie> So maybe the Swedish birds are just lazier.
21:04:22 <oerjan> if they're drunk, they probably don't do very high speed flying
21:04:40 <ais523> oerjan: sure? drunk drivers often drive faster then non-drunk drivers
21:04:47 <ais523> although sometimes they drive very slowly instead
21:04:59 <oerjan> ais523: yeah but they don't have to use their own muscle power :P
21:05:08 <fizzie> Drunk runners don't run so terribly fast, I don't think.
21:05:13 <fizzie> Or straight.
21:06:10 <Vorpal> 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 <Vorpal> And iirc jackdaws are rather smart for being birds.
21:07:14 <oerjan> Vorpal: well i didn't _see_ it colliding, i heard a *bang* and found a dead bird afterwards
21:07:59 <Vorpal> oerjan, well I never claimed to count actually seen collisions
21:08:08 <Vorpal> err to only*
21:08:37 <Vorpal> oerjan, I never found any other evidence either for such deadly collisions
21:08:53 <kallisti> has anyone complained about my Haskell yet?
21:08:55 <kallisti> http://sprunge.us/dDgO
21:11:06 <fizzie> 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 <Vorpal> fizzie, using a firefox addon for that works
21:11:49 <Vorpal> customizegoogle iirc
21:11:55 <fizzie> "Meh."
21:11:57 <itidus21> does this mean birds would enter houses often if the windows weren't there?
21:12:16 <fizzie> The commonly accepted explanation is that it's the reflection that confuses them.
21:12:21 <fizzie> They think there's empty space ahead.
21:12:24 <kallisti> is this the sound of people complaining about my Haskell?
21:12:28 <Vorpal> fizzie, that doesn't explain water
21:12:31 <kallisti> it seems oddly unlikely that.
21:12:34 <kallisti> -ly
21:12:37 <kallisti> werjiwejrojwetjwoerj owiejr oiwjertoijweoirjwoeitjoiwjeroijwetoijweoirjwoietjiowjer
21:12:46 <Vorpal> kallisti, nobody cares?
21:12:55 <itidus21> Vorpal: maybe they think its water
21:12:57 <oerjan> kallisti: the complaints seem to suffer from an elliott deficiency
21:13:05 <kallisti> alas.
21:13:19 <fizzie> 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 <Vorpal> itidus21, usually birds doesn't try to fly straight into water like that though. Not unless they are like seagulls
21:13:37 <fizzie> (And rarely flat.)
21:13:38 <Vorpal> fizzie, true
21:13:55 <Vorpal> fizzie, on a calm day you can find flat ponds and such
21:14:20 <oerjan> when we invent proper force fields we can test how birds react to vertical water.
21:14:21 <fizzie> Well, yes. Still, not flat vertical ponds, for the most of the time.
21:14:27 <Vorpal> indeed
21:14:34 <fizzie> oerjan: In the interests of science.
21:14:44 <itidus21> ok probably not water
21:14:49 <oerjan> fizzie: precisely!
21:15:08 <Vorpal> fizzie, and waterfalls are usually not reflective hm
21:15:53 <itidus21> it is not for us to know
21:16:03 <Vorpal> fizzie, anyway normal glass doesn't really let UV-light through right?
21:16:09 <Vorpal> and iirc birds can see a bit into UV
21:16:20 <fizzie> 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 <Vorpal> so I guess it couldn't be that they see through it, but rather it must be the reflection
21:17:00 <Vorpal> fizzie, I wonder if normal glass looks like a mirror in UV
21:17:05 <ais523> Vorpal: it may be different shades of UV that's involved
21:17:06 <itidus21> Vorpal: yeah i have heard of such kind of senses.. specifically in some kind of magic shrimp
21:17:11 <Vorpal> ais523, well yes
21:17:12 <ais523> the ultraviolet range is much larger than the visible range
21:17:20 <Vorpal> hm
21:17:22 <ais523> and I'm moderately sure that at least near UV can get through glass
21:17:43 <Vorpal> I just wonder how much of UV that birds can see
21:18:22 <Vorpal> ais523, and yes I very much doubt that glass exactly matches the visible range of humans
21:19:28 <ais523> Vorpal: among other things, it transmits green better than other colors
21:19:37 <ais523> if you ever look at a sheet of glass edge-on, that will be reasonably obvious
21:19:43 <Vorpal> well yes I know
21:19:45 <oerjan> <Sgeo> 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 <Vorpal> ais523, looks like green with a slight blue tint
21:20:40 <Vorpal> 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 <Vorpal> or I guess very thick layer of glass
21:21:13 -!- zzo38 has joined.
21:22:50 <fizzie> http://www.tate.org.uk/research/tateresearch/tatepapers/05spring/images/charman_fig2.gif -- 'a' is claimed to be standard window glass.
21:23:09 <Vorpal> fizzie, and b and c?
21:23:38 <kallisti> > fromEnum (Just False)
21:23:39 <lambdabot> No instance for (GHC.Enum.Enum (Data.Maybe.Maybe GHC.Bool.Bool))
21:23:39 <lambdabot> arising...
21:23:58 <fizzie> Vorpal: b is specifically "colourless" and "UV-absorbing" sort of glass; c is some sort of UV-absorbing acrylic.
21:24:14 <Vorpal> and d is some sort of optimal?
21:24:21 <fizzie> And d is some sort of "ideal" UV filter, yes.
21:24:47 <fizzie> It's in context of UV protection for covered paintings.
21:24:53 <Vorpal> ah
21:25:25 <Vorpal> 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 <zzo38> Let's stop lying about monads please
21:29:27 <Vorpal> 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 <fizzie> 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 <fizzie> 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 <fizzie> Something to complain if you happen to meet your own designer.
21:31:12 <fizzie> Giving all the good eyes to some stupid birds.
21:32:28 <Vorpal> fizzie, well, I wouldn't want to change atm. It would mess up using monitors so badly.
21:32:32 <fizzie> http://www.webexhibits.org/causesofcolor/images/content/Absorption_peaksZ.jpg -- that's a bit larger.
21:33:02 <oerjan> if we ever meet aliens, they are going to find our color reproduction schemes hilarious
21:33:08 <Vorpal> indeed
21:33:31 <Vorpal> oerjan, and we would probably find the same about them
21:33:32 <fizzie> But with tetrachromatic vision they could sensibly use a 2x2 color filter pattern instead of going all RG/GB or so.
21:33:56 <fizzie> Three primaries is such an awkward number.
21:34:01 <Vorpal> yes
21:34:15 <Vorpal> fizzie, I doubt it is arranged like RGGB in our eyes though
21:34:29 <Vorpal> fizzie, anyway can't you tile a plane with triangles iirc?
21:34:32 <fizzie> 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 <zzo38> Of course it is always made approximate
21:35:19 <fizzie> Sure you can, but grids are much easier.
21:35:21 <zzo38> If you had a computer display that can change its wavelength then you could make better quality colors, probably
21:35:30 <fizzie> Maybe if we'd also go to triangular monitors?
21:35:33 <Phantom_Hoover> <Vorpal> fizzie, anyway can't you tile a plane with triangles iirc?
21:35:33 <Phantom_Hoover> .......
21:36:29 <oerjan> Vorpal: unless the aliens have eyes based on actual spectography
21:36:58 <fizzie> oerjan: Or maybe before we meet them we've just upgraded our eyes too.
21:37:07 <Vorpal> Phantom_Hoover, what?
21:37:21 <Phantom_Hoover> 'iirc'.
21:37:22 <Vorpal> Phantom_Hoover, it is obviously possible if you consider it.
21:37:33 <Phantom_Hoover> This is not something you could trivially state to be correct.
21:38:04 <Vorpal> 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 <oerjan> Phantom_Hoover: now prove that you can tile the plane with _any_ shape of triangle >:)
21:38:32 <Phantom_Hoover> oerjan, rotate it 180°, fit two sides together.
21:38:33 <Vorpal> oerjan, that is patently obvious. A proof might take a bit of work though
21:38:45 <Phantom_Hoover> Fit the resulting parallelograms into strips.
21:38:50 <Phantom_Hoover> Fit the strips together.
21:38:54 <fizzie> oerjan: Can't you just take the equilateral triangle tiling and transform those triangles?
21:38:59 <Phantom_Hoover> That too.
21:39:43 <zzo38> 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 <fizzie> I seem to recall something about the "physics" of darkvision somewhere.
21:40:12 <kallisti> > logBase 2 64
21:40:12 <lambdabot> 6.0
21:40:22 <Vorpal> zzo38, that got cut off
21:40:24 <oerjan> 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 <oerjan> (which afaict is the same as what i was thinking of)
21:41:23 <zzo38> 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 <Vorpal> zzo38, ah
21:41:40 -!- Ngevd has joined.
21:42:15 <Ngevd> Hello
21:43:25 <oerjan> Olé
21:47:00 -!- Zuu has joined.
21:52:47 <kallisti> > fromEnum False
21:52:48 <lambdabot> 0
21:53:22 -!- sebbu2 has changed nick to sebbu.
21:57:26 -!- Zuu has quit (Ping timeout: 252 seconds).
21:57:36 <kallisti> test = print (toEnum . fromEnum $ Square (Just (Piece White (Arrow North))) (Just (Loop North Bidirectional)) :: Square)
21:57:37 <fizzie> 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 <kallisti> *PortalChess> test
21:57:47 <kallisti> Square Nothing Nothing
21:57:50 <kallisti> FFFFFFFFFUUUUUUUUUU
22:02:20 <Vorpal> fizzie, hm I wonder why digital cameras use RGBG and such rather than triangular RGB sensors
22:02:36 <oerjan> fizzie: ok congruent but possibly mirrored
22:02:37 <Ngevd> BECAUSE THEY LOVE GREEN
22:03:01 <oerjan> or wait
22:03:02 <fizzie> Vorpal: Possibly because people want to get rectangular images?
22:03:40 <kallisti> > quotRem 0 8
22:03:40 <lambdabot> (0,0)
22:03:51 <kallisti> > quotRem 8 8
22:03:52 <lambdabot> (1,0)
22:03:54 -!- Zuu has joined.
22:04:04 <Vorpal> 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 <oerjan> although i assume that's what it is
22:04:18 <Vorpal> you get an uneven edge sure, but I don't see why that is a problem
22:04:52 <Vorpal> oerjan, looks to me like the same way they are used in opengl kind of?
22:04:53 <kallisti> 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 <Vorpal> or is that what you don't grasp?
22:05:22 <kallisti> oerjan: I seem to be getting zeros something. Because my test case becomes Square Nothing Nothing
22:06:57 <oerjan> 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 <oerjan> Vorpal: i'm just not very used to actually using them
22:07:36 <Vorpal> oerjan, ah
22:08:22 <kallisti> oh I found it
22:08:24 <kallisti> I think
22:08:53 <kallisti> noep
22:09:06 <fizzie> 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 <oerjan> 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 <oerjan> fizzie: well yes, linear map = affine map fixing the origin
22:12:25 <fizzie> 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 <fizzie> I guess that's a bit analoguous to "three types of cones and then the rods" sort of arrangement.
22:13:13 <fizzie> And there was that one with an "emerald" pixel. :p
22:13:30 <fizzie> (Which I think was named just because it sounds so good in PR literature.)
22:13:39 <Vorpal> fizzie, hm
22:13:58 <Vorpal> fizzie, so you mean some sort of extra colour humans can't see?
22:14:03 <Vorpal> or well, not directly
22:14:12 <kallisti> > quotRem 2 8
22:14:12 <lambdabot> (0,2)
22:14:21 <kallisti> > quotRem 10 8
22:14:21 <lambdabot> (1,2)
22:14:25 <oerjan> kallisti: in your Enum PieceInfo, you have some toEnum x 's that should be toEnum m
22:14:38 <kallisti> oerjan: yes I spotted that, but it didn't fix anything..
22:15:06 <kallisti> same output
22:15:10 <kallisti> so that case never happened
22:15:48 <kallisti> I'm guessing it's some minor mismatch of variables somewhere
22:15:56 <kallisti> but I'm tired and can't spot it. :P
22:16:52 <fizzie> 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 <fizzie> Incidentally, I've sometimes wondered if any cameras, if you turn a "black-and-white" mode on, produces "double-resolution" images.
22:19:21 <fizzie> I seem to recall that dcraw has a flag for that.
22:19:54 <fizzie> "-d: Show the raw data as a grayscale image with no interpolation. Good for photographing black-and-white documents.
22:19:54 <fizzie> -D: Same as -d, but totally raw (no color scaling)."
22:19:59 <fizzie> Right, that small-d one.
22:21:22 <oerjan> kallisti: Enum Piece has a mismatch between fromEnum and toEnum, i think
22:21:25 <fizzie> 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 <kallisti> fromEnum (Piece p i) = (fromEnum p * 21) + fromEnum i
22:26:39 <kallisti> toEnum i = let (d,m) = i `quotRem` 21
22:26:40 <kallisti> in Piece (toEnum d) (toEnum m)
22:26:44 <fizzie> 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 <kallisti> oerjan: is the current definition
22:26:50 <kallisti> I think that one is correct.
22:27:05 <Vorpal> fizzie, hm true
22:27:54 <oerjan> kallisti: yes that's what i thought
22:28:30 <kallisti> ...still broken. :P
22:28:31 <oerjan> i don't see any other Enum errors, although that's a horrible mess of compile time constants
22:28:38 <kallisti> and, indeed.
22:28:51 <kallisti> I could make bounded instances as well.
22:28:53 <Vorpal> :t fromEnum
22:28:54 <lambdabot> forall a. (Enum a) => a -> Int
22:28:57 <Vorpal> hm
22:29:03 <oerjan> kallisti: you fixed that PieceInfo part too?
22:29:08 <Vorpal> :t toEnum
22:29:09 <lambdabot> forall a. (Enum a) => Int -> a
22:29:17 <kallisti> oerjan: yes.
22:30:10 <Vorpal> @hoogle Piece
22:30:10 <lambdabot> package path-pieces
22:30:11 <lambdabot> package TimePiece
22:30:15 <Vorpal> no...
22:30:19 <Vorpal> @src Piece
22:30:19 <lambdabot> Source not found. Sorry.
22:30:22 <Vorpal> oh well
22:30:39 <fizzie> 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 <oerjan> Vorpal: sheesh it's from kallisti's program
22:30:52 <Vorpal> oerjan, oh
22:31:01 <Vorpal> oerjan, WHY CAN'T HOOGLE INDEX ALL RELEVANT CODE!
22:31:23 <Vorpal> fizzie, ah yes I heard about those too
22:31:29 <kallisti> 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 <oerjan> kallisti: have you remembered to reload/recompile? >:)
22:31:59 <kallisti> ....yes
22:32:04 <kallisti> unless :l doesn't recompile
22:32:20 <oerjan> use :r just in case
22:32:41 <kallisti> Square Nothing Nothing
22:32:53 <kallisti> I'll try some different inputs
22:32:57 <kallisti> see if I can get something different.
22:32:58 <oerjan> kallisti: do you have a smaller breaking test case?
22:33:19 <kallisti> I can replace either of the two fields with a Nothing and it will still break like that
22:33:37 <oerjan> what happens if you convert a field by itself?
22:34:38 <oerjan> basically, give me the smallest breaking value whose parts don't break
22:34:45 <kallisti> TO THE SCIENCE LAB
22:34:50 <kallisti> WHERE WE EXPERIMENT IN /COMPUTER SCIENCE/
22:35:20 <Vorpal> kallisti, be careful of any lasers
22:35:31 <kallisti> oerjan: well sheesh now that you're forcing me to do thorough testing I can probably just find it myself.
22:35:49 <oerjan> viaInt x = (toEnum $ fromEnum x) `asTypeOf` x might be useful
22:36:13 <fizzie> 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 <kallisti> ...oh
22:36:38 <Vorpal> fizzie, nice
22:37:57 <oerjan> kallisti: you realize that would have been easier than trying to mentally check the code in the first place, right?
22:39:03 <kallisti> oerjan: but testing is tedious
22:39:23 * kallisti logic
22:39:53 -!- nooga has quit (Ping timeout: 240 seconds).
22:40:51 <kallisti> oerjan: it would appear that the smallest breaking test case is the one I started with.
22:41:00 <kallisti> the only one that messes up is the Square type
22:41:23 <oerjan> hmph
22:42:07 <oerjan> kallisti: can i get the actual fromEnum value of your test case?
22:42:22 <Vorpal> fizzie, very cool indeed
22:42:36 <Vorpal> fizzie, how are the sensors placed in human eyes?
22:42:51 <kallisti> oerjan: all these good ideas... where do they come from? :P
22:42:51 <Vorpal> and about how many megapixels do human eyes produce?
22:43:10 <fizzie> Vorpal: I've seen some pictures somewhere; "rather messily", and the resolution depends very heavily on the angle.
22:43:17 <Vorpal> hm okay
22:43:22 <fizzie> All in all, it's clear it hasn't been designed by an *engineer*.
22:43:26 <Vorpal> heh
22:43:26 <fizzie> Probably an arts guy.
22:43:29 <Vorpal> :D
22:43:38 <kallisti> oerjan: oh hmmm 434
22:44:00 <oerjan> > 434 `quotRem` 17
22:44:01 <lambdabot> (25,9)
22:44:46 <fizzie> Vorpal: I mean, look at this stuff: http://www.phys.ufl.edu/~avery/course/3400/vision/rod_cone_distribution2.jpg
22:44:58 <Vorpal> fizzie, so what about the average resolution? And what about the resolution near the center?
22:45:47 <Vorpal> fizzie, so uh in dark humans see best towards the sides?
22:46:04 <fizzie> Yes. But note that it's not very much towards the sides.
22:46:08 <fizzie> Ten degrees isn't all that much.
22:46:15 <Vorpal> hm
22:46:17 <Vorpal> true
22:46:25 <fizzie> Also you don't really see any colors except right in the middle.
22:46:47 <Vorpal> fizzie, there seem to be a few cones towards the sides, just very few
22:46:49 <Vorpal> so hm
22:46:52 -!- iconmaster has quit (Read error: Connection reset by peer).
22:47:30 <Vorpal> 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 <fizzie> Apparently there's in total some 120 million rods and 6-7 million cones.
22:47:41 <kallisti> oerjan: I fear I will need more than a Word8 to store board squares. :P
22:48:15 <Vorpal> fizzie, doesn't that work out to 120 MP for the first (if it was evenly distributed and so on?)
22:48:24 <oerjan> kallisti: btw when you said every subpart works correctly, does that include the Maybes?
22:48:40 <kallisti> oh..
22:48:40 <fizzie> Vorpal: Yes, that's how many "pixels" there are.
22:48:43 <kallisti> didn't check those.
22:48:45 <kallisti> actually
22:48:46 <kallisti> forgot
22:48:52 <Vorpal> fizzie, quite a good resolution
22:48:52 <kallisti> I bet they result in Nothings
22:48:57 <kallisti> or something
22:48:59 <kallisti> let's fine out
22:49:21 <Vorpal> kallisti, sounds like a fine idea
22:49:42 <oerjan> kallisti: oh wait, found the bug :D
22:50:13 <oerjan> toEnum for Maybe misses the Just and so recurses down to Nothing
22:50:47 <kallisti> oh...
22:51:10 <kallisti> the joys of overloaded functions.
22:52:41 <kallisti> at least it bothered to terminate by accident
22:53:09 <kallisti> yep seems fine now.
22:53:33 <fizzie> 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 <Vorpal> fizzie, heh
22:54:05 <fizzie> It's an impressive sensor, sure, but it still feels quite haphazardly designed. I mean, with that blind spot and all.
22:54:17 <Vorpal> fizzie, that would be one amazing monitor
22:54:38 <Vorpal> probably would require a much better GPU if I wanted a reasonably large monitor as well
22:54:42 <fizzie> The blind spot is an especially good example since it's completely unnecessary.
22:55:00 <Vorpal> fizzie, yes the nerves could just go straight back a bit instead first
22:55:05 -!- kallisti_ has joined.
22:55:25 <fizzie> Right, and they do in some species.
22:55:30 <Vorpal> heh
22:56:18 <Vorpal> 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 <fizzie> Vorpal: I think they're summed up; that's part of the angular resolution calculations.
22:57:25 <fizzie> "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 <Vorpal> heh
22:57:52 <fizzie> So at the edges you've got both sparser distribution and less nerves.
22:57:59 <Vorpal> ouch
22:58:15 <Vorpal> fizzie, they managed to keep the noise level down though
22:58:24 <Vorpal> unless my brain is outsmarting me again
22:58:35 <fizzie> Brains are good at lying.
22:58:38 <fizzie> I mean, to themselves too.
22:58:47 <Vorpal> well yes
22:59:11 <Vorpal> fizzie, I wonder how the SNR of the eye compares to the SNR of professional cameras
22:59:46 <Vorpal> 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 <fizzie> Well, it does do averaging over time too.
23:02:06 <kallisti_> > (21 * 2 + 1) * (8 * 2)
23:02:07 <lambdabot> 688
23:02:10 <kallisti_> hm.
23:02:13 -!- augur has joined.
23:02:28 <kallisti_> > (21 * 2 + 1) * (8 * 2 + 1)
23:02:28 <lambdabot> 731
23:02:32 <kallisti_> there we go.
23:03:18 <kallisti_> oerjan: really this is code that GHC could autogenerate for product types where the fields are Bounded and Enum
23:03:47 <kallisti_> I think it would also be possible for sum types too
23:04:21 <oerjan> as long as they're bounded, yes
23:04:23 <kallisti_> PieceInfo is a sum type, for example. it just calculates offsets
23:05:46 <oerjan> kallisti_: you could get autogeneration if you made your product types newtypes over tuples instead >:)
23:06:01 <kallisti_> no thanks
23:06:21 <kallisti_> are you actually suggesting what's considering bad practice in the Haskell community? shame on you.
23:06:27 <kallisti_> *ed
23:07:30 <oerjan> well given that you cannot presently do generalized deriving for something with more than one field...
23:08:05 <kallisti_> Square (Just (Piece (White, Arrow North))) (Just (Loop (Northwest, Unidirectional)))
23:08:09 <kallisti_> looks good
23:08:10 <oerjan> maybe they could make that an extension
23:08:38 <oerjan> data Test ... = Test A B deriving (...) uses (A,B) to derive from
23:09:02 <oerjan> *would use
23:09:32 <kallisti_> ah yes
23:09:43 <kallisti_> that would be good
23:09:49 <kallisti_> isn't there a way to derive typeclasses yourself?
23:09:52 <kallisti_> maybe someone has already done this.
23:10:01 <oerjan> there's some template haskell stuff
23:12:20 <kallisti_> one day I should use that for something.
23:12:24 <oerjan> and something based on autogenerating code, which you have to include in the program if not using template haskell
23:14:49 <kallisti_> derivationParams :: String -> ([Type] -> (String -> Decl) -> FullDataDecl -> Either String [Decl]) -> Derivation
23:14:54 <kallisti_> good type. for a bright future
23:15:12 <kallisti_> also: no documentation
23:16:07 <oerjan> TYPES ARE ALL THE DOCUMENTATIN YOU NEED
23:16:29 * oerjan once again finds typo correction inappropriate
23:16:31 <kallisti_> well the Either is a possible error message.
23:17:46 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
23:20:21 <zzo38> 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 <kallisti_> ..what is this for.
23:22:48 <kallisti_> for audio signals: Time -> Int and [(Time, Int)] are good
23:25:14 <zzo38> 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 <zzo38> But I don't know exactly how the mathematical synthesis should be represented in this program
23:26:31 <kallisti_> you can't just use an audio signal?
23:27:00 <kallisti_> in PCM format?
23:27:15 <Vorpal> kallisti_, seems a bit dumb for S3M at least (not sure what MML is)
23:27:41 <Vorpal> kallisti_, from what I remember S3M is a tracker file format. Like .mod or such
23:28:31 <zzo38> 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 <zzo38> It is not needed to know about these file formats to answer my question
23:32:45 <Vorpal> zzo38, what is MML though? Another tracker format?
23:32:54 <zzo38> No, MML is music macro language
23:33:01 <Vorpal> never heard of it
23:33:04 <Vorpal> did you invent it?
23:33:08 <zzo38> No
23:33:27 <zzo38> But there are many variants of MML although some features are common in most of them
23:33:28 <kallisti_> it doesn't sound like any actual synthesis is involed. but I don't know what MML does.
23:35:10 <Vorpal> zzo38, MML looks like the thing that you can echo to the PC speaker device on FreeBSD to make it play
23:35:13 <zzo38> 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 <Vorpal> I wonder if it is the same
23:35:49 <Vorpal> 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 <Vorpal> those are getting rarer
23:36:06 <zzo38> 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 <Vorpal> zzo38, looks like pretty much the same as PLAY in QBASIC according to wikipedia, plus some extensions
23:37:00 <zzo38> What extensions?
23:37:11 <Vorpal> zzo38, I don't remember exactly. Check the man page?
23:37:19 <zzo38> I don't have FreeBSD
23:37:27 <Vorpal> they have man pages on their websites
23:37:32 <zzo38> OK
23:37:52 <zzo38> I have written a PlayBP subroutine for use in QBASIC, which works the same as PLAY but using Bohlen-Pierce temperaments
23:38:52 <Vorpal> zzo38, http://www.freebsd.org/cgi/man.cgi?query=spkr&sektion=4&apropos=0&manpath=FreeBSD+8.2-RELEASE
23:39:16 <Vorpal> you can set articulation and such
23:39:37 <Vorpal> 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 <Phantom_Hoover> http://www.reddit.com/r/math/comments/o6o0o/having_an_existential_math_crisis_help/
23:41:52 <Phantom_Hoover> It's itidus21!
23:47:33 <Vorpal> Phantom_Hoover, heh
23:49:42 <kallisti_> I'm afraid I don't really understand bitcoin
23:49:44 -!- Patashu has joined.
23:52:12 <zzo38> 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 <Vorpal> night
23:57:19 -!- DCliche has quit (Quit: SLEEP, GLORIOUS SLEEP).
23:58:27 <kallisti_> > 6.5 * 5
23:58:28 <lambdabot> 32.5
23:59:13 <itidus21> ya found me
23:59:32 <itidus21> tidus is trying to nut out the meaning of SK
23:59:46 <itidus21> and he is pretty close
←2012-01-06 2012-01-07 2012-01-08→ ↑2012 ↑all