←2011-12-30 2011-12-31 2012-01-01→ ↑2011 ↑all
00:00:15 <elliott> HAPPY 2011.997260274 EVERYBODY!
00:00:24 * elliott parties
00:01:08 <olsner> now that is a milestone worth celebrating
00:01:44 <elliott> fizzie: iodine would be a lot more interesting if you didn't need a server :)
00:02:57 <olsner> iodine, the ip-over-dns thing?
00:03:10 <elliott> yeah
00:03:31 <olsner> been thinking about setting that up ... it's missing a nice android app though
00:04:52 <zzo38> I think there should be something like Astrolog for portable devices with GPS
00:05:29 <elliott> hmm, what else can you tunnel IP over
00:05:33 <elliott> How about AP identifiers?
00:05:43 <elliott> Can commodity hardware broadcast one of those?
00:06:09 <elliott> You'd just base-64 encrypted packets as the SSIDs, and then get the response from the other machine symmetrically.
00:06:21 <elliott> Kind of, um, pointless though.
00:07:11 <fizzie> It's not as funky if it only goes as far as the radio connection would anyhow reach.
00:08:33 <fizzie> hostap sends the regular AP advertisement frames; quite a few chipsets can't do the AP mode though, at least without suitable firmware.
00:08:36 <shachaf> What if you could, like, tunnel IP packets *over other IP packets*?
00:09:18 <elliott> I don't suppose you could somehow convince DNS servers to send a DNS query to a server that happens to also be a valid HTTP packet.
00:09:18 <fizzie> You might confuse people looking at their "wlan networks" lists. And passing wardrivers.
00:09:45 <fizzie> They normally only converse over UDP, so that'd be quite a feat.
00:09:53 <elliott> HTTP over UDP. :p
00:11:20 <elliott> fizzie: How about IP over DHCP?
00:11:54 <fizzie> There's a "UHTTP" draft, I can't recall in which context I saw it. It's not quite that, though; it's a HTTP derivative for unidirectional broadcast-only scenarios.
00:13:16 <fizzie> I suppose that would work, but not *through* someone's DHCP server really; and if they let you to talk to your arbitrary DHCP server, chances are you could send any UDP traffic to that port and run OpenVPN/something.
00:13:45 <elliott> :(
00:14:38 <fizzie> Maybe some DHCP option would cause the DHCP server to do something externally observable, though can't think of anything right now.
00:14:57 <olsner> shachaf: ip over ip? wild!
00:15:22 <fizzie> And communication to the other direction (so that you could affect the DHCP server's response from some external source) would probably be even trickier.
00:15:58 <olsner> if you find a DoS attack that you can reverse at will, do morse code by controlling the length of their outages
00:16:16 <fizzie> IP over any other IP would smell as sweet.
00:17:20 <zzo38> There is IP over carrier pigeon, it is very slow but it has been done.
00:17:29 <olsner> (or not morse code, but a better code for arbitrary binary data)
00:18:56 <elliott> fizzie: IP over, umm, umm...
00:18:59 <elliott> Umm.
00:19:15 <olsner> IP over twitter?
00:19:20 <elliott> Maybe... IMAP?
00:19:36 <elliott> Ooh, ooh, how about NTP?
00:20:13 <fizzie> There are some firewalls that don't really do stateful packet filtering, but just rely on the fact that you need a TCP 'SYN' packet to establish an outgoing connection; thusly they allow non-SYN TCP under the impression that it's an "established connection". You could tunnel through firewalls like that with IP-over-broken-TCP.
00:20:41 <elliott> X-D
00:21:19 <zzo38> Astrolog does not support hour angles. I know some programs allow the 0 degrees to be set to other objects such as the North Node, but it should allow any object. And then if you also allow negative harmonic factors, then selecting equatorial coordinates with Zenith at 0 and -1 harmonic factor, that should display hour angles.
00:21:21 <elliott> C'mooon, IP over NTP, work with me here.
00:21:30 <fizzie> IP-over-NTP has the same problem as IP-over-DHCP that in general the servers just respond, they don't forward your questions along.
00:22:05 <Gregor> IP over DHCP is considerably more feasible (also: actually implemented, IIRC) than IP-over-NTP ...
00:23:34 <fizzie> How's that at all useful? Or does that really go "through" an un-collusive DHCP server?
00:23:42 <elliott> I guess what we're learning here is that the only bidirectional highly-connected ubiquitous global public system is DNS :P
00:23:51 <elliott> Probably because having two of them is really painful.
00:23:57 <shachaf> elliott: There's also IP.
00:23:58 <elliott> (Although so is having one.)
00:24:13 <elliott> shachaf: Well, that's not really the same kind of distributed system, is it? I suppose it's similar.
00:24:22 <elliott> I don't think IP routers do the same kind of caching, though :P
00:24:27 <shachaf> They should!
00:24:38 <elliott> Clearly we should extend IP so that it can do DNS.
00:24:52 <shachaf> Maybe IP should be content-addressed.
00:25:06 <elliott> Also that.
00:25:57 <elliott> fizzie: Tell me how to do DNS over IP!
00:26:09 <fizzie> "IP over DHCP" is kind of hard to Google for, because it's all full of talk about getting an IP address "over" (as in, via) DHCP.
00:26:23 <olsner> "When DHCP server is on an other VLAN, when swyx phones don't become an IP adress and DHCP relay is configured on the switch, you have to delete."
00:26:37 <olsner> is one thing I found googling for it... sounded interesting, but not related to IP-over-DHCP
00:26:53 <olsner> especially curious about the need to delete
00:27:12 <fizzie> elliott: Well, you could start by defining an UDP-based protocol, and then setting up a set of well-known-address servers that would serve as the root of the distributed database...
00:27:35 <fizzie> (In other words, DNS runs over IP.)
00:28:14 <elliott> FireFly: It was a joke.
00:28:16 <olsner> fizzie: it is possible that it was some sort of joke
00:28:20 <elliott> YEAH FIREFLY
00:28:23 <elliott> TAKE THAT
00:29:49 <FireFly> :<
00:30:54 <olsner> ip over ntp might be interesting when considered as steganography - though it might be hard to explain the amount of ntp traffic you need to generate to "update your clock"
00:31:36 <fizzie> olsner: Perhaps you just *really* care about the time.
00:32:04 <shachaf> How about IP over Ethernet?
00:32:25 <shachaf> elliott: Should I install Arch?
00:33:06 -!- monqy has joined.
00:33:44 <olsner> fizzie: yeah, so it shouldn't be hard to convince people that you're just clinically insane and obsessed about losing time, and not at all involved in clandestine operations
00:35:38 <fizzie> olsner: Certainly easier than, say, steganography over innocuous-looking IRC comments. (Also there is NOTHiNG going on here, and the unusual letter casing earlier was not at all significant.)
00:37:05 <fizzie> Also, X+jS5u5nNU01u9fCFXtEVb5sr4dXQjhuSL3E1BsMmUA=. Just thought I should mention.
00:39:35 <olsner> indeed
00:39:49 <olsner> IP over IRC then?
00:40:13 <fizzie> I'd almost guesstimate that would have been done.
00:40:22 <olsner> yeah, it should've been
00:41:00 <fizzie> http://offog.org/ideas/ip-over-everything.html
00:41:11 <fizzie> The linked-to 'ipox' sounds like it has.
00:41:33 <fizzie> It's not being very openy, but still.
00:42:04 <Sgeo_> What is with people named Oleg?
00:42:07 <Sgeo_> Or is this the same Oleg?
00:42:32 <olsner> though I think Ethernet over IRC is a better fit: each channel corresponds to an ethernet segment, clients that have joined several channels can act as switches/bridges, and somewhere there could be routers
00:42:58 <olsner> Sgeo_: different olegs
00:43:09 <Sgeo_> How many Olegs are there?
00:43:20 <olsner> I think Oleg is a fairly common russian and/or slavic name
00:43:24 <Sgeo_> 2 or 3, I think. THE Oleg, ipox Oleg, and esolangs Oleg
00:43:35 <Sgeo_> I don't know if ipox Oleg and esolangs Oleg are the same
00:44:09 <Sgeo_> But User:Oleg is not THE Oleg, right?
00:44:15 <olsner> esolangs oleg is unknown to me
00:44:47 <Sgeo_> http://esolangs.org/wiki/User:Oleg
00:45:29 <olsner> that appears to be an Oleg Mazonka
00:45:59 <olsner> the "THE Oleg" is (iirc) Oleg Kiselyov or something similar
00:46:51 -!- azaq23 has joined.
00:47:47 <olsner> anyway.. speaking of IP-over-anything, the way it should work is that your OS figures out what's accessible and whatever that is (an open wifi allowing only NTP access?) it'll hook you up to the interwebs somehow
00:53:25 <Gregor> WTF kind of wi-fi only has NTP access >_>
00:53:58 <olsner> one where IP-over-NTP is required
00:54:50 <Gregor> lol
00:55:28 <elliott> back
00:55:34 <elliott> <shachaf> elliott: Should I install Arch?
00:55:39 <elliott> shachaf: Onto Ethernet? Yes.
00:55:56 <elliott> <fizzie> olsner: Certainly easier than, say, steganography over innocuous-looking IRC comments. (Also there is NOTHiNG going on here, and the unusual letter casing earlier was not at all significant.)
00:56:00 <elliott> fizzie: WHAT LETTER CASIIIING
00:56:47 -!- PiRSquared17 has quit (Quit: ChatZilla 0.9.88 [Firefox 11.0a2/20111230042026]).
00:56:49 <elliott> Gregor: the time wifi
00:56:53 <elliott> tifi
00:56:55 <elliott> witi
01:02:19 -!- Vorpal has quit (Ping timeout: 248 seconds).
01:02:42 <elliott> fizzie: That base64 is binary. :/
01:05:11 <olsner> elliott: it's just bait to keep you from finding the hidden messages
01:08:23 <olsner> hmm, I think it's sleepytime
01:12:03 <olsner> now, I do wonder how much power my laptop drains in sleep/standby mode.. will 9870mWh last until morning or should I plug it in before going to sleep?
01:17:17 -!- olsner has quit (Ping timeout: 268 seconds).
01:36:59 -!- Sgeo_ has quit (Remote host closed the connection).
01:37:46 -!- Sgeo has joined.
01:38:02 <Sgeo> elliott, kallisti update
01:39:31 -!- DCliche has joined.
01:42:42 -!- Klisz has quit (Ping timeout: 240 seconds).
01:45:24 -!- GreaseMonkey has joined.
01:47:53 <zzo38> http://esolangs.org/wiki/User:Zzo38/Astro-Q (PLEASE DO NOT MOVE THIS DOCUMENT TO MAIN NAMESPACE. IT DOES NOT BELONG THERE. KEEP IT UNDER MY USER NAMESPACE)
01:58:59 -!- kallisti has quit (Ping timeout: 260 seconds).
02:02:59 -!- kallisti has joined.
02:03:00 -!- kallisti has quit (Changing host).
02:03:00 -!- kallisti has joined.
02:03:56 -!- tswett has joined.
02:04:17 <elliott> zzo38: why caps
02:04:30 <tswett> `echo Warrigal is awesome
02:04:33 <HackEgo> Warrigal is awesome
02:04:40 <tswett> HackEgo: you're awesome, too.
02:04:47 <elliott> whos wargl
02:05:16 <zzo38> elliott: It is in capitals on that page, too. I made it like that to ensure that people pay attention to that message instead of moving it to the main namespace
02:05:33 <tswett> elliott: only the most awesome guy you've ever heard of.
02:05:50 <elliott> zzo38: why do you think people would do that though, i've never seen that happen on esowiki
02:06:16 * elliott thinks the admins might object to the existence of the page, though
02:06:27 <zzo38> That is why I put that note there.
02:06:56 <zzo38> There are other subpages of my userpage as well which some esolang wiki people might not like, too, possibly.
02:07:03 <elliott> huh? what is why you put the note there?
02:07:46 <zzo38> http://esolangs.org/w/index.php?title=Special%3APrefixindex&from=User%3AZzo38&namespace=0
02:07:59 <elliott> ok...
02:10:03 <zzo38> Did you read this article too? http://esolangs.org/wiki/User:Zzo38/FurryScript
02:10:34 <elliott> yes, that one is about an esolang though :P
02:11:43 <zzo38> Sort of
02:12:06 <zzo38> I designed as a domain-specific language, actually, but it could be considered esolang too
02:12:29 <zzo38> Really I just put it there to document it since some people have asked me to document it there on wiki, in a subpage of my user page.
02:13:58 <zzo38> Did you see this one too? http://esolangs.org/wiki/User_talk:Zzo38/FurryScript
02:15:53 <Sgeo> elliott, what do you think about Nix?
02:16:20 <elliott> Sgeo: do you mean nix or nixos
02:16:22 <elliott> or nixpkgs
02:16:36 <Sgeo> I'm curious about your opinion on all of them
02:17:04 <Sgeo> Although I'm a bit fuzzy on the difference between nix and nixpkgs. Is nixpkgs just a central repository for nix?
02:17:07 <Sgeo> nix packages
02:17:56 <elliott> nixpkgs is a cross-platform collection of nix derivations
02:18:11 <elliott> that can either work as a bootstrapped closed system (i.e. no outside dependencies past a bootstrap) or using host compilers etc.
02:19:12 <elliott> anyway
02:19:28 <elliott> nix is a raelly good idea and lightyears ahead of any existing package managers, although i disagree with several design decisions
02:19:30 <elliott> *really
02:20:03 <elliott> nixpkgs I... don't really have an opinion on, it's not really interesting beyond being a source of packages to use with nix. i guess they're okay, but it tends to lag behind a bit too much for my tastes
02:20:22 <elliott> nixos is a good generalisation of nix's basic concept to operating system services but i'm not sure it's ready for prime time, and i again disagree with some design decisions
02:26:24 <zzo38> Do you know how to disable CPUID stuff for ARM processors?
02:35:57 * Sgeo is going to try putting Nix on the school computer
02:36:12 <Sgeo> BECAUSE I CAN (maybe)
02:36:27 <Sgeo> Also, maybe it will enable me to get Haskell on there finally
02:44:15 <elliott> Sgeo: I wouldn't recommend it just to get GHC/Haskell pkgs.
02:44:32 <Sgeo> elliott, you mentioned bootstrapping stuff, right?
02:44:36 <elliott> I don't think there's a decent solution for getting a full up-to-date Hackage set with Nix.
02:44:37 <elliott> Sgeo: Huh?
02:44:45 <elliott> How is that relevant?
02:44:48 -!- MDude has changed nick to MSleep.
02:44:52 <Sgeo> If I get nix's version of gcc with glibc or whatever working, maybe I can get Haskell working
02:45:02 <Sgeo> I think my school's system uses some obsolete ... stuff
02:45:14 <elliott> I don't know if that method is supported outside of NixOS.
02:45:15 <Sgeo> I couldn't compile GHC from source (well, from source and binary)
02:45:22 <elliott> What binary version?
02:45:35 <Sgeo> I don't remember
02:45:39 <elliott> I see.
02:46:03 <Sgeo> ....and Nix did not compile
02:48:02 <Sgeo> In file included from nixexpr.hh:6,
02:48:02 <Sgeo> from nixexpr.cc:1:
02:48:02 <Sgeo> symbol-table.hh:5:29: tr1/unordered_set: No such file or directory
02:48:02 <Sgeo> In file included from nixexpr.hh:6,
02:48:02 <Sgeo> from nixexpr.cc:1:
02:48:13 <Sgeo> And then a bunch of errors after that that I can only assume are connecte
02:48:15 <Sgeo> d
02:48:25 -!- PiRSquared17 has joined.
02:48:31 <PiRSquared17> Finnmark
02:48:41 <elliott> yes
02:48:50 <elliott> Sgeo: your C++ library is too old
02:49:02 <elliott> Sgeo: getting ghc compiled properly will be a lot easier.
02:49:26 <Sgeo> I think it's too old for that
02:49:53 <elliott> ok, i'll defer to your expert opinion.
02:50:01 <Sgeo> As in, I tried it
02:50:13 <Sgeo> Or at least, I tried what I thought was the way to compile it properly
02:50:23 <elliott> yes, but you didn't tell us what went wrong, and there's no guarantee you did it correctly...
02:50:26 <Sgeo> Although maybe you're referring to with the assistance of another machine
02:50:33 <elliott> no
02:50:40 <elliott> although you do have a perfectly good one right there
02:50:45 <elliott> you're typing on it :p
02:51:07 <Sgeo> The times I tried it, I was on a Windows machine at school, so I couldn't use that to help
03:00:01 <elliott> does anyone know how long war and peace took to write
03:00:04 <elliott> this is important info
03:01:06 <elliott> @tell fizzie Chrome thinks your GitHub profile is one of my favourite sites because "github" completes to it. Thought you should know.
03:01:07 <lambdabot> Consider it noted.
03:01:26 -!- Sgeo_ has joined.
03:03:45 <elliott> Sgeo how long did war and peace take to write
03:03:54 -!- Sgeo has quit (Ping timeout: 240 seconds).
03:06:48 <elliott> :(
03:07:23 * Sgeo_ thought you were quizzing him for some reason
03:08:43 -!- Darth_Cliche has joined.
03:08:54 <elliott> no i actually need the info for science reasons
03:12:38 -!- DCliche has quit (Ping timeout: 255 seconds).
03:12:45 <elliott> sheesh ill look it up myself
03:13:00 <Gregor> Time to push debug info into the Fythe AST format ...
03:13:27 <Gregor> WITH MAGIC
03:13:55 <elliott> ok six years
03:14:02 <elliott> no thanks to Sgeo_
03:14:14 <elliott> i'm going to be waiting an awfully long time
03:19:44 <Sgeo_> I should make my schedule for next semester
03:19:53 <Sgeo_> I'm already closed out of philosophy classes :(
03:21:35 * elliott f5s github wildly
04:01:34 <kallisti> elliott: bad manner
04:01:39 <kallisti> LDLDLDLDLDLDLDLD
04:04:10 <elliott> kallisti: waht
04:05:22 <kallisti> :D
04:09:24 <kallisti> I want to play a good strategy RPG
04:09:44 <kallisti> I guess Dragon Age is an example of such a game.
04:10:01 <kallisti> preferably real-time or semi-real-time
04:14:11 <elliott> kallisti: skiram
04:20:13 <itidus21> i suggest to everyone joining #freenode-newyears .. why? i dunno
04:20:25 <monqy> i dont want to ;_;
04:21:09 <itidus21> good idea.. best not to
04:21:28 <zzo38> I suggest to don't joining #freenode-newyears .. unless you really want to do so.
04:22:00 <itidus21> well.. my comment is more about making it known :P
04:23:17 <elliott> but its like infinite hours until new years
04:23:48 -!- cheater has joined.
04:23:52 <zzo38> Have you play Dungeons & Dragons game?
04:24:14 <zzo38> Did you play Scrabble or flower card or D&D at new year eve?
04:24:47 <itidus21> i was spamming. lets overlook it.
04:25:46 <zzo38> What did you watch at new year eve, anyways?
04:39:54 <elliott> :t mapM_
04:39:55 <lambdabot> forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m ()
04:44:35 <elliott> @hoogle mapM_
04:44:35 <lambdabot> Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
04:44:35 <lambdabot> Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
04:44:35 <lambdabot> Data.Foldable mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
04:44:40 <elliott> @hoogle void
04:44:40 <lambdabot> Foreign.Marshal.Error void :: IO a -> IO ()
04:44:40 <lambdabot> Control.Monad void :: Functor f => f a -> f ()
04:44:40 <lambdabot> package void
04:45:24 <itidus21> thats an awesome language
04:46:43 -!- GreaseMonkey has quit (Quit: The Other Game).
04:55:28 <kallisti> elliott: skyrim is in absolutely no way a strategy game.
04:56:12 <kallisti> (note that "having strategies" doesn't count as a strategy game. Most games have those. )
04:56:31 <zzo38> Then play skiram instead of skyrim
04:57:19 <kallisti> ...
04:57:26 <kallisti> you mean this: http://www.youtube.com/watch?v=Lh1-z_UhHhk (turn volume down)
04:57:39 <kallisti> Loks like grate gam
04:58:22 -!- itidus21 has quit (Ping timeout: 276 seconds).
05:00:37 -!- NihilistDandy has joined.
05:04:00 <zzo38> class Swap s where { swap :: s x y -> s y x; } Laws: swap . swap = id
05:06:30 <kallisti> looks good.
05:07:07 <kallisti> What would you call a function where f . f . f = id
05:07:45 <zzo38> kallisti: I don't know.
05:08:56 <kallisti> I'm tempted to call it like a "2-cycle inversion" or something terrible like that.
05:09:06 <zzo38> If you extended it to three maybe it is Rot like how Forth has a ROT command
05:10:07 <elliott> http://stackoverflow.com/questions/8686376/recursive-haskell-and-stack-overflow Haskell can't evaluate infinite loops in finite time
05:10:12 <elliott> this is why nobody uses Haskell in the Real World!
05:11:47 <kallisti> lolwat
05:11:59 <kallisti> I wonder the "exact same code in Python" looks like
05:12:35 <kallisti> +what
05:14:08 <kallisti> >>> def countStairs(n): countStairs(n-1) + countStairs(n-2) + countStairs(n-3)
05:14:08 <kallisti> ...
05:14:09 <kallisti> >>> countStairs(5)
05:14:20 <kallisti> (...several lines down...)
05:14:26 <kallisti> RuntimeError: maximum recursion depth exceeded
05:14:34 <kallisti> sanity restored.
05:15:08 <kallisti> oh I forgot the return.
05:15:18 <kallisti> maybe Python will optimize out the recursion. :>
05:15:52 <Sgeo_> Python doesn't have TCO
05:16:04 <kallisti> oh really?
05:16:14 <kallisti> I didn't know. >:)
05:16:56 <monqy> tco is unpythonic
05:17:15 <kallisti> optimizations in general are unpythonic, I believe.
05:17:34 <zzo38> I have a music file containing the following notice: "a word of wisdom: if your nose is running, and your feet are smelling, check to see if you're upside down..."
05:17:55 -!- itidus21 has joined.
05:17:57 <kallisti> heh
05:18:10 <zzo38> (It appears in the sample names menu)
05:20:24 <zzo38> What is a generalized mathematical structure having a zero and a successor called? (Simply such that every one has a successor; not that they are infinite or that every element can be reached in this way)
05:22:35 -!- itidus21 has quit (Ping timeout: 252 seconds).
05:24:29 -!- itidus21 has joined.
05:28:46 <elliott> "You, sir, are awesome." Pffft, as if compliments encourage me. All I care about is making my little number go up!!!
05:29:05 <elliott> One day someone will present me with a number marked "how awesome you are" and give me a button I can press to increase it, and that will be the end of my productive life.
05:31:52 <zzo38> class C t where { z :: t; s :: t -> t; }; No laws (other than always being fully defined). What kind of mathematical structure is this?
05:32:03 <elliott> c
05:33:15 <zzo38> No
05:35:06 -!- centrinia has joined.
05:35:48 <kallisti> `run perl -v
05:35:51 <HackEgo> ​\ This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi \ (with 53 registered patches, see perl -V for more detail) \ \ Copyright 1987-2009, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be found on \ this system using
05:36:04 <elliott> `welcome centrinia
05:36:07 <elliott> it's tradition
05:36:08 <HackEgo> centrinia: 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
05:36:29 <centrinia> Wow, I started a tradition.
05:36:40 <zzo38> centrinia: Are you sure?
05:36:57 <centrinia> Maybe elliott started it.
05:36:59 <kallisti> `run echo 0 > share/awesome; (echo '#!/usr/bin/perl'; echo 'use v5.10;open my$f,"share/awesome";$_=1+<$f>;print"How awesome you are: ";say;select$f;say;close') > bin/awesome; chmod +x bin/awesome
05:37:03 <HackEgo> No output.
05:37:04 <kallisti> `awesome
05:37:07 <HackEgo> How awesome you are: 1
05:37:15 <kallisti> elliott: ^
05:37:49 <elliott> `run echo inf >share/awesome; rm bin/awesome
05:37:50 <kallisti> better get to work.
05:37:52 <HackEgo> No output.
05:37:56 <elliott> optimised
05:38:07 <kallisti> elliott: but now can't see how awesome you are.
05:38:12 <elliott> `cat share/awesome
05:38:15 <HackEgo> inf
05:38:22 <kallisti> elliott: that's an unspecified quantity
05:38:25 <elliott> the system can't handle my awesomeness so it forgets the label
05:38:28 <elliott> not my fault im too cool
05:38:28 <kallisti> it needs to say "how awesome you are: inf"
05:38:44 <elliott> `run echo 'how awesome you are: inf' >share/awesome
05:38:48 <HackEgo> No output.
05:38:48 <elliott> so awesome i even patched the software's bugs
05:39:07 <kallisti> there are no bugs in the software
05:39:11 <kallisti> the specification is the code itself.
05:39:23 <kallisti> which now no longer exists..
05:39:31 <kallisti> (in the current working copy)
05:40:11 <elliott> "GHC actually has a cache of small values of type Int and Char, so in many cases these take no heap space at all. A String only requires space for the list cells, unless you use Chars > 255." ;; huh, i did not realise this
05:40:49 <kallisti> doesn't GHC also automatically unbox values when such is possible?
05:40:54 <kallisti> and reasonable.
05:41:01 <shachaf> Doesn't GHC typically store small strings in memory as C-style strings?
05:41:15 <kallisti> o.o?
05:41:25 <shachaf> I mean, along with the list cells.
05:41:30 <shachaf> I thought it did for some reason.
05:41:52 <zzo38> Let's playing D&D game of player characters named "Also" and "Kjugobe"?
05:42:10 <kallisti> it would have to determine that it doesn't grow indefinitely I would think otherwise that wouldn't be very efficient.
05:42:19 <kallisti> or, well, hmm
05:42:33 <kallisti> no because strings are immutable anyway.
05:42:43 <elliott> shachaf: Well, it compiles them to C strings inteh binray and linked-listifies them at runtime, IIRC.
05:42:45 <elliott> Wow I can't type.
05:42:54 <elliott> Otherwise GHC executables would be even bigger.
05:43:15 <zzo38> If there is something wrong then correct it please
05:43:25 <elliott> I would but I am lazy.
05:43:31 <elliott> Oh, you mean about what you said?
05:43:56 <kallisti> I wonder how the file IO functions like getContents work. I would think it reads in larger chunks than characters.
05:45:20 <Sgeo_> elliott, would you be mad if I, say, made ftphs-conduit instead of ftphs-enumerator?
05:46:35 <elliott> Sgeo_: My extremely controversial opinion is that I really don't care one bit.
05:47:10 <shachaf> elliott: Oh.
05:47:20 <shachaf> At runtime.
05:49:12 <elliott> kallisti: (hGetContents h) is just (unsafeInterleaveIO . join $ ((\c -> (c:) <$> hGetContents h) <$> getChar) `catch` \e -> if isEOFError e then return [] else throwIO e)))))))) or whatever.
05:49:29 <elliott> i.e. a trivial getChar loop but with unsafeInterleaveIO at every node.
05:49:42 <shachaf> elliott: What happens if you combine this small-cache thing with kmc's mutability hack?
05:50:03 <kallisti> elliott: I don't actually know what unsafeInterleaveIO does.
05:50:22 <elliott> shachaf: Let's not find out.
05:50:31 <shachaf> elliott: Oh, come on.
05:50:31 <elliott> kallisti: return . unsafePerformIO
05:50:38 <shachaf> That's against the spirit of this channel.
05:50:45 <kallisti> elliott: lolwat. weird.
05:50:48 <shachaf> You gotta do it, man.
05:52:40 <Sgeo_> kallisti, From an IO a, it gives an IO a, where doing the IO gives back an "a", but it's lazy and the original IO won't be performed until a is looked at similarly to ordinary laziness.
05:53:30 <elliott> Sgeo_: You're encouraging my pedantic hat.
05:54:05 <Sgeo_> ?
05:54:27 <elliott> kallisti: It transforms an action into one that has no side-effects and returns immediately; when forced, the value it returns causes the original action to be executed, and evaluates to its result.
05:54:28 <shachaf> Sgeo_: elliott is saying that you're being so imprecise it hurts.
05:54:33 <shachaf> Or something along those lines.
05:54:44 <kallisti> elliott: ah
05:54:57 <elliott> My pedantic hat transforms clear statements into ones with twenty repetitions of "action that when executed returns".
05:55:23 <Sgeo_> elliott, your statement is clearer IMO
05:55:52 -!- centrinia has quit (Quit: Leaving).
05:56:14 <elliott> I think fans of unsafeInterleaveIO would consider it unfair, because it's literally a description of the (return . unsafePerformIO) implementation :)
05:57:29 <Sgeo_> unsafeInterleaveIO has fans? (Besides me when I first learned about it)
05:57:50 <elliott> Well, not "fans". There are of course people who believe its use legitimate.
05:58:11 <Sgeo_> I saw a function somewhere that seemed to be a legitimate use of unsafeInterleaveIO
05:58:18 <Sgeo_> Oh, right, fixIO
05:58:27 <elliott> A common argument that I almost believe is that it's essentially just forkIO-style concurrency; IO actions are nondeterministic, so it's not actually impure to have effects in the spawned thread execute only when a value is forced.
05:59:01 <Sgeo_> http://www.haskell.org/ghc/docs/latest/html/libraries/base/src/System-IO.html#fixIO
05:59:15 <elliott> i.e. Let's say we have { data Var a; new :: IO (Var a); write :: Var a -> a -> IO (); read :: Var a -> a } where writes after the first one fail.
05:59:24 <elliott> And read blocks until a write.
06:00:13 <elliott> unsafeInterleaveIO m = do { sync <- new; value <- new; forkIO (evaluate (read sync) >> m >>= write value); return (unsafePerformIO (write sync ()) `seq` read value) }
06:00:38 <elliott> It's essentially just concurrency, the impurity is isolated in the part where IO gets knowledge of when a pure value is forced.
06:00:52 <elliott> But IO can do that sort of thing anyway; observable sharing and whatnot.
06:01:05 * elliott is only *almost* convinced of this, though.
06:01:25 <shachaf> elliott: Isn't part of it that the IO might not be executed at all?
06:01:57 <elliott> shachaf: Well, yes. But to make my implementation a bit more abstract:
06:02:12 <Sgeo_> Should I write my own indefinite-precision number library for the learning experience?
06:03:08 <elliott> shachaf: unsafeInterleaveIO m = do { value <- new; let result = read value; forkIO (waitUntilForced result >> m >>= write value); return result }
06:03:32 <elliott> shachaf: If you agree that the Var interface is pure, then the only question is whether waitUntilForced is pure.
06:03:37 <elliott> Erm.
06:03:40 <elliott> shachaf: If you agree that the Var interface is pure, then the only question is whether waitUntilForced is "semantics-breaking".
06:03:55 <elliott> (I'm not sure I agree the Var interface is pure, but I think waitUntilForced is as benign as things we do in IO all the time.)
06:04:27 <elliott> (I mean, you can still use Var to control whether a pure value is _|_ or not from IO.)
06:04:40 <elliott> (But in a sense that's morally indistinguishable from it just taking a really long time to evaluate if you never write to it.)
06:04:54 <elliott> shachaf: So I don't see how whether the IO is ever executed or not is really relevant.
06:05:05 <shachaf> This Var thing is kind of like IVar, isn't it?
06:05:24 <shachaf> Maybe I should actually read what you're saying instead of assuming things about it.
06:05:42 <elliott> shachaf: It's exactly IVar. :p
06:05:51 <elliott> But yes, that would be good.
06:06:09 <shachaf> Isn't the usual IVar implementation in Haskell given with read :: IVar a -> IO a?
06:06:09 <elliott> Oh, hmm.
06:06:13 <elliott> It's not data-ivar IVars.
06:06:18 <kallisti> elliott: do you think it would be possible to make Haskell orthagonally persistent?
06:06:20 <elliott> Right, this is IVar with read outside of IO.
06:06:29 <elliott> kallisti: Orthogonal persistence is a property of systems, not languages.
06:06:33 * shachaf is iffy about this IVar-with-read-outside-of-IO thing.
06:06:46 <elliott> shachaf: Yes, but for the moment accept it on faith.
06:06:54 <kallisti> elliott: do you think it would be possible to change the GHC runtime system so that it's orthagonally persistent?
06:06:59 <elliott> That and waitUntilForced are all you need to accept to believe that unsafeInterleaveIO is just another concurrency mechanism.
06:07:29 <kallisti> elliott: in a way that you could... like... turn on as a language extension perhaps? or an IO action or....?
06:07:47 <shachaf> waitUntilForced as in "wait until (read var) is evaluated"?
06:07:50 <elliott> kallisti: I don't know much about the GHC runtime, but I dunno, since it's thoroughly entrenched in C and traditional operating systems... maybe, since the number of C structures it uses is limited, and youc ould swap out the allocator... I'm not really interested in that, though. Also you're misspelling orthogonally.
06:07:51 <shachaf> No, I don't like that at all.
06:08:20 <elliott> shachaf: Oh, hmm, my implementation is broken. But it's trivial to fix without introducing new primitives.
06:08:25 <elliott> shachaf: What do you think of observable sharing?
06:08:32 <elliott> That's possible to do solely from IO.
06:08:48 <elliott> And that "breaks" Haskell's semantics in similar ways; you can observe things you Can't(tm) about pure values.
06:08:48 <shachaf> That's at least one more level of evil than concurrency primitives.
06:08:56 <shachaf> Sure, you "can" do anything from IO.
06:09:01 <elliott> shachaf: It's an implication: "if waitUntilForced is OK, then this is just concurrency".
06:09:03 <zzo38> I think they are all wrong. Better way, make separate parts of the program, one is IO, and then another program takes the execution of that program as an IO to make a new IO from that, so that way include all threading and "undefined" use error and memory manage and so on, so that both sides are mathematically correct even though their combination, if combined directly, isn't.
06:09:15 <elliott> shachaf: You "'can'"?
06:09:18 <elliott> I'm not sure what you're getting at.
06:09:20 <shachaf> But I think you'll agree that putStrLn is more benign than writing into /dev/mem.
06:09:45 <elliott> Sure. I'm not denying that. I'm just asking why, or if, you think waitUntilForced is less benign than observable sharing.
06:10:06 <shachaf> I'm not sure I said that.
06:10:24 <elliott> (Were I Conal, I would win by pointing out that the fact that you can do anything in IO means we have no idea what Haskell programs actually mean and then riding a unicorn off into the sunset.)
06:10:29 <elliott> shachaf: That's why I said "or if". Sheesh :P
06:10:44 <shachaf> elliott: I was trying not to Godwin Conal into this discussion, man.
06:11:05 <elliott> I parenthical-Godwinned him.
06:11:07 <shachaf> There's probably a law involving Conal and discussions of IO in Haskell.
06:11:09 <zzo38> What do you think my suggestion means (if anything)?
06:11:40 <shachaf> elliott: Anyway, I think observable sharing is less benign than concurrency primitives.
06:11:57 <shachaf> I don't know what "benign" actually means, of course.
06:11:59 <elliott> shachaf: Why do you believe I'm saying unsafeInterleaveIO is as benign as concurrency primitives in stock Haskell?
06:12:13 <shachaf> Why do you believe I believe that?
06:12:25 <elliott> What I am saying is: If you accept Var and waitUntilForced as OK, then unsafeInterleaveIO *literally is* a concurrency feature. (Not even a primitive.)
06:12:38 <shachaf> Oh, well, sure.
06:12:39 <elliott> shachaf: Because you keep answering my questions as if you do.
06:12:42 <shachaf> You gave an implementation up there.
06:12:50 <elliott> Well, yes, that's the point.
06:12:55 <shachaf> Well, right.
06:13:03 <shachaf> Are we arguing about *that*?
06:13:04 <elliott> I'm just saying that Var and waitUntilForced both seem a lot less horrible than unsafeInterleaveIO.
06:13:05 <shachaf> That would be silly.
06:13:14 <elliott> Which is why I almost believe unsafeInterleaveIO is OK.
06:13:26 <elliott> But I don't really, because I don't totally believe in Var.
06:13:35 <shachaf> Why does waitUntilForced seem less horrible than unsafeInterleaveIO?
06:13:38 <elliott> Ah, this is Var: http://hackage.haskell.org/packages/archive/sink/0.1.0.1/doc/html/Data-Sink.html
06:14:08 <shachaf> elliott: Your implementation *does* use unsafePerformIO.
06:14:10 <shachaf> Oh, wait, it doesn't.
06:14:51 <shachaf> "Sinks are a more flexible alternative to lazy I/O (unsafeInterleaveIO)."
06:14:53 <elliott> shachaf: Actually, waitUntilForced I have zero qualms about. It's Var I find suspect. But it doesn't seem horrible because reacting to pure values in side-effectful ways is sort of the entirety of what IO does. I have absolutely no qualms -- beyond my standard qualms about IO, I mean, if we're in the sin bin, might as well use it -- about IO-based observable sharing, and waitUntilForced actually seems more benign than that to me.
06:15:18 <shachaf> I'm not sure I'd want my thing to be called "more flexible alternative to unsafeInterleaveIO".
06:15:40 <elliott> shachaf: Well, Var is blantantly less powerful than unsafeInterleaveIO, because you'd have to just immediately do the IO to make use of it like that :)
06:16:55 <elliott> shachaf: Actually, you don't even really need waitUntilForced.
06:17:45 <elliott> entangle :: IO ((), ()); entangle = do { v <- new; return (unsafePerformIO (write v ()), read v) }
06:18:23 <elliott> unsafeInterleaveIO m = do { value <- new; (trigger, wait) <- entangle; forkIO (evaluate wait >> m >>= write value); return (trigger `seq` read value) }
06:18:59 <shachaf> I'm pretty sure anything called "entangle" isn't benign at all.
06:19:06 <elliott> Glad we're on the same page!
06:19:09 <elliott> I really want to put that on Hackage now.
06:19:23 <shachaf> As long as it, like, starts with acme-, man.
06:21:50 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com).
06:22:41 <zzo38> How much mathematically correct do you think my suggestion is, compared to the other way?
06:23:50 <elliott> entangle :: IO ((), ())
06:23:50 <elliott> entangle =
06:23:50 <elliott> fmap ((`putMVar` ()) &&& takeMVar >>> both unsafePerformIO) newEmptyMVar
06:23:53 <elliott> shachaf: Beautiful, no?
06:24:10 <monqy> :t both
06:24:10 <lambdabot> Not in scope: `both'
06:25:56 <zzo38> Does window have two hose?
06:26:40 <elliott> monqy: join (***)
06:26:59 <elliott> shachaf: I've decided that isn't worthy of the name entangle.
06:27:08 <elliott> shachaf: I shall now construct an entangle where
06:27:29 <elliott> After (a, b) <- entangle, forcing either "a" or "b" only terminates when the other is.
06:27:32 <elliott> That is, err, they synchronise.
06:29:12 <monqy> what would be worthy of the name entongle
06:30:00 <zzo38> What is the mathematical name for a kind of mathematical structure like I described above "class C"?
06:31:28 <elliott> i don't know :(
06:31:29 <elliott> sorry
06:32:14 <zzo38> Do you know someone know mathematics better?
06:32:35 <elliott> monqy: do you like my revised entangle i think its: grate
06:33:26 <monqy> i dont know what its about ;_; black magicks???
06:33:44 <elliott> monqy: entangle returns a pair of ()s; forcing each () blocks until the other is forced
06:33:54 <elliott> that is, evaluating either terminates only when both are evaluated
06:34:09 <monqy> wonderful
06:34:38 <quintopia> sounds like a mutex-like thing
06:35:31 <elliott> quintopia: yes but this is with pure values :')
06:35:33 <elliott> they're just
06:35:35 <elliott> quantum magic
06:36:18 <zzo38> To me it seems mathematically incorrect; the result of the program should always have an answer according to its input, not according to the number of times it is used.
06:36:23 <quintopia> i think it doesnt sound much like the behavior of quantum entanglement
06:36:56 <elliott> monqy: here's my next trick......
06:37:01 <elliott> cross :: IO (a -> b, b -> a)
06:37:07 <elliott> guess what it doe
06:37:08 <elliott> s
06:37:18 <monqy> oh no
06:37:23 <elliott> :D
06:39:17 <kallisti> lolwat
06:40:00 <elliott> *Main Control.Parallel> (f, g) <- cross :: IO (String -> Int, Int -> String)
06:40:00 <elliott> *Main Control.Parallel> let x = f "hi"; y = g 42 in x `par` y `par` (x, y)
06:40:00 <elliott> (42,"hi")
06:40:00 <elliott> *Main Control.Parallel> (f, g) <- cross :: IO (String -> Int, Int -> String)
06:40:00 <elliott> *Main Control.Parallel> let x = f "hi"; y = g 42 in (x, y)
06:40:00 <elliott> (
06:40:03 <elliott> monqy: isn't it beautiful
06:40:25 <zzo38> Quantum entanglement is still mathematicall correct, however.
06:41:27 <elliott> shachaf: You gotta think cross is benign.
06:41:28 <elliott> It's the benignest.
06:41:40 <monqy> its spookey
06:41:55 <itidus21> what does it do?
06:42:36 <elliott> it um
06:42:39 <elliott> i'm not even sure how to explain it
06:42:45 <itidus21> does it do anything?
06:42:47 <elliott> one function feeds the value into the other
06:42:50 <elliott> in
06:42:53 <elliott> a very unsanitary way
06:43:17 <itidus21> is it a swap, or something far more diabolical?
06:43:27 <elliott> its
06:43:29 <elliott> dibblocal
06:44:59 <itidus21> rumor has it that cross is an abominantion
06:45:21 <zzo38> I think my "class C" resembles the first six Peano axioms on http://en.wikipedia.org/wiki/Peano_axioms so maybe it is a "Peanoid"
06:45:37 <zzo38> Is that even a word?
06:46:08 <monqy> its piano
06:46:29 <zzo38> Can you play piano?
06:46:31 <elliott> monqy: here's a wonderful thing you can build with cross
06:46:33 <elliott> tell :: IO (a -> (), a)
06:46:33 <elliott> tell = do
06:46:33 <elliott> (f, g) <- cross
06:46:33 <elliott> return (f, g ())
06:46:45 <elliott> oh wait that doesn't work quite right
06:46:49 <itidus21> Peanon aksioomat ovat matematiikassa italialaisen matemaatikko Giuseppe Peanon esittmt yhdeksn aksioomaa, jotka mrittvt luonnolliset luvut. Aksioomat perustuvat funktioon S, jolle S(a)=a+1 (merkitn mys Sa=a+1) kaikilla luonnollisilla luvuilla a.
06:47:08 <monqy> yes
06:47:23 <zzo38> Good.
06:47:23 <elliott> *Main Control.Parallel> (f,x) <- tell :: IO (Int -> (), Int)
06:47:24 <elliott> *Main Control.Parallel> f 42
06:47:24 <elliott> ()
06:47:24 <elliott> *Main Control.Parallel> x
06:47:24 <elliott> 42
06:47:27 <elliott> i fixed it
06:48:45 <elliott> shachaf: Hey, I could combine these with kmc's mutation hack.
06:49:04 <elliott> vary :: IO (a, a -> IO ()) -- you can write multiple times
06:51:27 <zzo38> Is there a better name than "peanoid"?
06:51:59 <copumpkin> elliott: not IO (IO a, a -> IO ()) ?
06:53:41 <elliott> copumpkin: Hell no!
06:53:51 <elliott> copumpkin: This all got started with entangle :: IO ((),()); guess what it does.
06:53:52 <copumpkin> oh ok
06:54:18 <copumpkin> sounds useful
06:54:57 <elliott> That's not a guess. :(
06:55:50 <copumpkin> um
06:55:52 <Sgeo_> elliott, kallisti update
06:56:05 <copumpkin> it does all sorts of evil shit with unsafeperformio and then gives you a ()
06:56:15 <elliott> copumpkin: Sheesh! It gives you TWO ()s.
06:56:18 <elliott> copumpkin: Two ENTANGLED ()s.
06:56:21 <copumpkin> zomg
06:56:23 <elliott> Entangled with value ().
06:56:31 <copumpkin> they sound extremely useful
06:56:40 <copumpkin> both of them
06:56:48 <elliott> copumpkin: Either one only evaluates to () when both are being forced.
06:56:53 <elliott> It's a synchronisation primitive!
06:57:13 <elliott> You both just look at your ()s at the right time, and once it's in WHNF you know you've both looked at it.
06:57:14 <copumpkin> lol
06:57:23 <elliott> entangle = do
06:57:24 <elliott> a <- newEmptyMVar
06:57:24 <elliott> b <- newEmptyMVar
06:57:24 <elliott> return (sync' a b, sync' b a)
06:57:24 <elliott> where sync' x y = unsafePerformIO $
06:57:24 <elliott> putMVar x () >> (takeMVar y `onException` takeMVar x)
06:57:43 -!- Darth_Cliche has quit (Quit: SLEEP, GLORIOUS SLEEP).
06:58:32 <Sgeo_> elliott, shall I assume you read updates when I say update?
06:59:06 <elliott> I don't read kallisti's new updated code.
06:59:12 <elliott> He's too defective to be fixed by incremental patching.
06:59:17 <elliott> But it's good to know someone's on the job.
06:59:18 <Sgeo_> lol
07:06:28 -!- PiRSquared17 has quit (Quit: Bye ...).
07:10:55 <kallisti> elliott: ;_;
07:16:16 <elliott> ok im slep
07:16:20 <elliott> zzzs
07:17:10 <monqy> z
07:20:37 -!- elliott has quit (Ping timeout: 240 seconds).
07:26:09 <kallisti> how are extensions implemented?
07:26:28 <kallisti> are they just patched into GHC or is there like an API.
07:43:50 -!- itidus21 has quit (Ping timeout: 252 seconds).
07:49:46 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
07:58:19 <Sgeo_> kallisti, update
08:11:15 <zzo38> Do you know the "two envelopes problem"? I think if you are allowed to open it, the solution is to count the money, and if it is odd then you have to switch. But, if the smaller money is even then the larger money will be a multiple of four, and so on. Is the people offering you the envelopes trying to trick you?
08:24:43 -!- zzo38 has quit (Remote host closed the connection).
08:26:43 <shachaf> @tell elliott Aw, I was eating dinner while you were innovating.
08:26:43 <lambdabot> Consider it noted.
08:31:38 -!- azaq23 has quit (Read error: Connection reset by peer).
08:46:20 <coppro> my vim-like project will be called atto
08:49:21 <kallisti> attoboy
08:56:21 <coppro> it will be done when elliott's next project is
08:58:32 <shachaf> coppro: @to?
08:58:50 -!- itidus21 has joined.
09:01:23 <kallisti> "western side of the international dateline" is that in absolute terms or relative to the way "east" and "west" are usually framed.
09:02:16 <kallisti> oh okay
09:02:18 <kallisti> absolute terms
09:02:25 <kallisti> by moving west of the date line they're in the eastern time zones.
09:04:29 <kallisti> imagine how much European commerce would get fucked up if the date line was suddenly shifted to the prime meridian.
09:12:34 <itidus21> so a thought just occured to me while reading the trolley problem on wiki..
09:13:15 <coppro> shachaf: ?
09:13:22 <coppro> oh
09:13:27 <coppro> hmm... I like it
09:13:29 <coppro> @to
09:13:29 <lambdabot> Maybe you meant: todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell do
09:13:37 <coppro> lol
09:13:41 <coppro> brilliant
09:13:51 <coppro> my project name sets off lambdabot
09:14:02 <itidus21> a trolley is heading to kill 5 people on some track.. but those 5 people have the power to divert the trolley to kill 1 person
09:14:51 <itidus21> so here my pondering is, should the 5 people accept their fate, or kill the 1 by diverting the trolley
09:16:45 <coppro> congratulations, you discovered moral dilemmas
09:17:01 <itidus21> now this opens up an interesting aspect of the trolley problem.. of supposing that in the regular trolley problem, the person could ask the people involved what they think
09:21:54 <itidus21> i would also try to take into account the side-effects of the decision
09:22:48 <itidus21> like, it may be that someone has a big stash of money waiting for you if you choose one decision over the other
09:22:59 -!- Madoka-Kaname has quit (Ping timeout: 255 seconds).
09:23:10 <itidus21> or you may owe a debt to one party
09:25:16 <Sgeo_> kallisti, update
09:29:34 -!- Ngevd has joined.
09:29:48 <Ngevd> Hello!
09:30:00 <Sgeo_> Ngevd, updates
09:30:29 <Ngevd> Thank you
09:31:24 <Sgeo_> You're welcome
09:31:53 <Ngevd> Site won't load...
09:33:35 -!- zzo38 has joined.
09:38:58 -!- Ngevd has quit (Ping timeout: 252 seconds).
09:44:40 -!- sebbu2 has quit (Read error: Connection reset by peer).
09:44:51 -!- olsner has joined.
09:47:20 -!- sebbu2 has joined.
09:47:20 -!- sebbu2 has quit (Changing host).
09:47:20 -!- sebbu2 has joined.
10:03:30 -!- Ngevd has joined.
10:10:28 <Ngevd> Hello!
10:11:48 <zzo38> Once a long time ago, my sister was attempting to use my computer without my permission. The computer wasn't on, and didn't require a floppy disk to boot. However, she took a blank disk from my cupboard, inserted it into the computer, and then pushed the disk eject button. She did this over and over again, until finally she turned to me and said: "I put the disk in and push the START DISK button, but it just comes back out! Am I doing something
10:12:30 <Ngevd> Ah, the days when computers didn't do what computers did
10:14:35 <olsner> zzo38: you got cut off at "Am I doing somethin"
10:14:40 -!- oerjan has joined.
10:16:10 <zzo38> g wrong?"
10:16:52 <Ngevd> I remember the first time I used a computer
10:17:00 <olsner> so, had she ever successfully used any computer before then?
10:17:16 <Ngevd> I was three or maybe four
10:17:33 <zzo38> olsner: I don't remember now.
10:18:56 <Ngevd> If I learnt COBOL, I'd be a second-generation COBOL programmer
10:27:13 <oerjan> @hoogle (r,r) -> a -> Array r a
10:27:13 <lambdabot> Data.Array listArray :: Ix i => (i, i) -> [e] -> Array i e
10:27:13 <lambdabot> Data.Array accumArray :: Ix i => (e -> a -> e) -> e -> (i, i) -> [(i, a)] -> Array i e
10:27:13 <lambdabot> Data.Array.IArray listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e
10:27:30 <oerjan> > listArray (1,10) (repeat 0)
10:27:31 <lambdabot> array (1,10) [(1,0),(2,0),(3,0),(4,0),(5,0),(6,0),(7,0),(8,0),(9,0),(10,0)]
10:27:59 <oerjan> <Sgeo_> ...is defaults to 0 a sensible thing for Haskell arrays to do <-- looks easy enough to make, anyway
10:28:40 <oerjan> of course it only makes sense for values of Num class
10:29:52 <oerjan> oh hm i think unboxed arrays might default in that way
10:30:17 <oerjan> @hoogle (r,r) -> a -> UArray r a
10:30:18 <lambdabot> Data.Array.IArray listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e
10:30:18 <lambdabot> Data.Array.MArray newArray :: (MArray a e m, Ix i) => (i, i) -> e -> m (a i e)
10:30:18 <lambdabot> Data.Array.IArray accumArray :: (IArray a e, Ix i) => (e -> e' -> e) -> e -> (i, i) -> [(i, e')] -> a i e
10:31:14 <oerjan> i might be able to investigate this further if not for this barking dog sucking out my brain cells.
10:39:17 -!- Phantom_Hoover has joined.
10:41:48 * oerjan swats FireFly -----###
10:52:19 <zzo38> What is this about FireFly?
10:52:34 <oerjan> i noticed him in the logs
10:52:45 <oerjan> also he's so very swattable. it's in the name.
10:55:26 <oerjan> <kallisti> What would you call a function where f . f . f = id <-- period 3
10:56:47 <oerjan> (it's an element of the permutation group of its domain)
10:57:08 <oerjan> hm also order 3, then
11:07:06 <zzo38> Do you know the name of a generalized kind of mathematical structure satisfying the first six Peano axioms (as given in that Wikipedia article)?
11:07:16 <oerjan> > let countStairs = [1,1,1] ++ map (sum . take 3) (tails countStairs) in countStairs
11:07:18 <lambdabot> [1,1,1,3,5,9,17,31,57,105,193,355,653,1201,2209,4063,7473,13745,25281,46499...
11:08:16 <itidus21> ah i see what you did there
11:08:20 <zzo38> I called it a "peanoid" but maybe there is a different name
11:08:40 <itidus21> so thats a fibonacci-3 :-?
11:08:56 <itidus21> im sure it has better name
11:09:10 <oerjan> zzo38: 2-5 are axioms of predicate logic with equality, i think, so rather implicit in any normal set theory structure
11:09:24 <oerjan> (well, axioms or propositions)
11:09:33 <zzo38> oerjan: Yes; that leaves axioms 1 and 6
11:10:58 <oerjan> zzo38: then you only have a constant and a monic predicate, which i think gives a decidable theory
11:11:09 <oerjan> er wait
11:11:13 <oerjan> *function
11:11:31 <oerjan> it's a rather simple algebraic variety.
11:11:40 <oerjan> don't know if it has a name
11:12:02 <zzo38> That is why I suggested "peanoid" but maybe there can be better name, I don't know
11:12:35 <zzo38> (Like they have "groupoid" and that stuff)
11:13:18 -!- sebbu2 has changed nick to sebbu.
11:14:02 <oerjan> zzo38: http://en.wikipedia.org/wiki/Peano_axioms#Interpretation_in_category_theory might be somewhat relevant, even if not exactly the same
11:15:20 <oerjan> or is it really, that looks complicated
11:16:50 <zzo38> I did see that, and I think that isn't really what I was looking for.
11:17:51 <zzo38> They are talking about a specific category there.
11:17:59 <oerjan> oh wait s/algebraic variety/variety (universal algebra)/, if you're looking up on wikipedia
11:20:08 <oerjan> http://en.wikipedia.org/wiki/Algebraic_structure calls it "pointed unary system"
11:21:41 <zzo38> I know I saw on the Peano axioms article, pointed unary systems. That kind of category does still mean something to me, but I am not trying to make a category.
11:22:20 <oerjan> zzo38: no this second link is not category theory, it's just the same term used for the algebraic structure
11:22:42 <zzo38> OK
11:23:52 <zzo38> Yes I can see that.
11:24:35 <oerjan> <itidus21> so thats a fibonacci-3 :-? <-- it was discussed in http://stackoverflow.com/questions/8686376/recursive-haskell-and-stack-overflow which elliott linked to
11:24:45 <zzo38> A pointed unary system is a bit more generalized kind that can have "one or more distinguished elements, often 0, 1, or both"
11:25:04 <oerjan> i just made the list version
11:25:52 <zzo38> But yes, it is still a pointed unary system.
11:26:54 <oerjan> i've heard "pointed set" as a set with a single distinguished element, so i think it's usually 1 unless otherwise specified
11:27:32 <zzo38> However, mine has exactly one distinguished element which the structure provides (it could have others, although the others are not provided by my structure)
11:28:36 <oerjan> yeah
11:34:34 <zzo38> Is there a Haskell library providing such a class?
11:35:05 <oerjan> i don't know
11:35:32 <oerjan> Pointed is something else, iirc
11:39:37 -!- PatashuXantheres has joined.
11:39:49 <oerjan> <elliott> I think fans of unsafeInterleaveIO would consider it unfair, because it's literally a description of the (return . unsafePerformIO) implementation :) <-- the advantage of unsafeInterleaveIO is in the better guarantees against unwanted execution
11:41:02 <oerjan> e.g. since it isn't a pure result, it cannot be inlined by ghc's optimizer
11:41:14 -!- Patashu has quit (Ping timeout: 240 seconds).
11:41:22 <oerjan> *inlined in multiple places
11:42:37 -!- PatashuXantheres has quit (Read error: Connection reset by peer).
11:42:53 <zzo38> Yes, I think Pointed is something else.
11:54:04 -!- Patashu has joined.
12:00:10 -!- zzo38 has quit (Remote host closed the connection).
12:09:25 -!- lahwran has joined.
12:10:07 <lahwran> uhhhh
12:10:15 <lahwran> google doesn't know about that md5sum ...
12:10:21 <lahwran> :(
12:10:26 -!- readme has joined.
12:11:17 <Ngevd> http://codu.org/logs/_esoteric/
12:11:17 <oerjan> `log topic.*codu
12:11:59 <HackEgo> No output.
12:12:03 <oerjan> wat
12:12:33 <oerjan> `log | http://codu
12:12:55 <HackEgo> shuf: memory exhausted
12:13:01 <oerjan> sheesh
12:13:29 <oerjan> `log solidity.* | http://codu
12:13:52 <HackEgo> 2011-12-25.txt:09:33:27: <oerjan> kallisti: you know i just looked it up on http://codu.org/projects/hackbot/fshg/index.cgi/rev/d30da6e6e1c6?revcount=240
12:14:09 <oerjan> ....wat
12:14:16 <oerjan> oh duh
12:14:26 <oerjan> `log [|] http://codu
12:14:32 <HackEgo> 2011-11-20.txt:17:06:18: -!- elliott_ changed the topic of #esoteric to: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | http://codu.org/logs/_esoteric/
12:14:45 <oerjan> oh well
12:14:53 -!- oerjan has set topic: http://codu.org/logs/_esoteric/.
12:15:43 <oerjan> `welcome lahwran
12:15:46 <HackEgo> lahwran:
12:15:53 <oerjan> >_<
12:15:56 <oerjan> `welcome lahwran
12:15:59 <HackEgo> lahwran:
12:16:05 <oerjan> wtf
12:16:08 <lahwran> haha
12:16:14 <oerjan> HackEgo really isn't working well today
12:16:18 <oerjan> `welcome
12:16:21 <HackEgo> 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
12:17:24 <oerjan> `@ oerjan echo What do you mean I'm not working?
12:17:27 <HackEgo> oerjan: What do you mean I'm not working?
12:17:55 -!- readme has quit (Quit: Lost terminal).
12:20:05 <fizzie> fungot: Please help your fellow bot-friend HackEgo get better.
12:20:05 <fungot> fizzie: i am just as confused. you just don't encourage, because even though mr van den burg for an enormously well done.' granny handed it to me, for there are elements that go to/ head by a cliff similarly composed, but including many nodular and stalactiform concretions: i found " 640? 1. a `while' and `write in' or ' ' land" into either, man! you have a whip? why do
12:20:06 <lambdabot> fizzie: You have 1 new message. '/msg lambdabot @messages' to read it.
12:21:13 <fizzie> I suppose it was pointles to expect any help from that direction.
12:22:27 <oerjan> ^style
12:22:27 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot* homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
12:23:48 <fizzie> "granny" probably from discworld, and then there are some very darwinistic elements.
12:23:56 <fizzie> Especially the / bug.
12:26:11 <fizzie> ^style darwin
12:26:11 <fungot> Selected style: darwin (Books by Charles Darwin -- you know, that evilution guy)
12:26:32 <fizzie> fungot: What's all this "men are descended from apes" nonsense?
12:26:33 <fungot> fizzie:/ love :) a dog by a turkey; selection :) mate by female birds; shewn by birds in confinement well know that many tropical plants and other productions will have retreated from both sides towards/ equator, to fnord
12:27:04 <fizzie> / = the, :) = of.
12:28:40 <fizzie> fungot: Man, Darwin sure was ony happy guy?
12:28:41 <fungot> fizzie: distribution :) coral-reefs, and their being found near barmouth, is quite helpless, and/ tentacle moves. see pfeffer, :( fnord." here it is impossible to doubt that/ reefs are distant from/ nearest or fnord source, together with their modification through natural selection
12:28:41 <oerjan> that's a pretty bad bug
12:28:59 <fizzie> I don't know what :( is.
12:29:21 <Ngevd> In?
12:29:31 <fizzie> Very possible.
12:29:46 <fizzie> fungot: What's in where?
12:29:46 <fungot> fizzie: pot 1: 36: 22 4? 8.
12:29:54 <fizzie> "Ah."
12:33:53 <fizzie> 00022550 55 4f 54 50 51 55 45 53 54 50 53 4c 41 53 48 74 |UOTPQUESTPSLASHt|
12:33:53 <fizzie> 00022560 68 65 6f 66 61 6e 64 69 6e 74 6f 61 69 74 68 61 |heofandintoaitha|
12:33:53 <fizzie> 00022570 74 6f 6e 69 73 61 73 77 69 74 68 62 79 68 61 76 |tonisaswithbyhav|
12:34:22 <fizzie> the, of, and, in, to, a, i, that, on, is, as, with, by, ...
12:34:37 <fizzie> And the punctuation goes
12:34:41 <fizzie> ^source
12:34:41 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
12:36:07 <fizzie> Hmm...
12:36:48 <fizzie> If I'm reading it right, it's just /, :), and anything after that should work out right.
12:37:08 <fizzie> And it gets "and" right.
12:37:20 <fizzie> Maybe Darwin was just being frowny there.
12:40:58 <oerjan> i see an "in" too
12:41:15 <oerjan> also "to", "a"
12:47:42 <fizzie> But the punctuation is messed up too
12:48:07 <fizzie> So the :( was some other punctuation for reals; don't have time to check out what.
12:48:21 <fizzie> (To the shops now.)
12:53:32 -!- olsner has quit (Ping timeout: 240 seconds).
13:06:59 -!- olsner has joined.
13:07:10 -!- oerjan has quit (Quit: LAteerrrrrrrrr).
13:18:11 -!- sebbu2 has joined.
13:18:11 -!- sebbu2 has quit (Changing host).
13:18:11 -!- sebbu2 has joined.
13:19:55 -!- sebbu has quit (Ping timeout: 240 seconds).
13:26:10 -!- ais523 has joined.
13:27:17 -!- Madoka-Kaname has joined.
13:27:17 -!- Madoka-Kaname has quit (Changing host).
13:27:17 -!- Madoka-Kaname has joined.
13:27:35 <kallisti> @tell oerjan aha. a permutation group.
13:27:36 <lambdabot> Consider it noted.
13:28:01 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:30:07 -!- Ngevd has quit (Ping timeout: 252 seconds).
13:32:08 <ais523> haha: http://www.theverge.com/microsoft/2011/12/29/2667941/microsoft-windows-phone-sms-bug-fix
13:32:18 <ais523> now /that's/ an impressive vulnerability to make by mistake
13:32:53 <ais523> (apparently, you can reboot a Windows phone, and break the SMS handling software even beyond a reboot, with a specially crafted text message)
13:33:17 <ais523> my guess is some sort of vulnerability in encoding handling, but I don't know
13:44:41 <kallisti> ais523: I spent a good portion of yesterday trying to find multi-byte character exploits in an IRC bot that emulates sed's s command
13:44:49 <kallisti> so that I could execute arbitrary sed on it. no luck though.
13:45:28 <kallisti> the bot owner has foiled me by only looking at strings as single byte sequences. :P
13:45:47 <ais523> heh
13:46:16 <ais523> kallisti: just the bit inside the ///? or does the bot let you put letters afterwards?
13:46:25 <kallisti> it only allows some options
13:46:40 <kallisti> I tried the opotion r and e options.
13:46:51 <kallisti> er, I'm not sure what opotion was supposed to be.
13:48:52 <kallisti> oh and by r I mean w
13:49:04 <kallisti> I SHOULD GET MORE SLEEP BUT I DON'T THINK THAT IS HAPPENING
13:49:08 <kallisti> and I have a lot of work to do.
13:50:13 <ais523> hmm, I'm unsure if I was asleep overnight; I probably was for bits of it
13:51:26 -!- Deewiant has quit (Ping timeout: 240 seconds).
13:56:57 -!- Ngevd has joined.
13:57:01 <kallisti> Ngevd: heyo
13:57:08 <Ngevd> Hello
14:16:23 -!- monqy has quit (Quit: hello).
14:39:35 -!- olsner has quit (Quit: Leaving).
14:50:10 -!- sebbu2 has changed nick to sebbu.
14:58:44 <Ngevd> kallisti, what's up?
15:02:31 <Phantom_Hoover> sebbu!
15:02:49 <Phantom_Hoover> <ais523> my guess is some sort of vulnerability in encoding handling, but I don't know
15:02:49 <sebbu> ?
15:02:52 <Ngevd> Phantom_Hoover, you aren't kallisti and sebbu isn't up
15:03:00 <Phantom_Hoover> If it was a buffer overflow...
15:03:16 <ais523> sebbu: Phantom_Hoover's two lines before you ?ed are unrelated, I think
15:03:31 <ais523> Phantom_Hoover: it'd be quite impressive to buffer overflow in a text message
15:03:34 <ais523> char buffer[141];
15:03:39 <ais523> see, no buffer overflow there ;)
15:03:44 <sebbu> it's 16:03, hard not to be up
15:03:46 <Phantom_Hoover> Exactly.
15:04:01 <Phantom_Hoover> sebbu, you don't pay much attention to this channel, do you?
15:04:02 <kallisti> Ngevd: work.
15:04:13 <sebbu> ais523, irc raws can be 512 utf-16 characters long
15:04:13 <Phantom_Hoover> Being asleep at four in the afternoon is not uncommon.
15:04:33 <sebbu> i'm not the siesta type
15:04:37 <Phantom_Hoover> sebbu, we're talking about SMSes.
15:04:42 <sebbu> oh
15:04:59 <sebbu> what if someone send a text of several sms ?
15:05:14 <Phantom_Hoover> That doesn't make much sense?
15:05:14 <sebbu> does it concatenate them before or after your buffer ?
15:05:19 <Phantom_Hoover> A text is one SMS, isn't it?
15:05:27 <sebbu> not mandatory
15:05:50 <sebbu> if i write 142 characters, it'll use 2 sms
15:06:11 <Phantom_Hoover> http://en.wikipedia.org/wiki/Concatenated_SMS
15:06:13 <ais523> Phantom_Hoover: mobiles automatically split a text into multiple SMS and rejoin it, nowadyas
15:06:37 <sebbu> they already did that 7 years ago
15:06:44 <sebbu> didn't use much my mobile before then
15:06:49 <Phantom_Hoover> Still, buffer overflowing with that is impressive.
15:07:00 <ais523> we don't know if it was a buffer overflow or something else
15:07:03 <ais523> yet
15:07:06 <sebbu> beside, it's 160, not 140 ;)
15:08:00 <sebbu> [16:03:32] <Phantom_Hoover> sebbu, you don't pay much attention to this channel, do you? <-- i only use brainfuck & D as esoteric languages :p
15:08:23 <sebbu> (and some others which aren't much used, but not exactly esoteric)
15:08:28 <Phantom_Hoover> ais523, I know; the point is that a buffer overflow would be hilarious.
15:08:55 <fizzie> It's also only 160 if you stick to the 7-bit GSM alphabet.
15:10:09 <Ngevd> There's no programming languages on wikipedia called H or I
15:10:32 <sebbu> I T U aren't used if i remember well, H should be
15:11:14 <Ngevd> N and O aren't
15:11:17 <Ngevd> A isn't?
15:11:27 <Ngevd> P also isn't?
15:11:34 <Ngevd> T is
15:11:52 <Ngevd> U to Y aren't
15:12:11 <Ngevd> A,H,I,N,O,P,U,V,W,X,Y
15:12:19 <sebbu> A is Assembler, oftern used as asm
15:13:07 <Ngevd> There's an esolang V
15:13:10 <ais523> although asm gets the .s extension
15:13:26 <Ngevd> And Y
15:13:41 <Ngevd> H,I,N,O,P,U,W,X
15:14:37 <sebbu> http://forum.osdev.org/viewtopic.php?f=13&t=14992&start=0 H exists
15:14:59 <Ngevd> I NO U P WX
15:15:22 <Ngevd> PIX NO WU
15:16:14 <sebbu> there's algol-n & n-lang
15:16:28 <sebbu> http://gitorious.org/n-lang
15:17:01 <Ngevd> IOPUWX
15:17:19 <Ngevd> http://blog.radicalbreeze.com/?p=213
15:17:23 <Ngevd> I exists
15:18:46 <Ngevd> O and P... probably don't
15:18:52 <Ngevd> But there is P''
15:19:03 <Ngevd> Or is that a computational model, rather than a language?
15:19:16 <Ngevd> Bah, doesn't count either way
15:19:34 <Ngevd> U does
15:19:34 <Ngevd> http://init.org.pk/papersandpublications/P5.pdf
15:19:38 <sebbu> i think all exists
15:19:43 <sebbu> +letters
15:19:55 <Ngevd> Can't find O or P
15:28:39 -!- derdon has joined.
15:41:16 -!- Vorpal has joined.
15:57:31 -!- Ngevd has quit (Quit: Goodbye).
16:08:51 -!- elliott has joined.
16:11:19 -!- oerjan has joined.
16:12:46 <oerjan> boo!
16:12:46 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
16:14:59 <kallisti> oerjan: it's a very interesting message
16:15:00 <kallisti> you'll find
16:15:15 <oerjan> @clear-messages
16:15:15 <lambdabot> Messages cleared.
16:15:19 <oerjan> *MWAHAHAHA*
16:15:47 * oerjan whistles menacingly
16:17:35 <oerjan> this group of messages has been permuted out of existence.
16:28:11 -!- nooga has joined.
16:28:18 <nooga> ha!
16:28:36 <oerjan> ha factorial
16:29:38 <elliott> oerjan: shachaf hates you
16:29:38 <lambdabot> elliott: You have 6 new messages. '/msg lambdabot @messages' to read them.
16:29:47 * oerjan cackles evilly
16:30:18 <elliott> 11:07:16: <oerjan> > let countStairs = [1,1,1] ++ map (sum . take 3) (tails countStairs) in countStairs
16:30:24 <elliott> oerjan: excuse me i am now allergic to countStairs
16:30:36 <elliott> lahwran: hey
16:30:39 <elliott> you're not lambdabot
16:30:49 <oerjan> elliott: but you linked it in the first place!
16:30:51 <elliott> stop tab-completing i type la<tab>
16:31:44 -!- Klisz has joined.
16:32:57 <kallisti> I wish I could put a tab in my nick.
16:33:33 <elliott> 11:39:49: <oerjan> <elliott> I think fans of unsafeInterleaveIO would consider it unfair, because it's literally a description of the (return . unsafePerformIO) implementation :) <-- the advantage of unsafeInterleaveIO is in the better guarantees against unwanted execution
16:33:35 <kallisti> I could name myself a<tab>
16:33:38 <elliott> oerjan: um that is the real implementation
16:34:26 <oerjan> elliott: only with a heap of NOINLINE flags, surely
16:34:38 <kallisti> elliott: that's not what the code looked like when I checked the source...
16:35:18 <kallisti> there were more #'s
16:37:10 <elliott> oerjan: {-# INLINE unsafeInterleaveIO #-}
16:37:11 <elliott> unsafeInterleaveIO :: IO a -> IO a
16:37:11 <elliott> unsafeInterleaveIO m = unsafeDupableInterleaveIO (noDuplicate >> m)
16:37:22 <elliott> {-# INLINE unsafeDupableInterleaveIO #-}
16:37:22 <elliott> unsafeDupableInterleaveIO :: IO a -> IO a
16:37:22 <elliott> unsafeDupableInterleaveIO (IO m)
16:37:22 <elliott> = IO ( \ s -> let
16:37:22 <elliott> r = case m s of (# _, res #) -> res
16:37:23 <elliott> in
16:37:25 <elliott> (# s, r #))
16:37:35 <elliott> proving unsafeDupableInterleaveIO equivalent to return . unsafeDupablePerformIO left as exercise to reader
16:37:36 <oerjan> elliott: my point isn't about the real implementation really, that can of course depend on knowing what ghc does under the hood. my point is that unsafeInterleaveIO will _always_ be guaranteed to only run its action once and share its result among its users, even if return . unsafePerformIO doesn't.
16:37:47 <elliott> also note INLINE flags :P
16:37:55 <elliott> oerjan: well yes
16:38:13 <elliott> oerjan: my comment was meant as an acknowledgement that some people do not even think it's unsafe
16:41:04 <oerjan> <elliott> also note INLINE flags :P <-- heh. but that's not return . unsafePerformIO, which would need NOINLINE.
16:42:16 -!- Sgeo_ has changed nick to Sgeo.
16:44:33 <kallisti> import Control.Monad; import System.Posix.Process; import System.IO.Unsafe; main = fix (forever . unsafeInterleaveIO . forkProcess)
16:45:20 <kallisti> oops Data.Function
16:45:57 <oerjan> in any case, that wouldn't fork anything afaict
16:46:00 <elliott> oerjan: um... unsafeDupableInterleaveIO is exactly that
16:46:07 <elliott> just expanded out
16:46:14 <kallisti> oerjan: yep. it's very safe.
16:46:17 <oerjan> elliott: O KAY
16:46:20 <elliott> oerjan: it's perfectly safe because the return will put it in a lambda...
16:46:49 <elliott> return a = IO (\s -> (# s, a #))
16:46:54 <oerjan> elliott: erm i'd say i have a hunch that noDuplicate does the work of NOINLINE there.
16:47:05 <oerjan> (sheesh.)
16:47:10 <elliott> oerjan: dude... unsafePerformIO uses noDuplicate
16:47:14 <elliott> it's unsafeDupablePerformIO that doesn't
16:47:23 <elliott> unsafePerformIO :: IO a -> a
16:47:23 <elliott> unsafePerformIO m = unsafeDupablePerformIO (noDuplicate >> m)
16:47:30 <elliott> {-# NOINLINE unsafeDupablePerformIO #-}
16:47:30 <elliott> unsafeDupablePerformIO :: IO a -> a
16:47:30 <elliott> unsafeDupablePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r)
16:47:51 <oerjan> elliott: yes, i recall something about ghc doing that despite it not being mandated by the standard
16:47:56 <elliott> ok unsafeDupableInterleaveIO differs in that it takes the State RealWorld# from the world it gets, but w/e
16:48:02 <elliott> oerjan: it is mandated
16:48:10 <elliott> istr
16:48:18 <oerjan> istr it isn't.
16:49:14 <oerjan> that is, istr a discussion that unsafePerformIO is permitted to duplicate but that ghc doesn't.
16:50:08 <elliott> good thing i'm checking the report :P
16:50:14 <elliott> where the FUCK is unsafePerformIO
16:50:40 <kallisti> so how safe is GHC's unsafePerformIO since it doesn't duplicate.
16:51:09 <ais523> elliott: *F**K
16:51:12 <elliott> kallisti: ...
16:51:26 <kallisti> elliott: ...
16:51:42 <elliott> i'm jumping out the window, please give all my money to ais523 and kallisti to make them feel guilty ->
16:52:10 <ais523> elliott: good thing you're on the ground floor
16:52:18 <elliott> I... am?
16:52:26 <oerjan> elliott: ffi isn't it?
16:52:44 <elliott> i checked every foreign module, i'll grep the pdf
16:53:28 <elliott> oerjan: it's... not in the pdf at least
16:53:49 <oerjan> elliott: hm did they replace it with a different function? a vague bell is ringing
16:53:52 <elliott> all I can find is unsafeLocalState...
16:54:04 <elliott> but that sez "It is expected that this operation will be replaced in a future revision of Haskell." and also it barely allows you to do anything
16:54:47 <oerjan> or hm is the bell that they left something out of the report...
17:01:07 <elliott> ISTR people saying unsafePerformIO is standard now, but maybe that was just my own echoes :)
17:01:41 <elliott> oerjan: hm what's the most elegant way to get [x,y,z,...] as [(x,y),(y,z),(z,...
17:02:05 <elliott> with the last element not becoming the first element of a tuple if the list is odd-length
17:02:06 <elliott> :t groupBy
17:02:07 <lambdabot> forall a. (a -> a -> Bool) -> [a] -> [[a]]
17:02:13 <elliott> nope
17:03:25 <Sgeo> > groupBy (==) "hello"
17:03:26 <lambdabot> ["h","e","ll","o"]
17:03:31 <elliott> aka group
17:03:34 <elliott> @hoogle [a] -> [(a,a)]
17:03:34 <lambdabot> Prelude zip :: [a] -> [b] -> [(a, b)]
17:03:35 <lambdabot> Data.List zip :: [a] -> [b] -> [(a, b)]
17:03:35 <lambdabot> Data.Graph.Inductive.Query.Monad apply :: GT m g a -> m g -> m (a, g)
17:03:42 <elliott> > zip [1,2,3] [2,3]
17:03:43 <lambdabot> [(1,2),(2,3)]
17:03:48 <elliott> > zip [1,2,3,4] [2,3,4]
17:03:49 <lambdabot> [(1,2),(2,3),(3,4)]
17:03:55 <elliott> aha
17:04:12 <Sgeo> @src groupBy
17:04:13 <lambdabot> groupBy _ [] = []
17:04:13 <lambdabot> groupBy eq (x:xs) = (x:ys) : groupBy eq zs
17:04:13 <lambdabot> where (ys,zs) = span (eq x) xs
17:04:13 <elliott> > ap zip (drop 1) [1,2,3,4]
17:04:17 <elliott> > ap zip (drop 1) [1,2,3,4]
17:04:17 <lambdabot> mueval-core: Time limit exceeded
17:04:18 <lambdabot> [(1,2),(2,3),(3,4)]
17:04:24 <Sgeo> :t span
17:04:25 <lambdabot> forall a. (a -> Bool) -> [a] -> ([a], [a])
17:04:25 <elliott> > (zip <*> drop 1) [1,2,3,4]
17:04:26 <lambdabot> [(1,2),(2,3),(3,4)]
17:04:34 <quintopia> > group "mississippi"
17:04:35 <lambdabot> ["m","i","ss","i","ss","i","pp","i"]
17:04:37 <elliott> > (zip <*> drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:04:39 <lambdabot> [(2,2),(2,0),(0,1)]
17:04:43 <Sgeo> span id [False, False, True, True]
17:04:45 <Sgeo> > span id [False, False, True, True]
17:04:47 <lambdabot> ([],[False,False,True,True])
17:05:08 <elliott> > map (fromEnum . uncurry (==)) . (zip <*> drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:05:10 <lambdabot> [1,0,0]
17:05:13 <elliott> > sum . map (fromEnum . uncurry (==)) . (zip <*> drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:05:15 <lambdabot> 1
17:06:26 <elliott> > sum . (zipWith (fromEnum . uncurry (==)) <*> drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:06:27 <lambdabot> Couldn't match expected type `b -> a'
17:06:27 <lambdabot> against inferred type `GHC.Ty...
17:06:29 <oerjan> @quote aztec
17:06:29 <lambdabot> quicksilver says: zip`ap`tail - the Aztec god of consecutive numbers
17:06:34 <oerjan> elliott: ^
17:06:36 <elliott> :t zipWith (fromEnum . uncurry (==)) <*> drop 1)
17:06:37 <lambdabot> parse error on input `)'
17:06:40 <elliott> :t zipWith (fromEnum . uncurry (==)) <*> drop 1
17:06:40 <lambdabot> Couldn't match expected type `b -> c' against inferred type `Int'
17:06:41 <lambdabot> In the first argument of `(.)', namely `fromEnum'
17:06:41 <lambdabot> In the first argument of `zipWith', namely
17:06:45 <elliott> oh
17:06:48 <elliott> :t zipWith (fromEnum .: (==)) <*> drop 1
17:06:49 <lambdabot> forall a. (Eq a) => [a] -> [Int]
17:06:57 <oerjan> elliott: ^^
17:07:10 <elliott> oerjan: wtf are you pinging me repeatedly for, I saw it
17:07:14 <elliott> I'm already using that?
17:07:25 <elliott> :t sum . zipWith (fromEnum .: (==)) <*> drop 1 . map length $ [[1,2],[3,4],[],[4]]
17:07:26 <lambdabot> Couldn't match expected type `[a -> b]'
17:07:26 <lambdabot> against inferred type `[a1] -> [Int]'
17:07:26 <lambdabot> In the second argument of `(.)', namely
17:07:28 <Sgeo> :t zip `ap` tail
17:07:29 <lambdabot> forall b. [b] -> [(b, b)]
17:07:30 <oerjan> hm i suppose
17:07:39 <elliott> :t sum . ap (zipWith (fromEnum .: (==))) (drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:07:41 <lambdabot> Int
17:07:43 <elliott> > sum . ap (zipWith (fromEnum .: (==))) (drop 1) . map length $ [[1,2],[3,4],[],[4]]
17:07:45 <lambdabot> 1
17:07:47 <elliott> excellent
17:08:00 <Sgeo> > zip `ap` tail [1,2,3]
17:08:01 <lambdabot> Couldn't match expected type `[a] -> [b]'
17:08:01 <lambdabot> against inferred type `[t]'
17:08:05 <Sgeo> > zip `ap` tail $ [1,2,3]
17:08:06 <lambdabot> [(1,2),(2,3)]
17:08:10 <Sgeo> Hmm!
17:08:18 * Sgeo actually has use for that, maybe
17:08:19 <elliott> :t curry (uncurry (==) . length &&& length)
17:08:20 <lambdabot> Couldn't match expected type `(a, b)' against inferred type `[a1]'
17:08:20 <lambdabot> In the second argument of `(.)', namely `length'
17:08:20 <lambdabot> In the first argument of `(&&&)', namely `uncurry (==) . length'
17:08:25 <elliott> :t curry (uncurry (==) . (length &&& length))
17:08:26 <lambdabot> Couldn't match expected type `(a, b)' against inferred type `[a1]'
17:08:26 <Sgeo> No idea how to remember that though
17:08:26 <lambdabot> In the first argument of `(&&&)', namely `length'
17:08:26 <lambdabot> In the second argument of `(.)', namely `(length &&& length)'
17:08:29 <elliott> sheesh
17:09:47 <elliott> context for all this: http://stackoverflow.com/questions/8689188/count-consecutive-sublists-with-same-length
17:10:13 <elliott> :t sum . ap (zipWith $ fromEnum .: (==)) (drop 1) . map length
17:10:14 <lambdabot> forall a. [[a]] -> Int
17:10:19 <elliott> perfect i think.
17:11:06 <elliott> oerjan: hm should I keep the $ there or nest parens
17:11:09 <elliott> i usually don't do $ in parens
17:11:10 <elliott> feels wrong
17:13:30 <oerjan> > map length . group . map length $ [[1,2],[3,4],[],[4]]
17:13:32 <lambdabot> [2,1,1]
17:13:55 <elliott> > map length . group . map length $ [[1,2],[3,4],[3,3],[],[4]]
17:13:56 <lambdabot> [3,1,1]
17:14:01 <elliott> huh
17:14:10 <elliott> > sum . map (subtract 1 . length) . group . map length $ [[1,2],[3,4],[3,3],[],[4]]
17:14:12 <lambdabot> 2
17:14:38 * elliott steals, posts as comment :P
17:14:54 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaa
17:15:14 <Vorpal> :t group
17:15:15 <lambdabot> forall a. (Eq a) => [a] -> [[a]]
17:15:39 <elliott> oerjan: hey i wrote the subtract 1 and sum parts!
17:15:51 <elliott> ok who is going on an upvote spree of my stuff
17:15:54 <elliott> is it Sgeo, is it oerjan
17:15:58 <elliott> or do people just really like my questions today
17:16:26 <Sgeo> I don't remember the last time I upvoted you
17:16:29 <Sgeo> If I ever have
17:16:37 <elliott> clearly it must be oerjan
17:16:38 -!- iconmaster has joined.
17:17:04 <oerjan> elliott: subtract 1 = pred, btw
17:17:21 <kallisti> lol
17:17:23 <elliott> oerjan: I don't like using pred like that
17:17:28 <elliott> because of the Enum constraint
17:17:37 <elliott> no but seriously if anyone here is upvoting my stuff en masse, please reverse it
17:17:42 <oerjan> but you're using length, so the type is fixed :P
17:17:47 <elliott> oerjan: IT'S HABIT :'(
17:18:25 <elliott> oh well it can't be oerjan he hasn't cast any votes :D
17:18:28 <elliott> otoh it could be kallisti
17:18:39 <elliott> as he's upvoted the same number of questions that i just got upvoted
17:18:41 <elliott> and was last seen 25 seconds ago
17:18:57 * oerjan isn't voting, he may not even have enough reputation to vote. or maybe it's that i haven't actually bothered to log in properly.
17:19:10 <Sgeo> Oh, on SO
17:19:31 <elliott> kallisti: plz don't upvote my stuff unless you actually think it's worthwhile independent of me being on my crazy rep spree, it's not exactly much of an achievement to get 200 rep every day by way of having people I know upvote it all :P
17:19:37 <shachaf> elliott: I hate oerjan?
17:20:16 <elliott> shachaf: He made a factorial joke.
17:20:26 <shachaf> Are you kidding? Achievement unlocked: Voting ring!
17:20:52 <elliott> ok kallisti is evidently just going to ignore me
17:20:59 <shachaf> Why do I hate factorial jokes?
17:21:05 <shachaf> Oh, wait, wait, that.
17:21:17 <kallisti> http://stackoverflow.com/questions/8502201/remove-file-if-it-exists-in-haskell/8502391#8502391
17:21:19 <shachaf> No, obviously I don't include oerjan in the people I hate.
17:21:31 <kallisti> oh nvm
17:21:36 <kallisti> I thought deprecated was typo'd
17:21:40 <oerjan> yay factorial
17:21:41 <kallisti> but there was a smudge on my screen. :P
17:21:42 <Sgeo> Factorial jokes? As in, saying "9 factorial?" when someone says 9!?
17:21:47 * Sgeo has done that
17:21:47 <elliott> Sgeo: yep
17:21:48 <kallisti> elliott: but no I haven't upvoted anything ever.
17:21:56 <elliott> kallisti: dude, your vote totals are on your fucking profile.
17:22:05 <kallisti> and?
17:22:08 <elliott> all time by type month
17:22:08 <elliott> 3up2question3
17:22:08 <elliott> 0down1answer
17:22:18 <elliott> you've upvoted 3 things
17:22:21 <kallisti> therefore: not upvoting you
17:22:38 * kallisti mad
17:22:38 <elliott> coincidentally, I just got two upvotes on my questions that haven't been touched in days in rapid succession
17:22:57 <elliott> sigh
17:22:59 <elliott> kallisti: whatever
17:23:06 <kallisti> must be your reverse psychology convincing people in this channel to upvote stuff.
17:24:00 <elliott> kallisti: why are you even bothering to deny it anyway
17:24:08 <kallisti> lol, what?
17:24:38 <kallisti> surely you're trolling right now. There is absolutely no way you are capable of such a huge logical blunder.
17:24:49 <elliott> dude, I got an upvote on an answer and two questions in rapid succession after they were left untouched for ages, your vote total just became 3, and you were active 20 seconds ago when i checked your profile immediately afterwards
17:24:53 <elliott> reverse them
17:25:13 <kallisti> elliott: those upvotes were already there.
17:25:58 <kallisti> I *have not given a shit about stackoverflow in a while* I became active to see your "awesome answers"
17:26:51 <kallisti> I'm bothering to deny it because it's not true.
17:28:18 <kallisti> unless I entered some kind of subconscious torpid state where I visited three of your answers and upvoting them
17:28:44 <elliott> ok i guess somebody else just made 3 votes on dead questions and answers in rapid succession :P
17:28:44 <kallisti> perhaps some sort of subconscious man-love fugue.
17:29:07 <kallisti> yep
17:29:25 <kallisti> that is SO TOTALLY UNLIKELY
17:31:03 <elliott> also my awesome answers are too awesome to have quotes around them thx
17:31:42 <oerjan> `awesome
17:31:45 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: awesome: not found
17:31:52 * oerjan cry
17:32:41 <oerjan> needed more transfinite ordinals, anyway
17:32:43 <elliott> oh thank god, a mod in /r/haskell finally notices that tr0lltherapy is a shit-posting moron
17:33:04 <oerjan> shall we have a therapeutic ban?
17:33:30 <ais523> sorry, I've been too busy with multiplayer AceHack
17:33:31 <elliott> oerjan: yes, ban kallisti
17:33:32 <ais523> it's surprisingly awesome
17:33:44 <elliott> ais523: can i play
17:33:50 <oerjan> but i have no proof that kallisti is tr0lltherapy
17:33:55 <elliott> my motto is "kill everybody else"
17:34:04 <elliott> oerjan: you have no proof god exists and you still ban him!!!
17:34:06 <elliott> wait.
17:34:13 <ais523> elliott: no unless you compile it yourself (the only server's whitelist-based), and no because PvP isn't implemented
17:34:16 <kallisti> oerjan: this is just a subconscious defensive reaction to my subconscious man-love upvote fugue conspiracy.
17:34:22 <kallisti> disregard.
17:34:23 <elliott> ais523: worst game
17:34:23 <ais523> (I'm not sure whether I want to /disallow/ it or not, it just isn't /implemented/)
17:34:35 <oerjan> kallisti: when are you subconsciously marrying?
17:34:35 <elliott> ais523: make it a setting?
17:34:45 <ais523> elliott: but it isn't /implemented/
17:34:49 <ais523> setting might make sense
17:34:50 <elliott> ais523: when it is
17:34:56 <ais523> just not sure what'd happen if different people set it to different values
17:35:07 <elliott> off: moving into player displaces like pet; on: pvp?
17:35:12 <kallisti> oerjan: unfortunately I think elliott's subconscious is too young to marry.
17:35:20 <ais523> elliott: moving into player is currently impossible
17:35:23 <ais523> the game will just disregard the command
17:35:30 <oerjan> kallisti: ah.
17:35:57 <kallisti> er... what
17:36:02 <kallisti> no man-love conspiracy here.
17:36:03 <kallisti> never.
17:36:05 <elliott> ais523: lame
17:36:08 <kallisti> that's what I meant to say.
17:36:25 * kallisti silent stalks elliott's SO page and upvotes every single answer.
17:36:28 <Vorpal> ais523, which game is this?
17:36:42 <elliott> acehack
17:36:44 <Vorpal> ah
17:37:56 <oerjan> ais523: you missed User:JBethJenkinsm
17:37:58 <kallisti> why is "subconscious torpid manlove fugue" so fun to say.
17:38:08 <ais523> oerjan: thanks
17:38:35 <oerjan> kallisti: because it makes your subconscious dance with joy
17:38:38 <ais523> http://esolangs.org/wiki/User:JBethJenkinsm
17:38:38 * elliott reads tr0lltherapy's comments for his two minute's hate
17:38:53 <elliott> "haskell's brittle types are often hostile to changes in the real world, like unicode
17:38:53 <elliott> i now used typed racket...which is far less brittle imo" :D
17:39:02 <ais523> oerjan: I was too jumpy after almost accidentally deleting some genuine esolangs
17:39:06 <elliott> [on batman] "this stupid character has been beaten to death. kill him and make a movie about something that hasn't been made four times before"
17:39:29 <elliott> ais523: you may wish to ping graue again.
17:39:35 <kallisti> elliott: "hostile to changed in the real world, like unicode" ......what?
17:39:37 <elliott> this spam is never gonna stop on its own
17:39:42 <kallisti> let me double that for emphasis:
17:39:44 <kallisti> .........WHAT?
17:39:54 <ais523> elliott: I have done, I got no reply
17:39:59 <kallisti> maybe triple with more ellipsis:
17:40:02 <ais523> kallisti: sounds like one of our spambots
17:40:02 <kallisti> ...................WHAT!!?
17:40:04 <elliott> ais523: err, do you know what the word "again" means?
17:40:18 <iconmaster> I should invent as esolang titled "Administaration Jobs Globally Apply" and watch someone accidentally delete it
17:40:24 <elliott> kallisti: i believe its something like "if you['re an idiot and write your program with bytestring then converting it to text takesl ike 5 minutes which is too much a penalty for using the wrong data type for what you mean"
17:40:33 <elliott> iconmaster: ais523 is too cunning for that
17:40:35 <ais523> elliott: probably better if someone else pings him, so he knows it's not just me being awkward
17:40:37 <elliott> I've trained him
17:40:44 <elliott> ais523: fair enough, I will
17:40:47 <ais523> iconmaster: elliott creates pages with spammy names quite a bit
17:41:11 <iconmaster> ah beat to it I see
17:41:16 <elliott> (quite a bit = twice)
17:42:18 <Sgeo> What's wrong with Typed Racket?
17:42:46 <Sgeo> Although I guess it lives in a mostly dynamically-typed ecosystem, which seems like it could be annoying
17:43:37 <kallisti> elliott: 5 minutes? is that an exaggeration?
17:44:11 <elliott> well if you have a huge program you gotta sed the imports
17:44:15 <elliott> and not all functions are in both i guess
17:45:09 <Sgeo> "HSQL doesn’t provide parameterized SQL statements at all" W. T. FUCKING. F.
17:45:26 <elliott> what the fucking f
17:45:36 <kallisti> what the fucking fuck.
17:45:41 <elliott> [Haskell-cafe] Are all monads functions?
17:45:41 <elliott> By Chris Smith - 5:26am - 6 authors - 6 replies
17:45:47 <elliott> hey oerjan i hate you f or making me read hasekel-cafe
17:46:07 <elliott> apparently WriterT is a function.
17:46:09 <elliott> they actually say this
17:46:11 <elliott> in the post
17:46:14 <kallisti> what the fucking fuck is fucking with all the fucking fucking?
17:46:18 <oerjan> elliott: yeah that question was awkward :P
17:46:33 <elliott> i guess if you assume every monad is a function
17:46:37 <elliott> then m (a, w) is a function too :P
17:46:43 <oerjan> WriterT, ErrorT, Either, [], Maybe...
17:46:51 <elliott> oerjan: everything is a function in haskell q.e.d.
17:46:59 <elliott> it's just church encodings, maan
17:47:00 -!- derdon has quit (Remote host closed the connection).
17:47:06 <Sgeo> Reader and State are functions, so I guess if those are the only examples one can think of offhand...
17:47:08 <oerjan> elliott: maaaan
17:47:19 <elliott> - Is it reasonable to present monads to newcomers by saying : monads are
17:47:19 <elliott> basically always functions. 'return x' will then be a function that always
17:47:19 <elliott> return 'x' regardless of its input and >>= is a special composition for
17:47:19 <elliott> this occasion.
17:47:22 <oerjan> Sgeo: Cont too
17:47:24 <elliott> PLEASE NEVER PRESENT MONADS TO NEWCOMERS
17:47:53 <oerjan> kallisti: fuck if i know
17:48:02 <Sgeo> And functions are monads
17:48:11 <Sgeo> Well, a monad
17:48:34 <Sgeo> ^^probably not the correct way to phrase that
17:49:05 <kallisti> GADTs are functions over functions with functions on functions around functions within functions over functions before functions after functions between functions inside functions
17:49:41 <kallisti> see? Haskell is easy.
17:49:47 -!- quintopia has quit (Ping timeout: 252 seconds).
17:50:24 <elliott> Sgeo: ((->) r) is a monad
17:50:26 <elliott> hth
17:50:40 <elliott> [[
17:50:41 <elliott> Maybe and [] have still the same meaning: they can be seen as functions:
17:50:41 <elliott> - they represent the result(s) that might or might not have a computation
17:50:41 <elliott> - *they have to be called/ran/executed* (wichever term you prefer) through
17:50:41 <elliott> Data.Maybe.maybe or Data.List.foldX, so that we can extract some value out
17:50:41 <elliott> of them.
17:50:43 <elliott> It's just that their input is () (void). But in Haskell, the type:
17:50:45 <elliott> () -> Maybe a
17:50:47 <elliott> is useless, Maybe a is sufficient.
17:50:49 <elliott> Maybe in that case "procedure" is then a better term than function.
17:50:51 <elliott> ]]
17:50:53 <elliott> oerjan: ouch, i thought that would be the end of it.
17:51:13 <elliott> haskell-cafe seems to be filled with people who program in haskell but don't know haskell
17:51:31 <elliott> "But still, I maintain my previous view." THIS IS BECAUSE YOU'RE DUMB
17:52:09 <ais523> elliott: sounds like a good place for me
17:52:13 <ais523> except I don't program in Haskell much
17:52:31 * Sgeo was about to rant about a monad tutorial on Reddit, but ehird already did
17:52:34 <shachaf> Maintaining one's previous view is the first skill to being an Internet person.
17:52:38 <Sgeo> Well, rant in here, which is useless
17:53:12 <Sgeo> Although that's not the way I would have thought of to poke that hole
17:53:24 <oerjan> shachaf: i agree! oh wait
17:53:54 <shachaf> elliott: By the way, everthing is a function in Haskell, remember?
17:54:07 <shachaf> Some thigns are just zero-argument functions.
17:54:10 <oerjan> ye olde zero argumetn functions
17:54:18 <elliott> shachaf: <elliott> oerjan: everything is a function in haskell q.e.d.
17:54:47 <elliott> hmm, 60 over 6
17:54:56 <shachaf> elliott: Curses.
17:55:33 * shachaf is off to the "airport" in a few minutes.
17:55:54 <elliott> The "airport".
17:56:57 <shachaf> If you know what I mean.
17:57:00 <shachaf> (I mean the airport.)
17:57:14 <shachaf> (But not immediately.)
17:57:29 -!- quintopia has joined.
17:57:29 -!- quintopia has quit (Changing host).
17:57:29 -!- quintopia has joined.
18:01:07 <ais523> happy Australian Mailman Mailing List Reminders Day!
18:02:06 <elliott> yay
18:02:24 <ais523> yay at me getting the name right?
18:02:28 <elliott> hmm, shouldn't it be Australian mailman mailing list mailing list reminders day?
18:02:40 <elliott> ((Australian (mailman (mailing list))) ((mailing list) reminders)) day
18:02:51 <ais523> seems needlessly formal
18:04:13 <oerjan> > do x<-"test";;;;[x]
18:04:14 <lambdabot> "test"
18:04:28 <ais523> ";;;;"?
18:04:37 <oerjan> that's what i was testing :P
18:05:01 <oerjan> > let x = 2;;;;;;;in x
18:05:01 <lambdabot> 2
18:05:17 <oerjan> > do x<-"test";;;;[x];;;
18:05:18 <lambdabot> "test"
18:07:00 <oerjan> > case 1 of 1 -> 1;;;;2 -> 2;;;
18:07:01 <lambdabot> 1
18:07:22 <fizzie> Oh no, so many sea creatures.
18:07:27 <oerjan> > case 1 of ;;;;;;1 -> 1;;;;2 -> 2;;;
18:07:28 <lambdabot> 1
18:07:42 <oerjan> > let ;;;;;;x = 2;;;;;;;in x
18:07:43 <lambdabot> 2
18:07:54 <oerjan> > do ;;;;x<-"test";;;;[x];;;
18:07:55 <lambdabot> "test"
18:08:33 <oerjan> > let { f = x where ;;;;;x=2;;;; } in f
18:08:34 <lambdabot> 2
18:08:45 <oerjan> looks like it applies to all the blocks
18:09:28 <elliott> > if ;;;; 42 then ;;; 29 else ;;; 1
18:09:29 <lambdabot> <no location info>: parse error on input `;'
18:09:31 <elliott> > if 42 then ;;; 29 else ;;; 1
18:09:32 <lambdabot> <no location info>: parse error on input `;'
18:09:34 <elliott> :(
18:09:42 <elliott> > if 42 ;; then 29 ; else 1
18:09:43 <lambdabot> <no location info>: parse error on input `;'
18:09:46 <elliott> :(
18:10:26 <oerjan> > if 42 ; then 29 ; else 1
18:10:27 <lambdabot> <no location info>: parse error on input `;'
18:10:58 <oerjan> i thought that was a new addition in 2010?
18:11:05 <oerjan> > do if 42 ; then 29 ; else 1
18:11:06 <lambdabot> <no location info>: parse error on input `;'
18:11:07 <elliott> oh wait
18:11:10 <elliott> lambdabot is on ghc 6 still iirc
18:11:58 <oerjan> > do {;;;;x<-"test";;;;[x];;;}
18:11:59 <lambdabot> "test"
18:12:07 <elliott> :D
18:12:34 <elliott> 35 over 6 :)
18:12:58 <oerjan> elliott: looks like you might turn in early? ;)
18:15:23 -!- kallisti has quit (Ping timeout: 252 seconds).
18:15:30 <elliott> kallisti: look at that comedic oerjan jokemaker. ha ha ha.
18:15:34 <elliott> yes, while /quat.
18:17:17 -!- kallisti has joined.
18:17:17 -!- kallisti has quit (Changing host).
18:17:18 -!- kallisti has joined.
18:18:17 <oerjan> quit quat quut
18:21:24 <ais523> oerjan: heh, that's actually plausible
18:21:38 <ais523> it's wrong, but it could be right if I didn't know it was wrong
18:21:46 <oerjan> well quu is sadly underrepresented
18:21:56 <ais523> oerjan: hmm
18:22:06 <ais523> q u consonant is even rarer than q non-u in English
18:22:14 <ais523> although I imagine that quu is pretty rare too, indeed
18:22:23 <ais523> it's perfectly pronounceable, and there's no more obvious way to write it, though
18:22:34 <elliott> qut
18:22:49 <elliott> squit squat squoot
18:23:46 -!- kallisti has quit (Ping timeout: 252 seconds).
18:29:04 -!- olsner has joined.
18:29:42 <elliott> @hoogle reify
18:29:42 <lambdabot> Language.Haskell.TH.Syntax reify :: Name -> Q Info
18:29:42 <lambdabot> Language.Haskell.TH reify :: Name -> Q Info
18:29:42 <lambdabot> package reify
18:30:25 <oerjan> i doubt reflection is included in hoogle, if that's what you're looking for
18:30:32 -!- kallisti has joined.
18:30:32 -!- kallisti has quit (Changing host).
18:30:32 -!- kallisti has joined.
18:30:52 <elliott> no
18:32:56 -!- kallisti has quit (Remote host closed the connection).
18:35:14 -!- kallisti has joined.
18:37:08 <elliott> oerjan: there's a guy in trondheim i want you to eliminate
18:37:30 <elliott> he's guilty of submitting a slightly better answer than mine less than a minute after i do, after i spend about ten minutes researching the question
18:37:36 <kallisti> elliott: what happens when you answer all the questions?
18:42:07 -!- itidus20 has joined.
18:42:54 -!- TeruFSX_ has joined.
18:43:56 -!- xandy| has quit (Ping timeout: 252 seconds).
18:44:19 -!- Zwaarddijk has quit (Ping timeout: 252 seconds).
18:44:24 -!- Zwaarddijk has joined.
18:45:02 -!- itidus21 has quit (Ping timeout: 252 seconds).
18:45:03 -!- EgoBot has quit (Ping timeout: 252 seconds).
18:45:03 -!- HackEgo has quit (Ping timeout: 252 seconds).
18:45:05 -!- ineiros has quit (Ping timeout: 252 seconds).
18:45:13 -!- HackEgo has joined.
18:45:14 -!- EgoBot has joined.
18:45:26 -!- Madoka-Kaname has quit (Ping timeout: 252 seconds).
18:45:26 -!- olsner has quit (Read error: Connection reset by peer).
18:45:26 -!- TeruFSX has quit (Ping timeout: 252 seconds).
18:45:27 -!- coppro has quit (Ping timeout: 252 seconds).
18:46:08 -!- Klisz has quit (Ping timeout: 252 seconds).
18:46:11 -!- ineiros has joined.
18:46:17 -!- xandy has joined.
18:46:27 <oerjan> `log zjoin.*scanl1
18:46:41 <HackEgo> 2011-12-17.txt:05:00:24: <elliott> zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
18:47:08 -!- coppro has joined.
18:47:08 <oerjan> <elliott> oerjan: there's a guy in trondheim i want you to eliminate <-- hm?
18:48:09 -!- Madoka-Kaname has joined.
18:48:10 -!- Madoka-Kaname has quit (Changing host).
18:48:10 -!- Madoka-Kaname has joined.
18:48:17 <kallisti> look at oerjan, pretending he's not a deadly assassin.
18:48:50 <elliott> oerjan: <elliott> he's guilty of submitting a slightly better answer than mine less than a minute after i do, after i spend about ten minutes researching the question
18:48:55 <oerjan> > let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []; x = [[[1,2],[3,4]],[[5,6],[7,8]]] in (zjoin $ zjoin x, zjoin $ map zjoin x)
18:48:56 <lambdabot> Couldn't match expected type `Control.Applicative.ZipList
18:48:56 <lambdabot> ...
18:49:03 <oerjan> oops
18:49:15 <oerjan> > let zjoin = diag . scanl1 (zipWith (flip const)) where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []; x = [[[1,2],[3,4]],[[5,6],[7,8]]] in (zjoin $ zjoin x, zjoin $ map zjoin x)
18:49:16 <lambdabot> Couldn't match expected type `[[[a]]]'
18:49:17 <lambdabot> against inferred type `Simpl...
18:49:41 <oerjan> ah
18:49:55 <oerjan> > let zjoin = diag . scanl1 (zipWith (flip const)) where { diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []}; x = [[[1,2],[3,4]],[[5,6],[7,8]]] in (zjoin $ zjoin x, zjoin $ map zjoin x)
18:49:56 <lambdabot> ([1,8],[1,8])
18:50:23 <oerjan> elliott: too bad i'll never know who it is, then
18:50:59 <elliott> oerjan: oh. well he goes to that university of yours :P
18:51:12 <elliott> that godless, commie, liberal, SO-rep-stealing university.
18:51:22 * oerjan wonders if it's that guy he thought he saw the other day
18:52:06 <ais523> oerjan: you thought you saw someone, but didn't know who it was?
18:52:08 <elliott> hammar
18:52:14 <ais523> and that made you doubt whether you saw them or not in the first place?
18:52:20 <oerjan> elliott: ah that it was
18:52:34 <elliott> oerjan: YOU MISSED A PERFECTLY GOOD REPHEIST OPPORTUNITY!
18:52:51 <elliott> Most SO outsiders don't know this, but you actually have to buy a device that plugs in via USB and dispenses physical rep.
18:52:55 <elliott> That's the real currency.
18:52:58 <oerjan> elliott: what's a repheist
18:53:01 <elliott> A heist of rep.
18:53:06 <oerjan> ah
18:53:07 <elliott> Like a hatheist, but for rep.
18:53:24 * Sgeo is finally able to replicate the "Click closes tab" thingy
18:53:25 <elliott> Epheists believe that god exists but is ephemeral, or something.
18:53:36 <Sgeo> Pressing on the upper-right corner of the pad does that
18:53:55 <Sgeo> How to change this behavior?
18:54:46 <oerjan> > let zjoin = diag . scanl1 (zipWith (flip const)) where { diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []}; x = [[[1,2],[3,4]],[undefined]] in (zjoin $ zjoin x, zjoin $ map zjoin x)
18:54:48 <lambdabot> ([1],[1*Exception: Prelude.undefined
18:54:54 <elliott> Sgeo: it's probably assigned to middle-click?
18:54:54 <oerjan> there you go
18:55:03 <elliott> oerjan: er oh dear
18:55:06 <elliott> did you just prove it broken?
18:55:16 <oerjan> elliott: when bottoms are involved, yes
18:55:20 <Sgeo> How do I unassign it from middle-click?
18:55:27 <elliott> Sgeo: what os
18:55:31 <elliott> oerjan: well, so is IO
18:55:33 <Sgeo> Because LXDE's keyboard&mouse thing doesn't have the option
18:55:35 <Sgeo> elliott, Lubuntu
18:55:50 <elliott> Sgeo: look for a synaptics conf file in /etc/X11/xorg.conf.d
18:55:58 <oerjan> elliott: i still hope it's repairable, though
18:56:05 <elliott> https://wiki.archlinux.org/index.php/Touchpad_Synaptics might help also
18:56:22 <elliott> oerjan: well ok. i wouldn't call that completely broken though, since most standard monads violate the laws when bottoms are involved
18:57:15 <kallisti> why is Jack so much better than PulseAudio.
18:57:59 <Sgeo> I don't seem to have an /etc/X11/xorg.conf.d
18:58:21 <elliott> Sgeo: ls /etc/X11
18:59:03 <Sgeo> http://pastie.org/private/rc2k4sviciszh6jlvifwyg
18:59:42 <elliott> ah
18:59:45 <elliott> dunno, try google :P
18:59:53 <oerjan> elliott: it's just that with the strict behavior of Prelude zipWith (which ghc's rewriting rules supposedly don't quite preserve btw), ZipList _does_ afaict fulfil the Applicative laws completely even with bottom; so it would be nice to have a similar Monad instance.
19:00:04 <elliott> HAPPY 2011.99942922374, EVERYBODY!!!
19:00:25 <elliott> oerjan: the strict behaviour?
19:01:31 <oerjan> elliott: when you zip two lists that both end at the same length, the first list determines whether it ends as [] or bottom
19:01:40 -!- olsner has joined.
19:02:10 <elliott> oerjan: hmm... does this mean zip `ap` tail isn't safe for []?
19:02:12 <oerjan> > zip [1,2] (3:4:undefined)
19:02:13 <lambdabot> [(1,3),(2,4)]
19:02:15 <elliott> in the presence of rewrite rules
19:02:20 <oerjan> > zip (3:4:undefined) [1,2]
19:02:21 <lambdabot> [(3,1),(4,2)*Exception: Prelude.undefined
19:03:16 <Sgeo> There's no way to tell whether zip is being too strict or whether that's just because that tried to be printed.... wait, what, why would that be an exception
19:03:16 -!- olsner has quit (Read error: Connection reset by peer).
19:03:21 <Sgeo> It should have been truncated
19:03:35 <Sgeo> > length $ zip (3:4:undefined) [1,2]\
19:03:36 <lambdabot> <no location info>: parse error on input `\'
19:03:38 <Sgeo> > length $ zip (3:4:undefined) [1,2]
19:03:38 <oerjan> elliott: hm...
19:03:38 <lambdabot> *Exception: Prelude.undefined
19:03:41 <Sgeo> !!!
19:03:42 <elliott> it should have? how exactly do you propose that happens?
19:03:43 <kallisti> Sgeo: ????
19:03:47 <oerjan> > (zip`ap`tail) []
19:03:48 <lambdabot> []
19:03:50 <elliott> is it meant to magically realise the first list ends in _|_
19:03:55 <elliott> and notice the other one ends
19:03:58 <oerjan> > (zip`ap`tail) [x,y,z]
19:03:59 <lambdabot> [(x,y),(y,z)]
19:04:00 <elliott> you can only do that sort of thing with unamb
19:04:11 * Sgeo misparsed 3:4:undefined as [3,4,undefined]
19:04:12 <elliott> oerjan: well obviously lambdabot might not trigger the rewrite rule :P
19:04:16 <elliott> Sgeo: clap
19:04:46 <oerjan> elliott: i assume it happens too rarely to be a problem...
19:04:48 <ais523> Sgeo: in Prolog notation, it'd be [3,4|undefined]
19:05:06 <Sgeo> > zip [1,2] (3:4:undefined)
19:05:07 <lambdabot> [(1,3),(2,4)]
19:05:13 <Sgeo> o.O hmm
19:05:22 <oerjan> elliott: also i don't know any examples, i just noticed a comment in the ghc source for zip and zipWith's rewriting rules
19:05:30 <Sgeo> Haskell needs more unamb
19:05:40 <oerjan> when trying to look up the exact ghc behavior
19:05:41 <elliott> Sgeo:
19:05:41 <elliott> @src zip
19:05:42 <lambdabot> zip (a:as) (b:bs) = (a,b) : zip as bs
19:05:42 <lambdabot> zip _ _ = []
19:05:49 <elliott> patterns are matched left-to-write
19:05:51 <elliott> right
19:06:12 <elliott> unamb is more audacious than my entangle, anyway :P
19:06:31 <elliott> seeing as you can produce decidedly impure results with it
19:06:54 <kallisti> elliott: would lazy patterns do anything to correct that?
19:06:57 <Sgeo> It would be nice if Haskell unambed stuff by default, such as ... did... something, with that definition
19:07:09 <elliott> Gregor: Could I convince you to convert some clog logs to glogbot format without actually logging a channel actively?
19:07:17 <elliott> kallisti: No, they would make zip crash and burn when it reached the end of the list.
19:07:24 <elliott> Sgeo: I'll tell the committee right away.
19:07:35 <Gregor> elliott: Uhh ... why?
19:07:45 <Gregor> elliott: You realize the converter is open, no?
19:07:47 <elliott> Gregor: tunes' pre-2011 logs are in an annoying zip file >_>
19:07:53 <elliott> I want the nice web interface to #haskell pre-2011.
19:08:40 <Gregor> Ahhhhhhhhhhhhhhhhhh
19:10:15 <elliott> riverrun, past Eve and Adam's, from swerve of shore to bend1
19:10:15 <elliott> of bay, brings us by a commodius vicus of recirculation back to2
19:10:15 <elliott> Howth Castle and Environs.3
19:10:15 <elliott> Sir Tristram, violer d'amores, fr'over the short sea, had passen-4
19:10:15 <elliott> core rearrived from North Armorica on this side the scraggy5
19:10:16 <elliott> isthmus of Europe Minor to wielderfight his penisolate war: nor6
19:10:18 <elliott> had topsawyer's rocks by the stream Oconee exaggerated themselse7
19:10:20 <elliott> to Laurens County's gorgios while they went doublin their mumper8
19:10:22 <elliott> all the time: nor avoice from afire bellowsed mishe mishe to9
19:10:24 <elliott> tauftauf thuartpeatrick: not yet, though venissoon after, had a10
19:10:26 <elliott> kidscad buttended a bland old isaac: not yet, though all's fair in11
19:10:28 <elliott> vanessy, were sosie sesthers wroth with twone nathandjoe. Rot a12
19:10:30 <elliott> peck of pa's malt had Jhem or Shen brewed by arclight and rory13
19:10:32 <elliott> end to the regginbrow was to be seen ringsome on the aquaface.14
19:10:34 <elliott> The fall (bababadalgharaghtakamminarronnkonnbronntonner-15
19:10:36 <elliott> ronntuonnthunntrovarrhounawnskawntoohoohoordenenthur-16
19:10:38 <elliott> nuk!) of a once wallstrait oldparr is retaled early in bed and later17
19:10:40 <elliott> on life down through all christian minstrelsy. The great fall of the18
19:10:42 <elliott> offwall entailed at such short notice the pftjschute of Finnegan,19
19:10:44 <elliott> erse solid man, that the humptyhillhead of humself prumptly sends20
19:10:46 <elliott> an unquiring one well to the west in quest of his tumptytumtoes:21
19:10:48 <elliott> and their upturnpikepointandplace is at the knock out in the park22
19:10:50 <elliott> where oranges have been laid to rust upon the green since dev-23
19:10:52 <elliott> linsfirst loved livvy.24
19:10:54 <elliott> Joyce's works enter public domain at midnight, happy copyright infringement day!
19:11:30 <oerjan> what, a copyright actually expiring? impossible! i guess they'll soon reverse that.
19:11:59 <elliott> ulysses isn't quite mickey mouse
19:12:04 <Sgeo> My == and /= are going to be partial functions
19:12:12 <elliott> ok
19:12:13 <Sgeo> :/
19:12:24 <Gregor> elliott: I don't have the disk space >_>
19:12:36 <elliott> Gregor: WTF is taking up all your fucking disk space?
19:12:44 <Gregor> Lots of shit <_<
19:12:54 <elliott> Gregor: I run a fucking Minecraft server that backs up every 6 hours and I have so much space free!
19:13:05 <elliott> (OK, nobody has connected to it since the update, but still :P)
19:13:20 <elliott> Sgeo: wait is this for the infinite precision real thing
19:13:26 <elliott> because uh
19:13:33 <elliott> yes it's true that you can't compare infinite digits in finite time
19:14:05 <elliott> ais523: yay, just got my reminder
19:14:35 <ais523> elliott: I get two
19:14:39 <ais523> one as ais523, one as callforjudgement
19:15:06 <elliott> ais523: that's like having a birthday on christmas and getting twice the presents :/
19:15:10 <elliott> not fair, forward one to an orphan
19:15:20 <ais523> but I keep trying to tell people not to give me Christmas presents
19:16:14 <Gregor> Lesse what ncdu says ...
19:16:49 <ais523> elliott: you can sign up a second account to the lists, you know?
19:17:02 <elliott> ais523: that's like opening presents before christmas day!
19:17:05 <ais523> incidentally, it's callforjudgement that does all the receiving; either can send
19:17:23 <ais523> which is why you typically get original messages to Agora from me from ais523, and replies from callforjudgement
19:18:07 <elliott> I never noticed
19:18:09 <oerjan> lessee join [[[1,2],[3,4]],[undefined]] = [[1,2]] is a given, the undefined is too deep. map join [[[1,2],[3,4]],[undefined]] = [[1,4], undefined] is also a given. oh dear i'm not sure this can be fixed.
19:19:06 <elliott> oerjan: you realise you haven't even proved the laws work when ignoring _|_ like a reasonable person :P
19:19:20 <oerjan> elliott: i haven't?
19:19:43 <ais523> what are you trying to prove as what?
19:19:48 <elliott> oerjan: well, i never saw you do so.
19:19:58 <elliott> ais523: ziplist monad
19:20:50 <kallisti> elliott: when you write sudo cat blah > file
19:20:55 <kallisti> blah is being written to file as a super user right?
19:21:02 <elliott> Phantom_Hoover is a wasp discuss
19:21:04 <elliott> kallisti: no
19:21:11 <elliott> sudo is just another program.
19:21:29 <kallisti> ah I see.
19:22:07 <ais523> kallisti: it's (sudo cat blah) > file, not sudo (cat blah > file)
19:22:20 <ais523> usual method to redirect to files, writing them as root, is to use tee
19:23:21 <oerjan> elliott: well i believe that f <*> x = zjoin ((`fmap` x) `fmap` f) and zjoin . zjoin = zjoin . fmap zjoin, and that these two equations are precisely what's needed to have a join extending any Applicative to a Monad.
19:23:35 <elliott> oerjan: oh you believe. ok that's as good proof
19:23:38 <elliott> *good as
19:24:12 <oerjan> elements of the form ((`fmap` x) `fmap` f) are the rectangular lists, btw
19:24:19 <oerjan> *lists of lists
19:24:35 <Gregor> elliott: Culprit: All these damned chroots :)
19:24:40 <elliott> wow if i don't get 5 rep in 4.5 hours i'm gonna kill someone
19:24:47 <elliott> Gregor: hardlinks?
19:24:51 <ais523> elliott: it's StackOverflow, it's not that serious…
19:25:03 <elliott> ais523: yes i meant i'm literally going to kill someone thank you for interpreting me correctly :) :) :)
19:25:05 <oerjan> r.i.p. ais523
19:25:16 <Gregor> elliott: Remember when I installed chroots and it broke friggin' everything?
19:25:16 <elliott> whens the trains to bham run
19:25:18 <Gregor> Erm
19:25:20 <Gregor> s/chroots/hardlinks/
19:25:23 <ais523> elliott: it's not even serious enough to make jokey death threats on IRC
19:25:26 <elliott> Gregor: Yeah, because you used a shitty script :P
19:25:39 <elliott> ais523: --ais523 "nomic has ruined my sleep schedule" ais523
19:25:49 <Gregor> elliott: Suggest a non-shitty script.
19:25:49 <ais523> elliott: it only ruins it on occasion
19:25:52 <elliott> Gregor: with nix you would automatically get the benefits of hardlinking >:)
19:26:01 <elliott> ais523: I only want to kill people for rep on occasion
19:26:18 <elliott> Gregor: http://linux.die.net/man/1/hardlink?
19:26:38 <elliott> Only run it on /usr of chroots tho :P
19:26:40 <elliott> Nothing mutable.
19:27:08 <ais523> I typically use ln for hardlinking
19:27:21 <ais523> also, I forgot it was possible to compare files
19:27:32 <ais523> for a moment, I thought it was like comparing funcitons
19:27:34 <ais523> *functions
19:27:40 <kallisti> guys...
19:27:48 <oerjan> Sgeo: the lack of terminating == for computable reals is a well-known thing.
19:27:52 <kallisti> my mom didn't know what "nocturnal" meant.
19:27:57 <ais523> hmm, that manpage is worrying
19:28:06 <ais523> because it doesn't explain what it does aobut symlinks
19:28:07 <ais523> *about
19:28:12 <oerjan> Sgeo: basically, there's a theorem that says any always terminating function on computable reals must be continuous.
19:28:15 <ais523> kallisti: what nationality is she?
19:28:24 <kallisti> American, of course.
19:28:26 <kallisti> like me.
19:28:35 <ais523> oerjan: *deterministic?
19:28:46 <elliott> ais523: facepalm
19:29:01 <ais523> you can create a function that outputs at random if the answer is sufficiently close to a breakpoint
19:29:30 <elliott> oerjan: i don't think you need a result that strong, anyway
19:29:43 <Phantom_Hoover> <elliott> Phantom_Hoover is a wasp discuss
19:29:46 <elliott> although i'm not sure what weaker result you could prove it with :)
19:29:58 <Phantom_Hoover> No, how dare you suggest I'm Anglo-Saxon????
19:30:08 <Phantom_Hoover> Also I think I'm technically Catholic.
19:30:14 <elliott> No I meant a buzz wasp.
19:32:23 <Gregor> elliott: Here goes nothin'!
19:32:59 <elliott> Gregor: RIP chroots
19:33:56 <oerjan> <ais523> oerjan: *deterministic? <-- that's part of the definition of function hth
19:34:41 <ais523> oerjan: well, a function can be deterministic, but give different outputs for different representations of the same computable real
19:34:46 <ais523> so is nondeterminstic if you identify them
19:34:51 <ais523> that's what I was getting at
19:34:57 <lahwran> <elliott> [16:30:21] @messages
19:34:58 <oerjan> eek
19:34:59 <lahwran> hm?
19:35:15 <Gregor> <elliott> Gregor: RIP chroots // Probably
19:35:22 <ais523> lahwran: it's asking lambdabot if there are any messages for him
19:35:26 <oerjan> lahwran: your nick is uncomfortably close to lambdabot
19:35:34 <lahwran> ah
19:35:42 <elliott> lahwran: I did /query la<tab><enter>@messages<enter> to read lambdabot messages :P
19:35:45 <elliott> You got in the way!
19:36:03 <oerjan> lahwran: which happens to be the main bot we use here to send messages
19:36:04 <lahwran> what client?
19:36:05 <elliott> <ais523> oerjan: well, a function can be deterministic, but give different outputs for different representations of the same computable real
19:36:05 <elliott> <ais523> so is nondeterminstic if you identify them
19:36:05 <elliott> <ais523> that's what I was getting at
19:36:11 <elliott> ais523: I can't tell what you're talking about but it sounds like nonsense
19:36:32 <lahwran> elliott: you know about time-sorted tabcomplete?
19:36:36 <ais523> elliott: OK, you agree that it's possible for two computable reals to be equal, even though you can't determine the fact?
19:36:43 <elliott> lahwran: yeah, but i'd just connected :P
19:36:50 <lahwran> ah
19:36:57 <elliott> ais523: I do not believe you can write a function which distinguishes two representations of the same computable real.
19:37:08 <Gregor> Saved: 53.85 MiB
19:37:12 <Gregor> ... yaaaaaaaaaay X_X
19:37:12 <ais523> elliott: if it's operating on the representations, it's trivial
19:37:19 <ais523> and that's how you implement such functions on a computer
19:37:30 <ais523> Gregor: are you on a system where 53MiB is worth saving?
19:37:34 <Gregor> No
19:37:40 <lahwran> I can't tell who is a bot and who's not :s
19:37:44 <elliott> ais523: Statement contradicting previous statement followed by incorrect statement
19:37:49 <elliott> lahwran: We're all bots apart from lahwran.
19:37:54 <lahwran> oh, okay
19:38:02 <Gregor> elliott: Don't forget about fungot. fungot's not a bot.
19:38:03 <fungot> Gregor: prof., on/ carrot. i suppose that i meant was that on certain points along/ lines :) intersection at/ galapagos archipelago, birds :) paradise, and some to both sexes.
19:38:14 <ais523> lahwran: the easy way to see if something's a bot is to see if other bots refuse to listen to it
19:38:45 <ais523> !help
19:38:46 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
19:38:56 <ais523> ^bf ,[.,]!!help
19:38:56 <fungot> !help
19:38:56 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
19:39:00 <ais523> err, what?
19:39:02 -!- iconmaster has quit (Read error: Connection reset by peer).
19:39:10 <oerjan> ais523: well it sounds a bit like those examples of things you can compute about a turing machine's behavior, like whether it ever goes right of a certain point - and which because of rice's theorem etc. can never capture what a TM calculates
19:39:12 <ais523> I guess fungot is indeed not a bot
19:39:14 <fungot> ais523: whitsunday island is :) small size in comparison with those :) another region, whence it takes its name :) red sea. " i say my notion, but i venture to give you fnord but it has lately occurred to me that we here see that, if we suppose/ case :)/ potato, as we shall hereafter see, compared with/ cross-bred offspring between two species/ male sexual element can act not solely on/ descendants from i; so will it be pretend
19:39:34 <oerjan> *capture anything about
19:39:35 <fungot> ais523țiu}iË`r523: as producing changed conditions, schmankewitsch's experiments on. -flowers :). fnord near. fnord near. fnord :) pigs in china. -occurrence :) pencilled feathers in fowls.
19:39:52 <ais523> ^style
19:39:52 <fungot> Available: agora alice c64 ct darwin* discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
19:40:08 <Gregor> elliott: Any other brilliant suggestions :(
19:40:09 <ais523> now I'm confused
19:40:11 <elliott> @tell fizzie <fungot> ais523È›“i¼ÆÁÂÀu§¥‘–Å}i¿½Ã‹¶ª`r523: as producing changed conditions, schmankewitsch's experiments on. -flowers :). fnord near. fnord near. fnord :) pigs in china. -occurrence :) pencilled feathers in fowls.
19:40:12 <fungot> elliott: dependence :), upon/ fleece :) sheep. -in cats. -in pigeons. -in breeding fowls. -in ducks.
19:40:12 <lambdabot> Consider it noted.
19:40:22 <elliott> Gregor: How many chroots do you have
19:40:28 <ais523> elliott: and it didn't do that in response to anything of mine
19:40:33 <Gregor> Four >_> <_<
19:40:38 <ais523> hmm, I wonder if those are consecutive ASCII codes
19:40:40 <elliott> Gregor: How big are they
19:40:58 <ais523> ^bf ,[+.]!¼
19:40:58 <fungot>
19:41:06 <ais523> apparently not
19:41:22 <ais523> hmm, such a program would better be written in Easy
19:41:34 <Gregor> elliott: Smallest is 1.2GB, largest is 2.4GB (glogbot)
19:41:36 -!- itidus22 has joined.
19:41:40 <Gregor> Err, 3.4GB
19:42:32 <elliott> Gregor: Why not store past glogbot logs gzipped
19:42:49 <elliott> OK, people would have to ungzip after rsyncing, but making the web interface use zcat shouldn't be hard.
19:42:54 <elliott> And text gzips STUPIDLY well.
19:42:58 <oerjan> ais523: i think Gregor removed the ignore lists from his bots when he implemented the zero-width space method to make all the others ignore his instead
19:43:11 <ais523> ah, OK
19:43:25 <ais523> clearly I'll have to write a bot that uses zero-width-space as a command character
19:43:40 <Gregor> lol
19:43:41 <elliott> Gregor: Why does glogbot run in a chroot?
19:43:47 <elliott> It doesn't run untrusted code or anything.
19:44:00 <ais523> elliott: in case someone's trying to hack it with specially-crafted IRC messages?
19:44:05 <ais523> who knows, it works for Windows Phone
19:44:28 <Gregor> elliott: Because I can't move it now >_>
19:45:01 <elliott> Gregor: ...why not...
19:45:15 <elliott> killall glogbot; mv; ./glogbot
19:45:23 <elliott> Instantly like 1 gig saved
19:45:24 <ais523> "mv;"?
19:45:24 <Gregor> "killall glogbot" ain't a good idea.
19:45:32 -!- itidus20 has quit (Ping timeout: 248 seconds).
19:45:52 <elliott> Gregor: Have you heard of... glogbackup.
19:45:56 <ais523> $ mv
19:45:57 <ais523> mv: missing file operand
19:45:57 <ais523> thought so
19:46:00 <Gregor> elliott: Yeah, but I don't integrate them 8-D
19:46:01 <elliott> Gregor: Anyway, just trigger the watchdog thing manually.
19:46:07 <oerjan> <elliott> Gregor: Why not store past glogbot logs gzipped <-- won't this affect `log aversely?
19:46:11 <elliott> You have a Linux-based watchdog mechanism, right?
19:46:13 <elliott> i.e. non-ping based
19:46:14 <ais523> but I had to check the manpage first, just to make sure
19:46:18 <Gregor> elliott: Yes
19:46:23 <elliott> oerjan: Well, yes.
19:46:26 <elliott> Gregor: Trigger it
19:46:33 <ais523> it might have renamed the current directory over my home directory, or something like that
19:46:36 <ais523> by analogy with cd
19:47:23 -!- zzo38 has joined.
19:47:36 <zzo38> ?messages
19:47:36 <lambdabot> You don't have any new messages.
19:47:42 <zzo38> Liar.
19:47:52 <elliott> :D
19:50:14 <nooga> hah
19:50:26 <nooga> I've got a party for 15 today
19:51:12 <ais523> hmm, doesn't that mean you'd have to duplicate some roles?
19:51:25 <ais523> and I'm not sure there's enough food in the whole dungeon to keep them going very long
19:54:57 <oerjan> just stack the dwarfs in the height, it'll be fine
19:55:17 <elliott> oerjan: you've clearly played df
19:55:38 <elliott> Gregor: Sheesh, I just told you how to save like a gig and HOW DO YOU REPAY ME
19:55:38 <oerjan> surprisingly, no
19:55:44 <elliott> oerjan: C L E A R L Y
19:58:08 <Gregor> elliott: I WILL REPAY YOU WITH DEATH
19:58:12 <Gregor> ... HEY
19:58:19 <Gregor> Who put the log URL back in the /topic???
19:58:51 -!- Gregor has set topic: Log URL (sha512sum-compressed): d1fe384376eb732f625af811f9e9cdffd9071544ff885acff0dc7c6b7a29598f0a3103dec749cc825fb0e7db39fc33c1cab94be7bc72f629c360995e0a4bb58a.
19:59:05 -!- oerjan has set topic: Log URL (sha512sum-compressed): d1fe384376eb732f625af811f9e9cdffd9071544ff885acff0dc7c6b7a29598f0a3103dec749cc825fb0e7db39fc33c1cab94be7bc72f629c360995e0a4bb58a | http://codu.org/logs/_esoteric/.
19:59:16 <Gregor> :(
19:59:23 <ais523> oerjan: OK, /that/'s hilarious
19:59:38 <ais523> having the log URL in the topic is useful
19:59:46 <ais523> although arguably the SHA version is enough to satisfy Freenode
19:59:54 <ais523> !glogbot_ignore as is this, despite it not actually working
19:59:56 <EgoBot> as is this, despite it not actually working
20:00:21 -!- Gregor has set topic: Logs: http://hugeurl.geeks.org/?M2JjZjA5Njk0YzVmOGU3MGMyZjA0ZjhlOWVjMzc2ZGQmMTQmVm0wd2QyUXlVWGxWV0d4V1YwZDRXRmxVU205V01WbDNXa2M1VjFac2JETlhhMk0xWVd4S2MxZHFRbFZXYkhCUVZqQmFZV015U2tWVWJHaG9UVlZ3VlZadGNFZFpWMDE1VTJ0V1ZXSkhhRzlVVjNOM1pVWmFjVkZ0UmxSTmF6RTFWVEowVjFaWFNraGhSemxWVm0xb1JGWldXbUZrUjFaSFYyMTRVMkpIZHpGV2EyUXdZekpHYzFOdVVtaFNlbXhXVm1wT1QwMHhjRlpYYlVaclVqQTFSMXBGV2xOVWJGcFZWbXR3VjJKVV.
20:00:29 <Gregor> Err ...
20:00:32 <Gregor> That got cut off >_>
20:00:39 <elliott> It works tho
20:00:40 <oerjan> how surprising.
20:00:57 <Gregor> elliott: Doesn't seem to?
20:00:58 <zzo38> Then enter a gopher URL with an obscure DNS entry
20:01:14 -!- elliott has set topic: Logs available through content-addressed HTTP at d16921e5091fab3bd6f8d3ccd27a02af21a3220f.
20:01:21 <elliott> Gregor: Oh, indeed not
20:01:30 <Sgeo> content-addressed HTTP?
20:01:36 <elliott> Sure
20:01:47 * oerjan sigh
20:01:57 <ais523> is #esoteric-minecraft logged?
20:02:01 <Gregor> Ü
20:02:13 <elliott> ais523: yes
20:02:20 <Gregor> #esoteric-minecraft is a SECRET, you should NEVER say #esoteric-minecraft in this channel, or people might know that #esoteric-minecraft exists!
20:02:25 <elliott> Also that.
20:02:29 <elliott> (In fact, it was the cause of the anti-clog revolution.)
20:02:42 <Gregor> You will ruin everything if #esoteric-minecraft is mentioned here.
20:02:49 <elliott> Stop it. :p
20:03:07 <ais523> I take it #esoteric-blah isn't?
20:03:17 <Gregor> elliott: OK, I'll stop mentioning #esoteric-minecraft .
20:03:28 <elliott> ais523: indeed
20:03:38 <ais523> we should use #esoteric-blah more
20:03:46 -!- oerjan has set topic: Absolutely NO mention of #esoteric-minecraft! | http://codu.org/logs/_esoteric/.
20:05:26 <oerjan> dammit i thought the neighbors were smart enough to keep their dogs indoors _tonight_...
20:05:36 <ais523> are they scared of fireworks?
20:05:48 <oerjan> aren't all dogs? anyway i hear barking.
20:05:55 <oerjan> and fireworks.
20:05:55 <Gregor> They were, but now they /are/ fireworks.
20:05:59 <Gregor> (Guahahah et cetera)
20:06:42 <oerjan> (i suppose there must be _some_ dog who loves fireworks. which probably means it's even more important to keep it away from them.)
20:06:54 -!- elliott has set topic: http://codu.org/logs/_esoteric/.
20:07:37 <fizzie> There's that "dog grabs a firework-shooting pole and carries it around, shooting fireworks everywhere" video, I think it was on the YouTube front page the other day when I went by.
20:07:37 <lambdabot> fizzie: You have 1 new message. '/msg lambdabot @messages' to read it.
20:08:54 <fizzie> http://www.youtube.com/watch?v=N9FBVli2viw -- I don't really know why it says "click here for a midget" in the corner. Sometimes the internet, it is puzzling.
20:09:40 <fizzie> (Also it just seems to be one sample of a genre.)
20:09:50 <ais523> fizzie: YouTube people trying to get more views
20:10:24 -!- Klisz has joined.
20:10:53 <oerjan> a smidget of a midget
20:10:55 <ais523> I'm a little scared of the amount of pleading and general terror that YouTubers seem to have about not getting enough comments, ratings, and subscriptions
20:11:00 <ais523> it's as bad as elliott with SO rep
20:12:09 <elliott> If I don't get 1,000,0000000000000,0 stoack oevrflow rep byt omorrow i wil say "dam nthe whole world", forward to friends+family or suffer in eternal darkness
20:12:17 * oerjan has a hunch smidget is misspelled
20:12:22 <elliott> (APPROVED BY PRESIDENT OF AMERICA)
20:13:33 <oerjan> oh it's smidgen
20:13:45 <Sgeo> elliott, does XFCE not have such crappy lack of easy to use customizability?
20:13:51 <Sgeo> Compared to LXDE
20:13:57 * Sgeo is starting to really be ticked off
20:14:53 * oerjan is mostly annoyed because this was the one evening he thought he count on not hearing that damn barking
20:15:00 <oerjan> *could count
20:15:00 <elliott> woof
20:15:37 * oerjan hits elliott with the saucepan ===\__/
20:16:12 <elliott> bark
20:25:15 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:25:20 <zzo38> Have any you written any FurryScript codes?
20:27:44 <elliott> no
20:30:35 <zzo38> Then learn?
20:31:24 <elliott> :(
20:34:17 <ais523> zzo38: but the page says that if you reach it, unless you're interested, to go to a random page instead
20:34:27 <ais523> were you expecting people to not honour that requirement?
20:35:23 <zzo38> ais523: No, I meant if you reached it *using a RANDOM PAGE function*
20:35:27 <zzo38> Maybe I should make it clear.
20:35:42 <ais523> zzo38: it says "after a random page search"
20:35:46 <ais523> and I've done at least one of those in the past
20:35:47 <ais523> so it is after
20:35:56 <oerjan> zzo38: i don't think the random page function usually goes to the User: namespace (or any other than main)
20:36:06 <zzo38> OK, I removed that note.
20:36:17 <zzo38> oerjan: Yes I think you are correct; I fixed it
20:36:36 <zzo38> And yes I agree the grammar was wrong
20:36:58 -!- Phantom_Hoover has joined.
20:37:07 -!- Phantom_Hoover has quit (Changing host).
20:37:07 -!- Phantom_Hoover has joined.
20:37:29 <oerjan> Phantom_Hoover: YOUR CLOAK IS FOOLING NO ONE
20:38:06 <ais523> hmm, I wonder what my ping to phantom hoover is like?
20:38:07 <ais523> we have the same ISP
20:38:20 <oerjan> -0.1 s
20:38:25 <elliott> ais523: (diff) (hist) . . N User:PepanoMofumo‎; 19:56 . . (+2,955) . . PepanoMofumo (Talk | contribs) (New page: Occupation interview isn't just concerning the proper attire. Nonetheless, that could make a huge difference there. Females often give a job interview attire too much of a credit. These p...)
20:38:48 <ais523> http://esolangs.org/wiki/User:PepanoMofumo
20:39:06 <Phantom_Hoover> elliott, hey, mock ais523 for his ISP too.
20:39:13 <elliott> ais523: ha ha, virgin
20:39:16 <elliott> also, virgin media user
20:39:36 <ais523> not my ISP, really
20:39:43 <ais523> I don't have my own connection, so it's borrowed
20:39:46 <ais523> luckily, it hasn't gone wrong
20:39:55 <Phantom_Hoover> no we were
20:39:55 <oerjan> yeah those virgin guys aren't exactly rocket scientists. oh wait...
20:39:56 <Phantom_Hoover> isp
20:39:58 <Phantom_Hoover> freinds
20:40:00 <ais523> the impression I get from the Internet of Virgin is that it's very good when it's working, and very bad the rest of the time
20:40:19 <Phantom_Hoover> I've... never really had a *bad* experience with it.
20:40:25 <Phantom_Hoover> It's just a bit naff.
20:40:47 <ais523> are they telling the truth when they claim to have a faster connection than everyone else's?
20:41:08 <Phantom_Hoover> Dunno, does everyone else have to wait overnight to torrent things?
20:41:28 <ais523> I assume so
20:41:31 <ais523> depends on how large the things are, ofc
20:42:30 <ais523> incidentally, the spambot's advice about interview dress is entirely sensible, apart from looking like machine-translated English
20:42:31 <elliott> well, virgin offer fibre-otpic
20:42:32 <elliott> but so does bt nowadys
20:44:01 -!- monqy has joined.
20:45:20 <zzo38> Is this document of FurryScript understandabout to you, or no good?
20:46:33 <elliott> i didn't read it
20:54:48 -!- centrinia has joined.
20:57:41 <elliott> `welcome centrinia
20:57:53 <HackEgo> centrinia: 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
20:57:58 <centrinia> Hello elliott.
20:59:23 <Phantom_Hoover> "Or should I call you.......... DAD"
20:59:35 <zzo38> Are you sure?
21:05:44 <zzo38> s/DAD/BAD/
21:08:15 <zzo38> Tell me if you think any command missing from FurryScript, which you would find important
21:08:31 <ais523> [21:07] [wallops] And I hear that in 53 minutes it's time for FINLAND to enter the new year
21:08:46 <elliott> Rset in peace, Finland.
21:08:50 <elliott> ais523: wait, how do I get wallops?
21:08:52 <ais523> zzo38: it needs a goto-but-not-really command
21:08:54 <ais523> all languages do
21:08:57 <ais523> elliott: /mode elliott +w
21:09:01 <ais523> I have it in an onjoin script
21:09:02 <elliott> im walloped
21:09:04 <ais523> only with ais523, not elliott
21:09:14 <elliott> I just dewalloped you
21:09:17 <elliott> or would have, were I an op
21:09:26 <ais523> oper?
21:09:34 <ais523> I don't think channel op has anything to do with dewalloping other poeple
21:09:36 <ais523> *people
21:09:39 <zzo38> ais523: What is a goto-but-not-really command?
21:09:53 <zzo38> Channel operator and server operator are two different things
21:10:15 <ais523> zzo38: it's like a goto, but not really
21:10:41 <zzo38> I do have continuations
21:10:47 <ais523> hmm, that'll do
21:11:16 <zzo38> Did you read it? If you do, then you can see that it have continuations too
21:11:59 <zzo38> If anything in there is not understandable then please notify me
21:12:00 <elliott> ais523: well, I got * #esoteric :You're not a channel operator
21:12:28 <ais523> elliott: sure you didn't aim it at #esoteric rather than me?
21:12:37 <ais523> perhaps your client automatically puts the name of the current channel in the command
21:12:41 <ais523> if you aim it at someone lse
21:12:42 <ais523> *else
21:14:36 <elliott> ah, I might have mixed up the arguments
21:14:41 <elliott> but yes, I suspect it does
21:14:50 <zzo38> Ha ha! It isn't about GameCube! So now push the explode button and your TV set will explode and money will come out.
21:16:21 <Phantom_Hoover> Is it more money than the TV's worth?
21:16:35 <zzo38> I guess so.
21:20:00 <ais523> o
21:20:34 <elliott> O
21:20:56 <Vorpal> elliott, another reason I use my own DNS server: my ISP DNS keeps dying
21:24:37 <ais523> [wallops] if you'd like your country walloping let me know (assuming i'm around)
21:24:41 <ais523> it'd be nice if wallops said who they were from
21:25:43 <elliott> 28-mrmist/Wallops-
21:25:44 <elliott> they do.
21:25:56 <elliott> PEB server and bad client
21:25:57 <ais523> hmm, in that case, my client is deleting it
21:26:02 <ais523> "PEB server"?
21:26:07 <elliott> problem exists between ...
21:26:13 <ais523> aha
21:26:28 * elliott considers asking mrmist for the south pole
21:26:41 <ais523> it probably lives in UTC
21:26:47 <elliott> they use new zealand time there
21:26:50 <elliott> but the south pole has no defined timezone
21:26:51 <ais523> ah, aha
21:26:51 <elliott> obviously
21:26:55 <elliott> however
21:27:01 <ais523> indeed, but the people living there need to name times somehow
21:27:02 <elliott> its day lasts 3 months or 6 months or something in total
21:27:04 <ais523> that's why I assumed UTC
21:27:06 <elliott> so i think a new day should begin in 2012
21:27:11 <ais523> and 6 months, obviously
21:27:16 <elliott> so it would actually be meaningful
21:27:18 <elliott> ais523: oh, right
21:27:33 <elliott> ais523: the reason they use new zealand time is because they fly there from nz
21:27:39 <elliott> because... NZ is far south :
21:27:40 <elliott> :P
21:30:12 <zzo38> Is the [[StateFlip]] esolang turing-complete? It has flipping and fixed mirrors, and infinite memory.
21:33:49 <elliott> libya, lowercase.
21:42:12 <oerjan> elliott: wat
21:43:17 * oerjan suspects lahwran of being a rotidder
21:44:12 <elliott> -mrmist/Wallops- Just 30 minutes to go for Romania libya Egypt and many more!
21:45:13 <oerjan> it's camelcase because sahara
21:45:37 <ais523> oerjan: but why lowercamelcase, not uppercamelcase?
21:46:15 <oerjan> Egypt gets the upper because pyramids.
21:47:07 <zzo38> I live in Canada there are many timezones depending what province you are in.
21:47:54 <oerjan> this is when the chinese come here to gloat. except they've already gone to bed, i guess.
21:48:05 <oerjan> in their one huge timezone.
22:01:06 -!- GreaseMonkey has joined.
22:02:51 <elliott> the much of congo
22:03:29 * oerjan does the conga
22:05:50 <fizzie> Gloat gloat gloat.
22:06:01 <fizzie> We just did the thing thing future thing.
22:06:19 <elliott> yes
22:06:32 <zzo38> I think the monads and comonads that depend on a monoid can be made into indexed monads and index comonads that depend on a category.
22:06:44 <elliott> merry christmas fizzie
22:06:58 -!- DCliche has joined.
22:07:19 <fizzie> elliott: Honk you.
22:08:34 -!- Klisz has quit (Disconnected by services).
22:08:39 -!- DCliche has changed nick to Klisz.
22:13:24 <elliott> isreal
22:13:33 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=is+israel+real
22:14:41 <Phantom_Hoover> http://en.wikipedia.org/wiki/Edward_Lear
22:14:44 <Phantom_Hoover> wow
22:15:07 <elliott> Phantom_Hoover: wow?
22:15:09 <Phantom_Hoover> I will never look at The Owl and the Pussycat the same way again after seeing that photo.
22:15:48 <Phantom_Hoover> Runcible spoons aren't real??
22:15:59 <Phantom_Hoover> My parents told me that they were spoons with a bowl at each end.
22:16:54 <elliott> http://www.straightdope.com/columns/read/1228/whats-a-runcible-spoon
22:18:15 <zzo38> If you use the [()] for natural numbers, then >> is multiplication and <|> is addition
22:20:32 <fizzie> Phantom_Hoover: Your parents apparently aren't the only ones: http://www.bodgers.org.uk/bb/phpBB2/viewtopic.php?f=15&t=357&start=15 (from about the sixth message down)
22:21:54 <Phantom_Hoover> "My dictionary says -
22:21:54 <Phantom_Hoover> Runcible Spoon . . . "a fork curved like a spoon, with three broad prongs, one of which has a sharpened outer edge for cutting." "
22:21:56 <Phantom_Hoover> I
22:22:05 <Phantom_Hoover> I really want to refer to sporks as runcible spoons.
22:22:10 <elliott> You may.
22:22:23 <fizzie> Google image search for "runcible spoon" in quotes seems to return mostly sporks, anyway.
22:22:44 <ais523> fizzie: it's like a spork that's also a knife
22:23:16 <oerjan> > (mapM_ . const) [(),()] [(),(),()]
22:23:17 <lambdabot> [(),(),(),(),(),(),(),()]
22:23:31 <oerjan> zzo38: ^
22:23:34 <fizzie> ais523: Yes, a sporf.
22:23:42 <elliott> ais523: you realise the topic was just that all the definitions of runcible spoon contradict each other, right?
22:23:45 <ais523> is that the ofificial name?
22:23:50 <ais523> elliott: oh, no I don't
22:23:57 <elliott> ais523: vorpal
22:23:59 <ais523> I'm rarely paying more than tangential attention to teh channel
22:24:05 <ais523> *the
22:24:14 <ais523> just I'm better at hiding it than Vorpal
22:24:19 <ais523> and occasionally use scrollback rather than asking
22:24:20 <fizzie> I don't think it's very official-official. "A sporf is a generic term for a single eating utensil combining the properties of a spoon, fork, and knife.[1][2] One popular brand was invented by William McArthur in the 1940s in Australia and sold with the brand name Splayd, another brand with a serrated edge is the Eazi-Eater[3]"
22:24:25 <elliott> well, marginally better at least
22:24:38 * elliott wants a single utensil for all purposes
22:24:42 <elliott> including murder
22:24:42 <fizzie> knork is the knife-fork, and spife is the spoon-knife.
22:24:45 <Phantom_Hoover> elliott, actually, the topic was my parents lying to me in my childhood.
22:25:06 <elliott> Phantom_Hoover: It was a lie-to-children to protect you from the terrible secret of runcible spoons.
22:25:12 <fizzie> http://en.wikipedia.org/wiki/Lusikkahaarukka -- us Finns can't even make a spork right.
22:25:17 <elliott> SHOVING WILL PROTECT YOU FROM THE TERRIBLE SECRET OF RUNCIBLE SPOONS.
22:25:27 <Phantom_Hoover> NO PUSHING
22:25:28 <ais523> fizzie: I misread that line as being from elliott originally
22:25:34 <elliott> fizzie: Lusi...kka..haa...rukka.
22:25:37 <elliott> Seriously, Finnish?
22:25:41 <elliott> Seriously?
22:25:47 <ais523> and it didn't strike me as out of place at all that elliott would claim to be Finnish
22:25:55 <ais523> although I'd expect him to be lying if he did so
22:25:56 <fizzie> It's just "lusikka" and "haarukka" combined.
22:26:03 <elliott> Spoonfork.
22:26:04 <ais523> hmm, now I wonder why I believe elliott comes from Hexham
22:26:17 <elliott> ais523: I don't, it's an elaborate ruse to make a fool out of Ngev.
22:26:18 <ais523> given that I don't normally believe him when he claims to come from a particular location
22:26:19 <elliott> Ngevd.
22:26:23 <Phantom_Hoover> Is this the same as how you get offended when people refer to you as 'he'.
22:26:25 <elliott> Hatched as a secret plot yeras before he even came here.
22:26:41 <ais523> ah right, on the basis that Hexham is an awfully obscure and specific place to lying about having come from
22:26:45 <ais523> Birmingham, on the other hand…
22:27:03 <Phantom_Hoover> I'm actually from Glasgow.
22:27:05 <Phantom_Hoover> (hahahaha no
22:27:08 <Phantom_Hoover> )
22:28:14 <elliott> ais523: I have successfully fooled you into not believing the one true thing about me -- I'mf rom Finland.
22:28:22 <elliott> `words --finnish 15
22:28:27 <HackEgo> murooppajoisammottakus voivaan tulvollisemmat tällitseviileveämmälle suoristisemia lämmempienne ryhmitta asettumille vällämme akuttamissä suureimpieni herroksuaali jäseni kujo euraavina
22:28:33 <Phantom_Hoover> You aref rom Finland?
22:28:34 <ais523> I will laugh so much if lusikkahaarukka comes up
22:28:35 <elliott> MUROOPPAJOISAMMOTTAKUS, MOTHERFUCKERS!
22:28:38 -!- elliott has quit (Quit: Leaving).
22:28:44 <oerjan> > cycle "griffel "
22:28:45 <lambdabot> "griffel griffel griffel griffel griffel griffel griffel griffel griffel gr...
22:29:05 -!- elliott has joined.
22:29:10 <elliott> `date
22:29:13 <HackEgo> Sat Dec 31 22:29:13 UTC 2011
22:29:21 <fizzie> `words --lusikka --haarukka 15
22:29:25 <HackEgo> Unknown option: lusikka \ Unknown option: haarukka
22:29:57 <oerjan> > sequence_ . init . tails $ [(),(),(),()]
22:29:59 <lambdabot> [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()]
22:36:43 -!- DCliche has joined.
22:41:08 -!- Klisz has quit (Ping timeout: 276 seconds).
22:41:47 <lahwran> * oerjan suspects lahwran of being a rotidder
22:41:48 <lahwran> a what?
22:42:03 * oerjan whistles innocently
22:42:13 <lahwran> google doesn't know :|
22:42:45 -!- Deewiant has joined.
22:44:12 <oerjan> you can safely assume that 90% of what i say that you don't understand, is a pun.
22:44:24 <elliott> 90%?
22:44:25 <lahwran> well alrighty then
22:44:25 <elliott> 100%
22:44:29 <lahwran> puns are good
22:47:23 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:48:39 <zzo38> I don't know either
22:50:30 -!- zzo38 has quit (Remote host closed the connection).
22:56:37 -!- Phantom_Hoover has joined.
23:15:36 <Sgeo> Phantom_Hoover, elliott kallisti update
23:16:39 <Phantom_Hoover> Seen.
23:18:19 * shachaf shachaf shachaf *
23:18:32 <monqy> monqy
23:18:52 <shachaf> elliott: I just read that thread about monads being functions thanks to you.
23:19:08 <elliott> enjoy
23:19:20 <Phantom_Hoover> i
23:19:30 <shachaf> I thought having stopped to read -cafe@ would save me from that sort of thing. :-(
23:19:49 <Phantom_Hoover> wher
23:19:50 <Phantom_Hoover> e
23:19:50 <Phantom_Hoover> shachaf, monqy, believe me, you don't want to be on Sgeo's update list.
23:19:51 <shachaf> I think I need to quit the Internet or something.
23:19:53 <Phantom_Hoover> On that topic, Sgeo, add shachaf and monqy to your update list.
23:20:01 <elliott> "Answer - I only had the equivalent of the Maybe type, and I was trying
23:20:01 <elliott> to force it where the MaybeMonad should go."
23:20:01 <shachaf> What?
23:20:05 <elliott> What.
23:20:10 <elliott> I just... what.
23:20:27 <monqy> Phantom_Hoover: I was on it for an update or two but then i escaped
23:20:51 <shachaf> elliott: HE HAD THE EQUIVALENT OF THE MAYBE TYPE, AND HE WAS TRYING TO FORCE IT WHERE THE MAYBEMONAD SHOULD GO
23:21:03 <shachaf> It's not a Monad unless its name ends with "Monad", you know.
23:21:11 <Phantom_Hoover> elliott, checked micahrjohnston's twitter again; it appears that he lured someone else in to be dashed upon the rocks of his stupidity like some kind of idiot siren.
23:21:21 <elliott> shachaf: I'm more worried by the fact that adding a () -> made it work than that he couldn't define the monad int he first place.
23:21:26 <elliott> Phantom_Hoover: thanks for the update...........................
23:21:29 <elliott> i think.........
23:21:44 <elliott> oh no does this mean i'm on two update lists now
23:21:47 <elliott> >unsubscribe
23:21:48 <elliott> >unsubscribe
23:21:56 <oerjan> you need that () -> to get a jump start into the monad
23:22:08 <shachaf> elliott: Now I'm looking at that post on Reddit thanks to you.
23:22:20 <elliott> shachaf: the monads one?
23:22:21 <elliott> have fun
23:22:36 <shachaf> "I say this is trivial because this Monad isn’t very interesting. But it does guarantee an order. For instance, I can write: \n MyMonad 1 >>= MyMonad . (+) 2 >>= MyMonad . (*) 10 \n This will return MyMonad 30, because the order of operations is guaranteed."
23:22:37 <Phantom_Hoover> help i want to see stupid people??
23:22:41 -!- Klisz has joined.
23:23:06 <shachaf> Man, where would we be without monads guaranteeing orderings for us?
23:23:17 <Phantom_Hoover> oh
23:23:20 <Phantom_Hoover> are you talking about that
23:24:12 <shachaf> Both examples he gives for "guaranteeing ordering" are commutative monads.
23:25:04 <oerjan> > Just 3 <**> (Just 5 <**> Just (-))
23:25:05 <lambdabot> Just 2
23:25:23 <shachaf> @ty (<**>)
23:25:24 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f (a -> b) -> f b
23:25:29 <shachaf> @src <**>
23:25:29 <lambdabot> (<**>) = liftA2 (flip ($))
23:25:47 -!- DCliche has quit (Ping timeout: 244 seconds).
23:25:49 -!- Patashu has joined.
23:26:01 <elliott> shachaf: That's amazing.
23:26:18 <oerjan> amaZING
23:26:25 <Phantom_Hoover> @ty liftA2
23:26:26 <lambdabot> forall a b c (f :: * -> *). (Applicative f) => (a -> b -> c) -> f a -> f b -> f c
23:26:41 <monqy> why is this haPPENING
23:26:46 <monqy> the monads
23:26:48 <monqy> wHY
23:27:00 <shachaf> elliott: Hey, I was away from the Internet all day. I can take a bit to catch on.
23:27:04 * shachaf is now at airport.
23:27:10 <oerjan> monqy: because 2012, is end times
23:27:18 <Sgeo> shachaf, wait, that's the Reddit thing that calls monads a tool for ordering, right?
23:27:22 <oerjan> all order must cease
23:27:29 <elliott> shachaf: Catch on to what.
23:27:43 <elliott> Anyway, the () -> guarantees ordering.
23:27:46 <elliott> That arrow can't go backwards.
23:27:46 <Phantom_Hoover> OK, this is breathtakingly awful.
23:27:56 <shachaf> elliott: All the making-fun-of-monad-tutorials you've been doing.
23:28:14 <shachaf> s/on/up/
23:28:20 <oerjan> also, hippo knew jeer, everyone!
23:28:34 <Sgeo> elliott, is this on Reddit or -cafe?
23:28:51 <shachaf> It spreads everywhere.
23:28:59 <elliott> Sgeo: which part
23:29:03 <elliott> mnoads are functions in cafe
23:29:05 <elliott> monads are ordering is reddit
23:29:09 <elliott> IS HASKELA PURE??? is cafe
23:29:22 <Phantom_Hoover> Link to the functions one?
23:29:31 <elliott> http://groups.google.com/group/haskell-cafe/t/1e2a2cfb2e93bcd2
23:29:35 <oerjan> haskela, the monstrous child of haskell and ursala
23:29:47 <shachaf> elliott: Wait, what?
23:29:53 * Sgeo suddenly remembers that Ursala exists.
23:29:54 <shachaf> Oh, a 100-post thread.
23:30:02 * shachaf might just not read that.
23:30:33 * Sgeo vaguely wonders how ST is conceptually a function
23:30:45 <Sgeo> I mean, in their implementation, maybe
23:30:48 <Sgeo> But conceptually?
23:31:03 <elliott> Sgeo: Well, it's (STMap s -> (a, STMap s))
23:31:21 <Sgeo> Ah
23:31:30 <elliott> newRef :: a -> STMap s -> (STRef s a, STMap s)
23:31:33 <elliott> readRef :: ... etc.
23:31:43 <elliott> You can't implement STMap in Haskell, though.
23:31:57 <Sgeo> Not even with Dynamics?
23:32:16 <monqy> i read the first page of that groupes and
23:32:19 <monqy> wow i cant read more
23:32:27 <elliott> Sgeo: Well sure, but that's cheating.
23:32:32 <shachaf> Sgeo: That requires Typeable.
23:32:37 <elliott> Oh, rihgt.
23:32:38 <elliott> right
23:32:42 <elliott> You can do it with Any and unsafeCoerce, though.
23:32:43 <elliott> I have.
23:32:58 <elliott> You get all the ugliness of ST with none of the performance.
23:33:04 <shachaf> You can do it with, like, IORefs and unsafePerformIO, too.
23:33:08 <elliott> monqy: there's only one page of that thread
23:33:35 <shachaf> elliott: Ah, Conal asks whether Haskell is denotative.
23:33:42 <monqy> oh
23:33:53 <shachaf> Truly, -cafe@ is like clockwork.
23:34:05 <oerjan> evita toned
23:34:36 <elliott> shachaf: Hey, look at the /rest/ of that thread.
23:34:42 <elliott> Conal came in and I was like "FINALLY".
23:34:43 <Phantom_Hoover> "This explanation of monads is simple, easy to understand, and wrong."
23:34:50 <Phantom_Hoover> elliott, YOU OXFORD COMMIE BASTARD
23:34:50 <shachaf> elliott: Which part?
23:34:55 <Phantom_Hoover> WE ARE NO LONGER FRIENDS
23:34:59 <elliott> Phantom_Hoover: I love Oxford commas sorry.
23:35:05 <Phantom_Hoover> i
23:35:05 <elliott> shachaf: I assume you mean the purity one.
23:35:08 <shachaf> Right.
23:35:13 <Phantom_Hoover> /ignore elliott*!*@*
23:35:17 <elliott> Phantom_Hoover: :}
23:35:23 <shachaf> I don't object to Conal's comments or anything.
23:35:33 <oerjan> you, can, never, use, too many, commas,,,
23:36:15 <shachaf>
23:36:20 <shachaf> Ugh, Unicode.
23:36:26 <shachaf> I need to fix this.
23:36:57 <elliott> I wonder whether Phantom_Hoover has actually ignored me.
23:37:13 <elliott> @tell Phantom_Hoover hi
23:37:14 <lambdabot> Consider it noted.
23:37:30 <shachaf> elliott: Where do you have more karma? reddit or stackoverflow?
23:37:46 <Phantom_Hoover> What do you have more of? Metres or kilograms?
23:37:47 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
23:37:53 <Phantom_Hoover> @clear-messages
23:37:53 <lambdabot> Messages cleared.
23:38:03 <elliott> @tell Phantom_Hoover hi
23:38:03 <lambdabot> Consider it noted.
23:38:07 <elliott> shachaf: SO.
23:38:08 <Phantom_Hoover> @clear-messages
23:38:09 <lambdabot> Messages cleared.
23:38:09 <Sgeo> "Answer - I only had the equivalent of the Maybe type, and I was trying
23:38:09 <Sgeo> to force it where the MaybeMonad should go."
23:38:11 <shachaf> elliott: Remember Andrew Coppin?
23:38:13 <Sgeo> I don't get it
23:38:14 <elliott> But SO's grows like a billion times faster.
23:38:14 <shachaf> I wonder where he's gone.
23:38:19 <elliott> shachaf: Vaguely? What did he do.
23:38:23 <Phantom_Hoover> It's preternaturally quiet in here without elliott.
23:38:27 <shachaf> Oh, he used to post on -cafe@ a lot.
23:38:29 <elliott> @tell Phantom_Hoover hi
23:38:29 <elliott> @tell Phantom_Hoover hi
23:38:30 <elliott> @tell Phantom_Hoover hi
23:38:30 <lambdabot> Consider it noted.
23:38:30 <elliott> @tell Phantom_Hoover hi
23:38:30 <elliott> @tell Phantom_Hoover hi
23:38:30 <lambdabot> Consider it noted.
23:38:30 <lambdabot> Consider it noted.
23:38:30 <lambdabot> Consider it noted.
23:38:30 <lambdabot> Consider it noted.
23:38:33 <Phantom_Hoover> @clear-messages
23:38:33 <lambdabot> Messages cleared.
23:38:34 <monqy> omg,,,
23:38:35 <elliott> shachaf: I only recently started reading -cafe.
23:38:57 <shachaf> He posted on -cafe@ to the point that dons told him to go ask his questions in IRC.
23:39:22 <elliott> :D
23:39:27 -!- oerjan has set topic: The commatose channel | http://codu.org/logs/_esoteric/.
23:39:31 <elliott> shachaf: Oh, is he the guy whose package names start with AC-?
23:40:09 <elliott> Ohh, it's MathematicalOrchid.
23:40:10 <elliott> *That* guy.
23:40:13 * Sgeo combines the two notions of Monad
23:40:23 <Sgeo> Monads are functions that have an Ord instance!
23:40:24 <shachaf> Oh, he does that?
23:40:32 <shachaf> Sgeo++
23:40:43 <elliott> instance Ord (World -> (a, World))
23:40:47 <elliott> ^rainbow Phantom_Hoover: hi
23:40:47 <fungot> Phantom_Hoover: hi
23:40:56 <Phantom_Hoover> @clear-messages
23:40:56 <lambdabot> Messages cleared.
23:40:58 <shachaf> > var "elliott: hello"
23:40:59 <lambdabot> elliott: hello
23:40:59 <oerjan> <shachaf> elliott: Remember Andrew Coppin? <-- i'm sure i saw him just the other day
23:41:23 <elliott> ^rainbow @tell Phantom_Hoover hi
23:41:23 <fungot> @tell Phantom_Hoover hi
23:42:06 <shachaf> ^rainbow ^rainbow
23:42:06 <fungot> ^rainbow
23:42:42 <Phantom_Hoover> ^choo ^choo
23:42:42 <fungot> ^choo choo hoo oo o
23:42:52 <shachaf> ^echo ^echo
23:42:52 <fungot> ^echo ^echo
23:42:52 <oerjan> ^echo ^echo
23:42:52 <fungot> ^echo ^echo
23:43:08 <monqy> ^style ^style
23:43:08 <fungot> Not found.
23:43:29 <oerjan> ^asc ^asc
23:43:29 <fungot> 94.
23:43:31 <elliott> ^rainbow hi Phantom_Hoover
23:43:31 <fungot> hi Phantom_Hoover
23:43:32 * shachaf 's flight leaves in a moment.
23:43:42 <elliott> shachaf: Are you flying to Finland for your military service?
23:43:50 <shachaf> No.
23:43:59 * Phantom_Hoover 's flight leaves in a monad.
23:44:01 <shachaf> Good bye, #esoteric. Goodbye#esoteric.
23:44:26 <ais523> hmm, is it bad that I interpreted Goodbye#esoteric as a Java method pointer?
23:44:52 <Phantom_Hoover> :t scanl
23:44:52 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> [a]
23:44:56 * oerjan waves
23:45:07 <oerjan> ais523: yes.
23:45:09 <Sgeo> Java has method pointers now?!?
23:45:34 <ais523> well, references
23:45:55 <oerjan> hoopy gnu jar
23:46:18 * Phantom_Hoover → 2012
23:46:20 -!- Phantom_Hoover has quit (Quit: Leaving).
23:46:33 <elliott> shachaf: Are you flying to 2012.
23:46:41 <elliott> Are you flying across the date line to stay in 2011.
23:48:45 * Sgeo will be back in a while
23:48:57 <Sgeo> Going outside, because my legs feel weird
23:49:32 <elliott> thanks
←2011-12-30 2011-12-31 2012-01-01→ ↑2011 ↑all