←2011-12-17 2011-12-18 2011-12-19→ ↑2011 ↑all
00:00:06 <ais523> where it does two different things, and you tell it what was more like what you wanted
00:00:08 <ais523> and repeat
00:00:27 -!- olsner has quit (Ping timeout: 252 seconds).
00:00:36 <ais523> make it deterministic in how it makes suggestions, then a program would just be a chain of true and false, or first and second, or whatever
00:00:51 <Phantom_Hoover> Hmm, that reminds me somewhat of Clue.
00:01:29 <ais523> yep, but more extreme
00:01:44 <ais523> oklopol-Clue, that is
00:02:15 <itidus20> humm
00:03:02 <Phantom_Hoover> ocluepol.
00:03:46 <itidus20> i have no knowledge of Clue, that is to say I don't have a Clue
00:04:02 <itidus20> tintin joke..
00:04:37 <itidus20> better as: I haven't any knowledge of Clue, that is to say I don't have any Clue.
00:05:02 -!- olsner has joined.
00:05:50 <itidus20> with that said, the simplest form of this language would be the production of a binary sequence
00:06:37 <itidus20> A series of questions of the form (0, 1, End)
00:07:02 <itidus20> uhmm
00:07:10 <itidus20> hmm. no im missing something
00:08:15 <itidus20> default program might possibly be to do nothing at all, and then interpreter will say "is this acceptable, or do you want something better (?)
00:09:38 <itidus20> since it's not merely a sequence of 0s and 1s and is infact a program, i guess it would have to first run the program, show you the output, and then you could evaluate it
00:10:12 <itidus20> you can get a glimpse of the limitations of my intelligence here
00:12:31 <Phantom_Hoover> I think we've had a thorough, detailed examination of the limitations of your intelligence these past months.
00:12:41 <Phantom_Hoover> They're not actually as pressing as you think they are.
00:12:44 * Phantom_Hoover → sleep
00:12:45 -!- Phantom_Hoover has quit (Quit: Leaving).
00:12:59 <itidus20> the details of the problem is of course how to generate suggestions
00:14:03 <itidus20> which is equivalent to a new pascal programmer using borland graphics interface trying to create quake
00:17:36 -!- zzo38 has joined.
00:18:57 <zzo38> Should there be a class to indicate if you have a commutative applicative?
00:25:35 <kallisti> hm
00:25:41 <kallisti> zzo38: dunno
00:25:50 <kallisti> unrelated note: do paradoxes describe a computation that doesn't halt?
00:26:26 <zzo38> Yes I have thought of that too.
00:26:33 <zzo38> I don't know the answer
00:27:30 <ais523> wow, it seems that the most popular browser version now is Chrome 15
00:27:42 <ais523> IE has more share total, but no individual version of IE beats Chrome 15
00:28:53 <pikhq_> Also, the combination of Chrome and Firefox hits a majority share in the market.
00:29:51 <kallisti> ITT: great triumphs of internet history
00:30:02 <pikhq_> Which is, of course, awesome.
00:30:03 -!- pikhq_ has quit (Quit: Reconnecting).
00:34:57 -!- pikhq has joined.
00:36:27 <kallisti> pikhq: this means that being standards compliant is better than it was previously.
00:36:57 <kallisti> or rather, there's more incentive to be standards compliant.
00:37:13 -!- derdon has quit (Remote host closed the connection).
00:39:44 <kallisti> if more websites stopped being "IE-compliant" then even more people would switch over, realizing that IE is buggy.
00:40:10 <kallisti> imagine if google suddenly stopped working properly in IE. :P
00:40:25 <kallisti> (unlikely)
00:41:06 <zzo38> I have just use very simple HTML codes and often not HTML at all, and even gopher as well, it is simple to get it correct!!
00:41:58 <pikhq> kallisti: Modern IE is actually reasonable.
00:42:16 <pikhq> Not perfect, but its standard handling is not a complete joke.
00:42:40 <kallisti> pikhq: so I've heard.
00:42:56 <pikhq> zzo38: Personally, I prefer to go for fairly simple HTML5.
00:43:16 <pikhq> "Simple" meaning "there's a reasonable expectation of it functioning sanely in just about every web browser ever made".
00:44:37 <zzo38> pikhq: I will do the simple in slightly different way; don't use unnecessary commands. For example, if <EM> and <HR> is good enough, you can use that. If you need a video then you can put <VIDEO> but in general don't include the unnecessary things and expect not always working except for the basic HTML things
00:45:02 <zzo38> So that includes CSS might not be properly, images might not display, scripts might not run or might run incorrectly, etc.
00:45:11 <zzo38> Some fonts might not necessarily be installed.
00:46:16 <pikhq> zzo38: Well, that too is part of my notion of "simple", I just omitted it.
00:46:52 <pikhq> Things like CSS and images should make your content look better, but if someone uses links for browsing, it should "just work".
00:48:20 <Sgeo> I don't think that works well for YouTube. Videos are an essential component of its functionality
00:48:22 <zzo38> Yes I agree that even if you use CSS and images, it in general should not depend on them. (However, I have another suggestion: Make any CSS/images/scripts not take up too much memory or CPU time)
00:48:48 <zzo38> Sgeo: Well, yes, for things that necessarily need images, videos, or whatever, have them; but in general do not rely on unnecessary things.
00:51:05 <oerjan> @check True
00:51:06 <lambdabot> Not in scope: `myquickcheck'Not in scope: data constructor `True'Not in sco...
00:51:16 <oerjan> @scheck True
00:51:16 <lambdabot> Not in scope: `myquickcheck'Not in scope: data constructor `True'Not in sco...
00:51:26 <oerjan> oops
00:51:29 <oerjan> @list check
00:51:29 <lambdabot> check provides: check
00:56:24 <pikhq> Sgeo: The idea is "avoid pointless shit", not "avoid everything new".
01:31:00 -!- pikhq has quit (Read error: Operation timed out).
01:33:09 -!- pikhq has joined.
01:46:39 <itidus20> hmm
01:46:52 <itidus20> i have to say browsers are pro-advertiser
01:47:11 <itidus20> the browser people don't like the idea of you having absolute control over your browsing experience
01:48:11 <itidus20> disregard my last comment
01:48:23 -!- tuubow has quit (Ping timeout: 240 seconds).
01:53:02 -!- sebbu3 has joined.
01:53:02 -!- sebbu3 has quit (Changing host).
01:53:02 -!- sebbu3 has joined.
01:53:43 -!- sebbu2 has quit (Ping timeout: 240 seconds).
01:55:54 <zzo38> How many discardable commutative applicatives are there?
01:56:08 <oerjan> what's discardable
01:56:39 <zzo38> x <$ y = pure x
01:57:05 <oerjan> :t (<$)
01:57:05 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a
01:58:01 <oerjan> Reader fits, but not Maybe (x <$ Nothing is Nothing)
01:58:07 <zzo38> Identity functor is, but are there others?
01:58:36 <oerjan> yes, Reader
01:58:39 <zzo38> OK
01:59:29 <zzo38> Is that all? Do you know of others?
02:00:32 <monqy> Writer (), i.e. Identity
02:00:45 <oerjan> heh
02:00:49 <oerjan> State () too, then
02:01:18 <monqy> hm
02:01:19 <oerjan> ignoring bottoms
02:01:20 <monqy> ZipList?
02:01:26 <oerjan> no, not ZipList
02:01:30 <monqy> :(
02:02:27 -!- sebbu3 has changed nick to sebbu.
02:02:28 <monqy> oh right I forgot sometimes ziplists aren't infinite
02:02:43 <zzo38> State () is isomorphic to the identity functor, isn't it? Because you have () -> (x, ()) so you can just become x removing unnecessary things
02:02:53 <oerjan> the infinite ones are isomorphic to Reader Natural
02:03:02 <oerjan> zzo38: yeah
02:03:26 <oerjan> RWS r () () as well, probably, as that should be isomorphic to Reader r
02:03:56 <oerjan> the trivial Applicative
02:06:08 <oerjan> you essentially want no outgoing side effects
02:07:12 <kallisti> :t get
02:07:13 <lambdabot> forall (m :: * -> *) s. (MonadState s m) => m s
02:08:00 <monqy> Set, if Set was a Monad?
02:08:17 <monqy> Er
02:08:19 <monqy> Applicative
02:08:52 <zzo38> It might have to be a type for only nonempty sets
02:09:03 <monqy> oh right
02:09:35 <oerjan> i don't think nonempty Set is commutative, but maybe you consider it as discardable
02:09:44 <oerjan> *can consider
02:10:09 <oerjan> or wait hm
02:10:27 <oerjan> in spirit it is commutative
02:10:42 <kallisti> nonempty. How do you take the difference of a set with itself?
02:10:51 <kallisti> is that undefined?
02:11:07 <oerjan> kallisti: difference is not an applicative operation, hth
02:11:09 <zzo38> For a type of only nonempty sets, you cannot take differences of sets.
02:11:31 <kallisti> oerjan: well sure. it was just a general question about nonempty sets. Not relevant to applicatives.
02:11:45 <oerjan> probably use a Maybe result
02:12:08 <kallisti> so "turn it into regular sets for that operation"
02:13:14 <kallisti> Maybe (NonEmpty a) ~ [a]
02:13:23 <kallisti> I assume the same applies for non-empty sets.
03:10:53 <oerjan> :t ReaderT
03:10:54 <lambdabot> forall r (m :: * -> *) a. (r -> m a) -> ReaderT r m a
03:29:09 -!- tuubow has joined.
03:31:42 -!- azaq23 has quit (Quit: Leaving.).
03:34:36 <Sgeo> kallisti, update
03:55:44 <Sgeo> Also monqy I guess
03:55:50 <monqy> what
03:56:07 <monqy> hi
03:56:52 <Sgeo> I know that you know what Homestuck is, but are you actively caught up?
03:58:01 <oerjan> you cannot catch up, you can only update slower than light
03:58:09 <oerjan> hth
03:58:15 <monqy> im having trouble dealing with zoosmells death...
04:03:06 <kallisti> Sgeo: I'm glad the main characters have the ability to talk now.
04:10:53 -!- DCliche has joined.
04:12:39 -!- kallisti has changed nick to {{}}.
04:12:46 -!- {{}} has changed nick to kallisti.
04:14:45 -!- Klisz has quit (Ping timeout: 252 seconds).
04:29:37 * Sgeo 's mind is broken
04:29:58 <monqy> hi
04:30:46 <Sgeo> I was berating a library written by a co-author of Real World Haskell
04:31:12 <kallisti> oerjan: your overuse of the hth acronym is truly getting out of hand.
04:31:29 <Sgeo> I'm just going to email him
04:31:46 <oerjan> kallisti: should i ask gregor to borrow his smiley censoring code?
04:32:23 <kallisti> no.
04:32:29 <kallisti> just quit it. hth
04:32:58 <oerjan> okthxbye
04:34:35 <Gregor> oerjan: It's not code, it's just XChat's builtin text-replacement feature.
04:34:41 <Gregor> I just replace the smiley with nothing.
04:34:45 <oerjan> ok
04:34:52 <Sgeo> I feel awkward for criticising code written by a giant
04:35:05 <oerjan> Sgeo: well maybe it has bitrotted?
04:35:25 <Sgeo> Last modified 2010
04:35:36 <Sgeo> Did people know about the dangers of lazy IO before 2010?
04:35:50 <Sgeo> version 1.0.0 was released 2007
04:37:57 <kallisti> Sgeo: in Skyrim you'd take the rusk of being crushed by the giant.
04:38:05 <oerjan> well iteratees are fairly new and i think still not entirely intuitive, and before those the alternative was to do everything in IO, which some may consider worse
04:38:56 <Sgeo> At least options for strict nlst, say, vs lazy nlst might be nice
04:38:59 <oerjan> i haven't learned iteratees properly myself
04:45:13 -!- myndzi has quit (Read error: Connection reset by peer).
04:47:26 <oerjan> :t ioError
04:47:27 <lambdabot> forall a. IOError -> IO a
04:47:50 <oerjan> :t (>>= maybe (ioError $ userError "oops") return)
04:47:51 <lambdabot> forall a. IO (Maybe a) -> IO a
04:53:55 -!- MDude has changed nick to MSleep.
04:59:23 <oerjan> :t foldM
04:59:24 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
05:00:26 -!- myndzi has joined.
05:14:50 <kallisti> oh god why am I playing the world's hardest game.
05:15:06 <coppro> kallisti: what game?
05:15:56 <Gregor> I Wanna Be the Guy? 8-D
05:16:56 <kallisti> no it's a flash game called
05:17:00 <kallisti> the world's hardest game.
05:17:04 <kallisti> I played it ages ago
05:17:10 <kallisti> and decided to play it again.
05:17:15 * kallisti is currently on level 11 out of 30
05:18:20 <coppro> oh
05:18:25 <coppro> I'm currently playing 'learn agda'
05:18:27 <coppro> it's pretty hard
05:28:59 <kallisti> seriously the main reason this game is so hard is because it's really shitty.
05:29:19 <kallisti> the sensitivity and collisions are wonky.
05:33:53 <monqy> sounds fun
05:41:12 <kallisti> 16 out of 30
05:42:05 -!- tuubow has quit (Ping timeout: 276 seconds).
05:50:17 -!- tuubow has joined.
06:00:57 <kallisti> wow this one is insane.
06:01:10 <kallisti> you have to go through this tunnels while being chased by circles
06:01:23 <kallisti> all of the circles go back and forth in their own tunnel at rates slightly out of phase with each other.
06:02:08 <kallisti> sometimes the circles overlap each other and then you're just fucked.
06:02:15 <kallisti> so you have to go at the right time, and I cannot figure out the right time at all.
06:03:06 <kallisti> FINALY
06:03:16 <kallisti> next level... oh god what is this I quit.
06:05:12 <kallisti> here's someone beating all 30 levels with 0 deaths apparently.
06:05:17 <kallisti> I had like 500 by level 18.
06:09:53 <kallisti> this guy makes it look easy.
06:13:46 <kallisti> it's like watching little shapes dance together.
06:14:12 * Sgeo WTFs at PHP
06:15:16 <kallisti> heh
06:15:30 <kallisti> it's almost like the language designers have no idea what they're doing.
06:15:31 <kallisti> right?
06:15:33 <Sgeo> <php-bot> Sgeo, Want to be able to access array elements like this: function()[0]? It's called function array dereferencing, and it's coming in PHP 5.4.
06:15:44 <kallisti> yes, revolutionary.
06:16:09 <kallisti> funnily enough, perl has problems with this as well. it's possible, but it requires a lot of parentheses or else perl will complain.
06:16:39 <kallisti> !perl sub example {1..5}; print example()[0]
06:16:41 <EgoBot> syntax error at /tmp/input.4472 line 1, near ")["
06:16:45 <kallisti> !perl sub example {1..5}; print (example()[0])
06:16:46 <EgoBot> syntax error at /tmp/input.4531 line 1, near ")["
06:17:01 <monqy> !perl sub example {1..5}; print (example())[0]
06:17:02 <EgoBot> syntax error at /tmp/input.4598 line 1, near ")["
06:17:04 <Sgeo> !perl sub example {1..5}; print (example())[0]
06:17:04 <EgoBot> syntax error at /tmp/input.4658 line 1, near ")["
06:17:05 <monqy> noooooo
06:17:06 <kallisti> !perl sub example {1..5}; print ((example())[0])
06:17:07 <EgoBot> 1
06:17:11 <monqy> i
06:17:12 <kallisti> yeah, it's stupid
06:17:20 <kallisti> !perl sub example {1..5}; print ((example)[0])
06:17:20 <EgoBot> 1
06:17:21 <kallisti> works as well
06:17:52 <kallisti> I'm not really sure why it works like that, but it does. Apparently they don't give suscripts a 'precedence'?
06:18:02 <kallisti> or something?
06:19:05 <kallisti> monqy: surprisingly I don't actually need to take subscripts of non-array lists very often.
06:19:16 -!- oerjan has quit (Quit: Good night).
06:19:46 <monqy> I've forgotten enough perl not to know what that means
06:20:23 <kallisti> well an array is basically "a list stored in an @ variable" while a list is just any kind of list out in the wild.
06:20:26 <kallisti> if that makes sense.
06:20:39 <kallisti> they're subtley different from each other.
06:20:43 <kallisti> subtley
06:21:58 <kallisti> in particular an array in scalar context is its length, while a list in scalar context is kind of undefined, because lists don't exist in scalar context. the expression that would otherwise make a list is instead interpreted as scalar values.
06:22:18 <kallisti> so for example, in scalar context, the comma operator becomes the comma operator in C. 1,2,3,4 in scalar context evaluated to 4.
06:23:59 <kallisti> a side-effect of this is that there's no sane way to get the length of a list that's returned from a function, without writing your own length function or assigning it to an array first.
06:24:28 <monqy> :(
06:24:47 <kallisti> well, hmm...
06:24:59 <kallisti> I think there are some ugly workarounds.
06:25:14 <kallisti> !perl print scalar (() = (1,2,3,4))
06:25:15 <EgoBot> 4
06:25:17 <kallisti> yeah that
06:25:22 <kallisti> !perl print scalar (1,2,3,4)
06:25:23 <EgoBot> 4
06:25:24 <kallisti> er
06:25:26 <kallisti> bad example
06:25:32 <kallisti> !perl print scalar (2,3,4,5)
06:25:33 <EgoBot> 5
06:25:38 <kallisti> !perl print scalar (()=(2,3,4,5))
06:25:38 <EgoBot> 4
06:25:47 <monqy> aaahhhhhhh
06:25:50 <kallisti> lol
06:26:13 <kallisti> , in list context makes lists. , in scalar context works like , in C.
06:26:44 <kallisti> however ()=(2,3,4,5) forces list context, so now you can be assured that evaluated said list in scalar context will give you the length
06:26:47 <kallisti> I bet that makes absolutely no sense to you.
06:26:49 <kallisti> :P
06:26:57 <kallisti> *evaluating
06:27:34 <kallisti> !perl print scalar map {$_+1} 1..5
06:27:35 <EgoBot> 5
06:27:38 <kallisti> !perl print scalar map {$_+1} 2..5
06:27:39 <EgoBot> 4
06:28:07 <kallisti> depending on what the function/operator/expression returns in scalar context though, doing the ()=... stuff my bad unecessary
06:28:13 <kallisti> s/bad/be/
06:29:04 <kallisti> a lot of functions that normally return lists will instead return the list's length in scalar context.
06:29:07 <kallisti> but not all.
06:29:44 -!- kmc has quit (Quit: Leaving).
06:29:56 <kallisti> sub hi { wantarray? (@_,3,4) : "poop" } print hi 1,2
06:30:01 <kallisti> !perl sub hi { wantarray? (@_,3,4) : "poop" } print hi 1,2
06:30:02 <EgoBot> 1234
06:30:09 <kallisti> !perl sub hi { wantarray? (@_,3,4) : "poop" } print scalar hi 1,2
06:30:10 <EgoBot> poop
06:31:33 <kallisti> some functions basically do two different things, or will perform the same operation but will format the results differently depending on where you use the function.
06:32:03 <kallisti> I've seen some functions that return a result in list/scalar context, and otherwise perform an in-place operation in void context.
06:32:13 <kallisti> which is pretty convenient.
06:32:47 <kallisti> presumably if you call a function in void context you want some kind of side-effect to happen, so that's sensibly.
06:36:19 <kallisti> !perl sub test { return "list" if wantarray; return "scalar" if defined wantarray; "void";} print test, (scalar test,test)
06:36:19 <EgoBot> listscalarlist
06:36:37 <kallisti> hm
06:36:49 <kallisti> !perl sub test { return "list" if wantarray; return "scalar" if defined wantarray; "void";} print test, scalar (test,test)
06:36:50 <EgoBot> listscalar
06:36:50 <Sgeo> I say "I kind of have anti-PHP biases"
06:36:59 <Sgeo> The people in ##php say that "We all do"
06:37:10 <kallisti> looool
06:37:18 <Patashu> sounds like php to me
06:37:54 <kallisti> the designers must feel nice knowing they've created the worst language in the world, providing countless developers with plenty of daily suffering.
06:41:54 <kallisti> !perl sub test { return "list" if wantarray; return "scalar" if defined wantarray; "void";} print test, scalar (print(test),test)
06:41:55 <EgoBot> listlistscalar
06:41:58 <kallisti> bah
06:42:42 <kallisti> !perl sub test { return "list" if wantarray; return "scalar" if defined wantarray; print "void";} print scalar (test,test)
06:42:43 <EgoBot> voidscalar
06:42:46 <kallisti> okay cool.
06:58:36 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:32:47 -!- kmc has joined.
07:33:15 <zzo38> I think another way to define applicative would be using (fmap), (pure ()), and (liftA2 (,)).
07:34:22 -!- op_4 has quit (Ping timeout: 244 seconds).
07:38:54 <monqy> pure a = a <$ pure () -- ?
07:39:03 <zzo38> Note that (pure) and (<*>) implies (fmap) and (>>=) implies (<*>) I think; is there a way to add one more thing to the list above to make a monad without implying any of those three things (assuming you have the other two)?
07:39:22 <zzo38> monqy: Yes, that is the applicative laws, I think.
07:39:50 <monqy> and then iirc (<*>) follows from pure,fmap,liftA2(,)
07:41:16 <zzo38> monqy: Yes. x <*> y = (\(x', y') -> x' y') <$> liftA2 (,) x y
07:45:45 -!- op_4 has joined.
07:47:46 <zzo38> I think it is possible to make a backward version of any applicative. I am not completely sure. I think it is: newtype BackwardAp f x = BackwardAp (f x); instance Applicative f => Applicative (BackwardAp f) where { pure = BackwardAp . pure; BackwardAp x <*> BackwardAp y = BackwardAp (y <**> x); };
08:16:08 -!- Lymee has joined.
08:16:09 -!- Lymee has quit (Changing host).
08:16:09 -!- Lymee has joined.
08:16:31 -!- glogbackup has quit (Ping timeout: 240 seconds).
08:16:32 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
08:16:40 -!- Lymee has changed nick to Madoka-Kaname.
08:20:45 <pikhq> So, yeah. Now I know why Fine Structure confused me: I apparently hadn't finished it.
08:21:02 <pikhq> I finished it in a single sitting today, so there we go.
08:21:35 <pikhq> Additionally, what of it I did read was in a very distinct order, and included some apocrypha, so there we go.
08:26:50 <kallisti> > ["123","abc"] >> "DEF"
08:26:51 <lambdabot> "DEFDEF"
08:27:31 <kallisti> > (++) <$> ["123","abc"] ["DEF"]
08:27:31 <lambdabot> Couldn't match expected type `t -> f a'
08:27:32 <lambdabot> against inferred type `[a1]'
08:27:35 <kallisti> > (++) <$> ["123","abc"] <*> ["DEF"]
08:27:37 <lambdabot> ["123DEF","abcDEF"]
08:29:13 <kallisti> > join ["abc", "def"]
08:29:13 <lambdabot> "abcdef"
08:29:18 <kallisti> > sequence ["abc", "def"]
08:29:19 <lambdabot> ["ad","ae","af","bd","be","bf","cd","ce","cf"]
08:30:23 -!- zzo38 has quit (Remote host closed the connection).
08:34:50 <Madoka-Kaname> > (\r a -> sequence r (take r $ repeat a)) 3 "abc"
08:34:51 <lambdabot> Couldn't match expected type `GHC.Types.Int'
08:34:51 <lambdabot> against inferred type ...
08:34:58 <Madoka-Kaname> > (\r a -> sequence (take r $ repeat a)) 3 "abc"
08:34:59 <lambdabot> ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","b...
08:35:28 <Madoka-Kaname> > map ((\a r -> sequence (take r $ repeat a)) "abc") [1..]
08:35:29 <lambdabot> [["a","b","c"],["aa","ab","ac","ba","bb","bc","ca","cb","cc"],["aaa","aab",...
08:35:38 <Madoka-Kaname> > join $ map ((\a r -> sequence (take r $ repeat a)) "abc") [1..]
08:35:39 <lambdabot> ["a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","aac"...
08:44:07 -!- op_4 has quit (Ping timeout: 244 seconds).
08:45:13 -!- kallisti has quit (Remote host closed the connection).
08:45:49 -!- op_4 has joined.
08:47:26 -!- kallisti has joined.
08:58:34 -!- kallisti has quit (Remote host closed the connection).
09:00:37 -!- kallisti has joined.
09:00:38 -!- kallisti has quit (Changing host).
09:00:38 -!- kallisti has joined.
09:03:28 <kallisti> so how do I set a memory limit for each process in limits.conf?
09:04:22 -!- Phantom_Hoover has joined.
09:59:17 <kallisti> @src sequence
09:59:17 <lambdabot> sequence [] = return []
09:59:17 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
09:59:17 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
10:02:19 -!- ais523 has quit (Remote host closed the connection).
10:10:16 -!- Ngevd has joined.
10:10:23 <Ngevd> Hello!
10:22:18 -!- Vorpal has joined.
10:35:34 <Ngevd> fungot will talk to me
10:35:34 <fungot> Ngevd: date: wed, 2 jan 91 14:47:01 -0800 from:
10:35:50 <Ngevd> Can't make that, fungot. I'm sorry.
10:35:51 <fungot> Ngevd: we have found out a file named ' feather'...). even so i got used to the actual internet protocol you can do will fix any problem; even if it resolves a symbol. but the point.
10:35:57 <Ngevd> ^style
10:35:57 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon* lovecraft nethack pa qwantz sms speeches ss wp youtube
10:36:06 <Ngevd> ^style iwcs
10:36:06 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
10:36:11 <Ngevd> fungot, what ho?
10:36:11 <fungot> Ngevd: no, a real. how come they not exist? let alone?
10:39:22 <kallisti> http://sprunge.us/DRYh
10:39:25 <kallisti> so elegant.
10:39:30 <kallisti> fibonacci in ST
10:39:46 <Ngevd> What's ST?
10:39:52 * Ngevd noob
10:40:27 <kallisti> are you familiar with IORef?
10:40:32 <Ngevd> Barely
10:41:10 <kallisti> ST is similar to IO except that ST is only capable of creating/reading/modifying mutable variables.
10:41:17 <Ngevd> Hmm
10:41:25 <kallisti> it's different in that you can get a pure result from an ST computation.
10:41:28 <kallisti> :t runST
10:41:29 <lambdabot> forall a. (forall s. ST s a) -> a
10:44:12 <kallisti> you can think of STRefs as typical imperative mutable variables.
10:44:39 <kallisti> except that you have to explicitly create/read/write them.
10:45:09 <Ngevd> But I was just getting used to Haskell not having them...
10:45:10 <Ngevd> :(
10:45:14 <kallisti> and do so via the ST monad.
10:45:16 <Sgeo> Note also the types
10:45:22 <Sgeo> STRef Int
10:45:27 <Sgeo> For a place to mutate an int
10:45:44 <Sgeo> It's not just Int as in most imperative languages
10:46:15 <Sgeo> erm, that's wrong
10:46:17 <Sgeo> STRef s Int
10:46:27 <Sgeo> I think
10:47:03 <kallisti> yes.
10:48:04 <kallisti> Ngevd: ST is rarely used, I would say.
10:48:44 <Sgeo> IORefs are basically the same thing in the IO monad
10:49:06 <kallisti> it's main benefit is that it gives you the ability to write algorithms with mutable data structure that return a pure result.
10:49:15 <kallisti> *structures
10:49:26 <kallisti> *its blah blah blah
10:50:00 <kallisti> but to what extent this is useful depends on your program.
10:50:09 <kallisti> and how clever you are. :)
10:58:21 -!- tuubow has quit (Ping timeout: 240 seconds).
11:14:12 -!- monqy has quit (Quit: hello).
11:25:55 -!- op_4 has quit (Ping timeout: 240 seconds).
11:32:26 -!- op_4 has joined.
12:08:25 -!- Ngevd has quit (Ping timeout: 240 seconds).
12:09:30 -!- Ngevd has joined.
12:54:23 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:20:06 -!- Phantom_Hoover has joined.
13:27:22 <Ngevd> Hello!
13:27:24 <twice11> Ngevd: The main point for ST is that the lifetime and the symbol usability is confined to a certain block of code.
13:27:33 <Ngevd> Hmm
13:27:44 <twice11> So STRefs are more like local variables, while IORefs are like global variables.
13:29:07 <twice11> If you assemble a block of monadic computations in the ST monad to one computation and use runST on that assembled computation, Haskell proves for you the code is still pure.
13:29:31 <twice11> So the compound computation only writes data to the local variables depending on the parameters passed to it.
13:29:39 <twice11> No hidden state is possible.
13:30:48 <twice11> If you try to use a STRef outside the ST computation it was made in, you immediately get an type error, so this catches "dangling pointers" at comile time.
13:37:56 -!- Taneb has joined.
13:38:15 -!- Ngevd has quit (Ping timeout: 245 seconds).
13:48:02 <kallisti> 08:27 < twice11> So STRefs are more like local variables, while IORefs are like global variables.
13:48:05 <kallisti> not really
13:48:08 <kallisti> they're both like... pointers.
13:49:21 <kallisti> they're all "local" in the sense that they have to be in scope to use them. You can use them "globally" in your program by passing them as arguments.
13:49:46 <Sgeo> unsafePerformIO $ newIORef blah
13:49:55 <Sgeo> As a top-level definition
13:50:24 <Sgeo> Night
13:52:03 <Sgeo> I'm going to stay awake
13:52:32 <kallisti> yes or you can do terrible but acceptable terrible things.
13:52:37 <kallisti> and make them global.
13:52:42 <kallisti> acceptably.
13:54:53 <Sgeo> How?
13:59:30 -!- elliott has joined.
14:01:49 <kallisti> Sgeo: by the way you described.
14:01:56 <kallisti> perhaps I explained weirdly.
14:02:29 <elliott> what are you trying to explain
14:04:01 <Sgeo> kallisti was talking about IORefs and STRefs, and said something about how they're not really global, I mentioned the top-level unsafePerformIO thing, kallisti said something which made me think there was a more acceptable way to get a similar effect
14:05:19 <elliott> Try not assuming kallisti is saying meaningful things.
14:09:30 <elliott> 23:25:32: <Sgeo> If I smile at a Station V3 strip, can I link it?
14:09:30 <elliott> 23:25:40: <kallisti> no.
14:09:30 <elliott> 23:25:45: <Phantom_Hoover> No.
14:09:30 <elliott> 23:25:49: <monqy> yes
14:09:30 <elliott> 23:25:59: <Sgeo> http://www.stationv3.com/d/20111217.html
14:09:31 <elliott> 23:26:08: <kallisti> monqy: WHAT HAVE YOU DONWE
14:09:33 <elliott> 23:26:11: <Phantom_Hoover> (monqy means no, since I know you have no sense of monqy— goddamn it.)
14:09:37 <elliott> Phantom_Hoover: I can guarantee monqy meant yes
14:09:39 <elliott> *yes.
14:10:01 <elliott> 23:28:08: <Sgeo> Who says that I couldn't have guessed that monqy was joking and I just deliberately took the yes literally?
14:10:01 <elliott> 23:28:25: <monqy> remember what happened with homestuck
14:10:01 <elliott> 23:29:37: <Sgeo> Just because my monqy-detector failed once doesn't mean it always fails.
14:10:03 <elliott> Sgeo: maybe it does
14:11:14 <elliott> 23:51:19: <ais523> so, what's the appropriate internet-meme reaction to Chuck Norris advertising World of Warcraft?
14:11:46 <elliott> @tell ais523 grinding your teeth and hoping the world collectively gets over itself
14:11:46 <lambdabot> Consider it noted.
14:13:10 <elliott> 23:57:36: <oerjan> i don't see the problem. when chuck norris programs, he obviously doesn't need more than one command.
14:13:10 <elliott> @tell oerjan if you're going to participate in stupid faux-glorification memes at least make it about somebody who isn't a homophobic creationist who wants the bible taught in schools :P
14:13:10 <lambdabot> Consider it noted.
14:13:50 <elliott> 00:12:31: <Phantom_Hoover> I think we've had a thorough, detailed examination of the limitations of your intelligence these past months.
14:13:51 <elliott> 00:12:41: <Phantom_Hoover> They're not actually as pressing as you think they are.
14:13:51 <elliott> sure they are, per self-fulfilling prophecy
14:14:21 <Phantom_Hoover> The actual /limitations/ aren't that great.
14:32:01 <kallisti> Sgeo: no, that was the horrible acceptable alternative
14:32:06 <kallisti> Sgeo: the or was kind of misplaced
14:32:17 <kallisti> but it was an alternative to passing Refs as arguments.
14:38:38 <elliott> Anyone who thinks global variables are inherently abominable surely must refuse to use stdin and stdout and the RNG and ...
15:01:35 * Phantom_Hoover wonders why they're called variables even in languages where it makes no sense for them to vary.
15:02:17 <elliott> Phantom_Hoover: Oh come on.
15:02:25 <elliott> Phantom_Hoover: You're a mathematician, f(x) = x^2
15:02:27 <elliott> What's x?
15:03:07 <Phantom_Hoover> Well OK, that one makes sense, but global variables?
15:03:20 <elliott> Phantom_Hoover: I was talking about global mutable variables there.
15:03:47 <elliott> Anyway, you can rewrite "let x = y in z" as "(\x -> z) y", so it makes sense to refer to all bindings as variables.
15:12:59 <fizzie> According to HtDP, you can rewrite "(\x1 ... xn -> exp)" as "(let f x1 ... xn = exp in f)", so you should consider lambda a short-hand notation for a local binding. (Okay, it's written in terms of Scheme "(lambda (x-1 ... x-n) exp)" and the (nonstandard) "(local ((define (a-new-name x-1 ... x-n) exp)) a-new-name)", but anyhow.)
15:15:38 <fizzie> "Because good programmers use abstract functions and organize their programs in a tidy manner, it is not surprising that Scheme provides a short-hand for this particular, frequent use of /local/. The short-hand is called a /lambda/-expression and --" RAAAA no you fuck-ups, "Scheme" does not even have a "local". (This annoyed me to no end when going through the course that used HtDP.)
15:19:00 <elliott> fizzie: I have heard quite a lot of complaints about HtDP. :p
15:19:21 <elliott> fizzie: Well, it's Racket now for a reason.
15:19:35 <Jafet> Scheme is pretty local. It's like walking down to the docks and then suddenly, rhyming slang.
15:20:15 <elliott> "With the exception of the largest teaching language, all languages for HtDP are functional programming languages."
15:20:20 <elliott> They went and fucked it up at the last minute. :(
15:23:24 -!- Taneb has quit (Ping timeout: 240 seconds).
15:25:26 <Phantom_Hoover> http://www.reddit.com/r/IAmA/comments/ngd5e/i_am_neil_degrasse_tyson_ama/c38vr8m
15:25:37 <Phantom_Hoover> CONFIRMED: Neil deGrasse Tyson is overrated.
15:36:16 -!- Taneb has joined.
15:45:44 -!- Sgeo has quit (Ping timeout: 240 seconds).
15:46:57 -!- Sgeo has joined.
16:05:56 <Gregor> Fythe seems to work on Windows iff the calling user is an administrator >_>
16:09:35 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
16:10:51 <elliott> Gregor: Executable page-related stuff?
16:12:05 <Gregor> elliott: At this point I have no friggin' idea. It quits with no output, and works under gdb X_X
16:12:10 <Gregor> Can't dump core on Windows.
16:19:15 -!- elliott has quit (Quit: Leaving).
16:21:10 <twice11> kallisti: Yes, you are right, STRefs and IORefs are indeed pointers to variables allocated with newIORef or newSTRef, and, except for the unsafePerformIO hack, you need to pass the pointer around.
16:22:38 <twice11> But the STRef pointers are tied to one specific invocation of runST, so if you pass them out of this runST block (nothing prevents you), they get useless.
16:23:17 <twice11> Because using readSTRef/writeSTRef in a different runST invocation than the newSTRef is going to yield an ill-typed program.
16:23:51 <twice11> On the other hand, IORefs stay valid accross the whole program.
16:24:07 <twice11> Or between different invocations of unsafePermformIO.
16:29:04 -!- sebbu has quit (Ping timeout: 240 seconds).
16:46:31 -!- elliott has joined.
16:50:15 <kallisti> twice11: yes that's one way to look at it.
16:50:54 <fizzie> Gregor: Spend some of your ill-gotten $s on Rational® Purify® and run it under that.
16:51:14 <Deewiant> WinDbg is free
16:51:34 <fizzie> Deewiant: But doesn't have a ® in it.
16:51:41 <Deewiant> True
16:52:42 <elliott> fizzie: :-/ That copies as "Rational®" from XChat.
16:52:50 <elliott> Oh, not if I select it instead
16:53:03 <elliott> http://www-01.ibm.com/software/awdtools/purify/
16:53:09 <elliott> Ha, it really is Rational® Purify®.
16:53:16 <fizzie> That's where I copied it from. :p
16:54:03 <elliott> 16:21:10: <twice11> kallisti: Yes, you are right, STRefs and IORefs are indeed pointers to variables allocated with newIORef or newSTRef, and, except for the unsafePerformIO hack, you need to pass the pointer around.
16:54:03 <elliott> 16:22:38: <twice11> But the STRef pointers are tied to one specific invocation of runST, so if you pass them out of this runST block (nothing prevents you), they get useless.
16:54:13 <elliott> twice11: I'm not sure I like mentally modelling STRefs/IORefs as pointers.
16:54:22 <elliott> Maybe it's just the word "pointer". "Reference" seems much less objectionable.
16:55:16 <twice11> elliott: Fair enough. Especially as they are called "references"
16:55:32 <elliott> twice11: Heh, I managed to mentally block that out while saying that...
16:55:59 <fizzie> "[Purify] was originally written by Reed Hastings of Pure Software. Pure Software later merged with Atria Software to form Pure Atria Software, which in turn was later acquired by Rational Software, which in turn was acquired by IBM."
16:56:26 <elliott> Hmm, I think you can implement ST with Vault; the problem there is that you need to be in ST or IO to get a Key...
16:56:27 <Taneb> That's purely rational
16:56:53 <fizzie> IBM Rational Pure Atria Software Purify is what they should've kept calling it.
16:57:50 <Deewiant> Maybe you prefer IBM® Rational® PurifyPlus™
16:58:43 <fizzie> That sounds even better.
16:59:23 <fizzie> It's like Purify, plus they've added a trademark.
17:01:50 -!- MSleep has changed nick to MDude.
17:12:58 <Gregor> Turns out it was just a simple buffer overflow.
17:13:00 <Gregor> lol.
17:13:07 -!- Vorpal has quit (Read error: Operation timed out).
17:13:16 <Gregor> For some reason, if I gave the user admin rights, then the buffer overflow would no longer cause issue.
17:13:18 <Gregor> LOGIC.
17:13:41 <twice11> Welcome to "undefined behaviour".
17:13:46 <Taneb> AAARGH
17:13:53 <Taneb> I tried to imagine a hypertorus
17:14:06 <Taneb> Except with connected faces rotated 90 degrees
17:14:58 <Gregor> twice11: Dude, I'm a C coder, undefined behavior has been my home state for a decade.
17:15:49 -!- Vorpal has joined.
17:15:57 <Vorpal> gnh
17:15:57 <Vorpal> <Vorpal> <Gregor> Can't dump core on Windows. <-- can't you get a memory dump iirc. Or is that for the OS only?
17:16:06 <Gregor> Idonno
17:16:23 <Vorpal> Gregor, anyway worth trying under windbg or visual studio I guess.
17:16:40 <Gregor> "<Gregor> Turns out it was just a simple buffer overflow. <Gregor> lol"
17:16:42 <Vorpal> ah
17:16:55 <Vorpal> I didn't get that due to connection fucking up
17:16:58 <Vorpal> was just about to open the log
17:17:16 <Gregor> Anyway, Fythe autotests run on Mac OS X and Windows now.
17:17:19 <Gregor> So that's good.
17:17:27 <Vorpal> Gregor, 100 % branch coverage?
17:17:52 <Vorpal> (if not it isn't good enough!)
17:18:12 <Gregor> Branch coverage becomes a bit meaningless for a JIT.
17:18:24 <Vorpal> hm true
17:18:31 <elliott> Gregor: You must test EVERY SINGLE SEQUENCE OF BYTES IT CAN OUTPUT.
17:18:53 <Vorpal> Gregor, have you tested that it fails in the right way if memory allocation or IO or such fails?
17:18:58 <Vorpal> (if that applies to your case)
17:19:22 <Vorpal> elliott, indeed!
17:19:48 <Vorpal> also ensure that it doesn't crash on garbage input of course.
17:32:37 -!- MDude has quit (Ping timeout: 252 seconds).
17:46:19 -!- elliott has quit (Quit: Leaving).
17:47:04 -!- Nisstyre has quit (Ping timeout: 240 seconds).
17:48:38 -!- Nisstyre has joined.
17:55:38 -!- zzo38 has joined.
17:57:07 -!- azaq23 has joined.
17:57:09 -!- azaq23 has quit (Changing host).
17:57:09 -!- azaq23 has joined.
18:00:21 -!- Taneb has quit (Ping timeout: 240 seconds).
18:01:13 -!- elliott has joined.
18:15:57 -!- pikhq_ has joined.
18:15:57 -!- pikhq has quit (Ping timeout: 240 seconds).
18:26:00 <elliott> "Or substitute your doublethink here. Indeed, 2 + 2 ≠ 5. Haskell is not asserting that they are equal, rather, Haskell is creating a named expression, 2 + 2, that expands to the expression 5 within the let expression. By evaluating the expression 2 + 2 outside the let, the proper answer is revealed."
18:26:05 <elliott> No, dammit, stupid tutorial!
18:26:11 <elliott> Haskell is not term rewriting, this is shadowing (+).
18:26:56 <Phantom_Hoover> > let 2 + 2 = 5 in 4 + 4
18:26:57 <lambdabot> *Exception: <interactive>:3:4-12: Non-exhaustive patterns in function +
18:27:03 <Phantom_Hoover> Dammit Haskell.
18:27:13 <Phantom_Hoover> Why can't you automatically deduce a consistent arithmetic.
18:28:30 -!- AnotherTest has joined.
18:28:45 <AnotherTest> Hello
18:28:51 <Phantom_Hoover> halo
18:31:22 <AnotherTest> +10>...+0>....<>..<>.
18:31:32 <AnotherTest> Would the above be called esoteric according to you?
18:31:46 <AnotherTest> (if it were a program that could be executed)
18:32:07 <zzo38> AnotherTest: To me, I would ask what it is supposed to mean.
18:32:12 <AnotherTest> um
18:32:17 <AnotherTest> I can't really remeber :/
18:32:30 <AnotherTest> Let me try to figure out what it was supposed to do
18:32:37 <elliott> Yeah, what zzo38 said. Syntactic esotericism isn't very interesting.
18:33:35 <AnotherTest> Seems like it's supposed to display 100
18:48:12 -!- kmc has quit (Quit: Leaving).
18:54:42 -!- kmc has joined.
19:00:56 -!- Taneb has joined.
19:16:21 -!- Vorpal_ has joined.
19:16:39 -!- Vorpal has quit (Disconnected by services).
19:16:41 -!- Vorpal_ has changed nick to Vorpal.
19:19:59 <itidus20> Phantom_Hoover: 2 + 2 can't equal 5 :D
19:20:05 <AnotherTest> itidus20
19:20:07 <AnotherTest> who knows
19:20:13 <AnotherTest> in a parauniversum
19:20:21 <Phantom_Hoover> itidus20, it can when you redefine + such that it does.
19:20:30 <itidus20> you tried to redefine + such and failed
19:20:45 <AnotherTest> It can mean 2 + 1 + 2
19:20:51 <itidus20> hmm
19:20:56 <itidus20> ahh i guess
19:21:04 <fizzie> > let (+) x y = 5 in 2 + 2
19:21:04 <lambdabot> 5
19:21:43 <itidus20> fizzie: but.. uhm
19:22:00 <itidus20> what would that produce for 2 + 3 ?
19:22:08 <Vorpal> itidus20, 5 as well
19:22:13 <fizzie> 5 for everything.
19:22:18 <itidus20> oh...
19:22:20 <itidus20> hahaha...
19:22:27 <fizzie> It's not a very useful +.
19:22:28 <itidus20> cool
19:22:33 <Vorpal> itidus20, who said fizzie's + function is addition?
19:22:39 <itidus20> but it fits the requirements
19:22:43 <itidus20> that's pretty cool
19:22:50 <itidus20> I yield.
19:23:03 <AnotherTest> int operator+(int a) {
19:23:04 <AnotherTest> return 5;
19:23:04 <AnotherTest> }
19:23:09 <AnotherTest> 2+2
19:23:12 <AnotherTest> aha
19:23:54 <AnotherTest> altough that would fail
19:24:04 <AnotherTest> because I forgot an argument :(
19:24:05 <Vorpal> because C++ sucks yes
19:24:12 -!- Phantom__Hoover has joined.
19:24:24 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
19:24:25 <Taneb> > let (+) 2 2 = 5 in 2 + 2
19:24:26 <lambdabot> 5
19:24:28 <AnotherTest> int operator+(int a, int b) {
19:24:28 <AnotherTest> return a + b + 1;
19:24:28 <AnotherTest> }
19:24:28 <Vorpal> AnotherTest, you can't overload operators on the "primitive" types in C++
19:24:39 <itidus20> i made a claim and it was refuted. so i am back at tabula rasa
19:24:43 <AnotherTest> Vorpal, I know
19:24:46 <Phantom__Hoover> 19:20:30: <itidus20> you tried to redefine + such and failed
19:24:51 <Phantom__Hoover> Yes, because I didn't define + for the things I was using + on.
19:24:59 <AnotherTest> well, in most impementations
19:25:06 <AnotherTest> *implementations
19:25:29 <zzo38> Do you know comonad hoist?
19:26:29 <AnotherTest> Vorpal: How dare you say C++ sucks :(
19:26:36 <itidus20> in terms of eidetic reduction, i think 2 + 2 can never = 5
19:26:49 <Taneb> itidus20, what if you redefine 5?
19:26:55 <zzo38> 2+2 makes 4 by definition, isn't it?
19:27:41 <AnotherTest> Not if you had a language where 2 represented our 2.5
19:27:43 <Taneb> It's harder to make the successor of the successor of one not equal it's twice successor when added to itself
19:27:43 <itidus20> i mean.. you need more information to define a + x y whereby 2 + 2 = 5 than to define one whereby + x y .. 2 + 2 = 4
19:28:02 -!- Phantom__Hoover has quit (Client Quit).
19:28:13 <itidus20> Taneb: thank you for finding a cool way to say it
19:28:25 <Taneb> :D
19:28:29 <zzo38> You can program C++ if you want to, I happen to like plain C, with CWEB. Although even that not perfect; LLVM is designed far better than C in my opinion, but still lack of some things such as macros and whatever. If you combine features of LLVM and BLISS then you might make improvement programming language.
19:28:30 -!- Phantom_Hoover has joined.
19:29:02 <itidus20> its a bit too ptolemy to say 2+2=5
19:29:29 <Taneb> s/one/zero/
19:29:39 <AnotherTest> what
19:29:43 <AnotherTest> if we redefined =
19:29:44 <Taneb> s/it's/its/
19:29:56 <AnotherTest> = means != from now on
19:30:01 <AnotherTest> DONE
19:30:01 <Taneb> I still think the best way to do it is to redefine 5
19:30:16 <AnotherTest> or = means < is possible too
19:30:20 <Taneb> You just need to stop thinking about 5 as a number
19:30:29 <zzo38> If you made 2 + 2 makes 5 then would it still make a ring?
19:30:30 <Taneb> Think of it instead as a symbol, here representing a number
19:31:03 <AnotherTest> if it were a symbol
19:31:15 <Taneb> If we declare it, instead of representing what we understand as 5, to represent 4, job done
19:31:16 <AnotherTest> 1 byte + 1 byte != 1 byte so I'm sorry
19:31:25 -!- MSleep has joined.
19:31:30 <Taneb> "5" is very much a symbol
19:31:38 <AnotherTest> We might want to redefine the ASCII system
19:31:41 <itidus20> i cant find a quote and i am not certain on the subject, but my understanding is ptolemy made his astronomy work mathematically even when his model of the universe was wrong
19:31:58 <Phantom_Hoover> zzo38, let a +' b = a + b + 1.
19:31:58 <Phantom_Hoover> Oh, wait, that might not distribute.
19:32:00 <AnotherTest> so that 2 takes 4 bits
19:32:15 <Taneb> We can choose what it represents, but a symbol it stays
19:32:30 <AnotherTest> We just say '4' = '5'
19:32:54 <Taneb> I'm not talking about this in the context of programming,
19:33:04 <Taneb> I'm talking about this in the context of philosophy,
19:33:13 <Taneb> Where's that other #esoteric, again?
19:33:33 <itidus20> i don't know anything useful about anything, but about eidetic reduction i am thinking of how for example, a 2d vector needs 2 values
19:34:00 <itidus20> feel free to correct me on this
19:34:21 <elliott> 04:30:46: <Sgeo> I was berating a library written by a co-author of Real World Haskell
19:34:26 <itidus20> now you could of course represent a 2d vector with 10 values, but that would be fairly inefficient
19:34:28 <elliott> Sgeo: I don't like most of his libraries.
19:34:49 <Phantom_Hoover> <Taneb> If we declare it, instead of representing what we understand as 5, to represent 4, job done
19:34:49 <Phantom_Hoover> Well yeah, you can just special-case all the definitions so 4 and 5 are interchanged.
19:34:49 <Phantom_Hoover> That's boring, though.
19:35:06 <elliott> 04:34:52: <Sgeo> I feel awkward for criticising code written by a giant
19:35:06 <elliott> Quit the hero worship. Heck, one of Bryan O'Sullivan's libraries has a blatantly impure set of functions.
19:35:12 <itidus20> and, in that idea, i can't imagine any form of addition which is more efficient than one where 2 + 2 = 4
19:35:23 <AnotherTest> I stay with the change of the ASCII system
19:35:27 <Taneb> Phantom_Hoover, But we can do that and leave the rest of mathematics pretty much the same!
19:35:30 <elliott> 04:35:36: <Sgeo> Did people know about the dangers of lazy IO before 2010?
19:35:32 <elliott> Sgeo: Yes.
19:35:51 <zzo38> There certainly are some things in the ASCII system that I would have done differently.
19:35:53 <AnotherTest> Sgeo: They were just too lazy.
19:36:50 <itidus20> elliott: one day we will be able to just take a marker to the logs ticking off points which need addressing
19:37:09 <zzo38> I think the universe has Lazy I/O, causality loop, and other features which other people probably did not think it has.
19:37:17 <AnotherTest> zzo38, indeed, such as including pointless characters that are never used?
19:37:20 <Phantom_Hoover> itidus20, what about addition modulo 4.
19:37:21 <Phantom_Hoover> Or 3.
19:37:22 <Phantom_Hoover> Or 2.
19:37:25 <AnotherTest> *excluding
19:37:38 <Phantom_Hoover> (The latter is equivalent for this purpose to the first.)
19:38:16 <itidus20> perhaps if i knew more math
19:38:23 <zzo38> AnotherTest: No, a bit differently. One thing is I would put A immediately after 9, and change a few things so that bit manipulation works for delimiters like () [] {} but I would keep the property that <=> has in ASCII which is used sometimes
19:38:40 <itidus20> i am certainly attached to my gradeschool arithmetic
19:39:04 <AnotherTest> zzo38; I agree on that
19:40:36 <itidus20> Phantom_Hoover: i dunno man... i think it was a defence mechanism in response to my knowledge of addition being under threat
19:40:40 <Sgeo> elliott, I'm considering fixing the library. Is there any reason for me to try to save some of the laziness (e.g. by forcing the previous result when a new FTP command is issued) or should I abolish laziness altogether?
19:40:51 <Taneb> @ping
19:40:51 <lambdabot> pong
19:41:14 <Phantom_Hoover> itidus20, nobody's threatening your knowledge of addition, we're just substituting in a different definition for the fun of it.
19:41:26 <Sgeo> Or abolish laziness except in marked lazy functions, which get the forced treatmenet
19:41:30 <Sgeo> treatment
19:41:52 <itidus20> Phantom_Hoover: the word threat here is perhaps a bit overloaded with meanings
19:42:05 <Phantom_Hoover> I love how many of the Humble Bundle games are retro.
19:42:11 <itidus20> "challenges" might be a better term than "threatens"
19:42:14 <Phantom_Hoover> Aren't indie developers meant to be the innovative ones?
19:42:41 <itidus20> depends how you define innovation.
19:42:43 <elliott> Phantom_Hoover: I haven't played most of them, but I wouldn't call e.g. Super Meat Boy and Cave Story retro.
19:42:54 <itidus20> its a lot like esoteric languages
19:43:00 <itidus20> you go back to basics to innovate
19:43:11 <AnotherTest> Guys
19:43:18 <elliott> Cave Story has an ostensibly retro aesthetic, but that basically just translates to "there's not all that many pixels in the graphics"; they're certainly not trying to look old or anything.
19:43:32 <AnotherTest> do you think it would be possible to create a programming language with a Haiku syntax?
19:43:33 <itidus20> you produce 20,000 flash games which each took 48 hours to code that noone particularly cares about and you have fun doing it
19:43:39 <AnotherTest> I strongly believe it's hard
19:43:40 <itidus20> and drink a lot of coffee and mountain dew
19:43:53 <elliott> AnotherTest: If you can count syllables, sure.
19:43:57 <Sgeo> It feels awkward that I could make the library signficantly more usable just by deleting two function names and a $ next to it
19:44:02 <Sgeo> s/it/each/
19:44:06 <Taneb> AnotherTest, Haifu
19:44:11 <Taneb> Been done
19:44:14 <AnotherTest> elliott: don't you think Haiku's are to short?
19:44:23 <Phantom_Hoover> Well, Jamestown and Bit.Trip Runner both admit to it, and I can't speak for Shank since its website gives me no information whatsoever about it.
19:44:44 <elliott> AnotherTest: Well, the English language has a lot of words. I was assuming a program would be composed of multiple haikus, though.
19:44:47 <itidus20> it may help explain if i say..
19:45:17 <AnotherTest> elliott: I wasn't :p
19:45:36 <itidus20> imagine a 3d game with no textures, only gouraud shaded polygons.. with massively reduced polygon counts.. lets say maximum of 100 per model
19:45:51 <itidus20> no music
19:45:56 <itidus20> no sound
19:46:03 <AnotherTest> Taneb: is that multiple haikus per program?
19:46:08 <Vorpal> itidus20, augh gouraud shading hurts so badly
19:46:09 <Vorpal> :(
19:46:24 <itidus20> now, make it fun :D
19:46:43 <itidus20> and there you have innovation
19:46:47 <zzo38> Sgeo: In what library do you mean?
19:46:58 <Sgeo> zzo38, ftphs
19:48:01 <itidus20> then the next line of argument is, you can make the same game in 2d or 3d the only difference is the mode of presentation
19:48:20 <itidus20> i have not fully explored whether this is true or not
19:48:27 <zzo38> itidus20: O, I have made no game with 3D but I have made a lot of game with limitations of DOS and low-resolution CGA. And a few others. But it is idea, make a you made 20 games in one day with some restriction such as, only NES games and you are restricted to a specific mapper, or whatever
19:48:33 <zzo38> Sgeo: What is ftphs?
19:49:03 <Sgeo> zzo38, a library for FTP stuff. It has too much laziness.
19:49:31 -!- Ngevd has joined.
19:49:52 -!- derdon has joined.
19:49:56 <itidus20> zzo38: yeah i find the directx api is really awful.. but linux people can sort of avoid it
19:49:57 -!- Taneb has quit (Ping timeout: 240 seconds).
19:50:12 <Ngevd> Sorry about that
19:50:17 <AnotherTest> itidus20: Maybe, but look at OpenGL
19:50:38 <Ngevd> <AnotherTest> Taneb: is that multiple haikus per program? <-- yes
19:50:39 <itidus20> yeah opengl.. a graphics library which i could actually use on my windows xp
19:50:43 <zzo38> itidus20: I prefer SDL, it works in many systems
19:50:51 <AnotherTest> Ngevd: that's :s
19:50:58 <AnotherTest> zzo38: you say that
19:51:11 <elliott> Ngevd: Haifu programs aren't exactly haikus, are they?
19:51:15 <AnotherTest> zzo38: SDL stopped working for me when I tried to bind it to a language
19:51:15 <itidus20> im planning on upgrading my graphics card over xmas
19:51:23 <Ngevd> elliott, they are restricted to haiku format
19:51:26 <AnotherTest> zzo38: but it has a nice interface
19:51:50 <Ngevd> Haifu code consists of normal English words, arranged into haiku of three lines each. The first line of each haiku contains 5 syllables, the second line 7 syllables, and the third line 5 syllables. Any other arrangement is a syntax error. A program may contain any number of haiku, arranged sequentially. Words may not be broken across lines or haiku by hyphenation, unless the word is normally hyphenated.
19:51:57 <elliott> AnotherTest: SDL binds pretty well to other languages.
19:51:59 <elliott> It has no callbacks, for one.
19:52:06 <AnotherTest> elliott: not to your own
19:52:11 <AnotherTest> :(
19:52:20 <AnotherTest> At least, if you failed like me
19:52:48 <elliott> SDL is nice for input and window management, but annoyingly 90s as far as actual graphics go.
19:53:00 <elliott> But of course OpenGL has pretty much a monopoly on non-90s graphics.
19:53:17 <AnotherTest> Yes, but OpenGL seems just so messy
19:53:25 <itidus20> on windows xp, opengl allows you to take full control of graphics card
19:53:41 <itidus20> whereas, directx10 and directx11 only work on vista+
19:53:50 <itidus20> i know you guys aren't windows users.. just saying
19:54:09 <itidus20> well so i am told anyway @ opengl
19:54:54 <zzo38> Sgeo: What kind of things are too much laziness that causes problem, and what problem?
19:56:02 <Sgeo> zzo38, if I request, say, a list of files in the directory, the library will not actually issue the commands until I force the results. FTP doesn't particularly like if I try to use another command, such as the equivalent of cd, then try to get the list of directories after that
19:56:43 <Sgeo> There is this warning in the documentation:
19:56:44 <Sgeo> "You MUST consume all data from commands that return file data before you issue any other FTP commands."
19:57:41 <zzo38> Sgeo: Yes, it should be fixed not to use lazy I/O.
19:58:19 <elliott> AnotherTest: The programmable pipeline isn't very messy.
19:58:29 <Sgeo> zzo38, I'm thinking of either doing that or having the library itself force the previous file data returning command when the next is used
19:58:33 <Sgeo> Or both
19:58:41 <fizzie> elliott: SDL audio is callback-driven; I don't know how well that binds. (Tried to look at http://hackage.haskell.org/package/SDL Graphics.UI.SDL.Audio but it looks a bit... empty.)
19:58:53 <Sgeo> Have the functions be strict, but provide lazy versions that still are forced by the next FTP command.
19:58:55 <AnotherTest> I got to go
19:58:56 <AnotherTest> bye
19:58:58 -!- AnotherTest has left.
19:59:01 -!- sebbu has joined.
19:59:01 -!- sebbu has quit (Changing host).
19:59:01 -!- sebbu has joined.
19:59:02 -!- azaq23 has quit (Read error: Connection reset by peer).
19:59:14 <elliott> fizzie: Haskell can bind libraries with callbacks just fine, but some inferior languages can't.
19:59:44 <fizzie> elliott: Inferior binding-makers might not either. :p
20:00:26 -!- azaq23 has joined.
20:00:48 <Sgeo> Any fixing of any libraries will have to come after Tuesday.
20:00:58 <Ngevd> I want to try my hand at making a game. What's a good graphics thingy to learn first, probably with Haskell (which, despite how bad I am at it, is my best language)?
20:01:48 <elliott> Ngevd: http://hackage.haskell.org/package/gloss
20:02:04 <elliott> Ngevd: Look at http://gloss.ouroborus.net/ for examples, etc.
20:02:09 <elliott> Also pretty pictures.
20:02:25 <Ngevd> Yay friend teacher person
20:03:05 <elliott> Ngevd: Also, you should probably install it with `cabal install gloss --flags="GLFW -GLUT"`.
20:03:16 * elliott doesn't like GLUT, and also it apparently has issues with GHCi.
20:03:29 <Ngevd> It would have been nice if you had said that about four seconds earlier
20:03:38 <elliott> Hit ^C.
20:03:47 <elliott> It's probably installing some random dependency and not gloss itself.
20:04:18 <Ngevd> Okay
20:07:11 <zzo38> Maybe later, if I learn how to make network software in Haskell then I can make a library for gopher protocol access (and working with a few other protocols too). Such as having one function appending CRLF to the query string, one doesn't, and so on. And a few function parse gopher menus.
20:15:15 <zzo38> I watched a movie yesterday, after one player wanted to stop playing chess the other player still continued just by saying their moves and then they said the moves in addition to things unrelated to the game and eventually win by discovered checkmate.
20:25:40 -!- oerjan has joined.
20:25:52 <elliott> hi oerjan
20:26:01 <oerjan> hi elliott ->
20:26:01 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
20:26:22 <elliott> <- oerjan hi
20:26:35 <Sgeo> What's the name for <- ?
20:26:37 <Sgeo> Is there a name?
20:26:39 <elliott> Phantom_Hoover: Quick, go downwards!
20:26:40 <pikhq_> Yeah, it's utterly trivial to handle callbacks in Haskell bindings.
20:26:58 <pikhq_> Haskell has this neat thing, "exporting functions to C".
20:27:06 <Sgeo> Also, how do I pronounce (>>)?
20:27:27 <elliott> Sgeo: "then"?
20:27:27 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
20:27:30 <elliott> Who the fuck pronounces code.
20:28:20 <Phantom_Hoover> why
20:28:22 <Phantom_Hoover> whu
20:28:25 -!- monqy has joined.
20:28:27 <Ngevd> elliott, people with microphones and no keyboards
20:28:46 <elliott> Ngevd: So, iPhone users?
20:29:08 <Ngevd> elliott, yes. They have reason to pronounce code, if they have a decent speech recognition app
20:29:29 <elliott> Nobody has one of those. Right fizzie?
20:30:03 <fizzie> One of these days I'm going to RAGEPAT at you.
20:30:03 * Sgeo goes to learn MySQLi, even though it wasn't taught in class
20:30:12 <monqy> :o
20:30:22 <fizzie> (Fortunately now I am busy.)
20:30:25 <Sgeo> I will not write code vulnerable to SQL Injections just because it's easy and I know how.
20:32:00 <elliott> Sgeo: wait 'til you find out that mysqli isn't installed on the relevant machine
20:32:44 <Sgeo> elliott, I vaguely remember the professor randomly mixing in a mysqli function in with mysql stuff
20:33:09 <zzo38> I made "sqlreport" program I think it is not vulnerable to SQL injection. Simply because it offers no way to do so. But cross-scripting attacks might still be possible when output HTML files, if you are not careful.
20:34:19 <itidus20> i would like to know what speech to text feels like
20:34:50 <itidus20> it can't be good for coding
20:34:51 <zzo38> itidus20: I think someone once made a program to do that and it made the wrong words sometimes
20:35:10 <zzo38> So, in other words, I believe you it not good for coding
20:35:27 <itidus20> yeah, when we got a computer microphone years ago there was some such program to go with some word processor
20:35:45 <itidus20> just packed-in software
20:36:14 <itidus20> i think it would be best for people who think easier with their voice than with their fingers
20:37:02 <Sgeo> "Warning: mysqli_query() expects at least 2 parameters, 1 given in ------------/view.php on line 20"
20:37:07 <Sgeo> Why is that called a warning?
20:37:21 <Sgeo> Oh, I don't think it stopped the page being processed.
20:37:29 <Sgeo> Which, um, is kind of a wtf
20:38:53 <oerjan> <fizzie> One of these days I'm going to RAGEPAT at you. <-- i sense this could get ugly.
20:39:15 <elliott> oerjan: His blood temperature might even rise by about 0.03 degrees Celsius.
20:39:19 <elliott> If it gets REALLY bad.
20:39:38 <oerjan> i am mostly thinking about the patting.
20:40:44 <elliott> 00:27:30: <ais523> wow, it seems that the most popular browser version now is Chrome 15
20:40:44 <elliott> 00:27:42: <ais523> IE has more share total, but no individual version of IE beats Chrome 15
20:42:03 <elliott> @tell ais523 There's no point affixing a version number to Chrome, since every Windows, OS X and Linux user gets silent, automatic updates for it (well, Linux goes through apt or, I suspect, yum); I suppose Chromium doesn't, but many distro packages of it are well-updated, and I doubt many people at all use it outside of Linux.
20:42:03 <lambdabot> Consider it noted.
20:42:12 <fizzie> oerjan: In case you didn't happen to be around, it was a reference to 2011-12-02 -!- elliott has left #esoteric ["ragepat"] -!- elliott has joined #esoteric -!- elliott has left #esoteric ["ragepart"]
20:42:45 <elliott> My proudest moment.
20:43:28 <zzo38> Make a contest, you have 32 hours to make 30 games for NES/Famicom. It is required to be public domain.
20:43:30 <itidus20> Rumor has it that the ragepat hasn't been forgotten.
20:44:42 <elliott> oerjan: @check is broken
20:44:42 <oerjan> fizzie: aha
20:44:48 <elliott> @smallcheck True
20:44:49 <lambdabot> Unknown command, try @list
20:44:51 <elliott> huh
20:44:58 <oerjan> elliott: well i just checked if someone had fixed it overnight
20:45:05 * oerjan optimist
20:45:16 <elliott> oerjan: @tell Cale about it
20:45:23 <elliott> he reinstalled all lambdabot's dependencies when I sent that patch
20:45:27 <elliott> *all of
20:45:31 <elliott> and had to fix it for a mueval change
20:45:33 <elliott> so
20:45:51 <oerjan> @tell cale Hello there, lambdabot's @check seems to be broken
20:45:52 <lambdabot> Consider it noted.
20:46:55 <elliott> oerjan: i believe it case sensitive
20:47:01 <elliott> @tell oerJAN hi
20:47:01 <lambdabot> Consider it noted.
20:47:20 <fizzie> Now he's going to sneakily stay quiet for the rest of the eternity.
20:47:22 <fizzie> Test FOILED.
20:47:25 <elliott> 03:34:36: <Sgeo> kallisti, update
20:47:25 <elliott> 03:55:44: <Sgeo> Also monqy I guess
20:47:25 <elliott> 03:55:50: <monqy> what
20:47:25 <elliott> 03:56:07: <monqy> hi
20:47:25 <elliott> 03:56:52: <Sgeo> I know that you know what Homestuck is, but are you actively caught up?
20:47:25 <elliott> 03:58:15: <monqy> im having trouble dealing with zoosmells death...
20:47:31 <elliott> That's where I stopped reading.
20:47:35 <elliott> fizzie: Foiled again!!!!
20:47:40 <oerjan> elliott: btw i was considering if it was really necessary for zjoin to evaluate all of the rectangular elements both above and to the left, and i found an argument that it's essentially necessary
20:47:40 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
20:47:41 <elliott> That's what I did to Zwaarddijk.
20:47:44 <elliott> He was never the same.
20:47:51 <oerjan> @messages
20:47:51 <lambdabot> elliott said 50s ago: hi
20:48:47 <elliott> oerjan: Cale is actually talking in #haskell, or so say the logs :P
20:48:50 <elliott> the logs also think it's :17 though.
20:48:56 <elliott> clog time(TM)
20:49:06 <oerjan> well clog time has always been screwy
20:49:12 <oerjan> ok maybe not _always_
20:49:15 <oerjan> but for years
20:55:10 <Sgeo> :t atomically
20:55:11 <lambdabot> Not in scope: `atomically'
20:55:17 <zzo38> Do you know which method is used to determine the dates in the "horoscope" section of newspapers? Are they dates for the current year? Are they for the current year and next year? Current tropical year? Is there agreement on what to use? Are timezones taken into account? Do they just copy the dates from other newspapers without understanding them?
20:56:32 <elliott> :t zip3
20:56:32 <lambdabot> forall a b c. [a] -> [b] -> [c] -> [(a, b, c)]
20:56:34 <itidus20> zzo38: yes.
20:56:38 <oerjan> the newspaper i know with a horoscope just says "tomorrow" (well, in norwegian)
20:57:02 <zzo38> itidus20: Yes? There are many sentence so just "yes" is not good enough
20:57:26 <oerjan> (VG that is)
20:57:34 <zzo38> oerjan: It just says "tomorrow"? And nothing else?
20:57:49 <elliott> Yes.
20:58:01 <oerjan> zzo38: well no, it says something like "tomorrow's horoscope"
20:58:21 <itidus20> zzo38: people who care don't look at newspaper horoscopes. :D
20:58:23 <zzo38> oerjan: O. What I meant was the dates they give for each sign.
20:58:50 <itidus20> perhaps they browse them only to spite them
20:59:00 <oerjan> zzo38: um those are the dates for when you need to be born to be in that sign?
20:59:10 <itidus20> "these horoscopes are all wrong. the ignorant fools!"
20:59:36 <oerjan> zzo38: i guess those vary slightly from year to year at the edges
20:59:37 <zzo38> itidus20: I suppose that might be true, but it would probably still be improved if they got the dates accurate and included information about which year these dates are for. (I assume the current year)
20:59:49 <itidus20> lol
21:00:13 <itidus20> zzo38: it was that kind of thinking that got calvin and hobbes a full spread
21:00:30 <oerjan> zzo38: but the current year is uninteresting unless you're reading the horoscope for a baby :P
21:00:46 <zzo38> oerjan: Yes, they would be. However, if you were to be born in that sign, then it would need to be the dates for the year of your birth, and time of day needs to be taken into account as well. No method of newspaper horoscope dates would help with this.
21:00:53 <oerjan> and no other year is significantly better
21:01:32 <oerjan> zzo38: indeed. but then if you're born near the border, i think theoretically you get some influence from both signs
21:01:51 <itidus20> the border = the 'cusp'
21:01:56 <itidus20> :-D
21:02:00 <oerjan> O KAY
21:02:11 <itidus20> sorry oerjan im not one of 'them'
21:02:15 <zzo38> oerjan: Yes, exactly. If you want to know what sign you are born in, none of the stuff in the newspaper helps. And, of course, those dates are for the sun anyways (which is OK, however many people don't know they correspond to the sum)
21:02:50 <itidus20> it just turns out i was born only hours away from a border
21:03:08 <itidus20> and it turns out borders are not aligned exactly with midnight
21:03:13 <zzo38> oerjan: Well, whatever "influence" you walk about and stuff, the dates have objective meaning and ought to use a consistent method to display them. (If it is the current year, you could see when the equinoxes and solstices are, for example, in case your calendar doesn't have that information)
21:03:27 -!- ais523 has joined.
21:03:54 <zzo38> itidus20: Yes, that is true. Not aligned exactly with midnight. Looking at dates for spring equinox in Wikipedia, times are given too. That is the "cusp" of Aries (or zero degrees).
21:03:55 <elliott> hi ais523
21:04:05 <ais523> hi elliott
21:04:05 <lambdabot> ais523: You have 2 new messages. '/msg lambdabot @messages' to read them.
21:04:06 <zzo38> Since that is the definition of the zero degrees reference point.
21:05:16 <ais523> elliott: @second message, agreed, @first message, I don't know what you're talking about
21:05:34 <elliott> 14:11:14: <elliott> 23:51:19: <ais523> so, what's the appropriate internet-meme reaction to Chuck Norris advertising World of Warcraft?
21:05:35 <elliott> 14:11:46: <elliott> @tell ais523 grinding your teeth and hoping the world collectively gets over itself
21:06:10 <itidus20> i was born just under 3 hours before the spring equinox (i didnt know this word before)
21:06:14 <elliott> or screaming, ask oerjan for effective methods of despair
21:06:36 <monqy> oh no did people do that
21:06:40 <monqy> oh no........
21:07:01 <itidus20> `log chuck chuck chuck
21:07:21 -!- MDude has joined.
21:07:36 <HackEgo> No output.
21:07:56 <oerjan> zzo38: maybe they should just give the maximal range for each sign. then at least people can see that there is a problem. but i guess that would just get the newspaper inundated with mail.
21:08:02 <itidus20> `log Chuck!
21:08:14 <HackEgo> 2011-12-17.txt:23:55:19: <itidus20> so instead is the 'Chuck!' 'Chuck Chuck!' 'Chuck Chuck Chuck!' [...] 'Chuck Chuck Chuck Chuck Chuck Chuck Chuck Chuck!'
21:08:19 <zzo38> itidus20: Then your Sun sign would be Pisces. It is probably less than one degree before 360 degrees. (But if you want it only approximate then you can say it is Aries if you want to, but that would be inexact)
21:08:46 -!- MSleep has quit (Ping timeout: 240 seconds).
21:08:53 <itidus20> correct. for a long time i thought it was aries.. but then i looked it up and was quite excited to have my sign change
21:09:07 <zzo38> Your sign won't ever change unless the definitions change.
21:09:14 <elliott> :t uncurry3
21:09:14 <lambdabot> Not in scope: `uncurry3'
21:09:18 <elliott> @hoogle uncurry3
21:09:18 <lambdabot> No results found
21:09:19 <zzo38> You were simply wrong before.
21:09:48 <zzo38> oerjan: I think they should give the dates for the current year, and post a disclaimer that tells it is for the current year, and in what timezone (if necessay).
21:10:22 <twice11> @let uncurry3 a b c f = f (a,b,c)
21:10:23 <lambdabot> Defined.
21:10:30 <twice11> :t uncurry3
21:10:30 <lambdabot> forall t t1 t2 t3. t -> t1 -> t2 -> ((t, t1, t2) -> t3) -> t3
21:10:57 -!- MSleep has joined.
21:11:25 <ais523> wow, one of the spambots is trying to catch searches about how to wire an SPST switch
21:11:39 <ais523> if anyone's searching for that, there's not really help for them
21:11:57 <elliott> http://answers.yahoo.com/question/index?qid=20081120182952AAaY0nH
21:12:35 <zzo38> If I ran a newspaper and someone wanted to add the horoscopes section, I would insist on using a consistent method for the dates and post a footnote or whatever that tells what it is (such as current year or whatever).
21:12:49 <elliott> please run a newspaper
21:13:04 <elliott> it would mean more than you can ever know to me
21:13:20 <zzo38> But I have not the resources to run a newspaper.
21:13:26 -!- MDude has quit (Read error: Operation timed out).
21:14:07 -!- MDude has joined.
21:14:13 <Phantom_Hoover> Derren Brown is gay??
21:14:57 <elliott> Gay... for MAGIC.
21:15:44 <ais523> zzo38: but I thought that horoscopes for every star sign and every day were interchangeable
21:16:13 -!- MSleep has quit (Ping timeout: 240 seconds).
21:16:31 <ais523> elliott: I once ran an experiment where I looked at all the horoscopes for the current day, for a few days, to check which were definitely incorrect and which were possibly correct
21:17:03 <ais523> the correctness/incorrectness had nothing to do with my star sign in my smallish sample
21:17:39 <itidus20> http://en.wikipedia.org/w/index.php?title=Pisces_%28astrology%29&action=historysubmit&diff=465196453&oldid=370549804
21:18:32 <oerjan> ais523: it's just your skeptical quantum field messing up the predictions. hth.
21:18:37 <ais523> itidus20: is it the deletions on the left you're trying to draw attention to?
21:18:38 <elliott> ais523: wow, you managed to make horoscopes even more accurate!
21:18:57 <elliott> ais523: 11 times more accurate, in fact
21:19:02 <itidus20> ais523: i'm just amused. nothing more than that
21:19:07 <ais523> oerjan: actually, I've put some thought into psychic activity and the like, and concluded that, if it works at all, it's likely to fail in the presence of nonbelievers
21:19:34 <elliott> isn't that a standard argument
21:19:42 <oerjan> pretty much.
21:19:54 <elliott> there's a quote that's almost literally "why would the pixies talk to you, *you* don't want to hear them!!!!1"
21:20:16 <elliott> ...the problem being that decent sceptics would _love_ to hear from pixies :)
21:20:32 <twice11> And then there is the story about Niels Bohr and the horseshoe...
21:21:36 <zzo38> ais523: The advices/predictions given for each sign may be interchangeable, but the signs themselves aren't.
21:22:08 <zzo38> The signs themselves are just a different kind of units for measuring ecliptic longitude.
21:22:13 * Sgeo commits himself to a no SQL Injection, no XSS policy for this project and all future projects.
21:22:14 <zzo38> (Rather than using degrees)
21:22:36 <ais523> Sgeo: you mean you're defending against them, or not using them on the project?
21:22:49 <Sgeo> ais523, I'm defending against them
21:23:06 <ais523> how/
21:23:20 <ais523> any answer that is not some form of parameterised queries is unacceptable
21:23:41 <Sgeo> mysqli prepared statements for the former, I'm hoping PHP has nice easy to use things to escape text that might contain HTML tags for the latter
21:23:47 <elliott> Sgeo: "We have a policy that we have no SQL injections."
21:23:56 <twice11> ais523: serve static pages ;)
21:23:56 <ais523> prepared statements count as parameterised queries
21:23:56 <elliott> (http://kottke.org/04/07/my-new-policy)
21:24:09 <zzo38> twice11: Yes I know about the story of Niels Bohr and the horseshoe
21:25:40 <Sgeo> I have a table that's not supposed to be modified. Can I consider the table trustworthy?
21:26:09 <zzo38> ais523: If you looked at the description in a horoscopes of a newspaper, and figured out some are correct and some are incorrect, that has nothing to do with the dates that are specified for each sign. So, yes, it has nothing to do with it. The signs are often called "star signs" but actually they are "sun signs" because the dates in the newspaper are according (approximately) to the sun, not to the fixed stars.
21:27:00 <twice11> Jason Kottke has a policy that he is dating Nicole Kidman *and* Gwyneth Paltrow. I guess he expects that Derren brown doesn't have a policy that includes datin him...
21:27:27 <zzo38> Can you understand it now?
21:30:50 <itidus20> ais523: i believe that the compatability system of astrology is an account of why we can't all get along
21:31:04 <itidus20> on the simplest level i see it as a kind of elaborate rock paper scissors
21:31:35 <ais523> heh
21:31:48 <itidus20> hmm
21:32:17 <itidus20> i think the world could be modelled, though not very interestingly, in a game where you are either born with rock paper or scissors attribute
21:32:45 <itidus20> a cyclic food chain
21:34:14 <itidus20> for the rock, rock would be an ally, paper would be a predator, and scissors would be prey
21:34:55 <oerjan> 10:35:34: <fungot> Ngevd: date: wed, 2 jan 91 14:47:01 -0800 from:
21:34:56 <oerjan> 10:35:50: <Ngevd> Can't make that, fungot. I'm sorry.
21:34:56 <oerjan> 10:35:51: <fungot> Ngevd: we have found out a file named ' feather'...). even so i got used to the actual internet protocol you can do will fix any problem; even if it resolves a symbol. but the point.
21:34:56 <fungot> oerjan: too many students working with howard carter when he excavated the tomb of amenhotep ii: the quickening is the sequel to the popular film, returns to help of the british time traveller i've overlooked until now. come on, forget technology. is the man i requested a ride a horse, of course./that is, of the house, so he wasn't joking i don't bolivia!
21:34:56 <fungot> oerjan: no, the boy, do i?
21:34:56 <fungot> oerjan: should you have a naked flame next time. goodbye. well, it is rocket science!" and cackle maniacally:
21:35:16 <oerjan> Ngevd: i suspect fungot is suggesting you use feather to time travel there
21:35:16 <fungot> oerjan: oh, the swamp of terror, in search of the golden citadel... we only had ter put down 10%, not nothing. this isn't the time or place, but it turns the entire ship
21:36:48 <oerjan> <itidus20> on the simplest level i see it as a kind of elaborate rock paper scissors <-- reminds me of something i read claiming people divide into three approximately equal groups: mostly altruistic, mostly selfish and mostly doing whatever everyone else is doing.
21:36:51 <itidus20> this would lead to segregation between rock paper and scissors, which could be overcome by wearing masks to hide whether they are rock or paper or scissors
21:37:35 <oerjan> the exact descriptions are _very_ vaguely recalled here
21:39:36 <itidus20> but somehow a citizen could be fairly open with a parent or lover
21:40:00 <oerjan> ^style
21:40:00 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs* jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
21:40:07 <oerjan> what is iwcs
21:40:12 <oerjan> ^style iwcs
21:40:12 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
21:40:15 <oerjan> oh
21:40:26 <elliott> fizzie: Where's iwca?
21:40:42 <itidus20> perhaps systemically, to bring in another analogy, a spider could raise a fly as it's child provided the parent child relationship was healthy
21:40:57 <elliott> <oerjan> <itidus20> on the simplest level i see it as a kind of elaborate rock paper scissors <-- reminds me of something i read claiming people divide into three approximately equal groups: mostly altruistic, mostly selfish and mostly doing whatever everyone else is doing.
21:41:02 <elliott> oerjan: I thought it was pigs, dogs and sheep.
21:41:36 <oerjan> i don't recall any such terms
21:41:48 <elliott> http://en.wikipedia.org/wiki/Animals_(Pink_Floyd_album) :p
21:41:52 * oerjan metal dog
21:42:13 <elliott> Is that a dog made out of metal, or a dog who likes metal?
21:42:24 <oerjan> ask the chinese astrologers.
21:42:36 <elliott> Wow, that's actually a thing.
21:43:00 <zzo38> In the Chinese, the dog is one of the Chinese zodiac signs, used for marking years, and metal is one of the five Chinese elements. So, that is what it is.
21:43:24 <pikhq_> Good album, FWIW.
21:43:25 <itidus20> my model is meant to suggest that there are no valid scapegoats
21:43:58 <fizzie> 2011-11-12 15:29:28 <elliott> The scripts are I think Good Enough to add as iwcs now, but them annotations need wurk.
21:44:31 * Sgeo finds himself typing "the security hole is minor" in a PHP comment
21:44:32 <Sgeo> :/
21:44:52 <pikhq_> elliott: Fine Structure is much less confusing when you've actually finished it, BTW. :P
21:45:02 <monqy> :/
21:45:10 <itidus20> since rock paper scissors are not a hierarchy of morals or ethics
21:45:35 <ais523> really, we need a language with a type system strong enough to do CGI/HTML/related stuff with no risk of injection holes at all
21:46:00 <ais523> it's possible to make type systems like that in most strongly-typed languages, but I'm not sure if they have libraries with all the relevant types defined
21:46:03 <itidus20> in other words, in my system it would be quite absurd to set up a paper-archy, a rock-archy or a scissors-archy
21:46:08 <Sgeo> By minor, I mean the consequences of someone exploiting it is that they get to cheat a little bit and name a song other than a randomly chosen one.
21:46:11 <elliott> fizzie: Ah.
21:46:17 <Sgeo> I don't think that that's that big a deal
21:46:28 <monqy> no it is the biggest deal
21:46:31 <monqy> sgeo you have to fix this
21:46:48 <Sgeo> The only way I can think of fixing this is to set the song ID in the session
21:47:04 <oerjan> itidus20: "BURN THE PAPERS"
21:47:23 <monqy> think better
21:47:28 <Sgeo> I don't think I'll bother
21:48:12 <monqy> but but
21:48:17 <oerjan> from which we can conclude that emperor qin shi huangdi was scissors.
21:48:31 <itidus20> that their relationship to each other is based on an equal ability to exploit each other
21:48:40 <itidus20> uh in a circle though
21:48:50 <itidus20> not a mesh of exploitation, but just a circle
21:49:46 <Sgeo> monqy, feel free to name a song of your choice without naming the randomly selected song first, if you want
21:49:51 <oerjan> itidus20: you realize that in the real world there _is_ a hierarchy, though?
21:49:57 <Sgeo> It's a terribly useful hole to exploit.
21:50:13 <monqy> no I'd feel dirty
21:50:17 <monqy> I don't like that feeling
21:50:23 <oerjan> at least certain people are definitely at the bottom
21:50:41 <itidus20> oerjan: i don't know how to arrive at that from my current idea of rock paper scissors though
21:50:59 <oerjan> it is of course possible that each hierarchical level could be arranged in such a manner.
21:51:16 <ais523> hmm, perhaps I will upgrade and then switch to KDE
21:51:39 <itidus20> oerjan: hmm.. well.. "capital" seems to be a synonym for "predatory capacity" :D
21:52:00 -!- Klisz has joined.
21:52:14 <itidus20> at least it is being used that way now
21:52:18 <ais523> based on a comparison of current Linux desktops I'm reading
21:52:26 <ais523> KDE4 wasn't fundamentally broken, just buggy, and it's almost certainly been fixed by now
21:53:10 <elliott> ais523: I have used KDE 4 after everyone started saying "all the bugs are gone now!".
21:53:16 <ais523> elliott: what happened?
21:53:19 <elliott> Turns out it was buggy /and/ terrible, and still is.
21:53:20 <itidus20> money being one form of predatory capacity
21:53:22 <elliott> Well, still terrible.
21:53:29 <elliott> It might still be buggy, but I didn't run into any when I tried it.
21:53:52 <ais523> hmm, I'd like more specific reasons why it's terrible
21:53:54 <itidus20> its too much for me to figure out all at once
21:53:58 <ais523> as I'm still using Gnome 2 at the moment
21:54:03 <itidus20> brb
21:55:22 <pikhq_> I'm on XFCE ATM, but considering going back to the world of tiled WM.
21:55:28 <elliott> ais523: It has basically no coherent design philosophy whatsoever. It feels sluggish, Dolphin just isn't a very good file manager... KDE programs used to be relatively unpolished but full of functionality and configuration options. They still have quite a lot of configuration options in KDE 4, but they don't nearly have the same "depth"; it's mostly just pointless knobs to twiddle instead of rael custo
21:55:28 <elliott> misability. They're trying to be "humane, like GNOME" but they don't really know how. The panel is bad; the stupid "widget" desktop is worse.
21:55:32 <pikhq_> I hear awesome's awesome.
21:55:50 <ais523> elliott: ah, I see
21:55:58 <elliott> Dolphin is especially bad as a file manager because Konqueror was a really good KDE3-y file manager.
21:56:00 <ais523> I remember not being able to find the config thing at all in KDE4 last I looked
21:56:07 <elliott> It was "modular", incredibly well-integrated, flexible, unified, etc.
21:56:11 <pikhq_> Yeah, KDE 3 was pretty nice. Unpolished but you could make it act exactly how you wanted it to.
21:56:11 <ais523> can't Konqueror still be used as a file manager? or Nautilus, fwiw?
21:56:12 <elliott> Dolphin is just... a file manager.
21:56:20 <elliott> ais523: Yes. (And Nautilus still is in GNOME 3.)
21:56:26 <elliott> GNOME 3 Nautilus is better than GNOME 2, I'd say.
21:56:29 <elliott> <pikhq_> I hear awesome's awesome.
21:56:30 <elliott> pikhq_: Lua.
21:56:41 <pikhq_> And, yeah, "modular" was the driving philosophy of KDE 3.
21:56:48 <ais523> elliott: well, I'm just talking about the shell
21:56:53 <pikhq_> KDE 4 has... What.
21:56:55 <elliott> ais523: Huh?
21:57:06 <pikhq_> "Bloat = good"?
21:57:09 <ais523> elliott: as in Gnome Shell
21:57:17 <elliott> ais523: You haven't said a single thing about Gnome Shell?
21:57:30 <ais523> elliott: indeed; but I'm not sure what KDE's equivalent is called
21:57:38 <ais523> and it's that that I'm trying to talk about
21:57:45 <pikhq_> elliott: What about Lua?
21:57:50 <elliott> ais523: *Where* are you trying to talk about that?
21:57:53 <ais523> I'm entirely willing to use whatever prorgams I want from whatever Gnome/KDE
21:57:58 <elliott> pikhq_: It's terrible. And awesome is configured with it.
21:58:02 <ais523> elliott: I'm talking about using KDE, but potentially using gnome apps
21:58:07 <ais523> *programs
21:58:35 <pikhq_> elliott: *shrug*
21:58:52 <elliott> ais523: Well, KDE's window manager has never been much special, and it's particularly ugly by default in KDE 4 (and I don't really know of any good KDE 4 themes because everyone jumped ship from KDE), the panel sucks, the desktop sucks... I don't see any reason to use KDE for the shell at all.
21:59:10 <elliott> ais523: Xfce's shell is almost like GNOME 2 if you can deal with its rough edges.
21:59:11 <ais523> elliott: hmm
21:59:19 <ais523> is maintaining gnome-panel the only possibility, I wonder?
21:59:25 <elliott> pikhq_: Also, awesome is C.
21:59:28 <ais523> it's still around in the Ubuntu repos, although possibly not for much longer
21:59:31 <elliott> pikhq_: So it's probably less reliable than xmonad and uses a worse language.
21:59:42 <elliott> ais523: GNOME 3's gnome-panel isn't very good.
21:59:50 <ais523> ah, OK
21:59:52 <elliott> ais523: They rewrote it (!).
22:00:20 <elliott> ais523: I suggest installing Xfce (find your distribution's "core Xfce" package, and skip the "goodies" one; the additional programs are bad imitations of GNOME stuff, mostly, and tend to be quite buggy).
22:00:27 <elliott> (And/or unpolished.)
22:00:31 <pikhq_> Always dwm. :P
22:00:47 <ais523> elliott: but xfce's a window manager, isn't it?
22:00:55 <pikhq_> ais523: XFCE is a lightweight DE.
22:00:59 <elliott> ais523: That provides basically a decent window manager, panel (bad settings by default, but it's very configurable) and file manager.
22:00:59 <ais523> ah, OK
22:01:06 <ais523> can I use Compiz with it?
22:01:12 <elliott> ais523: And a mediocre terminal.
22:01:16 <pikhq_> Yesss, but its WM already composites.
22:01:25 <elliott> (Optionally.)
22:01:29 <ais523> pikhq_: but does it do things like make windows semi-transparent?
22:01:31 <elliott> (At pikhq_.)
22:01:38 <ais523> or change their contrast level?
22:01:44 * elliott just made inactive windows completely transparent.
22:01:47 <elliott> This is disorienting.
22:01:49 <pikhq_> I dunno, I dislike X compositing.
22:02:03 <pikhq_> It's a hack and it feels like it.
22:02:06 <elliott> ais523: Anyway, you'd have a hard time writing a DE that didn't run with Compiz.
22:02:13 <ais523> yep, fair enough
22:02:13 <elliott> You'd have to bake in WM checks into every program.
22:02:27 <ais523> I'm still feeling slightly bitten from the days when I accidentally got two window managers running at once
22:02:39 <ais523> I'm not sure if it was Compiz + Metacity or two instances of Compiz, but the results weren't pretty
22:02:59 <ais523> * elliott just made inactive windows completely transparent. <-- that doesn't sound like a very good idea
22:03:24 <elliott> ais523: My main niggles with Xfce are: one, scrolling in a background window focuses and raises it; that won't happen if you run Compiz, naturally. Two, if you set the task bar window list to "don't order the bloody things and let me drag them around myself", then it lets you reorder windows (which previous versions didn't), thank god, but it seems to like to pretend you didn't do anything when you dra
22:03:24 <elliott> g them around.
22:03:36 <elliott> Often I can e.g. swap two windows by dragging one left, but not the other right.
22:03:49 <elliott> That probably won't bother most people, though; I do pretty weird things with my task bar.
22:04:00 <ais523> elliott: hmm, I always swap my taskbar entries into order
22:04:08 <ais523> if they don't fall there naturally
22:04:10 <elliott> ais523: Then you could just configure an order.
22:04:16 -!- Ngevd has quit (Ping timeout: 248 seconds).
22:04:20 <ais523> yep, I guess so
22:04:27 <ais523> but I'm not sure if the order rules are simple enough to specify
22:04:38 <elliott> ais523: Timestamp, group title and timestamp, window title, group title and window title.
22:04:40 <elliott> Those are the options.
22:04:54 <elliott> Timestamp appears to be "of opening".
22:05:07 <elliott> Yes, it is.
22:05:32 <ais523> I mean, sometimes I want to put things in a particular location but I've never used them before
22:05:34 <elliott> ais523: "Group" corresponds to "application", I think.
22:05:52 <ais523> also, there are some things I habitually put on an alternative desktop/workspace
22:05:54 <ais523> like media players
22:06:20 <ais523> I find I don't use multiple desktops massively often, except for that, but when I do they're really useful
22:06:24 <elliott> Sounds like you want http://burtonini.com/blog/computers/devilspie/.
22:08:01 <elliott> :t repeat
22:08:01 <lambdabot> forall a. a -> [a]
22:08:57 <ais523> elliott: pretty much always when I use multiple desktops, there's a terminal on each of them
22:09:33 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:12:55 <elliott> oerjan: hmm, what came after those three numbers again? I think your prediction may have been a bit off
22:15:29 -!- Phantom_Hoover has joined.
22:16:43 <oerjan> what numbers
22:16:51 <elliott> @hoogle zipWith3
22:16:51 <lambdabot> Prelude zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
22:16:51 <lambdabot> Data.List zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
22:16:51 <lambdabot> Data.Sequence zipWith3 :: (a -> b -> c -> d) -> Seq a -> Seq b -> Seq c -> Seq d
22:17:54 <oerjan> what numbers
22:20:39 <elliott> oerjan: 247, 230, 260, I believe
22:21:11 <oerjan> `log 247,230,260,
22:21:16 <HackEgo> 2011-12-17.txt:02:28:06: <lambdabot> [247,230,260,337]
22:21:38 -!- augur has quit (Remote host closed the connection).
22:21:42 <oerjan> `log 247,230,260,.*,
22:21:48 <HackEgo> 2011-12-18.txt:22:21:42: <oerjan> `log 247,230,260,.*,
22:22:03 <oerjan> `log 247,230,260,[^.]*,
22:22:09 <HackEgo> 2011-12-17.txt:02:28:52: <lambdabot> [247,230,260,337,461,632,850,1115,1427,1786,2192,2645,3145,3692,4286,4927,5...
22:23:58 <elliott> THANK GOD I ADDED `LOG EH
22:24:08 <oerjan> yay
22:24:33 <oerjan> THE POSSIBILITIES ARE ENDLESS
22:29:04 <oerjan> <itidus20> feel free to correct me on this <-- see: http://en.wikipedia.org/wiki/Space-filling_curve
22:29:39 <oerjan> (that doesn't mean what you said is not also true, in another sense)
22:31:41 <elliott> wow, Peano lived that recently?
22:32:44 <oerjan> so it appears
22:33:24 <Phantom_Hoover> You'd think somebody'd have pinned down this whole arithmetic thing before then.
22:34:44 <oerjan> fermat had a version of induction called infinite descent.
22:34:56 <elliott> I assumed he lived in like the 1700s or earlier
22:35:05 <elliott> How did calculus get invented before the Peano axioms?
22:36:17 <elliott> (OK, so /formal/ calculus was probably roughly contemporaneous.)
22:37:44 <oerjan> i imagine the elements of peano arithmetic were known earlier, just not that you could make the foundation that simple
22:38:42 <elliott> oerjan: "The need for formalism in arithmetic was not well appreciated until the work of Hermann Grassmann, who showed in the 1860s that many facts in arithmetic could be derived from more basic facts about the successor operation and induction.[1] In 1881, Charles Sanders Peirce provided an axiomatization of natural-number arithmetic.[2] In 1888, Richard Dedekind proposed a collection of axioms about
22:38:42 <elliott> the numbers, and in 1889 Peano published a more precisely formulated version of them as a collection of axioms in his book, The principles of arithmetic presented by a new method (Latin: Arithmetices principia, nova methodo exposita)."
22:38:50 <elliott> Not that much beforehand, it seems.
22:38:55 <elliott> *that long
22:39:21 <elliott> It's really pretty shocking just how young almost everything is.
22:39:26 <Phantom_Hoover> "In 2005, Kryptonite changed their locks from a tubular-key to an I-key, which stopped the ability of a BIC pen or other cylinder shaped object from defeating the locking system.[3]"
22:39:46 <elliott> Phantom_Hoover: At least they stopped Superman getting in.
22:40:12 <Phantom_Hoover> "Don't worry, our locks are perfectly secure so long as thieves can't get their hands on cylindrical objects. And I think we all know how unlikely that is!"
22:40:38 <elliott> "I can get by in Haskell, but I'd consider myself a newbie (only use the IO monad, don't understand arrows). I wrote this in part to help me understand Haskell better."
22:40:39 <elliott> *sigh*
22:40:51 <elliott> The problem with people writing Haskell tutorials to learn things is that they inflict them on other people.
22:41:20 <monqy> why do people write tutorials about things they don't know ;_;
22:42:03 <Sgeo> Isn't it possible to learn by teaching?
22:42:18 <Sgeo> Although I guess it would be better to imagine teaching a teddy bear or something
22:42:26 <Phantom_Hoover> I feel my monad tutorial quote is in some way relevant.
22:42:43 <monqy> teddy bears don't feel pain
22:43:09 <elliott> `quote monad tutorial
22:43:09 <Phantom_Hoover> Sgeo, please, the image of you teaching your teddy bears is not one I need right now.
22:43:12 <HackEgo> 445) <Phantom_Hoover> oerjan, little do you realise that everything you say and do is part of that great monad tutorial we call life.
22:43:29 <monqy> i like that image
22:45:00 -!- augur has joined.
22:47:17 <oerjan> you can put whatever you want into life, but you cannot get anything out of it, except possibly at the end.
22:47:48 <elliott> Thank god oerjan is here to make things depressing.
22:48:05 <oerjan> sowwy
22:48:21 <elliott> How about this: A life where you give birth to someone who does something can be turned into a life where you do that thing!
22:48:34 <oerjan> ooh fancy
22:48:42 <elliott> Thank god I can just breed relentlessly and enslave my children to write @, and it'll be equivalent to writing @ myself.
22:48:51 <elliott> PROBLEM 1: Breed relentlessly.
22:50:15 <monqy> you could adopt relentlessly
22:50:19 <monqy> or kidnap relentlessly
22:50:25 <oerjan> PROBLEM 2: Get someone else to handle the children while they are in that annoying baby stage.
22:50:40 <monqy> kidnap them after they grow a bit
22:50:44 <oerjan> ooh right kidnapping, that solves everything!
22:50:56 <elliott> Wait, I could just kidnap competent people instead?
22:50:59 <elliott> oerjan: Prepare yourself for a life of @.
22:52:08 -!- augur has quit (Read error: Connection reset by peer).
22:52:08 <oerjan> you seem to be confusing me with a competent person. this may lead to problems later.
22:52:18 -!- augur has joined.
22:52:46 <elliott> oerjan: Um you have a Ph.D. in @ology???
22:56:17 <Phantom_Hoover> <elliott> Wait, I could just kidnap competent people instead?
22:56:23 <Phantom_Hoover> I am not a competent person, right?
22:56:46 <elliott> Phantom_Hoover: I don't have the heart to answer that question, but you're being kidnapped to give the system that Scottish touch.
22:56:50 <elliott> (By smashing it in half.)
22:57:09 <Phantom_Hoover> Can I inspect the porridge that you feed to the prisoners.
22:58:09 <elliott> Phantom_Hoover: It's Scott's Porage Oats, misspelling and all. (This is because I hate you.)
22:58:18 <elliott> (Also shouldn't it be Scots' Porage Oats.)
22:58:48 <elliott> http://creativeroots.org/wp-content/uploads/2010/09/scotts-porage-oats.jpg I will never get over how ridiculous this guy looks.
22:58:48 <oerjan> i can inspect the gamalost and lutefisk
22:58:53 <ais523> hmm, I eat a lot of oats
22:59:10 <elliott> ais523: You will enjoy your kidnapping a lot!
22:59:26 <ais523> elliott: I, umm, don't respond well to being kidnapped
22:59:35 <monqy> I've never been kidnapped
22:59:38 <ais523> I may even respond by waking up
22:59:43 <oerjan> ais523 has a lot of experience
22:59:44 <ais523> which could be quite dangerous if I wasn't asleep at the time
22:59:52 <elliott> ais523: Well, you'll actually be adultnapped.
22:59:55 <ais523> it could well destroy the universe
22:59:58 <elliott> As will monqy, but Sgeo will be kidnapped.
23:00:01 <elliott> Wait, I don't actually need Sgeo.
23:00:23 <elliott> ais523: Um excuse me @ is CLEARLY going to be used in the war against the machines?
23:00:35 <elliott> IT'S LIKE YOU'VE NEVER EVEN SEEN THE MATRIX?
23:00:38 <ais523> elliott: I mean, me waking up when already awake
23:00:39 <oerjan> i think i could respond well to kidnapping, if it was the right kidnapping. i am afraid @ is unlikely to be involved.
23:00:53 <ais523> I rarely have a problem waking voluntarily if I know I'm asleep
23:00:55 <elliott> ais523: Now it's like you actually haven't seen The Matrix and thus are actually missing my reference.
23:01:06 <ais523> in fact, once I was in a dream, and realised it, and it was getting weird
23:01:11 <elliott> oerjan: I will get GOD HIMSELF to kidnap you into heaven, and then assign you to work on @.
23:01:23 <ais523> and I thought, this is a dream and I know where the plot's going from here, and eventually I'll get out of it by deliberately waking up
23:01:33 <ais523> so I subverted it by deliberately waking up immediately
23:01:40 <ais523> I didn't really expect it to work, but it did
23:01:50 <Sgeo> ...killjoy. More fun to fly around, I'd think
23:02:07 <Sgeo> If I have a lucid dream again, I plan on flying into the Sun
23:02:12 <Sgeo> I've been planning that for a while
23:02:24 <monqy> dying in dreams can be fun, but don't overdo it
23:02:26 <Sgeo> In response to one of the challenges on DreamViews
23:02:34 <ais523> Sgeo: it wasn't a lucid dream
23:02:46 <ais523> I probably could have made it lucid with enough effort, but I didn't want to
23:03:21 <Sgeo> ais523, hmm. I think people who often talk about lucid dreams would say that that was lucid, but with no control.
23:03:23 <Sgeo> Or something
23:03:33 <ais523> (realising you aren't lucid is a /really/ big giveaway you're in a dream; you tend to be lucid in the real world)
23:04:44 <Sgeo> I think "lucid dream" is usually used subtly differently from what one might expect from the definition of "lucid"
23:05:39 <elliott> monqy: would you die in real life...
23:05:42 <elliott> ......
23:05:43 <elliott> ........;
23:05:47 <monqy> i've never tried
23:05:51 <ais523> Sgeo: I'm referring to the definition of "lucid" as in "lucid dream"
23:05:57 <elliott> beware deth.....
23:05:59 <ais523> certainly, if you die in a dream when not lucid, you instantly wake up
23:06:05 <ais523> or else, forget the dream
23:06:16 <ais523> if you are lucid, you normally use your lucidity to reverse the death
23:06:19 <elliott> ais523: You actually die and go to the afterlife but that part is blocked out.
23:06:21 <elliott> IMPOSSIBLE TO DISPROVE.
23:06:22 <ais523> as it tends to be reasonably omnipotent
23:06:32 <monqy> I've had dream deaths where I didn't instantly wake up
23:06:49 <monqy> maybe I was lucid
23:07:04 <Sgeo> I don't think I've had many dream deaths. I think maybe one or two, and I think I woke up immediately.
23:07:18 <monqy> I think in one of them I reversed the death but then died again and kept dying until I woke up
23:07:32 <monqy> but normally I let the death set in and maybe go to dream-afterlife
23:07:40 <elliott> monqy: your lucid dreams have glitches :D
23:07:45 <monqy> that or instantly wake up
23:07:49 <elliott> have you ever clipped through the floor in a lucid dream
23:07:52 <elliott> oh dear god that sounds terrifying
23:07:54 <elliott> :(
23:08:02 <monqy> now I want to try
23:08:43 <Sgeo> I struggle to go through walls in lucid dreams sometimes
23:08:48 <Sgeo> Flying's no problem though
23:09:06 <monqy> flying sounds boring
23:09:21 <monqy> is it any good
23:09:41 <Sgeo> I didn't really fly for very long, the once or twice that I remember
23:09:44 <Sgeo> But I liked it
23:09:53 <Sgeo> Actually, I think I more floated
23:10:23 <monqy> I tried remembering the dream I had last night but instead I went back to sleep and forgot it oops
23:10:39 <elliott> in lucid dreams i can jump higehr and fall really slowly but i can't actually fly which is annoying because it makes efficient travel difficult
23:10:50 <elliott> like I can jump out of a window and just glide down but apart from that nope
23:11:19 <monqy> now i want to be dreaming ;_;
23:12:24 <elliott> try cyanide
23:12:33 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
23:13:27 <Phantom_Hoover> I've never had a lucid dream.
23:13:53 <Phantom_Hoover> I'd totally clip through the floor if I had one, though.
23:41:00 <oerjan> zzo38: your fmap, pure () and liftA2 (,) base for Applicative makes me think of yet another possibility: pure () and liftA2
23:41:53 <oerjan> because fmap f x = liftA2 (const f) x (pure ())
23:42:05 <elliott> oerjan: um
23:42:06 <oerjan> er wait
23:42:09 <elliott> how do you do (<*>)
23:42:10 <oerjan> *const . f
23:42:17 <oerjan> elliott: liftA2 ($)
23:43:00 <elliott> oh, right
23:43:07 <elliott> oerjan: btw I totally thought of the pure () thing first
23:43:17 <elliott> well actually it was (exists a. f a), but same thing
23:43:26 <elliott> it's really interesting that all pure actually tells you is that f is inhabited
23:43:38 <elliott> that's a rather weak condition!
23:43:53 <oerjan> elliott: no that's not quite the same, because you need pure to assure you have something which does no action other than returning a value
23:44:11 <elliott> oerjan: er well (pure ()) doesn't guarantee that either
23:44:18 <elliott> nor does pure, for that matter
23:44:18 <oerjan> yes it does
23:44:29 <elliott> pure a = put undefined *> normalPure a
23:44:50 <Sgeo> elliott, would that break the laws?
23:44:57 <elliott> Duh.
23:45:00 <oerjan> > undefined *> ["i think not"]
23:45:01 <lambdabot> *Exception: Prelude.undefined
23:45:24 <elliott> oerjan: put undefined, not undefined
23:45:25 <elliott> sheesh
23:45:34 <oerjan> what's this "put" you're speeking of
23:45:40 <elliott> oerjan: oh ffs
23:45:50 <elliott> data OerjanIsAMoron a = OerjanIsAMoron (Int -> (a, Int))
23:46:01 <oerjan> put undefined in State doesn't have no effect
23:46:01 <elliott> instance Applicative OerjanIsAMoron where pure a = OerjanIsAMoron (\n -> (a, n+42))
23:46:04 <Sgeo> *oerjan </troll>
23:46:11 <elliott> oerjan: of course it doesn't
23:46:14 * Phantom_Hoover → sleep
23:46:14 <elliott> oerjan: <oerjan> elliott: no that's not quite the same, because you need pure to assure you have something which does no action other than returning a value
23:46:15 -!- Phantom_Hoover has quit (Quit: Leaving).
23:46:19 <elliott> pure's type does not assure you of that at all
23:46:30 <elliott> (forall a. a -> f a) is the same as (exists a. f a), given Functor
23:46:41 <oerjan> elliott: well ok if you had _just_ put, and no way to get at the value, ok
23:46:56 <Sgeo> I think oerjan's assuming that no one's going to break the laws
23:47:00 <elliott> oerjan: . . .
23:47:02 <elliott> I AM NOT SAYING IT'S VALID
23:47:03 <oerjan> but it is not enough to have just _any_ f a value
23:47:08 <elliott> I AM SAYING THAT PURE DOES NOT GUARANTEE SHIT SDKLFHSDFHDF
23:47:15 <elliott> IT'S A SEPARATE LAW
23:47:26 <elliott> OF COURSE PURE CAN VIOLATE THE LAWS, THAT'S WHAT I'M TRYING TO TELL YOU >_<
23:47:32 <elliott> oerjan: why on earth not?
23:47:39 <elliott> pure a = a <$ foo
23:47:53 <Sgeo> :t (<$)
23:47:54 <lambdabot> forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a
23:48:07 <Sgeo> :t ($>)
23:48:08 <lambdabot> Not in scope: `$>'
23:48:10 <Sgeo> ?
23:48:57 <monqy> I don't know either
23:49:17 <oerjan> elliott: i am saying that you cannot express every applicative by picking an arbitrary element instead of a pure one
23:49:40 <elliott> oerjan: are you denying that this definition of Applicative would be equivalent:
23:49:57 <elliott> class (Functor f) => Applicative f where pure :: Exists1 f; (<*>) :: f (a -> b) -> f a -> f b
23:50:05 <oerjan> yes.
23:50:06 <elliott> data Exists1 f where Yep :: f a -> Exists1 f
23:50:09 <elliott> oerjan: how
23:50:30 <oerjan> because you cannot guarantee the existence of elements p such that p *> x = x
23:50:58 <Sgeo> My password for this app will be SgeoIsAdmin
23:50:59 <elliott> oerjan: you can't with pure either
23:51:06 <elliott> <elliott> instance Applicative OerjanIsAMoron where pure a = OerjanIsAMoron (\n -> (a, n+42))
23:51:09 <elliott> no guarantee
23:51:11 <oerjan> um that's one of the Applicative laws.
23:51:22 <elliott> oerjan: so what the fuck is wrong with the law "pure *> x = x"
23:51:25 <elliott> with my efinition
23:51:28 <Sgeo> Hmm, I keep typoing it
23:51:29 <elliott> er, unpacking the Exists1
23:51:32 <Sgeo> sgeoisadmin
23:51:36 <elliott> case pure of Exists1 foo -> foo *> x = x
23:51:42 <oerjan> ...ok if you _add_ that law. ok.
23:51:55 <elliott> oerjan: ...no, you _replace_ the corresponding law for pure
23:52:07 <elliott> just define pure in terms of Exists1-pure and use the existing laws
23:52:18 <oerjan> whatev :)
23:52:46 <elliott> oerjan: all you're saying is that you lose laws if you use this pure and remove laws.
23:55:20 <Sgeo> By deliberately revealing my password to ##php, I apparently reminded someone to strip that information out of their pastes
23:55:28 <oerjan> ok. i guess what i'm saying is that there may be Applicatives where the only candidates for your pure are wrappings of ordinary ones, though.
23:55:32 <elliott> my password is 1234
23:55:48 <elliott> oerjan: well you just have to take pure ()
23:55:54 <oerjan> > on (==) runWriter (tell []) (return ())
23:55:55 <lambdabot> True
23:56:09 <oerjan> i think that's one
23:56:10 <elliott> for StateT it would be StateT ((),)
23:56:23 <elliott> oerjan: i'm not really sure what you mean by wrappings of ordinary ones :/
23:56:49 -!- derdon has quit (Remote host closed the connection).
23:57:13 <oerjan> :t Writer
23:57:13 <lambdabot> Not in scope: data constructor `Writer'
23:57:19 <oerjan> :t writer
23:57:20 <lambdabot> forall a w. (a, w) -> Writer w a
23:57:36 <oerjan> elliott: in Writer [()] say, the only elements p that fulfil p *> x = x are of the form Writer p' [], aka pure p'
23:57:40 -!- DCliche has joined.
23:57:45 <elliott> *StateT (return . ((),))
23:57:53 <oerjan> or so i believe
23:58:05 <elliott> oerjan: well sure, the point is that you can just pick one a and you're done
23:58:07 <elliott> e.g. a = ()
23:58:15 <elliott> Writer undefined [], even
23:58:20 <oerjan> okay
23:58:32 <elliott> f (forall a. a) would even work, I think
23:58:40 <elliott> well apart from necessitating _|_ :P
23:59:21 <oerjan> i think we're at the "not actually disagreeing" state.
23:59:30 <elliott> indeed
←2011-12-17 2011-12-18 2011-12-19→ ↑2011 ↑all