←2013-03-05 2013-03-06 2013-03-07→ ↑2013 ↑all
00:04:28 -!- TeruFSX has joined.
00:10:21 <FreeFull> I wish haskell would allow you to write something like 3 < length xs and have it terminate as soon as the answer is known.
00:10:52 <elliott> it does
00:11:07 <FreeFull> > 3 < length [1..]
00:11:08 <elliott> s/length/genericLength/ and define the type of lazy conatural numbers
00:11:11 <lambdabot> mueval-core: Time limit exceeded
00:11:14 <elliott> however you should not be using length at all generally
00:11:46 <FreeFull> Would lazy conatural numbers be as efficient?
00:12:22 <shachaf> @let voided n = replicate n ()
00:12:24 <lambdabot> Defined.
00:12:28 <shachaf> > voided 3 < void [1..]
00:12:30 <lambdabot> True
00:13:02 <shachaf> length with lazy nats isn't necessarily bad.
00:13:18 <FreeFull> Ah, ord instance for lists
00:13:29 <shachaf> genericTake (genericLength xs) ys is clearer than zipWith const xs ys, is it not?
00:13:40 -!- DHeadshot has joined.
00:13:42 -!- DHeadshot has quit (Remote host closed the connection).
00:14:20 <FreeFull> shachaf: Maybe if you used an alternate prelude
00:23:57 -!- zzo38 has joined.
00:25:43 -!- DHeadshot has joined.
00:27:58 -!- mtve has joined.
00:39:20 -!- WeThePeople has joined.
00:42:40 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
00:44:45 -!- Phantom_Hoover has joined.
00:50:27 -!- augur has joined.
00:56:44 <TeruFSX> does haskell let you do eager evaluation ever
00:57:03 <elliott> sure
00:57:05 <elliott> depending on what that means
00:57:32 -!- zzo38 has quit (Remote host closed the connection).
01:09:07 -!- wareya has quit (Read error: Connection reset by peer).
01:09:57 -!- wareya has joined.
01:13:09 -!- Nisstyre-laptop has joined.
01:19:16 -!- doesthiswork has joined.
01:42:20 -!- WeThePeople has quit (Quit: Leaving).
02:01:23 -!- Phantom_Hoover has quit (Quit: Leaving).
02:10:10 <Sgeo> If anyone didn't know this, I nostalgia quite easily.
02:10:19 <Sgeo> Listening to Enya is a pretty good way to trigger that.
02:14:59 <Sgeo> (Yes, there might be people who are unaware of my proclivities of falling into nostaliga. Bike, kmc and shachaf are fairly new here)
02:15:23 <elliott> thank god they're filled in now
02:15:32 <shachaf> You don't need to tell Bike that kmc and I are fairly new here.
02:15:39 <shachaf> I'm sure everyone knows that.
02:15:44 <elliott> `pastelogs shachaf
02:15:52 <shachaf> elliott: no dont do it.......
02:16:00 <elliott> im doing it
02:16:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22268
02:16:45 -!- augur has quit (Read error: Connection reset by peer).
02:16:46 <elliott> Cale was in #esoteric?
02:17:08 <shachaf> He was?
02:17:15 <elliott> I like how shachaf has technically been here longer than PH
02:17:24 <shachaf> `pastelogs Sgeo
02:17:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28554
02:17:39 <elliott> 2011-01-04.txt:17:01:10: <shachaf> elliott: Dwarf Fortress? Minecraft? What about your liberty?
02:17:42 <elliott> 2011-01-04.txt:17:02:39: <shachaf> elliott: Dwarf Fortress doesn't provide the source code. Minecraft doesn't even provide the binary without payment.
02:17:52 <elliott> shachaf: i can't tell if this was a joke or not
02:18:03 <shachaf> If I said "What about your liberty" it was probably a joke.
02:18:14 -!- augur has joined.
02:18:41 <Sgeo> `pastelogs nostalgia
02:18:48 <elliott> 2011-05-26.txt:07:35:35: <shachaf> oerjan: What ar eyou doing in this channel instead of #haskell? :-)
02:18:57 <shachaf> elliott: It's OK, we get it.
02:19:03 <shachaf> You can stop quoting oldshachaf.
02:19:04 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32092
02:19:07 <elliott> don't worry. I can only read at most 300 of these lines.
02:19:09 <elliott> or was it 350
02:19:19 <shachaf> (Actually oldshachaf is/was younger than I am?)
02:19:26 <shachaf> (Maybe it should be youngshachaf.)
02:19:54 <elliott> 2011-08-13.txt:02:18:16: <elliott> shachaf: Shut up my number keys are broken.
02:19:56 <elliott> I remember this.
02:20:21 <shachaf> Don't read logs, elliott.
02:20:24 <shachaf> It's not polite.
02:20:28 <Sgeo> 2009-10-30.txt:22:19:12: <Sgeo> I have search-software-related nostalgia now
02:20:49 <elliott> shachaf: my offer to delete logs for money stands!!!
02:20:50 <shachaf> `pastelogs ehird
02:20:58 <shachaf> elliott: You can't delete #esoteric logs for money.
02:20:58 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9922
02:21:05 <shachaf> Well, not usefully.
02:21:10 <elliott> are you really going to waste your time reading 300 dumb things i said in the past as revenge
02:21:16 <shachaf> Nah.
02:21:58 -!- monqy has joined.
02:22:56 <Sgeo> Am... I having nostalgia for my past bouts of nostalgia???
02:23:05 <shachaf> You would be the only one.
02:27:50 <oerjan> i think i used to have bouts of nostalgia
02:28:08 <Sgeo> Hey, I didn't choose my college for nostalgic purposes! ... I didn't really choose my college at all
02:28:37 <Sgeo> And yes, there totally was a college that I had nostalgic feelings for before I entered college
02:28:42 <elliott> sgeo thats the saddest thing youve ever said
02:31:11 <Bike> you'r ehaving nostalgia for having nostalgia fora school you never actually enrolled in?
02:33:16 <Sgeo> No recursive nostalgia.
02:33:43 <Sgeo> And the college in question had a summer day camp that I went to for 3 years
02:35:56 -!- mad has joined.
02:45:25 <Sgeo> `welcome mad
02:45:27 <HackEgo> mad: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
02:47:13 <mad> sup
02:47:55 <mad> trying to see if I can pipeline my staggered-SIMD risc cpu design :D (and produce something ressembling verilog)
02:49:01 <mad> I need some non-insane ways of dealing with memory aliasing faults and split branch faults
02:53:05 <mad> like, horrible CPUs like the P2 can do it because nothing you do is real, everything you do is speculative branch predicted register renamed reordered
02:53:16 <mad> horrible/awesome :D
02:53:49 <mad> like, if you have a loop
02:53:56 <mad> cpu core 1 is on iteration 1
02:53:59 <mad> cpu core 2 is on iteration 2
02:54:02 <mad> cpu core 3 is on iteration 3
02:54:06 <mad> cpu core 4 is on iteration 4
02:54:07 <mad> etc..
02:54:27 <mad> cpu core 1 takes a branch
02:54:30 <shachaf> o, u r just madbr
02:54:41 <mad> but, say, cpu core 4 doesn't take the branch
02:54:56 <Bike> hindu cpu
02:55:34 <mad> since there's only 1 scheduler (on core 1), core 4 must stop processing
02:55:49 <mad> how do you present that to the programmer
02:55:55 <mad> in a way that makes any sense at all
02:57:36 <mad> like, his loop bails midway
02:57:51 <mad> it's either some jump that makes no sense and happens randomly
02:58:28 <mad> or core 4 goes into dormant state and then you never know how many cores will be still active, so you don't know what register file to feedback values from
03:03:27 <mad> dealing with memory aliasing isn't beeter
03:04:10 <mad> it's like, you have to lock your write destination addresses before you read anything in the loop (well, anything that could alias)
03:05:10 <mad> then if a read lands on one of these you know there's an alias and you can bail... but then once again you have a random jump out of the blue that you have to recover from
03:05:28 <shachaf> Sgeo: Is today the ninth day of the olist sequence?
03:05:43 <Sgeo> shachaf, I believe so.
03:05:53 <Sgeo> Assuming that there is an update today, haven't seen one yet
03:06:08 <shachaf> So if there's no update then there'll be a nine-day sequence some other time?
03:06:15 <Sgeo> Yes.
03:06:32 <Sgeo> 871-878 is the current days-in-a-row sequence
03:07:27 <shachaf> Sgeo: What's the problem with vampires anyway? Why don't people like them?
03:07:40 <mad> they're for girls
03:07:53 <Sgeo> I assume they're Evil.
03:08:00 <shachaf> Oh. Why?
03:08:03 <Sgeo> Although people like Belkar just fine.
03:08:07 <Sgeo> I don't play D&D, sorry.
03:09:34 <mad> They always rubbed me wrong
03:10:10 <monqy> http://www.supermegacomics.com/images/386.gif
03:12:06 <shachaf> monqy: is supermegacomics where you got your style
03:12:12 <shachaf> or did supermegacomics get it from you
03:12:21 <monqy> i dont think either of those are true
03:12:56 <shachaf> monqy: by the law of excluded middle one of them has to be true
03:13:18 <monqy> i dont think thats how that works shachaf.....................................
03:14:11 <shachaf> oh, those constructivists
03:18:44 <mad> is the opcode dest, src ordering of operands in x86 and ARM assembly some kind of ergativity
03:20:12 <shachaf> http://www.supermegacomics.com/index.php?i=302
03:20:42 <Bike> ergativity...?
03:22:18 <mad> it's a linguistics term
03:23:14 <Bike> well, i doubt assembler designers know linguistics above a superficial level
03:23:27 <mad> it refers to languages where the subjects of intransitive verbs have the same case as objects of transitive verbs
03:23:38 <mad> so they're essentially always in passive voice
03:23:43 <Bike> yeah i thought you meant ergodic theory for some stupid reason
03:25:03 <shachaf> http://www.supermegacomics.com/index.php?i=317
03:26:18 <Fiora> I guess that would mean asm would have, like, a VSO order?
03:26:40 <mad> yeah
03:26:49 <mad> C would probably be SVO
03:26:54 <shachaf> linguistics makes me sad
03:27:00 <shachaf> or is that linguistics make me sad?
03:27:01 <Fiora> well I guess ARM would be VSOO
03:27:02 <mad> forth would be SOV of course
03:27:08 <Bike> linguistics is cool, but programming languages are nothing like natural languages usually.
03:27:13 <Fiora> x86 would be weird some some instructions use their destination as input, while some don't
03:27:24 <shachaf> SVO would be some OO language thing.
03:27:32 <Fiora> whereas that isn't true in ARM... well except for weird things like vtrn
03:28:19 <mad> doesn't arm has same order for opcodes as intel?
03:28:46 <mad> aside from having 3 argument opcodes
03:29:10 <mad> instead of having only 2 argument opcodes that are really 3 arguments due to the aggressive register renaming
03:29:59 <Fiora> yeah, but like, it has op dst, src1, src2
03:30:04 <Fiora> x86 has op dst, src
03:30:15 <Fiora> so lots of x86 instructions use both dst and src as input
03:30:24 <Fiora> but on arm dst is almost never an input I think?
03:31:31 <mad> arm as op dst, src
03:31:48 <mad> but it's just a shortcut for op dst, src1=dst, src2
03:31:51 <Fiora> yeah
03:32:04 <mad> and it assembles to the 3 operand operation
03:35:37 <mad> I think stores are reversed tho
03:36:30 <mad> (on ARM, not on x86 since they can't because for some reason there are read-modify versions of the opcodes)
03:37:30 <kmc> x86 has op dst, src or else op %src, %dst ;P
03:37:58 <shachaf> Intel syntax is weird.
03:38:02 <Bike> hmmmmm
03:38:16 <mad> gcc assembly syntax doesn't count
03:38:20 <mad> it's impossible to read
03:38:23 <Bike> is intel syntax CFGable? could you use a regular expression
03:38:36 <kmc> it is pretty bad
03:38:39 <Bike> could it be the link anti-chomkyists are looking for
03:38:56 <kmc> x86 does have a few three-operand instructions by now as well
03:39:04 <Fiora> well, all of AVX XD
03:39:10 <kmc> also some where one is implicitly fixed (like edx:eax for mul/div)
03:39:12 <Fiora> plus BMI1/2
03:39:15 <mad> after 30 years of resistance from intel yes
03:39:18 <shachaf> Also a 3-operand addition instruction!
03:39:20 <Fiora> and imul reg,reg,imm if an immediate counts
03:39:31 <kmc> shachaf: you mean LEA? ;)
03:39:33 <Fiora> and FMA4, vpperm are 4-op because AMD
03:39:35 <shachaf> kmc: Yep.
03:39:43 <kmc> not just addition! reg + {1,2,4}*reg + imm
03:39:53 <Bike> good instruction, that
03:39:58 <Fiora> there's some implicit 3-op ones like pblendvb that use hardcoded xmm0 <.<
03:40:22 <shachaf> If I remember correctly "x86 has a 3-operand addition instruction" was a factor in the design of Salsa20.
03:40:35 <Bike> i still can't understand how the fuck you can remember "pblendvb"
03:40:46 <Fiora> packed, blend, variable, bytes
03:41:02 <Bike> it's impossible
03:41:05 <Fiora> XD
03:41:06 <shachaf> «I chose “xor a rotated sum” over “add a rotated xor” for simple performance reasons: the x86 architecture has a three-operand addition (LEA) but not a three-operand xor.»
03:41:26 <shachaf> I wonder how much of a difference that actually makes.
03:41:28 <Fiora> lemme see the most registers I can use in one instruction...
03:41:52 <Fiora> vpperm xmm0, xmm1, xmm2, [rax+rbx*8+0xDEADBEEF]
03:41:57 <Fiora> 5 regs, I think, I don't think one can beat that XD
03:42:17 <mad> heh
03:42:37 <mad> you can have both a displacement immediate and a displacement register?
03:42:51 <shachaf> Yep.
03:43:12 <mad> I thought it was either/or
03:43:24 <shachaf> Fiora: pusha
03:43:26 * shachaf wins
03:43:44 <Fiora> shachaf: ... that is TECHNICALLY TRUE
03:43:45 <Fiora> you win
03:43:46 <kmc> that's 5 GP regs but also %ds!
03:43:51 <kmc> and %cs arguably
03:43:54 <kmc> and Others
03:44:09 <mad> in that case it still loses to ARM :D
03:44:09 <Bike> arguably
03:44:12 <Bike> ?????
03:44:14 <kmc> %cr3 arguably
03:44:18 <mad> due to LDRM and stuff like VLDM
03:44:21 <kmc> now i'm just being silly
03:44:26 <Fiora> though. vzeroupper affects -16- registers.
03:44:29 <Fiora> nyahahahaha
03:44:29 <Bike> !!?!????!??!??????
03:44:49 <shachaf> Hmm.
03:44:57 <Bike> maybe i should pretend to learn lojban again, it had syntax vaguely analogous to that of programming languages
03:45:14 <shachaf> Don't do that!
03:45:19 <shachaf> tswett: Tell Bike not to do it.
03:45:50 <Fiora> oh. xsave wins even more XD
03:45:56 <Fiora> xsave/xrstor
03:46:41 <tswett> As long as he's only pretending, it's okay.
03:46:55 <Bike> considering there aren't speakers i doubt i could learn even if i tried
03:46:58 <Fiora> it saves x87 FPU state, MMX state, SSE state, MXCSR...
03:47:46 <shachaf> That's just a cheap plastic imitation of pusha!
03:47:58 <tswett> I think there's at least one fluent speaker.
03:48:14 <tswett> No native speakers, unless you count Robin Lee Powell's twin daughters.
03:48:17 <Bike> that's sad
03:48:26 <tswett> Frances and Kelly. I don't know whether or not their last name is Powell.
03:49:06 <tswett> They have three parents, one of whom (RLP) has been speaking to them exclusively in Lojban. I think they're now between 1 and 2 years old.
03:49:30 <Bike> fun family
03:49:33 <Fiora> that's kind of a cruel experiment :/
03:49:49 <tswett> Fiora: *shrug* They still have the usual number of English-speaking parents.
03:49:54 <Fiora> oh, just one.
03:49:55 <Fiora> sorry, misread
03:49:55 <mad> I kinda remember hearing about one like that but for... I think it was klingon
03:50:09 <Fiora> I was thinking they were -only- speaking lojban <.<
03:50:20 <Bike> it's amazing how fast linguistics experiments run into language experiments. if you'd told me the study of language got a lot of its weirder data from mentally ill children i wouldn't have believed you
03:50:27 <tswett> IIRC, they realized that Klingon just isn't usable as a day-to-day language.
03:50:44 <mad> oh?
03:50:49 <Bike> having one parent talk in a language probably won't let you learn it too well, anyhow
03:50:57 <mad> tswett: missing vocabulary?
03:50:58 <Bike> klingon's probably missing a lot of vocabulary?
03:50:59 <shachaf> Apparently not.
03:51:01 <tswett> mad: yup.
03:51:11 <Bike> it's like i'm reverse psychic
03:51:14 <shachaf> ☝ ☝ ☝ PUN ALERT
03:51:37 <tswett> And I've heard that yeah, a kid just won't really learn a language if the only person they know who speaks it is one parent.
03:52:04 <Bike> see also, second generation immigrant children
03:53:52 <mad> kinda wonder if klingon is "compact" or not, too
03:53:58 <Bike> compact?
03:54:07 <tswett> If every open cover of it has a finite subcover.
03:54:16 <Bike> thx
03:54:23 <tswett> yw
03:54:36 <mad> bike: as in has low-ish number of syllables for the more common things you might want to say
03:55:05 <Bike> Oh. Like a natural language.
03:55:30 <mad> yeah
03:55:45 <Fiora> so, like, good huffman coding I guess?
03:55:57 <mad> mhm
03:56:47 <kmc> huff man
03:56:50 <Bike> hm, i don't think i've actually read anything rigorous about information theory and linguistics. minimum description length something something bayes
03:57:38 <shachaf> intel\ combined\ manual.pdf is so awkward to use. :-(
03:58:57 <Fiora> that must be gigantic
03:59:58 <Bike> Is there a big fancy hypertext?
04:03:03 <tswett> Is there a nice and simple assembly language that is nevertheless very much usable?
04:03:11 <tswett> MIPS, perhaps, or something simpler.
04:03:26 <tswett> Whose specification is freely available online, and short.
04:03:29 <mad> yeah, RISC instruction sets
04:03:31 <mad> ARM
04:03:31 <Bike> MIPS is the usual for pedagogy
04:03:34 <tswett> Like 50 pages or something.
04:03:42 <oerjan> <shachaf> Sgeo: What's the problem with vampires anyway? Why don't people like them? <-- well _i_ like malack...
04:04:53 <mad> vampires are probably going to be out of style before too long
04:04:55 <mad> overdone
04:05:25 <Fiora> MIPS is relatively simple but still has some idiosynchracies I guess
04:05:44 <mad> everything has idiosyncracies
04:06:01 <Fiora> like delay slots and the mul/div thing and hazards and whatevers
04:06:07 <mad> that's what the ARM guy was saying anyways
04:06:13 <mad> all architectures have warts
04:06:36 <mad> also all architectures have hazards :D
04:06:48 <Fiora> ARM seems relatively low on warts, but the instruction set is pretty gargantuan
04:06:51 <Bike> well, you could use MIX or something.
04:06:53 <Bike> hope you like bcd
04:07:07 <mad> bcd is a wart all by itself :D
04:08:04 <Bike> xactly
04:08:27 <mad> delay slots make sense in the "486" generation
04:08:39 <mad> ie before you have branch prediction
04:09:09 <Fiora> yeah, they make -sense-, they're just. I guess, one extra messy thing to worry about when learning
04:10:01 <Bike> would learning a machine without understanding branch prediction be worth it? (I did not learn branch prediction)
04:10:07 <shachaf> Is there a better way to look things up than intel\ combined\ manual.pdf?
04:10:31 <mad> bike : you could start with an old arm that doesn't have branch prediction :3
04:11:21 <Fiora> http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf this thing has it listed by instruction ?
04:11:38 <Fiora> personally I kinda feel http://developer.apple.com/library/mac/#documentation/DeveloperTools/nasm/nasmdocb.html is more succinct and easy to read even though it's not quite complete
04:11:44 <Bike> what about geek32
04:11:52 <shachaf> That's just section something-something of the combined manual.
04:11:55 <shachaf> It's still a huge PDF.
04:12:14 <mad> ahaha hate PDF instruction manuals
04:12:14 <shachaf> Hmm.
04:12:24 <mad> why do they make PDF instruction manuals anyways
04:12:29 -!- Arc_Koen has quit (Quit: Arc_Koen).
04:12:32 <Fiora> is it wrong if I like them :<
04:12:57 <Bike> yes
04:13:22 <mad> how do you search them
04:13:29 <Fiora> it's... alphabetical
04:13:31 <mad> also most pdf readers are laggy
04:13:35 <Fiora> and it has a table of contents on the left
04:13:51 <Fiora> I use the built in firefox one... <.<
04:13:51 <mad> still worse than just a framed webpage
04:14:37 * mad opens the table of contents on the ia32 manual
04:14:43 <mad> gread it's not wide enough
04:14:51 <shachaf> :33 < it's purrty bad, Firoara
04:14:52 <mad> half of the text is cutoff and I can't widen it
04:14:55 <Fiora> I don't know why firefox doesn't let me resize it
04:14:57 <Fiora> it's really annoying
04:15:00 <Fiora> foxit was better
04:15:05 <shachaf> Hmm, :< isn't even part of that.
04:15:16 * shachaf maintains that there are only two smiley faces in the world.
04:15:40 <Bike> <:
04:16:20 <Fiora> :33 < pdfs arent purrfect but, waterever, they fit whale into my roetine, even if crappie
04:17:20 <Bike> roetine...?
04:17:42 <shachaf> whale?
04:17:59 <Fiora> am I not allowed to be fefeta :<
04:18:13 <Bike> no i mean what is "roetine" a pun on, I get "routine" but
04:18:14 <shachaf> I don't know.
04:18:20 <Fiora> roe
04:18:21 <shachaf> What's a fefeta?
04:18:27 <Bike> Kind of pasta.
04:18:40 <Fiora> what you get when you combine feferi (fish puns) with nepeta (cat puns)
04:19:07 <shachaf> roe no!
04:19:14 <shachaf> What do you get when you combine them with Scooby Doo puns?
04:19:27 <mad> oh god
04:19:28 -!- augur has quit (Remote host closed the connection).
04:20:11 <Fiora> ummm more seriously http://ref.x86asm.net/coder64-abc.html is a table reference
04:20:28 -!- augur has joined.
04:20:55 <mad> right... I like how you have to sort opcodes as "useful" or "useless"
04:21:34 <Fiora> ?
04:22:12 <mad> ie the ones that are vaguely risc-like and you can do lots of
04:22:32 <Fiora> I think there's only a few old instructions like that
04:22:34 <mad> vs the ones that are cisc and have all sorts of penalties and don't pair on the pentium
04:22:38 <Fiora> er, the ones that you should avoid
04:22:50 <mad> all 16bit and 8bit opcodes should be avoided afaik
04:22:57 <mad> except movsx and movzx
04:23:02 <Fiora> using 8-bit and 16-bit stuff is okay, I think? I do it all the time...
04:23:12 <Fiora> there's some exceptions (like, you need to avoid flag merging penalties)
04:23:17 <mad> afaik the register renaming hates it
04:23:17 <Fiora> but, like, setCC is 8-bit only and you kinda need that
04:23:25 <Fiora> yeah, it's bad if you trigger hte merging penalties
04:23:41 -!- c00kiemon5ter has joined.
04:23:52 <mad> also they are mostly useless anyways
04:24:12 <Fiora> but setCC is 8-bit only :<
04:24:29 <mad> setCC?
04:24:39 <mad> is that something they added on the p2?
04:24:40 <Fiora> setc, sete, and so on?
04:24:49 <Fiora> it's since 386
04:24:55 -!- c00kiemon5ter has left.
04:25:05 <shachaf> set current continuation?
04:25:08 <Fiora> int a = b == c; gets compiled as
04:25:11 <shachaf> And I thought getCC was bad!
04:25:13 <Fiora> cmp b, c
04:25:18 <Fiora> sete a
04:25:23 <mad> first time I see that
04:25:26 <Fiora> movzx reg, a
04:26:52 <Bike> set current continuation would just be invoking the continuation. oh nooooo
04:29:12 <shachaf> By the way, continuations aren't functions.
04:29:32 <shachaf> http://okmij.org/ftp/continuations/undelimited.html
04:29:37 <shachaf> Not that you said they are.
04:29:55 <Bike> i suppose scheme's pretending they are is related to them being "procedures" instead
04:30:22 <Fiora> okies I kinda tried to make a list of the things not to use
04:30:44 <Fiora> it's probably not perfect but: AAA/AAS/AAM/AAD/DAA/DAS (bcd instructions), BOUND, ENTER, J(E)CXZ, LOOP*, MOVS*, RC*, SCAS*, XLATB
04:30:59 <Bike> xlatb sounds exciting.
04:31:05 <Bike> I bet it calculated latitude in binary.
04:31:32 <Fiora> lookup table <.<
04:32:07 <Fiora> "XLATB adds the value in AL, treated as an unsigned byte, to BX or EBX, and loads the byte from the resulting address (in the segment specified by DS) back into AL. "
04:32:13 <Fiora> I think it only existed because the 8086 had like, no addressing modes
04:33:02 <Bike> I think I'm going to write a fanfiction where Bletchley Park never happened, and computers end up being developed only by the Kriegsmarine.
04:33:12 * shachaf so tired :-(
04:35:07 <elliott> Bike: is that a fanfiction for... life
04:35:15 <Fiora> historical fiction?
04:35:21 <Fiora> ... alternate history fic?
04:36:00 <Bike> Well, the seventh book introduces Nepeta Leijon.
04:36:46 <mad> fiora : what about everything that involves segment registers? :D
04:37:10 <Fiora> I don't think you can even use those in 32-bit protected mode? XD
04:37:57 <mad> actually you can
04:38:19 <mad> maybe not in paged mode tho
04:38:22 <Fiora> can you even set them outside of ring0?
04:38:49 <mad> it probably adds on a penalty if you set a segment that doesn't start at 0 too
04:39:25 <Fiora> I think I remember reading it adds 1 clock cycle latency to loads on recent intel
04:39:41 <Fiora> it's not actually that bad, I think fs/gs stuff gets used for things like native client?
04:39:44 <Fiora> I'm not sure
04:40:23 <Fiora> I've never done anything with it so don't trust me I'm probably totally clueless
04:42:10 <mad> all I remember is that in djgpp (32bit dos version of gcc) you could have it set gs to a segment that overlaps all RAM
04:42:22 <mad> and overwrite everything willy nilly :D
04:42:51 <mad> tho you had to use that hack to write to VRAM too
04:43:05 <Fiora> oh geez XD
04:44:10 <mad> write garbage to 0xa0000 -> yay pretty garbage on the screen :D
04:45:50 <mad> writing code for that was pretty fun actually
04:49:10 <mad> that impression of power you get from writing straight to the metal is nice
04:49:33 <mad> rather than having 213423 layers of abstraction and you never know anything about what's happening
05:07:37 -!- Frooxius_ has joined.
05:07:46 -!- Frooxius_ has quit (Client Quit).
05:10:27 -!- Frooxius has quit (Ping timeout: 276 seconds).
05:17:58 <shachaf> `olist
05:18:00 <HackEgo> olist: shachaf oerjan Sgeo
05:19:06 <Sgeo> oerjan, for your benefit: The new comic is 879
05:20:05 -!- Frooxius has joined.
05:21:10 <Sgeo> Also the website is broken
05:21:29 <Sgeo> Or, it was, briefly
05:22:12 <Sgeo> "Also, this is the last of the 9-in-a-row, so there won't be any more until next week while I try to catch up on other work."
05:25:21 <shachaf> the o in olist stands for oerjan
05:25:22 -!- Frooxius has quit (Ping timeout: 252 seconds).
05:25:39 <shachaf> it also stands for of
05:29:24 -!- Frooxius has joined.
05:29:46 <doesthiswork> do you know where I can read about Lagrangian Probability Distributions, all the google results seem to be books
05:31:15 -!- TeruFSX has quit (Ping timeout: 276 seconds).
05:32:40 <Bike> Is that a distribution named after Lagrange or a distribution over Lagrangians or a Lagrangian of probabilities
05:33:39 <doesthiswork> I have no idea, its what you get when you take some random subsets of random binary trees
05:34:20 <doesthiswork> the distribution of sizes is supposed to be a lagrange distribution
05:34:47 <doesthiswork> only, I don't know what that is
05:36:54 <Bike> I've never heard of a "Lagrange distrubition" in common use...
05:38:54 <doesthiswork> i'll have to go back and bug the professor then
05:46:51 -!- oerjan has quit (Quit: Gnite).
05:55:16 <mad> how would you do something like SSE branch
05:55:43 <mad> like, if across your 4 units the condition is false, don't branch
05:55:54 <mad> if across your 4 units the condition is true, branch
05:56:04 <Fiora> ptest?
05:56:06 <mad> but what if it's only true on some of the units?
05:56:13 <Fiora> ummm usually you use branchless code and merge
05:56:28 <Bike> say mad have you seen weird-ass computer designs like the connection machine
05:56:35 <mad> yeah but that's not really a branch :3
05:56:43 <Fiora> but that's the whole point, you avoid the branch :P
05:56:53 <Fiora> in the absolute worst case, compute both sides and merge
05:57:00 <Fiora> usually you can find shortcuts though
05:57:22 <mad> what about the branch at the end of the loop? :D
05:57:34 <Fiora> ummm wait but why would that be per-element
05:57:35 <mad> you can't turn that one into a conditional mov :D
05:57:46 <Fiora> I don't understand...
05:57:46 <mad> it's the fallout of my current design
05:57:58 <Fiora> branches at the end of loops work the same in simd as normal...
05:58:32 <mad> classic risc except that instructions are first done on the "head" unit (the one with the scheduler)
05:58:39 <mad> then replicated on the other units
05:59:08 <mad> also it's a possible avenue for autovectorization
05:59:46 <Bike> So you have like... a four vector [7,7,6,7] and decrement loop on each number? And what happens when the 6 zeroes first?
06:00:30 <mad> normally something like a loop counter will end up being vectorized as something like [11, 10, 9, 8]
06:01:06 <mad> and then once it does the decrement it actually loads the 8 from the last unit into the first one and produces [7, 6, 5, 4]
06:01:44 <mad> suppose you exit the loop when i < 1
06:01:59 <mad> the next iteration will produce [3, 2, ,1, 0]
06:02:35 <mad> since the scheduling is done on the first unit, it will see 3 and try to loop again
06:02:55 <Bike> This seems like a bad use of autovectorization?
06:02:56 <mad> except the branch instruction will go the other way 3 cycles later on the 4th unit
06:03:44 <mad> bike : if I can solve this and memory aliasing I can probably get llvm to autovectorize almost any loop
06:04:22 <Bike> but you're vectorizing something that's probably supposed to go one at a time
06:04:58 <mad> hm
06:05:21 <mad> well I have to admit that feedback loops that only have += are a lot easier to deal with
06:05:31 <mad> since for those ones it can probably guess
06:05:37 <Bike> like if i have for (int i = 0; i < 10; ++i) print(i); i probably want 0 through 10 to print in order.
06:05:55 <mad> right
06:06:13 <mad> the trick is that you can put the memory writes after the conditional jump
06:07:12 <mad> so your loop will escape before any bad data will get printed
06:07:40 <mad> irl it will probably try to vectorize print(i) actually
06:08:13 <mad> which will probably work for something like print("Hello world this is a long message")
06:08:35 <Bike> I mean, I want the prints to happen in a certain order.
06:08:42 <Bike> not much point in parallelizing that?
06:09:08 <mad> tbh it's not what I'm targetting
06:09:12 <Bike> And if you vectorized a long string print you'd be like, setting up multiple buffers?
06:09:16 <mad> more like the data processing loops
06:09:26 <Bike> I know it's not, I'm just trying to see why you'd want to do this for all loops.
06:09:37 <mad> which probably have guessable conditions like for(int i=0; i<somenum; i++)
06:10:22 <mad> mostly to avoid the cases where there's some exceptional case somewhere in the loop and the compiler can't guess it so it has to give up entirely on vectorizing
06:10:33 <Bike> I thought this was the processor?
06:10:59 <mad> like, if all the branches go the same way, the branches are almost free
06:11:26 <mad> and that's the typical case in loops that aren't completely sequential and where you can't do anything
06:11:58 <mad> maybe at some point in the loop it will start going the other side once or twice
06:12:13 <mad> which is essentially how branch prediction works
06:13:21 -!- sebbu has quit (Ping timeout: 248 seconds).
06:13:25 <Sgeo> Oh god there's YET ANOTHER Haskell Iteratee library
06:13:34 <Sgeo> Iteratees are the new monad tutorials.
06:13:47 <Bike> How'ss branch prediction work in Haskell
06:13:53 <mad> or maybe I could have two types of vectorized loops
06:14:23 <mad> one for manual ASM (where when the 1st unit branch, all units branch, no choice, also no anti-alias)
06:14:55 <mad> and one for compilers (which support trapping split branches and memory aliasing but have crazy semantics that make no sense)
06:17:37 <mad> hmm
06:17:55 <mad> how expensive are comparators in terms of gates
06:19:21 <mad> like, is doing 96 comparisons (32 bits each) on each memory read crazy? :D
06:19:50 <Bike> isn't it subtraction and then sign check
06:20:42 <mad> well, it's exact value comparison
06:20:55 <Bike> xnor
06:20:58 <mad> so it can be like a xor for each bit then 32-wide or :D
06:21:24 <Bike> equality is just xnor and then checking for 1s i guess
06:21:37 <mad> I guess that doesn't have much propagation delay
06:21:50 <mad> and not all that much many more gates than just a register
06:22:44 <Bike> 96 32-bit xnors on every read sounds like a bit much but i have no basis for comparison
06:23:17 <mad> other solution would be just a ~2048 bit array
06:23:26 <mad> each cache address gets 1 bit
06:23:41 -!- AgonyLang has quit (Quit: Page closed).
06:34:56 <kmc> The Beers, Burritos, and Bonghits Diet
06:35:24 <mad> but then it can generate false positives :(
06:36:39 <mad> it's kinda stupid for handwritten ASM too since people can guess what can alias or not
06:39:44 <mad> same for split branches I guess
06:56:43 -!- epicmonkey has joined.
07:05:02 -!- abumirqaan has quit (Ping timeout: 252 seconds).
07:06:43 -!- doesthiswork has quit (Quit: Leaving.).
07:08:44 -!- ssue_ has quit (Ping timeout: 255 seconds).
07:19:18 -!- epicmonkey has quit (Ping timeout: 245 seconds).
07:34:34 -!- azaq23 has joined.
07:48:46 -!- mad has quit (Quit: Radiateur).
08:16:16 -!- nooga has joined.
08:28:27 -!- epicmonkey has joined.
08:29:31 -!- ssue_ has joined.
08:42:06 -!- sirdancealo2 has quit (Ping timeout: 264 seconds).
08:47:56 -!- Nisstyre-laptop has quit (Ping timeout: 245 seconds).
08:53:54 -!- Taneb has joined.
08:58:45 -!- sirdancealo2 has joined.
09:01:42 -!- abumirqaan has joined.
09:05:51 -!- monqy has quit (Quit: hello).
09:06:50 -!- Jafet has joined.
09:07:05 -!- Bike has quit (Ping timeout: 245 seconds).
09:13:34 -!- FreeFull has quit.
09:34:22 -!- hagb4rd|lounge has joined.
09:39:58 -!- sirdancealo2 has quit (Ping timeout: 256 seconds).
09:50:43 -!- hagb4rd|lounge has quit (Read error: Connection reset by peer).
10:03:46 -!- Taneb has quit (Ping timeout: 256 seconds).
10:29:15 -!- Phantom_Hoover has joined.
10:40:23 -!- carado_ has joined.
10:55:10 -!- sirdancealo2 has joined.
11:10:28 -!- nooodl has joined.
11:13:46 -!- sebbu has joined.
11:13:46 -!- sebbu has quit (Changing host).
11:13:46 -!- sebbu has joined.
11:30:01 -!- sirdancealo2 has quit (Ping timeout: 245 seconds).
11:43:40 -!- sirdancealo2 has joined.
11:51:12 -!- copumpkin has quit (Ping timeout: 240 seconds).
11:51:43 -!- copumpkin has joined.
12:02:06 -!- sirdancealo2 has quit (Ping timeout: 245 seconds).
12:13:55 -!- sirdancealo2 has joined.
12:35:55 -!- Arc_Koen has joined.
12:38:20 -!- sirdancealo2 has quit (Ping timeout: 245 seconds).
12:44:29 -!- Taneb has joined.
12:56:17 -!- carado has joined.
13:00:14 -!- carado_ has quit (Quit: Leaving).
13:00:38 -!- sirdancealo2 has joined.
13:47:17 -!- Nisstyre-laptop has joined.
13:58:00 -!- Taneb has quit (Quit: Leaving).
14:05:30 -!- ogrom has joined.
14:06:18 -!- boily has joined.
14:06:19 -!- Nisstyre-laptop has quit (Ping timeout: 260 seconds).
14:08:44 -!- boily has quit (Client Quit).
14:11:20 -!- boily has joined.
14:16:57 -!- ogrom has quit (Ping timeout: 256 seconds).
14:19:35 -!- ogrom has joined.
14:21:30 -!- Taneb has joined.
14:44:08 -!- olsner has quit (Ping timeout: 272 seconds).
14:46:10 <Jafet> `run (echo '#!/bin/sh'; echo 'if [ $# -ne 0 ]; then for f in "$@"; do echo "#!/bin/cat" && cat "$f"; done; else echo "#!/bin/cat" && cat; fi') > bin/makequine && chmod +x bin/makequine
14:46:16 <HackEgo> No output.
14:47:22 <boily> `makequine
14:47:53 <HackEgo> ​#!/bin/cat
14:55:42 -!- olsner has joined.
14:58:12 -!- ogrom has quit (Quit: Left).
15:30:49 -!- ais523 has joined.
15:33:53 -!- DHeadshot has quit (Ping timeout: 245 seconds).
15:41:30 -!- DHeadshot has joined.
16:01:30 <mroman_> anyone experience with cpp?
16:01:39 <mroman_> It seems it decides to ignore my -B option
16:04:41 -!- sirdancealo2 has quit (Ping timeout: 255 seconds).
16:05:02 <mroman_> -I works.
16:05:41 <mroman_> but cpp --help does not even list that option
16:06:39 -!- AnotherTest has joined.
16:07:23 <AnotherTest> Hello
16:07:24 <lambdabot> AnotherTest: You have 3 new messages. '/msg lambdabot @messages' to read them.
16:10:50 <boily> mroman_: cpp, as in g++?
16:11:57 <AnotherTest> When is -(a ProductLog(-(log(a))/a))/(log(a)) integral?
16:12:03 <AnotherTest> (an integer)
16:12:19 <AnotherTest> (for what values of a, that is)
16:22:14 <AnotherTest> I suspected that a^b = b^a (with a !=b) is true only for 4 and 2
16:22:33 <AnotherTest> I'm not really sure anymore now though
16:22:53 -!- ogrom has joined.
16:24:07 -!- sirdancealo2 has joined.
16:25:03 <AnotherTest> log(2) / log(4) = 2 / 4, what other integers exists so that log(a) / log (b) = a/b?
16:25:09 <AnotherTest> *exist
16:28:29 <Arc_Koen> AnotherTest: I spent some time with a math teacher trying to find others or to prove that they were the only ones
16:28:37 <Arc_Koen> we didn't get very far
16:29:56 <Arc_Koen> (that was in high school though)
16:29:57 <AnotherTest> well at least not for all combinations of numbers from 2 to 100
16:30:31 <AnotherTest> b =-(a ProductLog(-(log(a))/a))/(log(a)), but that really doesn't tell me a lot
16:30:37 <AnotherTest> as I only want integer solutions
16:31:53 <AnotherTest> normally, log(a) / log(a²) = 1/2, right?
16:32:18 <Arc_Koen> I wouldn't say "normally", since that is always true
16:32:31 <AnotherTest> yes, always
16:33:24 <tromp_> at least for positive a
16:33:30 <AnotherTest> now it happens that for 4 and 2, it is true that a² = 2a
16:33:44 <AnotherTest> (well just for 2)
16:34:01 <Arc_Koen> yup
16:34:35 <AnotherTest> Well I think log (a) / log(b) = a /b is one of the conditions.
16:35:00 <AnotherTest> If it really is, then it would indeed only be true for 2
16:35:02 <Arc_Koen> one of the conditions? that's equivalent to a^b=b^a
16:35:19 <AnotherTest> Well, a != b is there too
16:35:26 <AnotherTest> so one of both conditions
16:35:27 <Arc_Koen> oh rifht
16:38:38 -!- ogrom has quit (Quit: Left).
16:41:36 <elliott> Error: In environment
16:41:36 <elliott> e : bool = unit
16:41:36 <elliott> The term "e" has type "bool = unit" while it is expected to have type "bool = unit".
16:42:00 <Sgeo> Got DS working on Linux
16:42:34 <Sgeo> No sound though :(
16:42:37 <boily> I guess in the current context DS doesn't mean "demon spawn".
16:42:48 <Sgeo> It means Docking Station
16:43:07 <Sgeo> Also, the context of my statement is wholly disconnected from the context of surrounding chat.
16:43:50 <boily> so, even if a != b, and e is booleanly unitty, the context of a silent docking station is disjointed from Linux.
16:46:23 <elliott> wtf is with this error
16:47:32 <elliott> ahhhh
16:47:34 <elliott> it was a Set/Type error
16:49:11 <Sgeo> I assume this is not Haskell.
16:49:20 <Sgeo> Set/Type sounds like a thing you'd see in a dependently typed language
16:51:04 <elliott> coq
17:02:19 -!- KingOfKarlsruhe has joined.
17:06:23 -!- sebbu has quit (Ping timeout: 245 seconds).
17:12:04 <ais523> elliott: I think you may have been right, and Anarchy's type system is probably undecidable after all
17:13:00 <elliott> thought so :P
17:13:05 <elliott> though I forget why I thought so!!
17:13:08 <elliott> but I'm sure it was a good reason
17:17:06 -!- FreeFull has joined.
17:24:18 <elliott> ais523: I assume this won't stop you, though
17:24:32 <ais523> yeah
17:24:47 <ais523> I'll just have to work out if being undecidable is actually a problem, and if it is, what restrictions I should put on it to make it decidable
17:28:50 <elliott> wow, agda gives even worse error messages than coq
17:34:49 -!- sebbu has joined.
17:35:04 -!- sebbu has quit (Changing host).
17:35:05 -!- sebbu has joined.
17:46:41 -!- nooga has quit (Ping timeout: 245 seconds).
17:52:04 -!- epicmonkey has quit (Ping timeout: 245 seconds).
17:53:30 -!- sebbu has quit (Ping timeout: 272 seconds).
18:00:51 <Taneb> Help I think I've just volunteered to cosplay Emperor Hirohito of Japan
18:02:06 <Gregor> Taneb: Easy solution: Start talking about the costume you want to make based on some insane Weeaboo notion of Japan, and they'll kick you out.
18:02:16 <Taneb> Won't work.
18:02:24 <Taneb> We've already got a Hitler, Stalin, and Mao
18:04:30 <Taneb> And no, I'm not going to tell them that Mao only seized power 4 years after Hitler's death
18:04:50 <Gregor> Is that REALLY relevant to that sort of cosplay X-D
18:05:30 -!- sebbu has joined.
18:28:39 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
18:31:18 -!- Phantom_Hoover has joined.
18:43:58 -!- Bike has joined.
18:48:45 -!- augur has quit (Remote host closed the connection).
18:49:32 <boily> `? cosplay
18:49:34 <HackEgo> cosplay? ¯\(°_o)/¯
18:50:12 <boily> `pastewisdom
18:50:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/wisdom/
18:50:37 <Taneb> `learn Cosplay is the art of dressing up as people to show off to other people dressed up as people.
18:50:41 <HackEgo> I knew that.
18:50:45 -!- Taneb has quit (Quit: Leaving).
18:54:40 <boily> `? colour
18:54:42 <HackEgo> Colour is a phenomenon from outer space designed to drive humanity insane and bring forth the new age of Cthulhu.
18:59:08 <Gregor> `? color
18:59:10 <HackEgo> Color is a phenomenon from outer space designed to drive humanity insane and bring forth the new age of Cthulhu.
19:02:57 <shachaf> Color is a phenomenon from oter space
19:02:57 <Gregor> `learn Coulor is the correct spelling.
19:03:01 <HackEgo> I knew that.
19:03:15 -!- nooga has joined.
19:03:30 -!- monqy has joined.
19:03:57 <Gregor> shachaf: Colour is a phenoumenoun froum ooter space.
19:07:06 -!- AnotherTest has quit (Ping timeout: 245 seconds).
19:07:51 * shachaf is in MDW
19:08:20 <shachaf> My appendages are beginning to tingle from lack of sleep.
19:08:30 <ion> nice
19:08:57 <shachaf> Although I did sleep a bit on the aæeiroplane.
19:10:33 -!- epicmonkey has joined.
19:12:20 <ais523> aæei is one of the better vowels I've seen recently
19:13:10 -!- KingOfKarlsruhe has quit (Remote host closed the connection).
19:13:48 <elliott> shachaf: appendages
19:14:55 <shachaf> appendages are so easy
19:18:46 -!- augur has joined.
19:21:31 -!- Arc_Koen has quit (Quit: Arc_Koen).
19:23:02 -!- TodPunk has quit (Read error: Connection reset by peer).
19:24:12 -!- nooga has quit (Ping timeout: 276 seconds).
19:24:15 <boily> shachaf: does that mean appendages have an identity element? if so, what is it?
19:25:34 <monqy> empty appendage
19:28:40 -!- Taneb has joined.
19:48:44 <mroman_> hm.
19:52:21 -!- sebbu3 has joined.
19:52:38 -!- sebbu3 has quit (Changing host).
19:52:38 -!- sebbu3 has joined.
19:53:27 -!- sebbu has quit (Ping timeout: 276 seconds).
19:53:52 -!- nooga has joined.
20:00:14 -!- oerjan has joined.
20:01:03 <mroman_> wtf.
20:01:25 <nooodl> mroman_: hmm?
20:02:54 -!- sebbu3 has changed nick to sebbu.
20:04:15 <monqy> empty appendages are just that weird!!!
20:06:50 <oerjan> <AnotherTest> I suspected that a^b = b^a (with a !=b) is true only for 4 and 2
20:07:08 <oerjan> pretty sure i recall that's true for integers
20:07:42 <oerjan> @tell AnotherTest <AnotherTest> I suspected that a^b = b^a (with a !=b) is true only for 4 and 2 <-- pretty sure i recall that's true for integers
20:07:43 <lambdabot> Consider it noted.
20:09:10 <oerjan> @tell AnotherTest Hint: it's equivalent to a^(1/a) = b^(1/b), which is much easier since you are looking at a single function
20:09:10 <lambdabot> Consider it noted.
20:09:28 -!- carado has quit (Ping timeout: 256 seconds).
20:10:51 <ais523> hey, anyone know how offhand to close a Metro program with the touchpad in Windows 8?
20:10:55 <ais523> we just tried and failed for 10 minutes
20:11:14 <ais523> (although "click on it then press alt-F4" works, it's not a touchpad-based solution)
20:11:33 <ais523> oh and I said "touchpad" because Windows 8 acts differently depending on whether its pointer input is a touchpad, touchscreen, or mouse
20:13:04 <oerjan> @tell AnotherTest basically you can graph that function from 0 and up, note it has a single maximum and that means only a finite number of cases that could possibly be the smaller natural number.
20:13:04 <lambdabot> Consider it noted.
20:18:59 <Taneb> ais523, I've heard that that's completely non-obvious
20:19:38 -!- myname has joined.
20:20:03 <oerjan> <ais523> aæei is one of the better vowels I've seen recently <-- æhæ.
20:20:19 <ais523> Taneb: I know
20:20:32 <ais523> but I tried some non-obvious things too
20:20:48 <Taneb> Have you tried closing hand?
20:21:03 <ais523> ?
20:21:30 <Taneb> All fingers spread out -> all fingers together
20:21:34 <myname> anybody here any idea on how to have some esoteric fun on android besides brainfuck?
20:22:49 <elliott> oerjan: i just had to fish through some 2009 logs for some code i wanted and i'd like to apologise for being the worst person in the universe then
20:23:31 <ais523> Taneb: typical touchpads can handle that many contact points?
20:23:39 <Taneb> I have no idea!
20:23:42 <Taneb> Worth a shot!
20:23:54 <oerjan> elliott: APOLOGY ACCEPTED
20:23:54 <ais523> myname: hmm… a client to something like EgoBot would be easy enough to do
20:24:15 <ais523> basically, an online lots-of-esolangs interpreter is a god way to have fun
20:24:35 <ais523> or sites like anarchy golf <http://golf.shinh.org>; that supports lots of esolangs
20:24:36 <ais523> *good
20:25:03 <Gregor> `welcome myname
20:25:05 <HackEgo> myname: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
20:25:52 <myname> i was a bit disapointed by the lack of befunge interpreters for android
20:26:22 <Gregor> 2D languages could be kinda fun with a touchscreen :)
20:27:06 <Gregor> I imagine a command "palette" and a zoomable, interactive program space.
20:29:50 -!- carado has joined.
20:40:08 -!- DHeadshot has quit (Ping timeout: 245 seconds).
20:44:18 -!- TodPunk has joined.
20:48:00 -!- augur has quit (Remote host closed the connection).
20:51:11 -!- Murtaugh has joined.
20:55:41 -!- monqy has quit (Quit: hello).
20:58:16 <Murtaugh> Hey
20:58:35 <Sgeo> `welcome Murtaugh
20:58:37 <HackEgo> Murtaugh: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
21:00:16 <Taneb> Murtaugh, what brings you to the crazy land of #esoteric
21:00:17 <Taneb> ?
21:00:46 <Murtaugh> I'm looking for a Conway's game of life channel =P
21:01:08 <elliott> is this phantom hoover's fault
21:01:40 <ais523> Murtaugh: we don't discuss that much, although this is indeed probably the appropriate channel
21:01:57 <ais523> every now and then I notice Hashlife exists and try to get the channel interested in it
21:02:07 <Bike> what are your thoughts on faster than light travel
21:02:15 <Bike> i should implement hashlife.
21:03:11 <Murtaugh> perhaps I found a new rule, a very interesting one.
21:03:25 <Murtaugh> due to a coding error, of course
21:04:01 <ais523> most of the cellular automaton rules that are uninteresting are obviously uninteresting
21:05:18 <Murtaugh> Б2/S234
21:05:26 <Murtaugh> *B
21:05:47 <ais523> Murtaugh: I assumed it was just gratuitous Cyrillic :)
21:06:03 <ais523> Life is B3/S23, isn't it?
21:06:13 <Murtaugh> I forgot to cycle between keymaps =p
21:06:16 <Murtaugh> Yes
21:06:34 <ais523> the world needs more gratuitous cyrillic, really
21:06:43 <ais523> have you discovered a spaceship pattern in it yet?
21:06:50 <Murtaugh> nope
21:07:10 <ais523> that's normally the first interesting thing to aim for in a 2D cellular automaton
21:07:15 <Bike> wikipedia mentions B34/S34 but not just B3
21:07:31 <ais523> (also in a 1D automaton, but there you care about the spaceships going at different speeds so that they can collide)
21:08:00 <Murtaugh> I looked everywhere for B2/S234, but there is no info anywhere
21:08:34 <Bike> probably too similar to life
21:08:38 <ais523> the problem is that there are so many interesting automata
21:08:47 <ais523> and so few people to study them
21:09:19 <Murtaugh> It creates sillicon circuitry-like patterns
21:10:20 <mroman_> and no money backing it up?
21:10:21 <Bike> lifewiki has b/s234
21:10:36 <Taneb> Isn't there someone here who specializes in CAs?
21:11:01 <Sgeo> Oh hey ais523 and I proved something about GoL once
21:11:27 <Bike> geez, b235678/s378
21:11:30 <Bike> there are some weird ones
21:11:37 <ais523> Sgeo: we did?
21:11:40 <ais523> oh no
21:11:43 <ais523> wasn't it that really boring result
21:12:51 <Murtaugh> tell me more
21:13:54 <ais523> I can't remember what the result was
21:13:57 <ais523> except it wasn't intersting
21:14:06 <Murtaugh> =\
21:14:07 <ais523> Sgeo cared more about it, so he can probably fill you in
21:15:09 <Sgeo> I _think_ it was that on a finitely bounded (e.g. toroidal) game of life, any pattern with a sufficiently large hole has at least one ancestor that is a Garden of Eden.
21:16:41 <Bike> Hole?
21:16:48 <ais523> area with no live cells
21:17:30 <mroman_> is post-calculus turing-complete?
21:17:45 <boily> there is such a thing as post-calculus?
21:17:50 <Bike> post machines are
21:17:55 <ais523> mroman_: if it's even vaguely academic enough for Post to name it
21:18:03 <ais523> then yes, unless it was intentionally designed as sub-TC
21:18:06 <Bike> also that
21:18:29 <Bike> also also whenever Post comes up i feel the need to mention he only had one arm
21:18:50 <Taneb> L-systems are Turing-complete, and they were designed to simulate the growth of algae
21:18:57 <ais523> you could write a bot to do it for you and save the trouble
21:19:32 <Sgeo> I remember more recently trying to think about the proof and worrying that I might have made a mistake
21:19:33 <Bike> don't you think it would be kind of hard to reliably search for mentions of "Post" referring to the person
21:19:34 <ais523> Taneb: well algae are probably Turing-complete, if given sufficient (= infinite) space, time, and nutrients
21:19:36 <Bike> instead of like mail
21:20:11 <Bike> an individual alga could be turing complete depending what you're testing
21:20:36 <Bike> e.g. classical conditioning is subturing but you could probably find something in intracellular signaling
21:20:49 <Murtaugh> Turing-complete algae?
21:21:31 <ais523> <lament> even a box of rotten apples on a string is Turing-complete
21:21:41 <ais523> but basically, pretty much everything is TC unless there's an obvious reason why it isn't
21:21:48 <ais523> as such, it's quite hard to construct things on the borderline
21:22:08 <Bike> you can't classically condition algae anyway :'(
21:22:20 <Taneb> I tried to make a language that is turing complete if and only if the Collatz conjecture is false.
21:22:24 <Taneb> I didn't get very far
21:22:48 <Sgeo> I'm sure there are trivial ways to do that
21:22:48 <boily> we need a system that autodetects its own turing completeness, then alter itself to stop being TC.
21:23:00 <Bike> #define __ALLOW_UNBOUNDED_LOOPS falsehood_of(collatz)
21:23:10 <Bike> Murtaugh: http://arxiv.org/abs/1204.1749 good computer
21:23:32 <ais523> Bike: it's only interesting if you can implement the compiler without knowing the truth value of the collatz conjecture
21:23:36 <ais523> (or interpreter)
21:23:40 <Murtaugh> even 7401 is Turing-complete
21:23:40 <Sgeo> "This language is equivalent to Brainfuck if the Collatz conjecture is false, and equivalent to HQ9+ if it is true"
21:23:53 <Bike> a system proving that it's turing complete seems like you'd run into godel something
21:23:58 <Sgeo> ais523, wow, wasn't expecting a nice way to get rid of the trivialities
21:24:01 <Bike> ...maybe
21:24:21 <Gregor> Hmmmmm. Is it possible, in a Turing complete system, to determine whether another system is Turing complete? (Note that the answer for ourself would probably be false, since the /environment/ is TC but we've created a particular system which is possibly not maybe)
21:24:37 <Bike> you know i think i still don't have a non-shitty version of that paper showing that generalized collatz is unsolveable
21:24:44 <Gregor> i.e., if I feed the description of a Turing machine into a (preprogrammed) Turing machine, can it tell me that that's a TC system?
21:24:53 <Murtaugh> mmmm interesting crab computer
21:25:09 <Taneb> Gregor, my first instinct is "no", but my instincts suck
21:25:19 <Gregor> It feels very Halting-problem-y X-D
21:25:31 <ais523> Gregor: it's clearly possible to have a computable system that's capable of proving that some system is equivalent to a Turing machine
21:25:48 <Bike> Gregor: i'm vaguely thinking there might be a curry-howard thing making that equivalent to proving a system consistent but i dunno
21:25:49 <coppro> sure, but that's different
21:25:55 <Gregor> ais523: Oh?
21:26:02 <ais523> although one of Gödel's theorems shows that any system that can prove /itself/ equivalent to a Turing machine can also prove at least one incorrect statement
21:26:15 <ais523> Gregor: imagine a system that's almost, but not quite, the same as a Turing machine
21:26:18 <Bike> right that one
21:26:53 <boily> meh. my idea's been gödelled.
21:26:56 <Gregor> <ais523> although one of Gödel's theorems shows that any system that can prove /itself/ equivalent to a Turing machine can also prove at least one incorrect statement // the system may very well NOT be equivalent to a Turing machine, unless you can feed it machines in such a way that it calculates.
21:27:28 -!- AnotherTest has joined.
21:27:41 -!- AnotherTest has left.
21:27:50 <Gregor> ais523: What am I supposed to do while imagining this system X-D
21:28:01 <Murtaugh> well
21:28:01 <ais523> Gregor: well, it's very easy to prove equivalent to a Turing machine
21:28:10 <ais523> you don't need very much power to do the proving at all
21:28:21 <ais523> the extreme example is "mirror-reflections of Turing machines"
21:28:36 <ais523> and a proof language that can only see that descriptions are the same under reflection
21:28:45 <ais523> with brainfuck bolted on to make it TC
21:28:57 <Gregor> But that's an infinite set, and you're trying to prove that something is in the set. What if it's not?
21:29:15 <ais523> Gregor: you're trying to prove two infinite sets equivalent
21:29:20 <ais523> which you can do simply by showing a bijection
21:30:18 <Taneb> What if one is equivalent to the reals
21:30:39 <Bike> what does that matter
21:30:43 <Sgeo> Wouldn't be surprised if there was a machine that either spits out the correct answer or no answer
21:30:57 <Gregor> Yeah, I'm modestly lost in the analogy because as far as I can determine that's not what you're trying to do...
21:31:17 <ais523> perhaps we're thinking of different questions entirely
21:31:22 <Bike> shit i have a textbook that almost certainly went over whether the set of turing machines is recursive or r.e. what is wrong with me
21:31:25 <Sgeo> Actually, it would be surprising if there _WASN'T_ a machine that either spits out the correct answer or no answer
21:31:40 <Gregor> Sgeo: Here's one: while (true);
21:32:03 <Bike> not if there is a machine that doesn't, if there is no machine that does, gregor
21:32:23 <Sgeo> Bike, ..huh?
21:32:35 <Bike> what is that in relation to
21:32:35 <Gregor> I agree with Sgeo on this matter.
21:33:15 <Gregor> Bike: I presented an example of a machine that “either spits out the correct answer or no answer”. It happens to choose “no answer” with 100% probability.
21:33:36 <Bike> oh
21:33:42 -!- cookienugget has joined.
21:33:54 <cookienugget> hey everyone
21:34:02 <cookienugget> what was the lang with the arrows ?
21:34:17 <Gregor> ais523: Ohohoh, yeah, you were answering the later part when you were saying it might come down to Gödel's theorem X-D
21:34:17 <Bike> erlang
21:34:38 <Sgeo> There are a lot of languages with arrows, but you may be thinking of Befunge?
21:34:54 <Sgeo> Do those count as arrows?
21:35:08 <cookienugget> nah
21:35:13 <ais523> there's a newish BF derivative made entirely out of Unicode arrows
21:35:21 <Gregor> Whatever the Brainfuck-equivalent-of-the-day is that replaces the BF commands with arrows in the 8 — lol, I was just kidding.
21:35:23 <cookienugget> yeah
21:35:24 <Gregor> Or I hoped I was.
21:35:24 <ais523> I forget the name, because it's a BF derivative and therefore probably uninteresting
21:35:28 <cookienugget> vit or what was ?
21:35:33 <ais523> Gregor: it's not quite that simple
21:35:38 <ais523> not sure if that makes it better or worse
21:36:05 <Sgeo> ais523, is my BF derivative uninteresting? :(
21:36:26 <FreeFull> Is looking at Idris a good idea?
21:36:37 <Bike> Elba?
21:36:58 <Bike> oh, that other thing.
21:37:00 <boily> ~duck elba
21:37:10 <boily> oh. right. bot first, duck second.
21:37:16 <Bike> idris elba is an actor.
21:37:23 -!- metasepia has joined.
21:37:26 <ais523> Sgeo: are you sure you want to know the answer to that question?
21:37:28 <boily> ~duck idris elba
21:37:29 <metasepia> Idrissa Akuna "Idris" Elba is an English television, theatre, and film actor who has starred in both British and American productions.
21:37:49 <Sgeo> ais523, yes
21:37:58 <ais523> bleh, now I have to look it up
21:38:10 <boily> ~duck interest
21:38:11 -!- DHeadshot has joined.
21:38:11 <metasepia> interest definition: right, title, or legal share in something.
21:38:17 <Sgeo> Oh, I was afraid that asking that question was an answer in and of itself
21:38:27 <ais523> oh, trustfuck
21:38:30 <ais523> that's more interesting than average
21:38:38 <cookienugget> fungot: what's up
21:38:44 <cookienugget> fungot's not in ?
21:38:45 <ais523> it's an esolang along the lines of "take a language people already know so we can concentrate on the weirdnesses"
21:38:48 <Gregor> How 'bout compared to ShaFuck X-D
21:39:23 <Sgeo> I think Brainfuck had some issues being a basis for it
21:39:26 <boily> fizzie: please summon fungot from its deep torpor.
21:39:28 <Sgeo> Some creative possibilities denied
21:39:37 <boily> (or is it torpour? that's the problem with being canadian.)
21:40:23 <Bike> tourpour
21:41:15 <boily> tourpour sounds like a random unpalatable veggie.
21:42:07 <Gregor> taeiourpaeioureaux
21:42:46 <oerjan> wtf what a stupid error: i assigned the same address to two different "variables"
21:43:25 <boily> Gregor: wasn't it forbidden by the UN?
21:43:40 <Murtaugh> this is the most random channel I've ever been
21:43:59 <ais523> Murtaugh: hmm… small IRC communities normally get this way
21:44:00 <Sgeo> Must... not... name... that... channel
21:44:03 <ais523> I prefer them to talk more on topic
21:44:16 <ais523> Sgeo: I don't know which channel you're talking about, but I agree you shouldn't name it
21:44:18 <Gregor> Murtaugh: It'd be hard to beat in that dimension.
21:44:25 <Sgeo> ais523, one of the Freenode kline channels
21:44:30 <Gregor> boily: Yup. Horsemeat.
21:44:35 <FreeFull> I just want to do some programming with dependent types
21:44:40 <FreeFull> And Idris was the first thing that came up
21:44:46 <FreeFull> And it has Haskell-like syntax
21:44:59 <ais523> Sgeo: if it's a kline channel, it can't possibly be random, can it? it's empty by definition
21:45:03 -!- nooga has quit (Ping timeout: 260 seconds).
21:45:11 <Sgeo> ais523, true
21:45:14 <Bike> isn't agda the sexy thing
21:45:22 <ais523> it's like saying "that room over there is random, because it's empty, because it kills anyone who enters it"
21:45:25 <Taneb> I thought a kline channel was a channel with no inside or outside
21:45:28 <ais523> it's both kin of scary, and a non sequitur
21:45:31 <ais523> *kind of scary
21:46:13 <Sgeo> We're outside a kline channel? That means... we're IN one, man. woah
21:47:25 <FreeFull> Oh hey, the hello world compiled
21:47:39 <Taneb> Generally a good sign
21:48:02 <ais523> FreeFull: oh no, you're reminding me of a past exam question I was talking my students through today
21:48:10 <ais523> and it took me like 5 minutes to get the answer
21:48:30 <ais523> because it was a trick question, and I recognised it was a trick question, but failed to recognise what the trick was
21:48:41 <ais523> even though I knew what the trick was, I was wrong about how it was being applied
21:51:28 <Bike> this paper is anti-monoidal. i'm sorry shachaf
21:52:08 <Taneb> @hoogle [a] -> [([a],[a])]
21:52:08 <lambdabot> Network.CGI.Protocol formDecode :: String -> [(String, String)]
21:52:08 <lambdabot> Network.CGI formDecode :: String -> [(String, String)]
21:52:08 <lambdabot> Network.CGI.Cookie readCookies :: String -> [(String, String)]
21:52:13 <Taneb> yay
21:52:49 <Bike> @hoogle [a] -> [([b],[c])]
21:52:49 <lambdabot> Control.Monad mapAndUnzipM :: Monad m => (a -> m (b, c)) -> [a] -> m ([b], [c])
21:52:49 <lambdabot> Prelude readList :: Read a => ReadS [a]
21:52:49 <lambdabot> Text.Read readList :: Read a => ReadS [a]
21:55:12 -!- TeruFSX has joined.
21:55:42 <Taneb> :t \xs -> takeWhile (not.null.snd) $ map (`splitAt` xs) [0..]
21:55:44 <lambdabot> [a] -> [([a], [a])]
21:55:50 <Taneb> > (\xs -> takeWhile (not.null.snd) $ map (`splitAt` xs) [0..]) "hello"
21:55:52 <lambdabot> [("","hello"),("h","ello"),("he","llo"),("hel","lo"),("hell","o")]
21:56:54 <oerjan> <Taneb> I thought a kline channel was a channel with no inside or outside <-- you are clearly confusing with "klein channel", hth
21:57:31 <Murtaugh> lolwut
21:58:34 <oerjan> > zip<$>inits<*>tails$"hello"
21:58:36 <lambdabot> [("","hello"),("h","ello"),("he","llo"),("hel","lo"),("hell","o"),("hello",...
21:58:46 <FreeFull> ais523: What was the question?
21:58:56 <Taneb> Murtaugh, here we make jokes based on somewhat obscure subjects
21:59:01 <Taneb> For instance, Kleine bottles
21:59:07 <Sgeo> oerjan, I get how that works, but do people generally consider that readable?
21:59:15 <Murtaugh> I did understand the joke
21:59:39 <FreeFull> Applicative is cooler than monads
21:59:55 <Sgeo> Wonder if applicatives should get syntax sugar
22:00:12 <oerjan> Sgeo: well the (->) monad/applicative is always a little dubious
22:00:16 <Murtaugh> If I say something about klein bottles irl people will just go "WTF?" at me
22:00:18 <Bike> :t tails
22:00:20 <lambdabot> [a] -> [[a]]
22:00:21 <ais523> FreeFull: "here is some Java code that compiles but does not do what it's intended to, make three corrections to the code and two to the documentation"
22:00:22 <Sgeo> Also wonder if a monad could be made to act as syntax sugar for applicatives. I think it would have to error at runtime if you tried something illegal though
22:00:29 <Bike> > tails "hello"
22:00:31 <lambdabot> ["hello","ello","llo","lo","o",""]
22:00:34 -!- Taneb has quit (Quit: Leaving).
22:00:46 <Bike> yeah that seems sensible enough
22:01:17 <Sgeo> oerjan, too bad, I like that monad/applicative
22:01:29 <Sgeo> Reminds me of J
22:02:15 <FreeFull> :t inits
22:02:15 <nooodl> hah i was thinking "that's a verb train!" too
22:02:16 <lambdabot> [a] -> [[a]]
22:02:18 <Bike> well NOW it doesn't seem sensible
22:02:23 <FreeFull> :t tails
22:02:25 <lambdabot> [a] -> [[a]]
22:02:27 <Bike> :t <*>
22:02:29 <lambdabot> parse error on input `<*>'
22:02:32 <Bike> :t (<*>)
22:02:34 <lambdabot> Applicative f => f (a -> b) -> f a -> f b
22:02:35 <FreeFull> Ok, that is actually very straightforward
22:02:37 <Bike> right
22:02:58 <Sgeo> > (+) <$> id <*> id $ 5
22:03:00 <lambdabot> 10
22:03:10 <Sgeo> > (+) <$> id <*> (+1) $ 5
22:03:11 <lambdabot> 11
22:03:21 <Sgeo> Bike, do those make sense?
22:03:24 <Sgeo> Those should be clearer
22:03:25 <Bike> yes
22:03:27 <nooodl> > (/) <$> sum <*> length $ [1,2,3,4,5]
22:03:28 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
22:03:29 <lambdabot> arising from a use o...
22:03:34 <Bike> it's "so easy"
22:03:36 <nooodl> wait. why doesn't this work
22:03:44 <Bike> > zip <$> inits <*> inits <*> inits $ "fuck"
22:03:46 <lambdabot> Couldn't match expected type `a0 -> b0'
22:03:46 <lambdabot> with actual type `[(a1...
22:03:49 <FreeFull> nooodl: length is an int
22:03:49 <Bike> cool
22:03:55 <FreeFull> Or rather returns an Int
22:04:03 <FreeFull> You'll want fromIntegral somewhere
22:04:11 <nooodl> > (/) <$> sum <*> fromIntegral.length $ [1,2,3,4,5]
22:04:14 <lambdabot> 3.0
22:04:17 -!- boily has quit (Quit: Poulet!).
22:04:18 -!- metasepia has quit (Remote host closed the connection).
22:04:22 <nooodl> > 15 / 5
22:04:24 <lambdabot> 3.0
22:04:27 <nooodl> ^ this works fine, though
22:04:29 <Bike> so does this do average in parallel
22:04:44 <Bike> (like J??)
22:04:45 <FreeFull> nooodl: All valid Num instances have a fromInteger
22:04:51 <Sgeo> ) (+/%#) 1 2 3 4 5
22:04:51 <jconn> Sgeo: 3
22:05:01 <FreeFull> 3 is actually fromInteger 3 underneath
22:05:07 <nooodl> i was rewriting (+/%#) which is a j "idiom" for average
22:05:26 <nooodl> FreeFull: oh
22:05:32 <Bike> i mean, accumulating the length in the same reduction that it accumulates the sum
22:05:33 <FreeFull> nooodl: If you have an Integer though, it won't automatically get converted to whatever Num instance you want
22:05:44 <FreeFull> > (3 :: Integer) / 4
22:05:46 <lambdabot> No instance for (GHC.Real.Fractional GHC.Integer.Type.Integer)
22:05:47 <lambdabot> arising f...
22:06:22 <nooodl> i see
22:06:52 <Bike> which i assume J does because J is god
22:06:55 <oerjan> <Bike> so does this do average in parallel <-- i don't think so, ghc isn't very good at deforesting two lists concurrently
22:07:21 <nooodl> J doesn't do that :(
22:07:27 <Bike> dammit J you had one job
22:07:42 <oerjan> (e.g. the documentation for zipWith mentions you only get one of them fused)
22:07:52 -!- nooga has joined.
22:07:55 <Murtaugh> I gotta go
22:08:02 <Murtaugh> bye
22:08:08 <oerjan> bye Murtaugh
22:08:45 -!- Murtaugh has quit (Quit: Ping timeout: 10^100*(65536^65536)+(e^(pi*i)) seconds).
22:08:52 <FreeFull> Bike: You could write an efficient average using pipes I think
22:09:20 <nooodl> hmm. a recent haskell idea thingy i had, inspired by J: some datatype that's a pair of inverse functions
22:09:41 <Bike> @tell murtaugh Ping timeout: TREE(3) seconds
22:09:42 <lambdabot> Consider it noted.
22:09:43 * Sgeo wonders if this would end up being lense
22:09:44 <Sgeo> lenses
22:09:51 <Bike> can you do it with lenses
22:09:54 <Bike> was my real question
22:17:05 -!- sebbu has quit (Ping timeout: 248 seconds).
22:27:43 -!- sebbu has joined.
22:27:44 -!- sebbu has quit (Changing host).
22:27:44 -!- sebbu has joined.
22:30:13 <nooodl> http://codepad.org/q0Zc9nnT mmmh
22:31:41 <Bike> > (:[]) . head [4,5]
22:31:43 <lambdabot> No instance for (GHC.Num.Num (f0 a0))
22:31:43 <lambdabot> arising from a use of `e_145'
22:31:43 <lambdabot> Pos...
22:32:01 <Bike> > (:[]) $ head [4,5]
22:32:04 <lambdabot> [4]
22:32:41 <Bike> > (:[]) . head $ [4,5]
22:32:44 <lambdabot> [4]
22:32:51 <Bike> fuckin operator precedence
22:33:44 <nooodl> yeah maybe there should be a law for the thingy going the other way too
22:37:54 -!- DHeadshot has quit (Read error: Connection reset by peer).
22:38:08 -!- DHeadshot has joined.
22:39:36 -!- sebbu has quit (Ping timeout: 245 seconds).
22:42:08 -!- cookienugget has quit (Ping timeout: 245 seconds).
22:45:08 -!- sebbu has joined.
22:45:08 -!- sebbu has quit (Changing host).
22:45:08 -!- sebbu has joined.
22:45:46 <FreeFull> Hey, Idris actually has a proper unary -
22:46:56 <FreeFull> nooodl: Class Foo a b where { foo :: a -> b; defoo :: b -> a } Something like this?
22:48:06 -!- nooga has quit (Ping timeout: 264 seconds).
22:49:14 <Bike> that's what's in the paste
22:50:29 <Bike> except with infixity for some reason.
22:57:01 <nooodl> spoiler:
22:57:09 <nooodl> they're infix operators because i couldn't think of a name for them
22:57:21 <nooodl> i like the way i defined them, though.
22:59:18 <Bike> alice, bob
23:00:47 <kmc> phobos and deimos
23:02:10 -!- augur has joined.
23:03:49 <Bike> pain and confusion right? perfect for programming
23:04:11 <Bike> fear and dread. oh well
23:04:44 -!- TeruFSX2 has joined.
23:05:21 <nooodl> "reg" and "inv" maybe
23:10:51 -!- epicmonkey has quit (Ping timeout: 245 seconds).
23:11:32 -!- TeruFSX2 has quit (Quit: Leaving).
23:15:01 -!- Arc_Koen has joined.
23:16:26 <kmc> i thought there was already a package for isomorphisms
23:16:28 <Bike> i thought generally that f⁻¹ . f = id = f . f⁻¹, or am i confusing things with left inverse or wetfuck
23:19:20 <nooodl> you're right
23:21:19 -!- Phantom__Hoover has joined.
23:21:52 <elliott> kmc: lens!!!!!
23:22:58 <Bike> hey elliott can lens do average as one fold or what
23:23:57 <elliott> um maybe
23:24:04 <elliott> you can do that with ```fold zipping'''
23:24:08 <elliott> it forms an applicative functor
23:24:14 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:24:41 <Bike> that's a lot of quotes is this a python docsting
23:25:14 -!- ais523 has quit.
23:25:20 <elliott> data Fold a b = Fold b (a -> Fold a b)
23:25:41 <elliott> sumF = sumF' 0 where sumF' !n = Fold n (\_ -> sumF' (n+1))
23:25:48 <kmc> ,,quotes,,
23:25:49 <elliott> er
23:25:54 <elliott> sumF = sumF' 0 where sumF' !n = Fold n (\m -> sumF' (n+m))
23:26:09 <elliott> lengthF = lengthF' 0 where lengthF' !n = Fold n (\_ -> lengthF' (n+1))
23:26:11 <elliott> then you can do
23:26:17 <elliott> runFold ((/) <$> sumF <*> lengthF) [1,2,3]
23:26:38 -!- nooodl has quit (Ping timeout: 272 seconds).
23:26:53 <elliott> btw this is at least 47% profound
23:27:03 <Bike> that's p. profound
23:27:17 <elliott> oh it's a comonad too iirc
23:27:42 <elliott> wait is it a cofree comonad
23:27:52 <elliott> it is
23:27:58 <elliott> it's Cofree ((->) a)
23:28:14 <elliott> wow
23:28:20 <elliott> upping the profundity to 72%
23:28:33 <elliott> oh cool it's basically dual to Supply too.
23:28:54 <elliott> yo does anybody in here have the slightest clue what im talking about
23:29:05 <Bike> nope
23:29:36 <elliott> what about kmc
23:32:07 -!- Frooxius_ has joined.
23:34:12 <kmc> that's neat
23:34:30 <elliott> i feel only slightly reassured
23:34:35 -!- Arc_Koen has quit (Quit: The struct held his beloved integer in his strong, protecting arms, his eyes like sapphire orbs staring into her own. "W-will you... Will you union me?").
23:34:46 <Sgeo> What's Supply?
23:34:52 <FreeFull> > (,) <$> (+3) <*> (*3) $ ZipList [1,2,3,4,5]
23:34:54 <lambdabot> No instance for (GHC.Num.Num (Control.Applicative.ZipList a0))
23:34:54 <lambdabot> arising f...
23:34:58 <elliott> Supply = Free ((->) r)
23:35:06 <kmc> what are pure and <*> for Fold
23:35:07 <elliott> Fold = Cofree ((->) r)
23:35:09 <FreeFull> > (,) <$> (tails) <*> (heads) $ ZipList [1,2,3,4,5]
23:35:10 <elliott> actually fold is more like supply
23:35:12 <lambdabot> Not in scope: `heads'
23:35:12 <lambdabot> Perhaps you meant one of these:
23:35:12 <lambdabot> `reads' (imported...
23:35:20 <elliott> kmc: pure a = Fold a (const (pure a))
23:35:30 <elliott> i.e. just like foldr (\_ b -> b) a
23:35:37 <elliott> (<*>) is a bit trickier iirc
23:35:39 <Sgeo> Err, so, a free monad based on reader, so... can take a potentially infinite number of arguments and pass them in, or what?
23:35:40 <kmc> ok
23:35:41 <Bike> FreeFull: inits
23:36:13 <elliott> kmc: oh maybe it's just Fold f q <*> Fold x r = Fold (f x) (\v -> q v <*> r v)???
23:36:30 <elliott> Sgeo: eg you can feed Free ((->) Int) from stdin
23:36:30 <FreeFull> > (,) <$> (tails) <*> (inits) $ ZipList [1,2,3,4,5]
23:36:32 <lambdabot> Couldn't match expected type `[a0]'
23:36:32 <lambdabot> with actual type `Control....
23:36:33 <elliott> or from a predefined stream of Ints
23:36:35 <elliott> or from an RNG
23:36:44 <FreeFull> Of course doesn't work on ZipLists
23:36:58 <Bike> ALSO is there like a formal model of code serialization somewhere because i'm blanking
23:37:01 <kmc> back later
23:37:02 <Sgeo> elliott, is there a way to supply it with a finite source?
23:37:21 -!- Frooxius has quit (Read error: No route to host).
23:38:05 <elliott> yes but your result will have to be eg in maybe
23:38:09 <elliott> Free ((->) r) a -> [r] -> Maybe a
23:38:17 <elliott> because it might ask for an "r" when you don't have any left
23:40:17 -!- sebbu has quit (Ping timeout: 248 seconds).
23:51:15 -!- azaq23 has quit (Quit: Leaving.).
23:54:16 <Bike> so that's a no
23:55:39 <elliott> imo you're a no
23:55:44 <elliott> (its actually a yes)
23:55:49 <Bike> :(
23:55:56 <elliott> for instance you couldn't do that with (Stream r -> a)
23:56:31 -!- sebbu has joined.
23:56:31 -!- sebbu has quit (Changing host).
23:56:31 -!- sebbu has joined.
←2013-03-05 2013-03-06 2013-03-07→ ↑2013 ↑all