←2012-04-15 2012-04-16 2012-04-17→ ↑2012 ↑all
00:01:10 <itidus21> !bfjoust hudhewui [-][+][-+>[<+>]<]
00:01:13 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:01:35 <itidus21> !bfjoust hudhewui [[-][+][-+>[<+>]<]]
00:01:39 <EgoBot> ​Score for itidus21_hudhewui: 17.1
00:02:41 <nortti> !bfjoust perkele (>++++++++<[+++])*32[+++++>+++++<]
00:02:43 <EgoBot> ​Score for nortti_perkele: 11.1
00:03:09 <itidus21> !bfjoust hudhewui [-][+][-+>[<+>]<][+]
00:03:13 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:03:37 <itidus21> sorry
00:03:48 <itidus21> i rushed that one if you wanted to see breakdown
00:04:37 <monqy> what happens when itidus21 devises his very own theory of bfjoust and overtakes slowpoke
00:04:40 <nortti> (nortti) !bfjoust perkele (>++++++++<[+++])*16[+++++>+++++<]
00:04:40 <monqy> what then
00:04:55 <nortti> (nortti) !bfjoust perkele (>++++++++<[+++])*16[+++++>+++++<]
00:04:59 <itidus21> i stumbled on this at random really
00:05:16 <nortti> !bfjoust perkele (>++++++++<[+++])*16[+++++>+++++<]
00:05:19 <EgoBot> ​Score for nortti_perkele: 11.1
00:07:09 <nortti> !bfjoust (>)*9+[-[-.]>+]-
00:07:09 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
00:07:22 <nortti> !bfjoust perkele (>)*9+[-[-.]>+]-
00:07:25 <EgoBot> ​Score for nortti_perkele: 14.2
00:08:28 <nortti> !bfjoust suicide [-]
00:08:31 <EgoBot> ​Score for nortti_suicide: 16.9
00:08:54 <nortti> for the love of the fucking $DEITY
00:09:11 <itidus21> !bfjoust hudhewui [-][+][-+>[<+>]<][-]
00:09:15 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:10:09 <nortti> !bfjoust suicide [->+<]
00:10:11 <EgoBot> ​Score for nortti_suicide: 13.9
00:10:17 <nortti> oh
00:10:28 <nortti> !bfjoust suicide [->++<+]
00:10:33 <EgoBot> ​Score for nortti_suicide: 7.2
00:10:39 <nortti> !bfjoust suicide [->++<+-]
00:10:42 <EgoBot> ​Score for nortti_suicide: 13.4
00:10:58 <nortti> !bfjoust suicide [-.]
00:11:02 <EgoBot> ​Score for nortti_suicide: 17.4
00:11:19 <nortti> what the fuck!?
00:11:25 <itidus21> lol
00:12:03 <nortti> my best result is from program actively trying to destroy itself
00:12:17 <itidus21> !bfjoust hudhewui [-][+][-+>[<+>]<][.]
00:12:20 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:12:26 <itidus21> snap
00:12:41 <itidus21> !bfjoust hudhewui [-][+][-][-+>[<+>]<]
00:12:45 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:12:52 <nortti> !bfjoust suicide [-.]
00:12:56 <EgoBot> ​Score for nortti_suicide: 17.4
00:13:18 <nortti> !bfjoust suicide [-.>+<]
00:13:21 <EgoBot> ​Score for nortti_suicide: 13.5
00:13:52 <nortti> !bfjoust suicide [-.>>>++<<<]]
00:13:55 <EgoBot> ​Score for nortti_suicide: 0.0
00:14:21 <nortti> !bfjoust suicide [-.>>>++<<<]
00:14:24 <EgoBot> ​Score for nortti_suicide: 10.5
00:15:20 <itidus21> !bfjoust hudhewui [-][+][-+>[<-->]<]
00:15:24 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:15:41 <itidus21> !bfjoust hudhewui [-][+]
00:15:45 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:15:49 <itidus21> ya..
00:16:08 <itidus21> !bfjoust hudhewui [-][-]
00:16:11 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:16:22 <itidus21> !bfjoust hudhewui [[-]]
00:16:26 <EgoBot> ​Score for itidus21_hudhewui: 17.1
00:16:58 <itidus21> !bfjoust hudhewui [-]>++++++++++<[-]
00:17:01 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:17:53 <itidus21> !bfjoust hudhewui [+][+]
00:17:57 <EgoBot> ​Score for itidus21_hudhewui: 17.8
00:18:57 <itidus21> !bfjoust hudhewui [+][+.]
00:19:00 <EgoBot> ​Score for itidus21_hudhewui: 16.9
00:20:38 <itidus21> !bfjoust hudhewui .
00:20:41 <EgoBot> ​Score for itidus21_hudhewui: 8.3
00:24:04 <itidus21> !bfjoust hudhewui (+)*130[.][+]
00:24:07 <EgoBot> ​Score for itidus21_hudhewui: 15.0
00:24:36 <itidus21> !bfjoust hudhewui (+)*1000
00:24:39 <EgoBot> ​Score for itidus21_hudhewui: 14.2
00:25:10 <nortti> [-]
00:25:40 <nortti> !bfjoust perkele [-]
00:25:43 <EgoBot> ​Score for nortti_perkele: 16.9
00:25:55 <nortti> !bfjoust perkele [+]
00:25:59 <EgoBot> ​Score for nortti_perkele: 16.9
00:30:25 <itidus21> !bfjoust hudhewui +[-+>[<>>]<]
00:30:28 <EgoBot> ​Score for itidus21_hudhewui: 8.5
00:31:30 <itidus21> !bfjoust hudhewui +[+[>+]]
00:31:33 <EgoBot> ​Score for itidus21_hudhewui: 0.8
00:32:20 -!- ais523 has quit (Read error: Connection reset by peer).
00:33:40 <itidus21> !bfjoust hudhewui +[+[>+]<]
00:33:43 <EgoBot> ​Score for itidus21_hudhewui: 0.0
00:37:14 <itidus21> !bfjoust hudhewui >>>+++>>>>+++<<<<<<<[+][+]
00:37:18 <EgoBot> ​Score for itidus21_hudhewui: 2.7
00:38:14 <itidus21> !bfjoust hudhewui +>>>+++>>>>+++<<<<<<<[+][+]
00:38:17 <EgoBot> ​Score for itidus21_hudhewui: 2.7
00:39:24 <itidus21> !bfjoust hudhewui >>>+++<<<[+][+]
00:39:28 <EgoBot> ​Score for itidus21_hudhewui: 8.5
00:40:51 <itidus21> !bfjoust hudhewui >+>++>+++<<<[+][+]
00:40:55 <EgoBot> ​Score for itidus21_hudhewui: 3.9
00:42:46 <itidus21> !bfjoust hudhewui ++++[>-][<----][+][+]
00:42:49 <EgoBot> ​Score for itidus21_hudhewui: 1.0
00:44:21 <itidus21> sorry++[>-][<----][+][+]
00:44:25 <itidus21> ^sorry
00:48:57 <oerjan> !bfjoust hm <
00:48:59 <EgoBot> ​Score for oerjan_hm: 0.0
00:49:44 <itidus21> !bfjoust hudhewui (+)*10>[.]<[+][+]
00:49:48 <EgoBot> ​Score for itidus21_hudhewui: 17.2
00:50:33 <itidus21> !bfjoust hudhewui (+)*30>[.]<[+][+]
00:50:37 <EgoBot> ​Score for itidus21_hudhewui: 17.1
00:50:46 <itidus21> so addictive even though im clueless
00:52:36 <itidus21> hmm.. maybe i have been making many false assumptions
00:52:58 <Patashu> can you do it in PMs?
00:53:00 <Patashu> if you're going to send a -lot-
00:53:09 <Patashu> and maybe repost the ones that do particularly well in here
00:53:25 <itidus21> thats why i said sorry.. i didnt really plan this..
00:53:41 <itidus21> i'll let it be
00:53:43 <Patashu> np
00:57:40 <shachaf> kmc: You know how you always say that e.g. instead of "data S = forall a. Show a => S a" and then [S], it's more sensible to just use [String]?
00:57:59 -!- azaq23 has quit (Quit: Leaving.).
01:00:52 <zzo38> shachaf: I suppose in case you want to use showsPrec
01:02:57 <shachaf> zzo38: Treating Show for the moment as just a type class that contains show :: a -> String
01:03:25 <kmc> shachaf: yeah?
01:03:27 <zzo38> shachaf: Also, I have used something like that in my dvi-processing program, where data Node where { Node :: forall x. NodeClass x => x -> Node; } deriving Typeable; where NodeClass has Typeable as a superclass.
01:03:57 <shachaf> kmc: The question was what the equivalent would be for Read.
01:05:03 <zzo38> shachaf: If you replace Show in there with Read, I doubt it would do much
01:05:20 <kmc> shachaf: maybe there isn't one
01:07:22 <shachaf> Hmm, the case I'm thinking of is actually a bit different.
01:07:51 <shachaf> You can do something like data V where V :: (forall a. Read a => a) -> V
01:08:00 -!- oerjan has quit (Quit: Lost terminal).
01:08:26 <shachaf> And then you have a value which you can "examine" in the context of any type which is in Read.
01:08:33 <shachaf> I guess that's the opposite of an existential type, though.
01:09:21 <shachaf> This V would be sort of satisfactory for the use case that someone mentioned to me, except they don't want the Read computation to be done more than once.
01:09:51 <shachaf> Clearly you could do something like data V = V { asInt :: Int, asChar :: Char, ... }, which would work for a closed set of types, and only do the actual "reading" computation once.
01:10:20 <shachaf> But that doesn't work in the type class case, I think.
01:10:45 -!- augur has joined.
01:11:49 -!- nortti has quit (Quit: nortti).
01:19:06 <shachaf> Yes, so I guess this is universal rather than existential, so you don't need V at all, for one.
01:23:26 <shachaf> So I guess the short answer would also be "instead of a value :: forall a. Read a => a, you can just have a String", because when the user of the value wants to use it, they already have their specific Read dictionary, because it's universal rather than existential.
01:24:08 <shachaf> But then you don't get the "memoization" for different specific read calls.
01:24:31 <shachaf> Maybe it's possible to do something along the lines of kmc's "generating random functions" thing?
01:24:40 <shachaf> Except not really.
01:36:46 -!- oerjan has joined.
01:38:54 -!- augur has quit (Remote host closed the connection).
01:55:32 -!- Tiktalik|Food has changed nick to Tiktalik.
02:06:37 <hagb4rd> listen to apparat! http://homepage.alice.de/hagbard/arcadia.php
02:16:19 -!- cheater has quit (Ping timeout: 276 seconds).
02:29:33 -!- calamari has joined.
02:35:03 <zzo38> For mathematical typesetting in dvi-processing, I am having the math lists consisting of "noads" which are similar but different than the "nodes" in non-math lists. It has a class, like this: class Typeable x => NoadClass x where { showNoad :: x -> String; translateNoad :: x -> MathParameters -> ([Node], MathParameters); ... }; I just want to know if you know what methods should be added on
02:38:02 <kmc> are they like burritos
02:38:45 <zzo38> kmc: I don't think so. But if you think it is, tell me how you think so or if you think it isn't, how it isn't so.
02:38:57 <kmc> a new taquería opened 4 blocks from my house
02:39:20 <zzo38> Also, do you mean, it is like burritos in what way?
02:44:08 <oerjan> monad transformers are like taquerias
02:44:28 <shachaf> kmc: Is it the same one?
02:45:05 <shachaf> Hmm, maybe the other one was 11 block.
02:45:07 <shachaf> s/1//
02:45:29 * shachaf , kmchousetaqueríologist
02:46:57 <shachaf> I like how [ShowVal] ~= [String] and [ReadVal] *also* ~= [String].
02:48:21 <kmc> which one shachaf?
02:48:24 <zzo38> oerjan: In what ways?
02:48:46 <shachaf> kmc: Which taquería?
02:49:01 <shachaf> Whichever one you were talking about last time you mentioned that one was opening near your house.
02:49:18 <kmc> if it was in the past 3 days then it's the same one
02:49:33 <shachaf> I don't remember when it was.
02:49:43 * shachaf is really bad at remembering "when" something happened.
02:50:38 <oerjan> zzo38: that's a pun on "monads are like burritos"
02:51:22 <oerjan> or is pun the word there
02:51:36 <shachaf> oerjan: I've never seen a taquería where you give them one burrito and they give you a transformed version of it.
02:52:23 -!- MSleep has joined.
02:53:13 <kmc> byob
02:56:37 -!- MDude has quit (Ping timeout: 276 seconds).
03:50:37 -!- augur has joined.
03:51:27 -!- oerjan has quit (Quit: Good night).
03:52:28 -!- pikhq_ has joined.
03:53:08 -!- pikhq has quit (Ping timeout: 272 seconds).
04:00:22 -!- augur has quit (Remote host closed the connection).
04:25:35 <zzo38> I found an error in section 697 of TeX: The Program. There appears to be not enough space before the logical or sign on the line starting with "if (small_fam(left_delimiter(p)) <> 0)"
04:26:36 <oklopol> revolutionary
04:27:22 <oklopol> is this one of knuth's errorless books where you get thousands of millions for finding a typo
04:36:28 -!- Tiktalik has changed nick to shooksoda.
04:36:34 -!- shooksoda has changed nick to Tiktalk.
04:36:39 -!- Tiktalk has changed nick to Tiktalik.
04:49:26 <zzo38> oklopol: No, only $327.67. And this is for bugs in the program, not for typos. Although it is possible this is due to a bug in the program, but there can also be many other possibilities.
04:49:53 <oklopol> ok
04:50:03 <kmc> oklopol: do you use the long scale?
04:50:05 <oklopol> why 327.67?
04:50:16 <oklopol> what's the long scale?
04:50:46 <oklopol> well i have a good guess
04:50:51 <zzo38> Sorry I am wrong; it is $327.68
04:51:25 <kmc> oklopol: in the long scale, "billion" = million million
04:51:29 <kmc> old british style
04:51:36 <oklopol> right
04:51:40 <shachaf> milliard++
04:51:43 <oklopol> yeah i use the long scale
04:52:09 <oklopol> obviously n-illion should mean 1000000^n and not 1000*1000^n
04:52:16 * shachaf is about to post a needlessly long-winded question to StackOverflow!
04:52:20 <shachaf> If only elliott was here.
04:52:32 <zzo38> oklopol: Yes that is more logical. But it is not common.
04:53:45 <oklopol> well there was a time when the metric system was not common. and if someone had used it back then, people would have been like dude that's stupid. and really, it would have been stupid. wait, what's my point.
04:54:20 <oklopol> shachaf: so you could just get the answer from him?
04:54:27 <oklopol> because he knows everything
04:54:37 <zzo38> Myriad style (used in Japanese and Chinese) is the one I like best, though.
04:54:53 <oklopol> what's that?
04:54:56 <zzo38> But it is not common in English.
04:55:01 <shachaf> Wait, elliott knows everything?
04:55:07 <oklopol> shachaf: yes.
04:55:11 <shachaf> THEN HOW COME HE DIDN"T KNWO WHAT THE TYPE OF A CLOSURE IS????
04:55:31 <oklopol> he didn't?
04:55:36 <shachaf> Checkmate, omniscientists.
04:55:42 <zzo38> oklopol: Do you mean me? Myriad style is counting by ten thousands
04:55:48 <oklopol> oh
04:56:00 <oklopol> that sounds pretty irrelevant to me
04:56:23 <shachaf> zzo38: Where in Canadia are you?
04:56:34 <zzo38> shachaf: British Columbia
04:56:40 <shachaf> I've been there!
04:56:44 <shachaf> Where in British Columbia?
04:57:03 <oklopol> i've been to british britain
04:57:13 <zzo38> If you want to know more precisely, you can try to see which areas the internet service provider that I use is serving in
04:57:23 <shachaf> I'm just wondering vaguely.
04:57:39 <shachaf> Is it Delta, BC?
04:58:38 <zzo38> Yes
04:58:57 <shachaf> I've been to Vancouver, BC!
04:59:02 <shachaf> And surrounding areas.
04:59:07 <shachaf> Maybe I = zzo38.
04:59:22 <zzo38> I have also been to Vancouver, BC
04:59:33 <zzo38> And to Victoria, and a few other places in BC as well
04:59:50 -!- augur has joined.
05:00:06 -!- Patashu has quit (Remote host closed the connection).
05:00:16 <zzo38> The Japanese restaurant I have been to in Victoria is better than the ones around where I live at.
05:00:23 -!- Patashu has joined.
05:00:36 <shachaf> I've been to Victoria!
05:00:50 <shachaf> zzo38: Have you been to AMERICA?!
05:01:06 -!- cheater has joined.
05:01:10 <zzo38> I usually go to Victoria at around Victoria Day; so you might see us in the Japanese restaurant there
05:01:22 <zzo38> shachaf: Canada is part of North America.
05:01:54 <shachaf> zzo38: I'm talking about AMERICA, the country.
05:02:04 <shachaf> Just ask elliott.
05:02:20 <zzo38> There is no country AMERICA
05:02:41 <shachaf> @google america the country
05:02:43 <lambdabot> http://en.wikipedia.org/wiki/United_States
05:02:49 <shachaf> Checkmate, Canadians.
05:03:25 <kmc> america the book
05:03:37 <zzo38> "United States of America" is often abbreviated as "America" but in Canada we usually abbreviate it as "the States" instead.
05:03:53 <zzo38> But neither of them is a proper name of a country.
05:04:00 <shachaf> Oh.
05:04:05 <shachaf> Well, have you ever been there?
05:04:10 <shachaf> Say, to Bellingham or Seattle or something?
05:04:16 <zzo38> I have been there, but not much, and I don't remember much
05:04:50 <shachaf> What language do they speak in Canada? Canadian?
05:05:27 <zzo38> shachaf: Yes, Canadian English and Canadian French. Outside of Quebec is English mostly, inside Quebec is mostly French (by law).
05:05:44 <zzo38> But the government has to speak and write both English and French.
05:08:14 <dbelange> that's racist
05:08:32 <zzo38> They used to have the anime convention "Anime Evolution" in Vancouver, BC, but it has now been cancelled; have you seen it?
05:08:38 <dbelange> why should you have to learn french
05:08:44 <dbelange> just to run the country
05:09:02 <shachaf> Is Anime written in English or in French?
05:09:38 <zzo38> dbelange: Do you expect someone who does not speak English to run England?
05:10:11 <dbelange> no but then I don't expect someone who doesn't speak welsh to run wales
05:10:19 <dbelange> or scots gaelic to run scotland
05:10:43 <zzo38> shachaf: I do not understand your question. This is in British Columbia and is speaking mostly English (some people understand Japanese a bit too; I was once wearing a sign with some Japanese writing, a few people recognized it)
05:10:46 <dbelange> since it's pretty clear that english canada conquered the other canada
05:11:01 <dbelange> they should just all be english now
05:11:03 <shachaf> zzo38: Do you know Japanese?
05:11:20 <zzo38> shachaf: A bit.
05:11:29 <shachaf> Can you read it?
05:11:44 <zzo38> I know the kana, and some kanji, and a few other words too, so I can sometimes read it a bit.
05:12:27 <dbelange> can you read this http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%BF%E3%83%BC%E3%83%B3%E6%AD%BB%E3%81%AE%E8%A1%8C%E9%80%B2
05:12:57 <shachaf> I can sort of read hiragana but not katakana.
05:13:47 <zzo38> dbelange: A little bit but not much.
05:14:11 <zzo38> shachaf: I can read both hiragana and katakana fully; but I don't know all the words
05:14:32 <zzo38> But I do sometimes look up words that I don't know in WWWJDIC
05:14:32 <shachaf> zzo38: Should I learn katakana?
05:15:04 <zzo38> shachaf: If you want to read Japanese, then yes, you should learn hiragana, katakana, and kanji.
05:16:16 -!- asiekierka has joined.
05:16:46 <oklopol> the title says "go-who of button death".
05:17:32 <shachaf> zzo38: My sister kept trying to get me to read some manga, so I ordered it, but in Japanese instead of in English.
05:17:38 <shachaf> I guess I'll have to learn Japanese now. :-(
05:17:43 <kmc> on purpose?
05:17:47 <shachaf> Yes.
05:17:55 <shachaf> Fortunately it has furigana.
05:18:03 <shachaf> Which is at least something...
05:18:23 <zzo38> Furigana is good for pronounce something in Japanese which you do not know the speech
05:18:33 <pikhq_> Trust me when I say furigana is not as big of an aid as you would think.
05:18:39 <shachaf> pikhq_: Oh. :-(
05:18:51 <shachaf> Hence I recently started memorizing the kana, because I guess you gotta start somewhere, right?
05:19:07 <zzo38> pikhq_: I agree it is not so good try to understand the text; but for pronounce it help
05:19:17 <pikhq_> It makes it a bit easier to look things up, and helps if the reading is potentially ambiguous.
05:19:38 <shachaf> Someone upvoted my question on StackOverflow!
05:19:43 <shachaf> I'm rich! I'm rich! HA HA HA HA HA!
05:19:44 <pikhq_> But you have to already know the word for furigana to help you with understanding written text.
05:19:47 <zzo38> pikhq_: Yes, it does also make it easier to look things up in WWWJDIC or whatever, and for sorting
05:20:12 <oklopol> well i know about 5 times more words in furigana than in kanji.
05:20:15 <pikhq_> Of course, furigana is meant for native speakers who are learning writing, so it helps there immensely.
05:20:26 <zzo38> To understand written text in Japanese, using the mixed kana and kanji which is common, is more efficient if you can read it, than only one or the other.
05:20:27 <pikhq_> oklopol: That's because you're lame.
05:20:30 <pikhq_> :P
05:20:33 <oklopol> :(
05:20:38 <shachaf> The other thing that furigana will help me with is typing kanji into my computer to get a translation.
05:20:49 <oklopol> well it's because i had this dictionary where the kanji were so small i didn't really pay attention.
05:21:00 <shachaf> I can type Japanese phonetically easily enough, but I would have no idea how to type unknown kanji.
05:21:06 <oklopol> so i would just read the romaji.
05:21:14 <oklopol> which is equal to furigana.
05:21:33 <zzo38> shachaf: Yes; it does help with that, I can enter the word in WWWJDIC or something like that, and find the kanji in the list that it results. If there is no furigana, you can use stroke counts and SKIP codes and so on for searching.
05:21:43 <pikhq_> shachaf: That's what I mean by "bit easier to look things up". You can type it in instead of having to plug in the structure, if you don't happen to know other words with those kanji.
05:21:56 <shachaf> pikhq_: Right.
05:22:03 <shachaf> How long will it take me to be able to read the book?
05:22:38 <pikhq_> shachaf: Anywhere from a couple weeks to several months. It's *really* hard to say without knowing what book it is.
05:22:49 <pikhq_> And it also depends on the amount of effort you put into it, of course.
05:22:49 <zzo38> (WWWJDIC supports romaji for input only; it cannot output romaji. But I do not think there is any use for it to output romaji; romaji input is useful, though, in case you don't have IME, or don't want to use IME for this purpose)
05:22:54 <shachaf> pikhq_: _DEATH NOTE_ volume 1.
05:23:09 <shachaf> I vaguely put furigana in the same mental category as nikud. But maybe it's not a good comparison at all.
05:23:53 <pikhq_> Hmm. I don't recall that being very hard. Maybe a couple months until you can work your way through if you're devoted?
05:24:05 <shachaf> OK.
05:24:18 <shachaf> I guess memorizing the katakana will be a good step?
05:24:20 <shachaf> Until it arrives?
05:24:29 <oklopol> probably you'll just shachaf out after a week or so.
05:24:39 <shachaf> oklopol: :-(
05:24:42 <pikhq_> Yeah. Katakana and then kanji.
05:25:03 <zzo38> I have many Japanese mangas too; they are Akagi. I even have the special edition and the guidebook for the Akagi TV show.
05:25:04 <oklopol> shachaf: nah just kidding, i'm sure you'll shachaf the whole thing.
05:25:04 <shachaf> pikhq_: The katakana I assume I can just go over one by one until I know them.
05:25:14 <shachaf> pikhq_: What's a good approach to learning some kanji?
05:25:23 <pikhq_> shachaf: Basically. It's no worse than hiragana, just different glyphs.
05:25:25 <zzo38> The latest one I have is volume 24; apparently no more have been released yet.
05:25:37 <shachaf> pikhq_: Right. It's crazy, but not really crazier than, say, uppercase letter.
05:25:53 <zzo38> shachaf: Yes, like that.
05:25:58 <shachaf> zzo38: What's a good way to acquire Japanese manga/other Japanese texts to read?
05:26:36 <zzo38> shachaf: I ordered them from a Japanese store in Vancouver called Half Moon Books; but I don't know what is best in your area, or other ways
05:26:45 <kmc> is there a standard 1:1 mapping between the two kinds of kana?
05:26:52 <kmc> also is there a good reason for there to be two kinds?
05:26:57 <pikhq_> The two schemes for kanji learning that I'm aware of that aren't ludicrously, retardedly *bad* are "Kanji Damage" http://kanjidamage.com and "Remembering the Kanji" http://www.amazon.com/Remembering-Kanji-Volume-Complete-Characters/dp/0824835921/ref=sr_1_1?s=books&ie=UTF8&qid=1334554005&sr=1-1
05:27:02 <shachaf> kmc: Yes, there's a direct mapping.
05:27:07 <zzo38> kmc: Yes, it is like uppercase and lowercase in English, but they are not used in the same way as uppercase and lowercase in English
05:27:12 <shachaf> kmc: Katakana are usually used for loanwords.
05:27:13 <pikhq_> In either case, use an SRS.
05:27:20 <shachaf> Also for names of plants and animals, apparently.
05:27:29 <shachaf> And a few other things, like transcribing sounds.
05:27:46 <pikhq_> And emphasis, and sounding vaguely robotic, etc.
05:27:53 <shachaf> Yes.
05:27:54 <oklopol> in finland, we have nokikana
05:28:04 <pikhq_> Alternately, for sounding really insanely old.
05:28:07 <oklopol> but i never learned it
05:28:26 <pikhq_> (before ~1940, katakana was used for normal Japanese writing more than hiragana)
05:28:40 <shachaf> kmc: Someone learning English could ask a similar thing about uppercase letters.
05:28:47 <shachaf> Which are, if you consider it, pretty insane.
05:28:57 <kmc> dunno
05:29:03 <kmc> marking the beginning of a sentence is useful
05:29:08 <shachaf> For the first letter of a sentence -- and for a few other things, like names -- you take a letter from a completely different alphabet with a 1:1 mapping to the regular one?
05:29:12 <kmc> disambiging proper nouns too
05:29:15 <shachaf> And also for emphasizing a word?
05:29:20 <oklopol> and capitals are a good way to indicate that someone is insanely old.
05:29:24 <kmc> it's a bit crazy yes, but it's also useful
05:29:36 <kmc> TYPING IN ALL CAPS IS MORE OF A 14 YO ON YOUTUBE THINK I THINK
05:29:41 <shachaf> Well, I speak a language that doesn't have capital letters and it seems to work fine.
05:29:49 <kmc> sure
05:29:50 <shachaf> kmc: Write, but emphasizing just ONE word is pretty common.
05:29:52 <kmc> all languages "work fine"
05:30:05 <kmc> shachaf: i was responding to oklopol
05:30:14 <pikhq_> kmc: LINGVA LATINA says "what?"
05:30:15 <pikhq_> ;)
05:30:16 <shachaf> Ugh.
05:30:22 <shachaf> Did I just type "write"? :-(
05:30:26 <oklopol> yes
05:30:30 <shachaf> I think I must've started to type a sentence about writing.
05:30:35 <kmc> you did
05:30:37 <shachaf> And then I saw kmc's comment and changed my mind at the last moment.
05:30:38 <oklopol> been trying to find a homonym for wrong
05:30:41 <oklopol> but didn't.
05:30:43 <kmc> then you finished that sentence about writing
05:30:57 * shachaf :-(
05:31:15 <shachaf> It's times like this I wish the channel wasn't logged.
05:31:22 <oklopol> ookay gotta go
05:35:09 <zzo38> I like the channel logged all the time
05:44:53 -!- MoALTz has quit (Ping timeout: 248 seconds).
05:48:24 <pikhq_> http://sprunge.us/AAdi Threaded assembly is silly-looking.
05:49:27 -!- MoALTz has joined.
06:28:14 <shachaf> I am having USEFUL DISCOURSE on my StackOverflow question!
06:28:17 <shachaf> This is so much fun!
06:29:22 <monqy> just how useful is this discourse
06:29:32 <monqy> useful, you say, but is it useful enough?
06:29:36 <shachaf> Well, someone told me I was wrong.
06:29:50 <shachaf> So I said WELL, OK, I WAS WRONG, BUT YOU WERE WRONG TOO SO HA.
06:30:00 <shachaf> That's what you're supposed to do, right?
06:30:00 <monqy> that;s pretty darn useful
06:30:20 <shachaf> I felt like elliott.
06:30:40 <monqy> elliott wouldn't have been wrong though, because elliott is always right
06:30:42 <pikhq_> It gets stranger still if you decide to stick your words elsewhere: http://sprunge.us/IGGC
06:30:45 <shachaf> monqy: Oh, true.
06:31:52 <Sgeo> Why am I awake
06:31:59 <monqy> hi
06:32:04 <Sgeo> !!!
06:32:05 <Sgeo> HOORAY
06:32:16 <Sgeo> hi monqy hi monqy hi monqy
06:32:18 <monqy> hi
06:32:25 <Sgeo> hi shachaf hi monqy
06:32:27 <monqy> shachaf: join the party
06:32:30 <monqy> shachaf: hi shachaf
06:32:35 <shachaf> monqy: :-(
06:32:38 -!- calamari has left ("Leaving").
06:32:40 <shachaf> HLEP<
06:32:47 <Sgeo> oh no did shachaf and monqy switch places?
06:32:56 <shachaf> Sgeo: I'm quitting hi. :-(
06:33:03 <monqy> Sgeo: I quit quitting hi
06:36:57 <zzo38> (Density Endo) is different from (Codensity Endo); (Codensity Endo) is a list monad (you even get concatenation for free, although Edward Kmett doesn't accept that because he insists Plus to have Functor as a superclass), but (Density Endo) is something like a number that can only be multiplied by a natural number and nothing else.
06:41:54 <zzo38> (Yoneda Endo) is like Maybe but as far as I know you cannot get the monad for free from that
06:58:48 -!- Phantom_Hoover has joined.
07:27:02 -!- itidus20 has joined.
07:29:25 -!- Tiktalik has quit (Ping timeout: 252 seconds).
07:29:55 -!- itidus21 has quit (Ping timeout: 260 seconds).
07:42:40 -!- tikfreenode has joined.
08:15:14 -!- coppro has quit (Remote host closed the connection).
08:20:48 -!- tikfreenode has quit (Changing host).
08:20:48 -!- tikfreenode has joined.
08:20:50 -!- tikfreenode has changed nick to Tiktalik.
08:36:51 <shachaf> kmc: https://github.com/madrobby/semicolon.js/pull/6 reminded me of you.
08:37:48 <kmc> haha
08:48:14 -!- zzo38 has quit (Quit: Due to).
09:46:09 -!- Tiktalik has changed nick to SleepingTik.
10:05:07 -!- cheater_ has joined.
10:08:11 -!- cheater has quit (Ping timeout: 252 seconds).
10:28:18 -!- KingOfKarlsruhe has joined.
10:51:38 -!- Frooxius has quit (Ping timeout: 260 seconds).
10:51:45 -!- Frooxius has joined.
11:34:52 <Phantom_Hoover> Wait, neds are a Scottish thing?
11:35:02 <Phantom_Hoover> I thought they were complementary to chavs.
11:36:39 <qfr> lol
11:36:48 <qfr> Chavs, neds, spides
11:36:58 <Phantom_Hoover> Dpides???
11:37:01 <Phantom_Hoover> *spides
11:37:08 <qfr> Irish thing
11:37:10 <Phantom_Hoover> Oh, a Belfast chav.
11:37:55 <Phantom_Hoover> None of my Belfastese relatives have ever said that word.
11:39:51 -!- nortti has joined.
11:52:47 -!- hagb4rd has quit (Quit: hagb4rd).
11:54:59 -!- hagb4rd has joined.
13:21:17 -!- MSleep has changed nick to MDude.
13:24:31 <nortti> we
13:24:40 <nortti> wrong channel
13:32:40 <ion> you
13:42:57 -!- augur has quit (Remote host closed the connection).
13:51:13 -!- ais523 has joined.
14:01:35 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
14:05:05 -!- derdon has joined.
14:10:51 <hagb4rd> > [x*y | x <- [1..10], y <- [1..10]]
14:10:51 <lambdabot> [1,2,3,4,5,6,7,8,9,10,2,4,6,8,10,12,14,16,18,20,3,6,9,12,15,18,21,24,27,30,...
14:11:58 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.88.2 [Firefox 11.0/20120312181643]).
14:16:40 -!- augur has joined.
14:22:48 -!- sebbu2 has joined.
14:23:05 -!- sebbu2 has quit (Changing host).
14:23:05 -!- sebbu2 has joined.
14:24:19 -!- sebbu has quit (Ping timeout: 276 seconds).
14:24:41 -!- asiekierka has quit (Remote host closed the connection).
14:32:04 -!- augur has quit (Remote host closed the connection).
14:51:37 -!- cheater_ has quit (Ping timeout: 276 seconds).
14:56:06 -!- cheater_ has joined.
15:01:44 -!- KingOfKarlsruhe has joined.
15:06:34 -!- cheater_ has quit (Ping timeout: 276 seconds).
15:07:54 <Phantom_Hoover> Hey, what happened with the whole IPv4 depletion thing?
15:08:05 <Phantom_Hoover> It happened like last February, no?
15:08:19 <ais523> it's still depleting, just there are smaller and smaller supplies left
15:08:29 <ais523> the supplies now mostly belong to individual ISPs, rather than the RIRs
15:08:52 <ais523> you could ask Ilari for info when he turns up, he knows a lot about that subject
15:17:52 <Madoka-Kaname> " Organizations that obtained IP addresses in the 1980s were often allocated far more addresses than they actually required, because the initial classful network allocation method was inadequate to reflect reasonable usage. For example, large companies or universities were assigned class A address blocks with over 16 million IPv4 addresses each, because the next smaller allocation unit, a class B block with 65536 addresses, was too small fo
15:17:52 <Madoka-Kaname> intended deployments."
15:18:22 <Madoka-Kaname> Wait, you /couldn't/ allocate a submask like 255.240.0.0?
15:19:33 <ais523> you can nowadys
15:19:35 <ais523> *nowadays
15:19:41 <ais523> but you couldn't back then, CIDR hadn't been invented yet
15:20:23 <ais523> and so the backbone routers wouldn't have been able to handle it
15:22:29 <fizzie> APNIC is still the only RIR that has ran out; the rest (RIPE, ARIN, AFRINIC, LACNIC) still have addresses.
15:22:42 <fizzie> Not terribly many, though.
15:22:59 <ais523> oh, I thought ARIN and RIPE would have run out by now
15:23:52 <fizzie> RIPE might go this year, or possibly not, depending on whose estimate you look. ARIN is likely to be the next after that.
15:24:13 <fizzie> There's a summary graph at http://www.potaroo.net/tools/ipv4/plotend.png
15:25:34 <fizzie> ISTR that they tweaked the policies at the others after the APNIC depletion, so the burn rate is somewhat lower.
15:27:09 -!- ais523 has quit (Remote host closed the connection).
15:27:22 <fizzie> That was AISNIC, depleting.
15:27:30 <fizzie> (Okay, not really.)
15:30:19 -!- asiekierka has joined.
15:36:20 <Phantom_Hoover> Holy shit New England isn't a state????
15:38:58 -!- boily has joined.
15:40:22 <RocketJSquirrel> Phantom_Hoover: ...
15:40:46 <Phantom_Hoover> IT SOUNDS LIKE IT SHOULD BE
15:40:50 <RocketJSquirrel> Phantom_Hoover: Holy shit Scotland isn't an island?
15:41:23 <Phantom_Hoover> Hey come on now, there are 50 states.
15:41:44 <Phantom_Hoover> It's much easier to lose track of one or two than the 4 constituent countries of the UK.
15:42:07 <fizzie> There's one Finland in Finland.
15:42:45 <Sgeo> Phantom_Hoover, did you see the update?
15:42:46 <RocketJSquirrel> Phantom_Hoover: Holy shit the Balkans isn't a country?
15:42:48 <qfr> I'm chatting from IPv6 right now
15:43:02 <RocketJSquirrel> qfr: WELCOME TO THE WORLD OF TOMORROW
15:43:07 <qfr> RocketJSquirrel well, a few years back it was, somewhat
15:43:46 <qfr> RocketJSquirrel: What? I have seen only one guy on IRC so far who has IPv6 from his ISP
15:43:52 <qfr> I don't have IPv6 from my ISP either
15:43:57 <fizzie> I'm tempted to go all "I was chatting from IPv6 back in the 6bone days".
15:43:59 <qfr> It's just my proxy
15:44:01 <Phantom_Hoover> RocketJSquirrel, that wouldn't be unreasonable if you didn't pay too much attention? Although that would be hard, given that the subdivisions are really obvious in the Balkans what with all the wars.
15:44:17 <fizzie> That was something like 2002, I suppose.
15:44:29 <qfr> I didn't even get internet access until 2001
15:44:33 <qfr> And I'm 25
15:44:36 <RocketJSquirrel> Phantom_Hoover: btw, the "Scotland is an island" thing was a ref to ... Sgeo? I forget who.
15:45:11 * Sgeo thinks it's likely to refer to me
15:45:17 <Phantom_Hoover> RocketJSquirrel, dude he said it was 'near' the UK.
15:45:25 <Phantom_Hoover> I never said New England was near the US.
15:46:12 <RocketJSquirrel> lol, did he really say that?
15:46:17 <RocketJSquirrel> I guess I reduced the lunacy in my mind.
15:46:28 <RocketJSquirrel> Anyway, here's my New England story:
15:47:13 <RocketJSquirrel> Coming back to the US from the Czech Republic, they pulled me aside for "additional questioning." After poking at the computer for ten or fifteen minutes, the guy asked me exactly one additional question: "Have you ever lived in New England?" Confused, I answered "no," and was allowed on my way.
15:47:35 <Phantom_Hoover> Well you know how New England is.
15:47:40 <Sgeo> RocketJSquirrel, thanks for the ... insultingness
15:47:40 <Phantom_Hoover> That's Lovecraft country, man.
15:47:45 <RocketJSquirrel> Sgeo: It's what I do 8-D
15:48:13 <RocketJSquirrel> Sgeo: Seriously though ... the UK. Yeah.
15:48:40 <RocketJSquirrel> I should /nick back to Friendship so I'm not such a jerk.
15:48:50 <RocketJSquirrel> (Although Rockie the flying squirrel certainly wasn't a jerk)
15:49:15 * Sgeo non-conspicuously checks Wikipedia for something
15:49:32 <Phantom_Hoover> "Wales is in the UK too?????"
15:50:03 <Sgeo> >.>
15:50:29 <Phantom_Hoover> "So's part of Ireland?"
15:50:53 <Phantom_Hoover> "Next you're going to be telling me the Isle of Man's in it as well"-- oh wait
15:51:38 <Sgeo> I actually knew.... something about Ireland
15:52:10 <Phantom_Hoover> "I always knew the Irish came from there!"
15:52:19 <RocketJSquirrel> Phantom_Hoover: To be fair, all I expect of average American X is to know where England, Scotland and Ireland are, and the political division of Ireland. Even knowing where Wales is is a bonus.
15:52:58 <Sgeo> I think, I'll stay away from geography
15:52:59 <Phantom_Hoover> You can't forget Wales, Wales is import-- I can't, I just can't.
15:53:02 <Sgeo> Geometry's fine though
15:54:15 <Phantom_Hoover> Not once you've read the Penguin Dictionary of Cruel and Unusual Geometry.
15:54:23 <RocketJSquirrel> Phantom_Hoover: Given that my expected knowledge of Americans for Asia is "China and Japan are not the same country", I'd take what I can get.
15:54:44 -!- pikhq_ has quit (Ping timeout: 245 seconds).
15:54:46 -!- pikhq has joined.
15:55:08 <Phantom_Hoover> RocketJSquirrel, please tell me they'd know that Mexico is in North America.
15:55:12 <Sgeo> RocketJSquirrel, hey, I knew that! (And vaguely what they look like)
15:55:37 <RocketJSquirrel> Phantom_Hoover: Those who know that Canada is not our largest state usually know that Mexico is in North America.
15:56:13 <Phantom_Hoover> I'm going to assume the Canada thing is a joke because come on.
15:56:24 <Sgeo> Canada's not a US state? </joke>
15:56:32 <Phantom_Hoover> Honest question, do you have to do geography much in American schools?
15:57:05 <RocketJSquirrel> Phantom_Hoover: Not much, no, it's conflated with history and history means WWII because we apparently don't care about any other event since the inception of man.
15:57:14 <Phantom_Hoover> RocketJSquirrel, um dude.
15:57:17 <RocketJSquirrel> (At least, that's how my school was)
15:57:45 <Phantom_Hoover> You're completely leaving out the mythical status accorded to the founding of the nation.
15:58:32 <RocketJSquirrel> HITLER
15:59:03 <Phantom_Hoover> God bless George Washington for shooting him while he watched a play :')
15:59:14 <RocketJSquirrel> That's the spirit!
16:00:00 <Phantom_Hoover> And then holding his wife's hand in a jar of acid.
16:07:09 -!- hagb4rd has quit (Quit: hagb4rd).
16:07:28 -!- hagb4rd has joined.
16:09:06 <Phantom_Hoover> Huh, the Chinese for 'card game' is uncountable.
16:09:10 <Phantom_Hoover> Let's play some card game.
16:18:25 -!- elliott has joined.
16:18:33 <Sgeo> elliott, did you do the update?
16:19:02 <Sgeo> AFK
16:19:56 -!- augur has joined.
16:21:18 -!- Slereah_ has quit (Ping timeout: 244 seconds).
16:21:37 -!- Slereah has joined.
16:23:21 <elliott> Sgeo: No.
16:23:43 * elliott almost starts writing an answer about partial evaluation and specialisation to http://stackoverflow.com/questions/10170406/seq-on-partially-applied-functions, but then realises it's that STM guy.
16:26:18 <Phantom_Hoover> Is "that STM guy" good or bad?
16:26:44 <elliott> Bad.
16:27:46 <Phantom_Hoover> How bad?
16:32:14 -!- ais523 has joined.
16:32:35 <elliott> hi ais523
16:32:44 <ais523> hi elliott
16:34:51 <elliott> hi ais523
16:35:21 <ais523> bleh, why are existing programming languages bad at representing 3D cellular automata with loads of space in a reasonably efficient manner
16:35:22 <Phantom_Hoover> Hey wait where Ilari?
16:35:46 <Phantom_Hoover> Did he just cease to exist after IPv4 address depletion, his reason for being satisfied?
16:35:51 <elliott> Phantom_Hoover: He's been gone for years.
16:36:08 <elliott> He's still on freenode, though.
16:36:57 <ais523> I was talking to him recently, in another channel
16:37:01 <ais523> looks like he just got bored of this one
16:38:15 <Phantom_Hoover> Years??
16:38:35 <elliott> Phantom_Hoover: He was last seen in 2010 or maybe 2011.
16:38:43 <elliott> shachaf: I like how dons gave an incorrect answer to your question.
16:39:06 <elliott> shachaf: I also like how you didn't phrase your question title as a question. :(
16:39:18 <Phantom_Hoover> elliott, of course he was here in 2011, he was giving us a live IPv4 feed.
16:40:31 <elliott> Phantom_Hoover: Was that in 2011?
16:40:55 <elliott> shachaf: I also like how Haskell *doesn't* have the first-class universals you mentioned; you can't have [forall a. (Read a) => a].
16:40:58 <Phantom_Hoover> Last /8s were allocated on the 31st of January.
16:43:10 <elliott> OK, last seen
16:43:11 <elliott> 2011-04-30.txt:05:24:44: -!- Ilari has parted #esoteric.
16:43:15 <elliott> and it might be oerjan's fault.
16:43:28 <elliott> (Specifically
16:43:30 <elliott> 2011-04-30.txt:05:22:00: <oerjan> Ilari: i am _so_ tempted to ban you for ignoring my comments...
16:43:30 <elliott> 2011-04-30.txt:05:24:41: -!- Ilari_antrcomp has parted #esoteric.
16:43:30 <elliott> 2011-04-30.txt:05:24:44: -!- Ilari has parted #esoteric.
16:43:30 <elliott> )
16:44:23 <elliott> Actually, those lines are directly adjacent in the logs, so it almost certainly was, esp. since it was a /part, not a /quit.
16:45:04 <Phantom_Hoover> DUN-DUN-dun!
16:45:06 <elliott> @tell oerjan Thanks!
16:45:06 <lambdabot> Consider it noted.
16:48:57 -!- cheater_ has joined.
16:49:24 <RocketJSquirrel> Tsk tsk.
16:50:31 <elliott> Bonus follow-up: 05:25:24: <oerjan> ...either that, or for lacking a sense of humor.
16:53:43 -!- SleepingTik has changed nick to Tiktalik.
17:03:29 <elliott> @time
17:03:29 <lambdabot> Local time for elliott is Mon Apr 16 18:04:00
17:12:39 <elliott> <ksf> someone explain to me like I'm six what's the difference between sufficiently compositional actors and FRP.
17:12:47 <elliott> Does anyone know a word for "everything" that six year olds would understand?
17:16:16 <RocketJSquirrel> Idonno.
17:16:22 <RocketJSquirrel> There's some overlap from the 30,000 foot view.
17:16:33 <RocketJSquirrel> I'd reduce that to "nearly everything"
17:17:12 <elliott> http://meta.stackoverflow.com/questions/129452/using-triggers-to-orderid-associated-with-orderline-when-i-add-new-product
17:17:37 <elliott> RocketJSquirrel: Weeeell, it would have to be a 100 mile view if you ask me.
17:18:02 <elliott> The actor model has no notion of behaviours, and is fundamentally based around discrete message-passing loops.
17:18:18 <elliott> FRP is based on continuous time, has behaviours, and does not do message-passing.
17:18:32 <elliott> I mean... they're both about concurrency.
17:19:24 -!- coppro has joined.
17:24:01 <elliott> RocketJSquirrel: In fact, I'm having trouble thinking of ANY overlap between the two...
17:25:41 -!- pikhq_ has joined.
17:25:41 -!- pikhq has quit (Ping timeout: 248 seconds).
17:42:10 <tswett> elliott: hey, do you know of any web servers that don't suck?
17:43:20 <elliott> NCSA HTTPd
17:45:26 -!- pikhq_ has quit (Ping timeout: 250 seconds).
17:45:29 -!- pikhq has joined.
17:58:33 -!- nortti has quit (Quit: lolololo).
18:01:11 <oklopol> hi
18:05:09 -!- oerjan has joined.
18:06:37 -!- augur has quit (Remote host closed the connection).
18:15:58 -!- azaq23 has joined.
18:16:17 -!- azaq23 has quit (Max SendQ exceeded).
18:16:44 -!- azaq23 has joined.
18:21:42 <Phantom_Hoover> ok
18:21:48 <Phantom_Hoover> i just realised
18:21:49 <Phantom_Hoover> life
18:21:57 <Phantom_Hoover> is isomorphic to the knapsack problem
18:22:33 <oerjan> explains why i cannot fit it together
18:22:33 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
18:22:37 <oerjan> @messages
18:22:37 <lambdabot> elliott said 1h 37m 30s ago: Thanks!
18:22:45 <oerjan> elliott: you're welcome!
18:23:19 <Phantom_Hoover> oerjan, context:
18:23:28 <Phantom_Hoover> <elliott> OK, last seen
18:23:28 <Phantom_Hoover> <elliott> 2011-04-30.txt:05:24:44: -!- Ilari has parted #esoteric.
18:23:29 <Phantom_Hoover> <elliott> and it might be oerjan's fault.
18:23:29 <Phantom_Hoover> <elliott> (Specifically
18:23:29 <Phantom_Hoover> <elliott> 2011-04-30.txt:05:22:00: <oerjan> Ilari: i am _so_ tempted to ban you for ignoring my comments...
18:23:30 <Phantom_Hoover> <elliott> 2011-04-30.txt:05:24:41: -!- Ilari_antrcomp has parted #esoteric.
18:23:32 <Phantom_Hoover> <elliott> 2011-04-30.txt:05:24:44: -!- Ilari has parted #esoteric.
18:23:34 <Phantom_Hoover> <elliott> )
18:23:36 <Phantom_Hoover> <elliott> Actually, those lines are directly adjacent in the logs, so it almost certainly was, esp. since it was a /part, not a /quit.
18:23:54 <oerjan> Phantom_Hoover: hey i was going to pretend i didn't see that!
18:24:26 <Phantom_Hoover> I enjoy trying to watch the world burn.
18:24:27 * oerjan sweeps Phantom_Hoover under the rug
18:24:43 * Phantom_Hoover sets fire to the rug, watches it.
18:25:00 * oerjan helpfully aims a firehose at Phantom_Hoover
18:25:10 * Phantom_Hoover sets fire to the water.
18:25:15 <elliott> Don't worry, I would have been surprised if you did not ignore it.
18:25:16 <oerjan> fancy
18:25:38 <Phantom_Hoover> For we are actually on the planet Spozz, where the atmosphere is fluorine!
18:25:38 -!- oerjan has quit (Quit: Lost terminal).
18:25:40 <Phantom_Hoover> FIN
18:25:53 <Phantom_Hoover> Did he...
18:27:01 <elliott> Lost terminal is when his internet blows up.
18:27:25 <elliott> Be careful with that paranoia, or you'll start accusing people of sockpuppetry.
18:33:22 -!- augur has joined.
18:36:17 -!- augur has quit (Remote host closed the connection).
18:37:14 <elliott> "I can't wait 'till I get to write my own monad tutorial! I wonder what I can spice mine up with..."
18:37:16 <elliott> no stop,,,,
18:38:21 -!- sebbu2 has changed nick to sebbu.
18:39:01 <Phantom_Hoover> monads are like monad tutorials
18:39:27 -!- nortti has joined.
18:39:29 <itidus20> elliott: i will rough them up so they never write a monad tutorial.
18:39:53 <Phantom_Hoover> return maps a monad to a crappy analogy for that monad
18:40:18 <Phantom_Hoover> join maps a crappy analogy of a crappy analogy for a monad to a crappy analogy for that monad.
18:40:53 <itidus20> my roughing up of course is pretending someone wants to hear all i have to say
18:44:01 <itidus20> `quote
18:44:09 <HackEgo> 605) [from 2009] <fizzie> That's confusing. I have been indoctrinated to believe W|A, but on the other hand it's hard to unbelieve a book with such a ridiculously impressive name as "Handbook of physical testing of paper, Volume 2".
18:44:21 <elliott> ais523: should P'' be in [[Category:Brainfuck derivatives]]?
18:44:43 <ais523> elliott: no, it isn't a derivative of BF
18:44:45 <ais523> it's independent
18:44:45 <elliott> (also, does it count as implemented?)
18:44:55 <Phantom_Hoover> elliott, I will rip your fucking soul out.
18:44:56 <elliott> ais523: yeah, I was kidding; I'll put it in [[Category:Brainfuck]] though
18:46:26 <elliott> ais523: hmm, implement P'' so I can mark it as implemented, please ;)
18:46:46 <Deewiant> Wow, indoctrinated to believe W|A in less than 8 months.
18:47:06 <qfr> http://www.pcworld.com/businesscenter/article/253667/oraclegoogle_trial_starts_monday_outcome_could_affect_all_developers.html ah yes, the Oracle vs. Google lawsuit started
18:47:46 <elliott> Deewiant: It exploded pretty quickly.
18:47:52 <itidus20> i am beginning to get that mental callous against patent lawsuit news finally
18:48:41 <itidus20> urgh.... hurts. a bit
18:49:10 <RocketJSquirrel> "Of the seven patents it originally asserted, five have been invalidated by the U.S. Patent and Trademark Office, and a sixth expires at the end of the year."
18:49:11 <RocketJSquirrel> lol
18:49:16 <itidus20> noooooo
18:50:46 <qfr> Haha
18:50:57 <qfr> But there is more than just the patents
18:51:07 <qfr> Other intellectual property, too
18:51:12 <ais523> qfr: also some very dubious copyright claims
18:51:15 <qfr> I guess it's going to take 1-2 years anyways
18:51:28 <ais523> in particular, Oracle are trying to argue that implementing the Java API is a copyright infringement
18:51:38 <itidus20> "Reeen. There was another patent lawsuit. Good night Ren." "Go to sleep Stimpy" .... [Bloodshot eyes looking around in the dark].. optic nerves pulsing
18:52:19 <qfr> ais523 that one sounds alarming
18:52:32 <itidus20> chattering teeth
18:52:42 <qfr> I don't know the state of the Java language standard
18:52:54 <ais523> qfr: people have been pointing out how Oracle would be sued to oblivion if they actually won it, by the inventors of SQL :)
18:53:06 <itidus20> zipping sound, huddled up under blanket
18:54:37 -!- coppro has quit (Quit: Lost terminal).
18:55:13 <ais523> ais523 is not in the sudoers file. This incident will be reported.
18:55:19 <ais523> hmm, seems it was set up to use su instead…
18:55:37 <qfr> I must admit I never use su
18:55:40 <qfr> Nor sudo
18:55:49 <qfr> I tend to have a separate root shell
18:55:55 <qfr> And when I no longer need it I just exit
18:55:59 <ais523> well I only just hired this server
18:56:02 <qfr> Wait, in X I need a su for that, though
18:56:15 <ais523> and I'm trying to figure out how I get a root shell on it
18:56:17 <itidus20> i heard that Maybe from Haskell is a copyright infringement
18:56:27 <qfr> itidus20 lol
18:56:39 <qfr> How so?
18:56:40 <ais523> feels /really weird/ working at a root shell, but I need to to set up sudo
18:56:52 <qfr> What's wrong with a root shell?
18:56:52 <itidus20> i wouldn't know what it is though.. just a word i keep hearing here
18:57:06 <ais523> just I'm not used to them, and don't like doing stuff that doesn't need root at them
18:57:20 <itidus20> basically since microsoft isn't selling any haskell interpreters they decided to destroy haskell
19:00:03 -!- pikhq has quit (Ping timeout: 245 seconds).
19:00:03 <itidus20> im just in a mood
19:00:06 -!- pikhq_ has joined.
19:00:16 <ais523> oh, that's interesting
19:00:21 <ais523> I need to "sg admin" before I can use sudo
19:00:21 <itidus20> i'll try to cool off
19:00:26 -!- itidus20 has left ("Leaving").
19:00:27 <ais523> I like that, in a way, it's a nice security feature
19:00:56 <elliott> ais523: stop using sg(1)
19:01:05 <ais523> haha :)
19:01:09 <elliott> anyway, that's just a bug in the default installation; admin accounts should be in the admin group
19:01:26 <elliott> (not that i would expect anything different from a VPS provider messed up enough to meet your requirements...)
19:01:26 <ais523> I agree it is
19:01:42 -!- augur has joined.
19:02:08 <ais523> oh, /now/ they tell me
19:02:10 <ais523> "once you have connected to your server, you must use the 'su -' command to switch to root on your server."
19:02:34 <ais523> now I need to work out what locales are installed, if any
19:02:37 <ais523> I'll just use C, I guess
19:03:47 <ais523> next thing is to remove root's password
19:03:54 <elliott> sudo passwd -d root
19:03:55 <elliott> sudo passwd -l root
19:04:09 <elliott> (I have forgotten the -l before...)
19:05:11 <ais523> I just used the -l
19:05:20 <elliott> ais523: that doesn't remove root's password!
19:05:26 <ais523> well, OK
19:05:33 <ais523> but it does make it unusable, which is what I wanted
19:06:09 <ais523> huh, this thing didn't have any sort of firewall
19:06:16 <ais523> or at least, iptables wasn't installed
19:06:33 <ais523> presumably there's a hardware firewall, but they'd have no idea how I'd want it configured, so it's probably quite permissive
19:07:59 <elliott> or it blocks tons of things because they don't want to deal with irc dcc bots and the like
19:09:23 <nortti> it it specified where the head has to be on the tape at the start of execution of P'' program?
19:10:41 <ais523> oh come on, the kernel modules they provide are for a different kernel than the kernel they provide
19:10:56 -!- oerjan has joined.
19:11:49 <ais523> and the advice for updating them involves wgetting stuff to the root dir
19:22:57 <ais523> elliott: what file contains the list of modules you want the server to load during startup?
19:23:29 <elliott> ais523: /etc/something
19:23:37 <elliott> ais523: there are command-line tools to manipulate it, I think
19:24:00 <ais523> aha, /etc/modules
19:25:38 <elliott> "The entire park is within the jurisdiction of the United States District Court for the District of Wyoming, causing it to be the only federal court district that includes portions of more than one state (Idaho, Montana and Wyoming). Law professor Brian C. Kalt has argued that it may be impossible to impanel a jury in compliance with the Vicinage Clause of the Sixth Amendment for a crime committed solely in the unpopulated Idaho portion of the pa
19:25:38 <elliott> rk (and that it would be difficult to do so for a crime committed solely in the lightly-populated Montana portion).[121] One defendant accused of a wildlife-related crime in the Montana portion of the park attempted to raise this argument.[122] He eventually pleaded guilty.[123]"
19:26:09 <elliott> THANKS FOR NOTHING, BRIAN C. KALT!
19:26:45 <ais523> that's obvious, you have to plead guilty because pleading not guilty would lead to a paradox
19:31:26 <nortti> elliott: quick and dirty P'' implementation in python with head starting at the rightmost cell: http://db.tt/dCaSNFT8
19:31:50 <nortti> written on a cellphone
19:32:09 <elliott> print str(mem[:memp])+str(mem[memp:])
19:32:12 <elliott> err, isn't that just print str(mem)?
19:33:22 <nortti> no. it shows sonething like [0][1,0], so you cam see where head was at the end
19:33:33 <nortti> *can
19:34:00 -!- oerjan has quit (Quit: Lost terminal).
19:34:28 <nortti> *sonething
19:35:47 <nortti> elliott: Does the lambda seem ok or did iit result on mojibake along the way
19:36:15 <nortti> s/seem ok/look normal/
19:36:16 <elliott> They don't render properly here, alas.
19:36:32 <ais523> anyway, this server also does ipv6, which is nice
19:39:32 <elliott> linode does v6 too
19:41:09 <ais523> more than half of hosting companies do nowadays, I think
19:41:13 -!- augur has quit (Read error: Connection reset by peer).
19:41:17 -!- augur has joined.
19:41:24 <ais523> which is good, because hopefully eventually the world will be v6-capable without ridiculous hoops to jump through
19:43:16 <nortti> "When you log into a unix machine you can finger your friends. You can also get head, and get tail (of a file), take a dump, or mount something (a drive). You may also fsck your drive"
19:44:34 -!- zzo38 has joined.
19:45:24 <nortti> `quote
19:45:26 <HackEgo> 323) <Gregor> I use LiGNUXFCE+apps <Gregor> That's pronounced by saying "Linux" and then vomiting, btw.
19:45:36 <nortti> `quote
19:45:39 <HackEgo> 674) <elliott> Magnetic butterfly is slower than cat and restarting if you make a mistake is slower than vi is slower than mind-reading.
19:45:57 <nortti> `quote
19:46:00 <HackEgo> 424) <zzo38> Sanity is insufficient by itself. Many other things are also important.
19:46:06 <nortti> `quote
19:46:09 <HackEgo> 199) <Zuu> it seems that CUIL is dead
19:46:13 <nortti> `quote
19:46:16 <HackEgo> 45) <Deewiant> Reality isn't a part of physics
19:46:21 <ais523> elliott: bleh, I misread 674 as being from zzo38, that would have made it so much better
19:46:39 <ais523> 199 is the worst one there, easily
19:46:44 <ais523> the others are all pretty good
19:47:03 <nortti> is 674 reference to that xkcd comic
19:47:58 <ais523> nortti: yes, or probably said in response to a mention of the comic
19:49:17 <elliott> back
19:49:33 <elliott> nah, I wasn't referencing xkcd
19:49:40 <elliott> I was replying to other people who were
19:49:42 <elliott> (in part)
19:49:52 <elliott> `delquote 199
19:49:56 <HackEgo> ​*poof* <Zuu> it seems that CUIL is dead
19:51:09 <elliott> ais523: did you see a few days ago? Zuu made the most ineffectual ragequit ever
19:51:09 <ais523> elliott: it does indeed look more like a reference to an xkcd reference, rather than the reference itself
19:51:16 <ais523> no, I didn't see it
19:52:04 <elliott> he spent about ten minutes asking if we ever talked about anything other than haskell here, and got the reply "yes", and I gave him specific log links showing so; then he said he just wanted confirmation that we didn't so he could leave without tarnishing his reputation as someone who likes programming languages
19:52:08 <elliott> then... left anyway
19:54:41 <RocketJSquirrel> Hahaha I deleted 3GB of PHP session files X_X
19:54:48 <elliott> RocketJSquirrel: hater
19:54:52 * elliott hecks RocketJSquirrel's aim
19:54:53 -!- derdon has quit (Remote host closed the connection).
19:55:07 -!- elliott has quit (Quit: aim hecking backfired).
19:55:35 <nortti> -rwxr-xr-x 1 root 24 Oct 29 1929 /bin/ed
19:56:11 -!- coppro has joined.
19:56:12 <ais523> 1929?
19:56:14 <ais523> wow
19:56:45 <ais523> for both creation yeat /and/ filesize
19:57:04 <nortti> I just love making my filesystem look screwy
19:57:56 -!- elliott has joined.
19:58:03 -!- elliott has quit (Changing host).
19:58:03 -!- elliott has joined.
19:58:58 <nortti> (that is not the real ed. it is just shell script running /usr/bin/busybox ed)
19:59:27 <nortti> *that runs
19:59:35 <ais523> nortti: why shellscript? you can just symlink it to busybox, can't you?
19:59:50 <ais523> busybox looks at the name it was run under to figure out what to do
20:00:20 <ais523> oh, but then you wouldn't be able to get the screwy date, unless you screwed up busybox's date
20:00:40 <nortti> but then I woildn't get that filesize. I wanted it to match gnu's ed joke
20:00:55 <nortti> *wouldn't
20:01:01 <ais523> oh, I don't know the specific joke
20:01:22 <elliott> it's not "gnu's" joke
20:02:36 <nortti> I found it on gnu.org/fun site
20:02:53 <nortti> -site
20:03:09 <nortti> http://www.gnu.org/fun/jokes/ed.msg
20:04:19 <shachaf> elliott: how predictable !
20:04:49 <elliott> nortti: by that metric, most sites I visit belong to google
20:05:59 <nortti> does google host those sites under it's own domain?
20:06:20 <shachaf> elliott: Did you know dons gave an incorrect answer to my question?!
20:06:27 <shachaf> elliott: And that I didn't phrase my question title as a question?
20:06:32 <shachaf> elliott: Also, the question body.
20:08:00 <elliott> shachaf: Anyway, with the Typeable constraint it's pretty trivial to do.
20:08:07 <elliott> Will you give me "the reps" if I give the obvious answer for that?
20:08:15 <shachaf> elliott: Trivial as in MemoCombinators style?
20:08:28 <nortti> !bfjoust perkele [+.]
20:08:34 <elliott> shachaf: Yes. Or uglymemo style.
20:08:37 <EgoBot> ​Score for nortti_perkele: 18.9
20:08:43 * elliott starts writing.
20:08:44 <shachaf> uglymemo = unsafePerformIO?
20:08:57 <shachaf> elliott: Did you see augustss's answer?
20:08:58 <nortti> !bfjoust perkele [+]
20:09:01 <EgoBot> ​Score for nortti_perkele: 18.4
20:09:02 <shachaf> augustss = the best
20:09:05 <nortti> !bfjoust perkele [+.]
20:09:08 <elliott> http://hackage.haskell.org/package/uglymemo
20:09:09 <EgoBot> ​Score for nortti_perkele: 18.9
20:09:13 <elliott> shachaf: augustss did not leave an answer.
20:09:20 <nortti> !bfjoust perkele [.+]
20:09:24 <EgoBot> ​Score for nortti_perkele: 18.9
20:09:30 <nortti> !bfjoust perkele [.+.]
20:09:34 <EgoBot> ​Score for nortti_perkele: 17.6
20:09:40 <nortti> !bfjoust perkele [.+.+]
20:09:44 <EgoBot> ​Score for nortti_perkele: 20.3
20:09:45 <shachaf> elliott: The answer is "no". – augustss 12 hours ago
20:09:52 <nortti> !bfjoust perkele [.+.+.+]
20:09:55 <shachaf> THAT LOOKS LIEK AN ANSWER TO ME
20:09:56 <EgoBot> ​Score for nortti_perkele: 18.5
20:10:05 <shachaf> THE WORD ANSWER IS IN IT
20:10:05 <shachaf> QED
20:10:21 <nortti> !bfjoust perkele [.+.+][.+.+]
20:10:25 <EgoBot> ​Score for nortti_perkele: 20.8
20:10:38 * elliott decides answering shachaf's question will be more pain than it's worth.
20:10:53 <shachaf> OK!
20:10:59 <shachaf> I'm glad I won't have to give you all that karma.
20:11:03 <zzo38> Do you left-align the convenience amount on your cheques for security purposes?
20:11:08 <nortti> !bfjoust perkele [.+.+][.+.+][.+.+]
20:11:12 <EgoBot> ​Score for nortti_perkele: 20.8
20:11:47 <shachaf> zzo38: Which part is the convenience amount?
20:13:33 <elliott> > typeOf (undefined :: TypeRep)
20:13:34 <lambdabot> TypeRep
20:14:03 <shachaf> elliott: I like how 5 people upvoted dons's answer.
20:14:12 <zzo38> shachaf: The part in digits near the date.
20:14:27 <shachaf> Probably because he's dons. :-(
20:14:31 -!- augur_ has joined.
20:14:38 -!- augur has quit (Read error: Connection reset by peer).
20:15:15 <shachaf> zzo38: I usually left-align it out of habit.
20:15:21 <ais523> wow, I requested 16GB of storage, they gave me 16GiB
20:15:21 <zzo38> The bank has told me that cheques are valid for six months from the date written on there, so sometimes I enter dates five months in the past to give the recipient only one month to deposit it.
20:15:27 <ais523> that's… uncharacteristically nice of someone to do that
20:15:30 <shachaf> I don't expect much security on my cheques.
20:15:45 <shachaf> ais523: Was it RAM?
20:15:51 <ais523> shachaf: no, disk space
20:16:03 <ais523> 16GB of RAM would be rather expensive to hire
20:16:19 <elliott> $639.95/mo from Linode.
20:16:33 <ais523> indeed, that seems about right
20:16:41 <shachaf> That soudns rather expensive.
20:16:53 <ais523> I'm not surprised that there are people prepared to offer that much, but it is a bit large
20:16:56 <shachaf> You can buy 16GB of RAM for your computer for much less than that.
20:16:57 <elliott> shachaf: Actually, this is a pain.
20:17:07 <shachaf> elliott: What's a pain?
20:17:10 <elliott> No, wait, got it.
20:18:10 <elliott> No, wait, haven't.
20:18:18 <shachaf> Got what?
20:18:26 <elliott> shachaf: There's no function ((Typeable a) => a -> TypeRep -> Dynamic) that casts the argument to that TypeRep.
20:18:53 <elliott> So you can't write read' :: String -> TypeRep -> Dynamic.
20:18:55 <zzo38> shachaf: Cheques do not really have a lot of security, but I make it secure with what I have, by left-aligning the convenience amount, putting bars on both sides of the legal amount, etc. I do have the idea better system for cheques security, which involves a digital signature, which can optionally be encrypted with the public key of the recipient too.
20:18:59 <elliott> Actually, wait, that wouldn't even work.
20:19:08 <elliott> Oh, I know what would.
20:19:13 <elliott> Wait, no, even that wouldn't work.
20:19:16 <shachaf> zzo38: You should make your cheques secure Knuth-style.
20:19:22 <elliott> shachaf: It's impossible without writing a new typeclass.
20:19:25 <ais523> OK, seems that iptables doesn't block connections from localhost
20:19:36 <shachaf> elliott: It is?
20:19:36 <ais523> either that, or ufw's setup for it specifically allows those
20:19:39 <ais523> that makes sense, really
20:20:01 <elliott> shachaf: I get the feeling you already know the answer to the question.
20:20:15 <shachaf> elliott: It doesn't *sound* like it should require a new type class.
20:20:29 <shachaf> Can't you just use Read?
20:20:40 <elliott> No.
20:21:00 <shachaf> Why not?
20:21:00 <zzo38> Will something like the way NodeClass in dvi-processing is implemented, work for what you are trying to make?
20:22:18 <shachaf> elliott: I TOTALLY JUST SHOWED DONS, MAN
20:24:38 -!- nortti has quit (Quit: nortti).
20:29:30 <elliott> shachaf: You can't do it because you can't write:
20:29:35 <elliott> foo :: (forall a. (Read a, Typeable a) => TypeRep -> a) -> (forall a. (Read a, Typeable a) => a)
20:29:39 <elliott> because the forall and constraints float up.
20:30:18 <elliott> Or, hmm.
20:30:45 <elliott> Yes, you can.
20:31:48 <elliott> shachaf: http://sprunge.us/CHSj
20:32:00 <elliott> shachaf: This works, but I bet it doesn't actually memoise.
20:32:16 <elliott> Because (memo (...)) is under an invisible lambad.
20:32:18 <elliott> *lambda.
20:33:46 <elliott> shachaf: Yes, it's impossible because you want a quantifier-less version to memoise, but since read's return type has to be known at use (unless it's in a type-lambda), you can't make such a version.
20:36:31 <elliott> I found the least-helpful kind tutorial ever: http://www.reddit.com/r/haskell/comments/scagx/understanding_haskell_kinds/c4czblv?context=1
20:38:45 <shachaf> elliott: Right, yours doesn't memoize.
20:39:17 <elliott> shachaf: <elliott> shachaf: Yes, it's impossible because you want a quantifier-less version to memoise, but since read's return type has to be known at use (unless it's in a type-lambda), you can't make such a version.
20:39:37 <elliott> (And you want a quantifier-less version to memoise because any quantifier will mean you'll end up stuck under a type-lambda, defeating the memoisation.)
20:40:19 <elliott> You *might* be able to create the mutable memo-table outside of the type lambda... but it'll be very ugly and unsafePerformIOy.
20:40:45 <shachaf> Right, that's the sort of think I was thinking about doing now...
20:41:39 <elliott> shachaf: Actually, I can imagine a pure memoisation solution working... but it would be a pain to set up, because TypeRep is abstract.
20:42:06 <shachaf> elliott: You mean an infinite-trie style thing?
20:42:07 <elliott> Actually, that wouldn't work.
20:42:17 <elliott> I was thinking: Construct the infinite trie from the TypeReps, guarding each element behind a ReadVal.
20:42:21 <elliott> But then each individual element won't be shared.
20:42:28 <shachaf> "guarding"?
20:42:51 <elliott> Well, you can't have InfiniteTree (forall a. (Show a, Typeable a) => a).
20:42:58 <elliott> So you need to stuff it into something monomorphic.
20:43:45 <elliott> shachaf: Anyway, let me try something.
20:44:37 -!- augur_ has quit (Remote host closed the connection).
20:45:57 <elliott> shachaf: No dice.
20:46:01 <elliott> Actually...
20:46:28 <elliott> Yeah, nope.
20:46:38 <elliott> shachaf: The memotable still has to contain the polymorphic thing at the leaves.
20:46:50 <shachaf> elliott: Right, but it'll only be used monomorphically.
20:46:55 <elliott> shachaf: It doesn't matter.
20:47:00 <shachaf> If I understand what you mean.
20:47:06 <shachaf> Which part doesn't matter?
20:47:10 <elliott> It doesn't matter how you'll use it.
20:47:18 <elliott> You stuff it in ReadVal and the sharing is instantly gone because it's a lambda.
20:47:27 <elliott> So putting it in a memotable does absolutely nothing.
20:47:33 <RocketJSquirrel> What should I Android on my Android ...
20:47:34 <elliott> You're just storing lambdas in a tree.
20:47:37 <elliott> You still pay the cost every time.
20:47:49 <shachaf> elliott: It's in a lambda, but that doesn't mean it has to be doing the Read.
20:47:55 <elliott> If you could store it in an existential, it'd work; but you can't, because you don't know what type you're using read's result as.
20:47:59 <elliott> Because TypeRep is runtime information.
20:48:01 <shachaf> It's in a (TypeRep,String -> a) lambda.
20:48:12 <elliott> No, that's a different lambda.
20:48:17 <elliott> I'm talking about the result you get back from read.
20:48:23 <elliott> That's in a type lambda.
20:48:27 <shachaf> Ah.
20:48:39 <elliott> And you can't apply it, because all you have is a TypeRep, which is not actually a type.
20:48:39 <shachaf> Well, yes, but when you actually look at this result... Hmm.
20:48:42 <elliott> What you'd need is:
20:48:56 <elliott> mkDynamicWithThisType :: (forall a. (Typeable a) => a) -> TypeRep -> Dynamic
20:49:04 <elliott> which would apply the type the TypeRep represents to the type-lambda and stuff it in a Dynamic.
20:49:09 <elliott> But that's not possible to write.
20:49:23 <elliott> There's no fundamental reason you *couldn't* do this; it's just that you can't with GHC.
20:49:58 <elliott> shachaf: Have I convinced you yet?
20:50:02 <shachaf> No.
20:50:06 <elliott> *sigh*
20:50:10 <elliott> You're like that STM guy.
20:50:15 <shachaf> elliott: Given how many times you've gone back and forth yourself on it...
20:50:32 <elliott> shachaf: Yes, but now I know why none of the solutions can possibly work.
20:51:11 <elliott> OK, wait.
20:51:15 <elliott> (Argh, I just went back again.)
20:51:20 <shachaf> elliott: What about something like your/edwardk's reflection-hack?
20:51:29 <elliott> But I got An Idea.
20:51:37 <elliott> shachaf: Doubt it.
20:51:37 <shachaf> I knew it would happen.
20:51:50 <shachaf> elliott: Doesn't that let you provide a new Read dictionary that can cheat?
20:51:59 <shachaf> I didn't actually look at that very closely.
20:52:08 <shachaf> Oh, no, it doesn't really.
20:52:41 <zzo38> These are a few of things stupid with Haskell, so we should make Ibtlfmm it does better. If you want to control such optimization things as memoization more precisely, you could use inline LLVM codes, and attribute pragmas attached to function to control many things if needed
20:53:20 -!- zzo38 has quit (Remote host closed the connection).
20:53:44 <elliott> @hoogle fromDyn
20:53:44 <lambdabot> Data.Dynamic fromDyn :: Typeable a => Dynamic -> a -> a
20:53:44 <lambdabot> Data.Dynamic fromDynamic :: Typeable a => Dynamic -> Maybe a
20:55:39 <elliott> shachaf: http://sprunge.us/BIXA
20:55:54 <elliott> That works.
20:56:17 <elliott> The trick was to skip the TypeRep -> part (that's still impossible for the reasons I said).
20:56:27 <elliott> Construct the TypeRep from *inside* the type-lambda, but with a reference to a memotable from *outside* it.
20:57:28 -!- MDude has quit (Read error: Connection reset by peer).
20:57:43 -!- MDude has joined.
20:57:45 <shachaf> Could not deduce (Data.Hashable.Hashable TypeRep)
20:58:16 -!- Patashu has joined.
20:59:07 <elliott> shachaf: Upgrade GHC.
20:59:10 <elliott> Or use a Map instead.
20:59:13 <elliott> Erm.
20:59:15 <elliott> Upgrade hashable, rather.
20:59:32 -!- kmc_ has joined.
20:59:46 <elliott> You need GHC 7.0.2 or above for it, thogh.
20:59:47 <elliott> *though
20:59:53 -!- asiekierka has quit (Remote host closed the connection).
21:01:06 <shachaf> I upgraded Hashable and it's not using the new one.
21:01:08 <shachaf> hlep,a
21:02:03 <elliott> Upgrade unordered-containers.
21:02:17 <elliott> (Don't you wish GHC had runtime linking?)
21:02:32 <shachaf> Ooh, fun:
21:02:38 <shachaf> hi monqy
21:02:38 <shachaf> Hi
21:02:38 <shachaf> Q: impossible
21:02:48 <shachaf> Oh, wait.
21:02:48 <elliott> Have I mentioned that
21:02:50 <elliott> -- The general contract of 'hash' is:
21:02:50 <elliott> --
21:02:50 <elliott> -- * This integer need not remain consistent from one execution
21:02:50 <elliott> -- of an application to another execution of the same
21:02:50 <elliott> -- application.
21:02:51 <elliott> is evil?
21:02:57 <shachaf> The "impossible" was yours.
21:03:04 <shachaf> I thought it came from GHC. :-(
21:03:05 -!- kmc has quit (Ping timeout: 260 seconds).
21:03:28 <shachaf> I'm using it as the same type.
21:03:34 <elliott> What?
21:03:43 <shachaf> I'm using it as the same type.
21:03:47 <elliott> Are you just babbling?
21:03:55 <elliott> Your last 9 messages have made no sense.
21:03:59 <shachaf> I'm trying your code and it's broken.
21:04:01 -!- kmc_ has changed nick to kmc.
21:04:21 <shachaf> fromDyn is failing.
21:04:29 <elliott> Hmm.
21:04:31 <elliott> Let me take a look.
21:05:02 <shachaf> data Hi = Hi deriving (Show,Typeable)
21:05:02 <shachaf> instance Read Hi where readsPrec _ _ = trace "hi monqy" [(Hi,"")]
21:05:13 <shachaf> let i = mkReadVal "hi"
21:05:13 <shachaf> let (ReadVal x) = i
21:05:13 <shachaf> print (x :: Hi)
21:05:13 <shachaf> print (x :: Hi)
21:05:13 <shachaf> print (x :: Hi)
21:05:22 <elliott> @hoogle fromDyn
21:05:23 <lambdabot> Data.Dynamic fromDyn :: Typeable a => Dynamic -> a -> a
21:05:23 <lambdabot> Data.Dynamic fromDynamic :: Typeable a => Dynamic -> Maybe a
21:05:46 -!- nortti has joined.
21:05:53 <elliott> I don't see why it's saying "impossible".
21:06:16 <elliott> *Main> applyMkReadVal foo :: Int
21:06:16 <elliott> 42
21:06:16 <elliott> *Main> applyMkReadVal foo :: Int
21:06:16 <elliott> *** Exception: impossible
21:06:20 <elliott> There's only one possible TypeRep key in the map.
21:06:23 <elliott> So how can they fail to match?
21:06:39 <elliott> 02:34:54 <ursthegiz> I would be interested in jour opinions on Frege, is it an enrichment, or do you consider it as not so important?
21:06:40 <elliott> 02:37:14 <merijn> ursthegiz: I've never heard his name before (well, that's not true, I heard it once before), so while he may have had an important influence it was apparently not big enough to feel that I should be reading his work rather than later work based on it
21:06:42 <elliott> -- #haskell
21:07:33 <nortti> `which quote
21:07:36 <HackEgo> ​/hackenv/bin/quote
21:08:07 <shachaf> elliott: They're the same type.
21:08:11 <shachaf> Why isn't it working. :-(
21:08:14 <elliott> shachaf: Let me test something.
21:08:16 <nortti> `ls /hackenv
21:08:19 <HackEgo> UNDELETE.EXE \ bin \ canary \ karma \ lib \ monqy \ paste \ quotes \ share \ wisdom
21:08:25 <shachaf> elliott: Wait, did you just forget to do the memoization bit?
21:08:30 <nortti> `ls /hackenv/bin
21:08:33 <HackEgo> ​? \ @ \ No \ WELCOME \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ hatesgeo \ json \ k \ karma \ karma+ \ karma- \ learn \ log \ logurl \ macro \ marco \ ok \ paste \ pastekarma \ pastelog \ pastelogs \ pastenquotes \ pastequotes \ pastewisdom \ pastlog \ ping \ prefixes \ qc \ quote \ quotes \ roll \ searchlog \ toutf8 \ translate \ translatefromto \ translateto
21:08:35 <shachaf> Oh, never mind.
21:08:52 <elliott> `rm UNDELETE.EXE
21:08:53 <elliott> `? No
21:08:54 <HackEgo> No output.
21:08:56 <HackEgo> No? ¯\(°_o)/¯
21:09:03 <elliott> shachaf: Oh, hmm.
21:09:08 <nortti> `ok
21:09:11 <HackEgo> ​^ul (?so `ok fdhsfdsgdsg: 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)S
21:09:12 <ion> `ls /hackenv/bin | tr a-zA-Z n-za-mN-ZA-M
21:09:15 <HackEgo> ls: cannot access /hackenv/bin | tr a-zA-Z n-za-mN-ZA-M: No such file or directory
21:09:43 <elliott> `rm bin/ok
21:09:45 <shachaf> elliott: Oh...
21:09:45 <HackEgo> No output.
21:09:49 <elliott> shachaf: What?
21:09:52 <elliott> My "oh" was wrong.
21:09:53 <elliott> ion: try `run
21:09:59 <shachaf> elliott: You forgot a "return"
21:10:05 <shachaf> It works now.
21:10:07 <nortti> `run ls /hackenv/bin | tr a-zA-Z n-za-mN-ZA-M
21:10:10 <HackEgo> ​? \ @ \ Ab \ JRYPBZR \ nqqdhbgr \ nyydhbgrf \ pnyp \ qrsvar \ qrydhbgr \ rglzbybtl \ sbetrg \ sbeghar \ sevax \ tbbtyr \ ungrftrb \ wfba \ x \ xnezn \ xnezn+ \ xnezn- \ yrnea \ ybt \ ybthey \ znpeb \ znepb \ cnfgr \ cnfgrxnezn \ cnfgrybt \ cnfgrybtf \ cnfgradhbgrf \ cnfgrdhbgrf \ cnfgrjvfqbz \ cnfgybt \ cvat \ cersvkrf \ dp \ dhbgr \ dhbgrf \ ebyy \ frnepuybt \ gbhgs8 \ genafyngr \ genafyngrsebzgb \ genafyngrgb
21:10:12 <shachaf> return (fromDyn ...)
21:10:17 <elliott> shachaf: Oh.
21:10:19 <shachaf> Its type was being inferred as IO a
21:10:28 <nortti> `which cc
21:10:30 <HackEgo> ​/usr/bin/cc
21:10:34 <elliott> shachaf: If I post this to SO, will you accept it?
21:10:46 <ion> `run ls /hackenv/bin | perl -CS -Mutf8 -pwe 'y/!-~/!-~/; y/ / /'
21:10:50 <HackEgo> ​? \ @ \ No \ WELCOME \ addquote \ allquotes \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ hatesgeo \ json \ k \ karma \ karma+ \ karma- \ learn \ log
21:10:52 <nortti> `file /usr/bin/cc
21:10:55 <HackEgo> ​/usr/bin/cc: symbolic link to `/etc/alternatives/cc'
21:11:03 <shachaf> elliott: If nothing better comes along... :-(
21:11:17 <shachaf> elliott: I mean, it does what I wanted.
21:11:19 <nortti> `file /etc/alternatives/cc
21:11:22 <HackEgo> ​/etc/alternatives/cc: symbolic link to `/usr/bin/gcc'
21:11:33 <elliott> shachaf: Why do you want this, anyway?
21:11:46 <shachaf> elliott: I don't. I think it's a bad idea.
21:12:00 <elliott> Rephrase: Why did you ask the question, anyway?
21:12:12 <shachaf> elliott: By the way, any reason you're not using UglyMemo instead of doing it yourself?
21:13:03 <elliott> shachaf: Because you can't use UglyMemo for the exact reason I told you earlier.
21:13:15 <elliott> It would make the memo table _inside_ the ReadVal.
21:13:43 <shachaf> Ah, yes.
21:13:52 <shachaf> Which is why you need the ReadVal type in the first place.
21:14:07 <shachaf> Rather than just :: -> Read a => Typeable a => a
21:15:06 <shachaf> elliott: *Could* you do it and return a value :: (Read a, Typeable a) => a?
21:17:11 <shachaf> elliott: (I don't think anything better is likely to come along, by the way.)
21:17:17 <elliott> shachaf: Posted.
21:17:20 <elliott> Also, could you do what?
21:18:09 <shachaf> Instead of returning a ReadVal, return a straight polymorphic value.
21:18:21 <elliott> Yes, that would work.
21:18:22 <elliott> Do you want me to?
21:18:41 <shachaf> Well, it seems nicer not to have a ReadVal if you don't need one.
21:19:01 <shachaf> How would you do it?
21:19:33 <elliott> Oh wait, I just did that and it broke it.
21:19:57 <elliott> (Obviously, in retrospect.)
21:19:59 <elliott> shachaf: No, you can't do it.
21:20:02 <elliott> GHC always floats everything left.
21:20:07 <elliott> shachaf: However,
21:20:13 <elliott> let foo = mkReadVal "blah"
21:20:18 <elliott> in foo `seq` useReadVal foo
21:20:21 <elliott> should be OK to use polymorphically.
21:22:20 <shachaf> Do you even need the foo `seq`?
21:23:09 <elliott> shachaf: I'm not sure.
21:23:12 <elliott> But it's harmless at worst.
21:23:48 <shachaf> I don't like dons's answer. :-(
21:23:50 <elliott> shachaf: By the way, I don't like how augustss posts answers as comments. :(
21:23:52 <elliott> Ooh!
21:23:54 <elliott> Simultani-complaint!
21:23:59 <shachaf> He's in pattern-matching mode.
21:24:02 <elliott> *SLIGHTLY ABOVE-AVERAGE FIVE*
21:24:15 <shachaf> I hope your answer gets upvoted above his.
21:24:15 <elliott> *BEGINNING-TO-HALLUCINATE FIVE*
21:24:22 <elliott> shachaf: I almost downvoted his.
21:24:30 <elliott> But then I was all "that will cost me *one* *rep* *point*".
21:24:38 -!- augur has joined.
21:24:55 <shachaf> Would it cost *me* that?
21:25:00 <shachaf> I have ~0 rep points.
21:25:03 <elliott> Yes.
21:25:08 <elliott> But don't do that.
21:25:09 <elliott> It'd be Rude.
21:25:16 <elliott> http://stackoverflow.com/tags/haskell/topusers ;; I hate dons too.
21:25:54 <augur> dons hasnt been on irc in like 90 days :(
21:26:22 <shachaf> elliott: If augustss posted answer as answers, he'd get infini-karma.
21:26:27 <shachaf> So he's doing it for your sake.
21:26:53 <ais523> hmm, any idea why rsyslogd is running at nearly 100% CPU?
21:27:39 <shachaf> elliott: You may not like dons, but surely you like cmccann, right?
21:28:18 <ais523> and if I kill it, another rsyslogd spawns that runs at nearly 100% CPU
21:29:22 <shachaf> 14:28 < aiju> legal language is so fucked up, it's like C++++
21:29:58 <kmc> :3
21:30:29 <shachaf> Do you have a hilight on C++?
21:33:14 <kmc> no
21:34:15 <shachaf> elliott: Er, I think your code is broken.
21:34:16 <nortti> `pastefortunes
21:34:20 <shachaf> mkReadVal :: (Read a, Typeable a) => String -> ReadVal
21:34:22 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7097
21:37:01 <nortti> my own hackego command that is a hackish oneliner
21:37:06 <nortti> `pastefortunes
21:37:12 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.16622
21:37:20 <ais523> oh, haha, perhaps the amount of CPU time that /exists on the system/ is only the amount being used?
21:38:38 <ais523> `fortune
21:38:41 <HackEgo> A man may be so much of everything that he is nothing of anything. \..-- Samuel Johnson
21:39:10 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.88.2 [Firefox 11.0/20120312181643]).
21:40:13 <nortti> " sadist is a masochist who follows the Golden Rule."
21:45:55 -!- nortti has quit (Quit: qq).
21:46:50 <elliott> shachaf: Oops.
21:47:23 <elliott> shachaf: Fixed.
21:47:37 <elliott> shachaf: I had an idea for getting rid of the Typeable constraint, but it didn't work. :(
21:48:11 <ais523> what port is secure smtp?
21:48:24 <elliott> @google secure smtp port
21:48:25 <lambdabot> http://www.emailaddressmanager.com/tips/mail-servers.html
21:48:26 <lambdabot> Title: Email Ports and Mail Servers
21:48:38 <elliott> It's on that page.
21:48:39 <ais523> ah, found it on Wikipedia
21:48:57 <ais523> 587
21:49:50 <elliott> <shachaf> elliott: You may not like dons, but surely you like cmccann, right?
21:49:59 <elliott> shachaf: No, he has more rep than me.
21:50:03 <elliott> Once I fix that, I'll like him.
21:53:05 -!- joo has joined.
21:55:11 <elliott> `welcome joo
21:55:14 <HackEgo> joo: 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
21:56:00 <ais523> ah, found it, it's failing to read some procfile it expects
21:56:05 <ais523> (found it by searching)
21:56:09 <shachaf> elliott: What was your idea?
21:56:17 <joo> Thank you.
21:57:13 <shachaf> I guess maybe you could do unsafe pointer comparison for the Read dictionaries, since they're going to be static anyway?
21:57:17 <shachaf> Or something along those lines?
21:59:04 <elliott> shachaf: Oh, that was my idea! Except I forgot it on the way to realising it didn't work, but it does.
21:59:07 <elliott> Not unsafe -- just StableName.
21:59:13 <elliott> Except you can just use read itself.
21:59:14 <elliott> @src Read
21:59:14 <lambdabot> class Read a where
21:59:15 <lambdabot> readsPrec :: Int -> ReadS a
21:59:15 <lambdabot> readList :: ReadS [a]
21:59:15 <lambdabot> readPrec :: ReadPrec a
21:59:15 <lambdabot> readListPrec :: ReadPrec [a]
21:59:20 <elliott> Uh, readsPrec. Whatever.
22:00:06 <shachaf> StableName?
22:00:48 <elliott> shachaf: http://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/System-Mem-StableName.html
22:00:55 <elliott> I'll update my answer for that later.
22:01:23 <shachaf> Oh, nifty.
22:01:33 <shachaf> elliott: Why aren't more people upvoting your answer. :-(
22:01:50 <shachaf> Instead of dons. Maybe you should change your name to Eliot Bruce Stewart.
22:03:01 <shachaf> elliott: How can you get a StableName for read itself?
22:03:26 <shachaf> Oh, by specializing it to :: String -> a?
22:04:29 <elliott> shachaf: Yes.
22:04:33 <elliott> shachaf: Execpt not read.
22:04:36 <elliott> It would have to be readsPrec.
22:04:40 <elliott> read isn't part of the dictionary.
22:04:55 <shachaf> Right.
22:06:12 <shachaf> Are you sure that would work?
22:06:42 <elliott> shachaf: Why wouldn't it?
22:07:27 <shachaf> Does specializing readsPrec actually give you a pointer to a static thing?
22:08:14 <elliott> shachaf: Why not?
22:08:17 -!- A5b47a346 has joined.
22:08:17 -!- A5b47a346 has quit (Excess Flood).
22:08:26 -!- Nisstyre has quit (Read error: Operation timed out).
22:09:40 -!- A4e4d63e8 has joined.
22:09:40 -!- A4e4d63e8 has quit (Excess Flood).
22:09:51 <elliott> fizzie: ^
22:09:52 <elliott> ais523: ^
22:09:57 <shachaf> Well, because _readsPrec :: _Read a -> Int -> ReadS a
22:10:03 <shachaf> Specializing it might just make a thunk.
22:10:23 -!- A4bbd0eae has joined.
22:10:23 -!- A4bbd0eae has quit (Excess Flood).
22:10:31 <elliott> shachaf: fine, read "" then
22:10:35 <elliott> and use the thunk you get
22:10:39 <elliott> hmm that won't work
22:10:42 <ais523> elliott: what's the ^ at?
22:10:47 <ais523> that person repeatedly joinparting?
22:10:55 -!- ChanServ has set channel mode: +o ais523.
22:10:55 <shachaf> elliott: Getting a guaranteed pointer to a static dictionary seems a bit tricky.
22:11:02 <shachaf> joinpartying!
22:11:02 <elliott> ais523: that *bot
22:11:05 <elliott> different nicks each time
22:11:08 -!- ais523 has set channel mode: +b *!*@cho94-8-88-178-12-119.fbx.proxad.net.
22:11:13 -!- ais523 has set channel mode: -o ais523.
22:11:20 <shachaf> Join Party!
22:11:37 -!- himonqy has joined.
22:12:00 -!- hielliott has joined.
22:12:10 -!- himonqy has quit (Client Quit).
22:12:10 -!- hielliott has quit (Client Quit).
22:13:54 <elliott> apparently that's happening in many channels
22:13:56 <elliott> with different IPs
22:14:38 -!- fizzie has quit (Ping timeout: 245 seconds).
22:17:20 <elliott> shachaf: Do you remember that time edwardk accidentally made his library give you unsafeCoerce?
22:17:54 <shachaf> No.
22:18:12 <shachaf> Which one?
22:18:17 -!- fizzie has joined.
22:18:45 <elliott> reflection
22:18:57 <elliott> "Removed the dependency on multiparameter type classes, functional dependencies, and flexible instances, by making Reifies a single parameter type class in the same fashion as ReifiesStorable." -- which meant you could reify anything as anything.
22:21:37 <shachaf> elliott: I don't see how you could do it with StableName...
22:22:17 <shachaf> Oh, I just made it work.
22:22:28 <elliott> shachaf: It's easy, no?
22:22:35 <elliott> shachaf: Hey, I was going to do it. :''(
22:22:51 <shachaf> elliott: Don't worry, you can do it with fewer unsafeCoerces than I used!
22:22:55 <shachaf> I used 4.
22:23:03 <elliott> shachaf: What?
22:23:05 <elliott> You don't need any.
22:23:07 <shachaf> Right.
22:23:16 <shachaf> Hmm, how do you do it without any?
22:23:20 <shachaf> You can't toDyn without Typeable.
22:23:35 <shachaf> Can you keep it polymorphic somehow?
22:23:55 <elliott> shachaf: Oh, hmm, good point.
22:24:03 <elliott> Well, you need at most two unsafeCoerces.
22:25:08 <shachaf> elliott: I used more unsafeCoerces for the StableName.
22:25:13 <shachaf> Because what would the StableName's type be?
22:26:03 <elliott> shachaf: hashStableName :: StableName a -> Int
22:26:09 <elliott> You key the table on the hash.
22:26:25 <elliott> (Okay, this isn't safe. :( )
22:26:36 <shachaf> Oh.
22:26:41 <shachaf> I just used it directly.
22:27:18 <elliott> Yeah, it's a bad idea, because that's not safe.
22:27:41 <shachaf> hi monqy
22:27:42 <shachaf> Hi
22:27:42 <shachaf> Hi
22:27:42 <shachaf> Hi
22:27:42 <shachaf> ho monqy
22:27:44 <shachaf> Ho
22:27:46 <shachaf> Ho
22:27:49 <shachaf> Ho
22:27:52 <shachaf> monqy = Santa Claus
22:28:18 <elliott> shachaf: Anyway, mine is arguably better, in that it doesn't need unsafeCoerce :p
22:28:24 <elliott> shachaf: Actually...
22:28:34 <elliott> I bet I could get it down to, like, one unsafeCoerce using vault.
22:29:01 <shachaf> I forgot what Vault is.
22:29:13 <shachaf> It was like an exciting underground adventure, though.
22:29:17 <shachaf> With keys and everything.
22:29:18 <elliott> http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault.html
22:29:38 <elliott> It's a heterogeneous Map with the type encoded in the keys.
22:29:54 <shachaf> Hm.
22:32:13 <shachaf> elliott: I like how fragile this is.
22:32:24 <elliott> shachaf: Eh?
22:32:38 <shachaf> I mean, maybe. Maybe not. Who knows?
22:33:02 <elliott> shachaf: How fragile what is?
22:33:05 <elliott> vault isn't fragile.
22:33:10 <elliott> It even has a pure implementation.
22:33:22 <elliott> (Okay, the pure implementation requires one unsafePerformIO, but it's really benign; not the kind you can use to unsafeCoerce.)
22:33:33 <elliott> (And you can omit the unsafePerformIO if you're OK with lookup returning in IO.)
22:33:40 <shachaf> Not vault.
22:33:45 <shachaf> The other thing.
22:33:54 <elliott> The memo thing?
22:33:57 <elliott> How's it fragile?
22:34:18 <shachaf> I don't know!
22:34:28 <shachaf> But it has three unsafeCoerces in it.
22:34:36 <elliott> Oh, *your* thing.
22:34:38 <elliott> My thing isn't fragile.
22:34:42 <shachaf> The Dynamic thing?
22:34:45 <elliott> Yes.
22:34:47 -!- Nisstyre has joined.
22:34:47 <shachaf> No, that one's probably OK.
22:34:47 <elliott> shachaf: Do you make sure to seq readsPrec first?
22:34:51 <elliott> Consider
22:35:02 <elliott> readsPrec = let mumble mumble = ... in blah `seq` \x -> ...
22:35:42 <shachaf> > let mumble mumble = 5 in mumble mumble
22:35:43 <lambdabot> 5
22:35:53 <shachaf> whoa, dude
22:37:08 <elliott> > let mumble :: (forall a. a -> b) -> b; mumble mumble = mumble mumble in mumble (const 42)
22:37:09 <lambdabot> 42
22:37:12 -!- augur has quit (Remote host closed the connection).
22:37:29 <elliott> ``Like, whoa, man.'' -- Sha Chaf
22:37:32 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `Like,: not found
22:37:34 <shachaf> elliott: Wait, why isn't that working?
22:37:39 <shachaf> data Ho = Ho deriving (Show,Typeable)
22:37:39 <shachaf> instance Read Ho where readsPrec = let x = trace "ho elliott" in x `seq` \_ _ -> trace "ho monqy" [(Ho,"")]
22:37:49 <elliott> How is it not working?
22:37:56 <shachaf> That prints "ho monqy" without printing "ho elliott" even once.
22:38:05 <elliott> Odd.
22:38:11 <elliott> Anyway, you need to evaluate readsPrec.
22:38:15 <elliott> StableNames aren't preserved over forcing.
22:38:41 <elliott> (I like the part where Haskell desperately needs an operational semantics because of IO.)
22:38:43 <shachaf> elliott: You should figure it out and add it to your SO answer!
22:39:18 <shachaf> (I like the part where OPERATIONAL SEMANTICS ARE THE DEVIL NO ONE NEEDS YOU OPERATIONAL SEMANTICS IO IS A LIE FOUR SIMULTANEOUS THREAD TICKS WITHIN A SINGLE CLOCK CYCLE.)
22:39:35 <shachaf> s/ARE/IS/
22:39:45 <shachaf> I may never get the hang of that word.
22:40:25 <elliott> shachaf: Eh? ARE was correct.
22:40:39 <elliott> Hmm, or maybe not.
22:40:52 <elliott> I like how "a <plural>" is the only way to say "an operational semantics". :(
22:41:12 <shachaf> An operational semantick.
22:41:24 <elliott> <ksf> ski, maybe is a functor, too. <ski> yes ? <ksf> that is, mapM is overkill, use fmap
22:42:07 <shachaf> elliott: I like the part where you're making fun of a person for not knowing the Haskell standard library as well as you.
22:42:35 <shachaf> (Actually you're making fun of them for being both an annoying pedant and wrong at the same time, I guess.)
22:43:04 <elliott> shachaf: I don't make fun of people for being ignorant.
22:43:16 <elliott> I make fun of people who are ignorant and act like they're not.
22:43:47 <elliott> e.g.: <ksf> but you could use the prelude sequence and fmap and not depend on Foldable.
22:44:02 <shachaf> :-(
22:44:15 <shachaf> 15:43 < ksf> yes. that's what maybetolist is for :)
22:44:41 <shachaf> elliott: Do you like the thing where someone says something and turns out to be wrong and then pretends they were saying something else all along?
22:45:12 <shachaf> I like that thing.
22:45:26 <elliott> shachaf: I think they might have been sincere about that.
22:45:31 <elliott> But it's idiotic, because maybeToList isn't in Prelude.
22:45:33 <elliott> @hoogle maybeToList
22:45:33 <lambdabot> Data.Maybe maybeToList :: Maybe a -> [a]
22:45:42 <shachaf> elliott: OK, you should get the non-Typeable version working.
22:45:49 <elliott> shachaf: Okay.
22:46:09 <shachaf> The fewer unsafeCoerces, thes more points you get.
22:47:18 <shachaf> elliott: I like how my unsafeCoerce version works even with "read" instead of "readsprec".
22:47:43 <elliott> shachaf: What? How. :(
22:47:46 <elliott> @src read
22:47:46 <lambdabot> read s = either error id (readEither s)
22:47:49 <elliott> :(
22:48:17 <shachaf> I think as far as GHC is concerned one is just as likely to work as the other.
22:48:25 <shachaf> I mean, they're both functions :: ReadDict a -> ...
22:48:43 <shachaf> There's no difference in how you use them except that one is in the dictionary. But it's still just an accessor function.
22:49:00 <elliott> shachaf: Yes, but the readsPrec in the dictionary is always at the same place.
22:49:08 <elliott> read, applied to a dictionary, is a new function each time.
22:49:29 <shachaf> readsPrec is also a new function each time?
22:49:33 <elliott> No.
22:49:35 <shachaf> Unless GHC does some clever optimization.
22:49:36 <elliott> Why would it be?
22:49:38 <elliott> The dictionary is a static object.
22:49:46 <elliott> data Foo = Foo { bar :: Int }
22:49:46 <shachaf> Right, but readsPrec is just a normal function.
22:49:54 <elliott> Is (bar x) a new Int every time you call it?
22:49:57 <elliott> For the same x?
22:50:01 <elliott> Hardly; it's the same pointer-to-Int each time.
22:50:10 <elliott> Now s/Int/TypeOfReadsPrec/, s/Foo/TheDictionary/.
22:50:16 <elliott> But: quux x = bar x + 42
22:50:21 <elliott> (quux x) is a new Int each time.
22:50:23 <shachaf> Hm.
22:50:34 <shachaf> Well, it is a new thunk each time.
22:50:37 <elliott> shachaf: Once forced.
22:50:39 <elliott> It's called sharing, dude.
22:50:58 <shachaf> elliott: So why is read working?
22:51:01 <shachaf> Riddle me that, riddler.
22:51:06 <elliott> I don't know; show me the Core.
22:51:11 <elliott> @type readsPrec
22:51:12 <lambdabot> forall a. (Read a) => Int -> String -> [(a, String)]
22:51:54 <shachaf> The Core is long.
22:52:35 <ion> The long core is long.
22:53:27 <elliott> shachaf: Use ghc-core.
22:53:36 <elliott> shachaf: Have I mentioned that I don't like how functions destroy sharing?
22:54:06 <elliott> `quote
22:54:06 <elliott> `quote
22:54:06 <elliott> `quote
22:54:07 <elliott> `quote
22:54:14 <HackEgo> 515) <Phantom_Hoover> Taneb's been hit by melancholy. <Phantom_Hoover> He didn't have any friends, fortunatel.y
22:54:26 <HackEgo> 26) SUPLENTES EN UN UNIVERSO (MUSSOLINI CUANDO CONQUISTO EL MUNDO): <ehird> i tan solo puede concluir que es defectuoso, o el mundo esta absolutamente loco. Todos a la gloria Il Duce!
22:54:27 <HackEgo> 806) <fungot> elliott: the new fnord <fungot> elliott: what is the point? nothing changed.
22:54:29 <HackEgo> 827) <shachaf> elliott: Apparently Rowan Williams is Primate of All England. <shachaf> CHECKMATE CREATIONISTS
22:54:36 <ion> No win.
22:54:42 <elliott> ion: wat
22:54:46 <shachaf> elliott: What about ghc-core?
22:54:56 <elliott> shachaf: cabal install ghc-core
22:54:59 <elliott> ghc-core myprog.hs
22:55:03 <shachaf> Yes, and?
22:55:10 <ion> The quote game: get two out of two quotes from the same person in a row.
22:55:20 <elliott> <ksf> I was rather thinking of haskell plus type-family ducktypes minus monomorphism restriction plus ghci defaulting.
22:55:20 <elliott> <elliott> ksf: "type-family ducktypes"?
22:55:23 <elliott> <ksf> class Num a b where; type NumCo a b :: *; (+) :: a -> b -> NumCo a b
22:55:34 <elliott> shachaf: Then give me the Core.
22:55:38 <elliott> It elides some crap from GHC's output.
22:55:46 <elliott> `quote
22:55:48 <elliott> (Missed one.)
22:55:49 <HackEgo> 328) <zzo38> Not all Christians are, but there are a lot of Christians that are such annoying retards.
22:56:01 <shachaf> elliott: HELP I JUST BROKE IT
22:56:01 <elliott> ais523: which one should I delete?
22:56:03 <elliott> I think 515 or 328
22:56:15 <shachaf> elliott: Wow.
22:56:21 <elliott> shachaf: What.
22:56:23 * ais523 looks
22:56:23 <shachaf> elliott: Adding some *definitions* to the file breaks it.
22:56:27 <ion> @quote
22:56:27 <lambdabot> identity says: "To " ++ (show $ log (2^1024)) ++ " and beyond!"
22:56:29 <ion> @quote
22:56:30 <lambdabot> bringert says: psicho: so you are saying that your teacher gave you two days to do an assignment in a language you didn't know?
22:56:37 <ais523> elliott: neither 515 nor 328 is funny
22:56:40 <shachaf> Wait, no it doesn't.
22:56:52 <shachaf> elliott: OK, I think this is nondeterministic.
22:56:57 <elliott> ais523: 328 was funnier when it happened because it was in response to oklopol claiming the end of it
22:57:05 <shachaf> But, uh, even so it's kind of weird.
22:57:07 <elliott> `delquote 328
22:57:11 <HackEgo> ​*poof* <zzo38> Not all Christians are, but there are a lot of Christians that are such annoying retards.
22:57:26 <elliott> `quote
22:57:29 <HackEgo> 52) <apollo> Maternal instincts? <apollo> Don't you just leave the thing in a box until it starts crying, and then shake it until it stops?
22:57:32 <elliott> `quote
22:57:33 <elliott> `quote
22:57:33 <elliott> `quote
22:57:33 <elliott> `quote
22:57:44 <HackEgo> 527) <zzo38> Pythagoras was running away and he reached a field of beans, but he didn't want to step on them so he let those guys chasing him to kill him instead.
22:57:52 <HackEgo> 489) <itidus20> It's ok guys. I am doing what I can to keep my psyche and ego surviving. All the while the threat of ww3 looms, the mortality of family and friends(loved ones?) and sooner or llater my own mortality.
22:57:53 <shachaf> elliott: Remember your Foo example?
22:57:56 <HackEgo> 168) <pikhq> Vorpal: YOU ARE AMERICAN
22:57:58 <HackEgo> 768) <monqy> kallisti: by ordered multiset did you mean: list??????
22:58:01 <elliott> shachaf: Which Foo example?
22:58:06 <shachaf> Foo { bar :: Int }
22:58:07 <shachaf> + 42
22:58:13 <elliott> Right./
22:58:17 <shachaf> elliott: For that + 42 function, sometimes I'm getting equal pointers and sometimes I'm not.
22:58:24 <elliott> `delquote 168
22:58:26 <shachaf> Without changing the code.
22:58:28 <HackEgo> ​*poof* <pikhq> Vorpal: YOU ARE AMERICAN
22:58:33 <elliott> shachaf: -fno-cse
22:58:53 <shachaf> elliott: Oh, wait, I may just have been wrong.
22:59:07 * ion chuckles at ordered multiset
22:59:07 <shachaf> That doesn't change the fact that "read" is behaving the same way.
22:59:23 <shachaf> elliott: I just got it again!
22:59:46 <elliott> :(
22:59:52 <shachaf> This is really weird.
23:00:24 <shachaf> I mean, sometimes I consistently get "hi monqy\nhi\nhi\nhi\nho monqy\nho\nho\nho\n".
23:00:32 <shachaf> And sometimes I consistently get "hi monqy" printing three times.
23:00:35 <shachaf> But I'm not changing the code!
23:00:46 <elliott> Are you recompiling?
23:00:48 <shachaf> ("ho monqy" also prints three times.)
23:00:49 <shachaf> Yes.
23:01:31 <shachaf> It's also happening with readsPrec now.
23:01:37 <elliott> :(
23:01:57 <shachaf> I just did "undo" in my editor repeatedly to get back to a state I *know* worked.
23:02:00 <shachaf> Still happening.
23:02:04 <shachaf> HLE<P,adad
23:02:23 <shachaf> elliott: Oh, wai.t
23:02:26 <shachaf> It's just -O3
23:02:38 <shachaf> I forgot to fforce-recomp when testing that hypothesis earlier.
23:02:42 <elliott> *-O
23:02:43 <elliott> *-O2
23:03:01 <shachaf> It With -O it shares, without -O it doesn't.
23:03:08 <elliott> Why are you using -O3?
23:03:10 <elliott> -O3 is -O2.
23:03:17 <shachaf> elliott: Because I was testing it, OK?!
23:03:20 <shachaf> Anyway O3 > O2
23:03:21 <shachaf> 3 > 2
23:03:32 <shachaf>
23:04:10 <shachaf> elliott: But this is true with both read and readsPrec.
23:04:30 <elliott> shachaf: But O*x = O.
23:04:34 <elliott> Don't you know basic arithmetic?
23:04:37 <elliott> Just like O(n) = O.
23:04:41 <elliott> = O(O).
23:05:42 <shachaf> > let o = fun "O" in fix o
23:05:43 <lambdabot> Ambiguous type variable `a' in the constraints:
23:05:43 <lambdabot> `GHC.Show.Show a'
23:05:44 <lambdabot> a...
23:05:47 <shachaf> > let o = fun "O" in fix o :: Expr
23:05:48 <lambdabot> O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (O (...
23:05:54 <shachaf> O, now I understand.
23:06:02 -!- Phantom_Hoover has quit (Quit: Leaving).
23:06:51 <ion> > fun "O" (fun "I" (var "C"))
23:06:52 <lambdabot> Ambiguous type variable `t' in the constraints:
23:06:52 <lambdabot> `SimpleReflect.FromExpr ...
23:06:55 <ion> > fun "O" (fun "I" (var "C")) :: Expr
23:06:55 <lambdabot> Ambiguous type variable `t' in the constraints:
23:06:56 <lambdabot> `SimpleReflect.FromExpr ...
23:06:59 <ion> meh
23:10:58 <elliott> > fun "O" (fun "I" (var "C") :: Expr) :: Expr
23:10:59 <lambdabot> O (I C)
23:12:21 <elliott> shachaf: By the way, I'm still writing my own version.
23:12:21 <elliott> 4 u
23:12:24 <shachaf> elliott: It doesn't actually matter that it behaves differently with -O!
23:12:31 -!- augur has joined.
23:12:39 <shachaf> elliott: thnx 2 u 4 thanks, hat
23:12:39 <elliott> shachaf: Wait.
23:12:42 <elliott> It can't possibly work.
23:12:51 <elliott> Wait.
23:12:57 <elliott> Yes, it can.
23:12:59 <elliott> Ignore me.
23:13:06 <shachaf> elliott: I've been ignoring you all day.
23:13:19 <shachaf> elliott: Remember how you proved to me that it's impossible and I didn't believe you?
23:14:37 <elliott> shachaf: http://sprunge.us/BWDQ
23:14:38 <elliott> Try this.
23:14:48 <elliott> Also, what I proved was impossible *was* impossible.
23:14:52 <elliott> It just wasn't quite your original question.
23:16:00 <shachaf> ?
23:16:17 <shachaf> You mean the question that wanted it done automatically through sharing?
23:16:25 <shachaf> That was just one part of the original question.
23:17:58 <elliott> No.
23:18:10 <elliott> I proved that the obvious way to construct it using memoisation on TypeRep wouldn't work.
23:19:28 <shachaf> elliott: It's because I was being silly and misusing trace.
23:20:04 <elliott> Oh, duh.
23:20:06 <elliott> I was wondering.
23:20:30 * elliott thinks it should be trace :: String -> Bool
23:20:39 <elliott> trace s = unsafePerformIO (hPutStrLn stderr s >> return False)
23:20:44 <elliott> foo _ | trace "hello!" = undefined
23:23:24 <kmc> that would be useful
23:23:52 <shachaf> You can still say trace "hello!" False
23:24:00 <shachaf> @src trace
23:24:00 <lambdabot> trace string expr = unsafePerformIO $ do
23:24:00 <lambdabot> hPutStrLn stderr string
23:24:00 <lambdabot> return expr
23:24:01 -!- elliott has changed nick to delliott.
23:24:06 -!- delliott has changed nick to elliott.
23:24:30 <shachaf> Maybe trace should be trace string = unsafePerformIO (hPutStrLn stderr string) `seq` id
23:24:38 <shachaf> That way you could use it both my wrong way and the normal way.
23:24:55 <shachaf> All in one function!
23:25:31 <shachaf> elliott: I don't like your readsPrecOf.
23:25:40 <shachaf> Maybe it's OK, though.
23:25:55 <elliott> shachaf: I wanted to avoid Data.Typeable.
23:25:58 <elliott> shachaf: Anyway, does it work?
23:26:06 <elliott> Erm.
23:26:12 <elliott> By Data.Typeable, I mean ScopedTypeVariables.
23:26:13 <ion> Hmm, that would be different from trace string x = unsafePerformIO (hPutStrLn stderr string) `seq` x.
23:26:20 <monqy> shachaf: did you give up giving up hi?
23:26:24 <shachaf> elliott: Yes, it works.
23:26:26 <monqy> I think I might give up giving up giving up hi
23:26:35 <shachaf> elliott: But it also works with readOf
23:26:42 <shachaf> monqy: No, just in code.
23:26:49 <elliott> shachaf: It shouldn't. :(
23:27:06 <elliott> ion: That's the point.
23:27:10 <shachaf> "i h8 u read stop workinn :'(" - eliot
23:27:12 <elliott> By the way, have I mentioned that seq is fucking evil?
23:27:32 <shachaf> elliott: Did you know: seq is not strict in its first argument?
23:27:42 <elliott> shachaf: Eh?
23:27:49 <shachaf> seq is a non-strict function.
23:28:04 <shachaf> That's the best thing about seq.
23:28:15 <elliott> Oh, seq _|_ = const _|_, not _|_.
23:28:20 <shachaf> Right.
23:28:27 <elliott> That's... I don't think I count that as non-strict.
23:28:33 <shachaf> What?
23:28:44 <shachaf> Strict function, n.: A function f such taht f _|_ = _|_
23:28:45 <elliott> Well, "in its first argument", so if we're talking about a two-argument seq,
23:28:48 <elliott> seq _|_ x = _|_
23:28:50 <elliott> shachaf: *that
23:28:56 <elliott> shachaf: And yes, but I think const _|_ = _|_.
23:29:03 <elliott> After all, seq is the only way you can distinguish those...
23:29:06 <shachaf> elliott: I'd agree with you, except in the presence of seq!
23:29:10 <shachaf> So ha.
23:29:19 <elliott> shachaf: seq should distinguish const _|_ and _|_. :(
23:29:27 <elliott> By applying its argument to undefined, if it's a function.
23:29:43 <shachaf> That's disgusting.
23:31:28 <shachaf> elliott: Are you going to post it?
23:32:40 <shachaf> elliott: Your solution has three unsafeCoerces. :-(
23:32:59 <ion> Only three? :-(
23:37:03 -!- azaq23 has quit (Quit: Leaving.).
23:40:46 -!- augur has quit (Remote host closed the connection).
23:48:23 -!- augur has joined.
23:48:39 <shachaf> elliott: Why does it work with read. :-(
23:48:54 <shachaf> elliott: And are you going to post it. :-(
23:49:37 <elliott> shachaf: Not until I figure out why it works with read.
23:58:24 -!- augur has quit (Remote host closed the connection).
←2012-04-15 2012-04-16 2012-04-17→ ↑2012 ↑all