←2011-11-20 2011-11-21 2011-11-22→ ↑2011 ↑all
00:12:58 <CakeProphet> "As the game has just been released, only a moderate amount is known about the gameplay. Although there is a decent amount of information that has been shown, it appears as though this information only scratches the surface."
00:13:03 <CakeProphet> from elder scrolls wiki
00:13:23 <CakeProphet> I like how people are just assuming that Skyrim has all these uncovered secrets
00:13:34 <CakeProphet> because they've bought into too much hype.
00:13:36 <Jafet> It does, if you're a munchkin
00:13:51 <Jafet> And if you're reading the wiki, you're a munchkin.
00:14:04 <CakeProphet> what is a munchkin?
00:14:21 <oerjan> a creature from the wizard of oz. hth.
00:15:16 <oerjan> their wiki-reading powers were even more impressive as they had no computers
00:24:43 <oerjan> @tell elliott Regarding that paging algorithm anecdote a couple days ago which you asked if had anything to do with synchronicity - today's GLL is about the question: http://rjlipton.wordpress.com/2011/11/19/another-annoying-open-problem/
00:24:44 <lambdabot> Consider it noted.
00:24:57 * oerjan whistles innocently
00:39:29 <CakeProphet> Vorpal: so apparently the bound weapons in skyrim are equivalent to ebony weapons in damage.
00:40:06 -!- simpleirc966 has joined.
00:40:13 <CakeProphet> and also scale with your weapon skill (one-handed skill improves the damage of bound sword). which means they're retardedly good at early levels.
00:41:14 -!- simpleirc966 has left.
00:44:20 <CakeProphet> so I might actually try dual-wielding bound swords instead of using a shield, and then later once I get nice enchanted weapons and use those (and then use the bound sword to refill soul gems)
00:47:19 <CakeProphet> I'm disappointed in the complete lack of variety of spells in this game though. There are only three conjured weapon spells now instead of bound boots, bound bow, bound cuirass, bound dagger, bound gauntlets, bound greaves, bound helmet, bound mace, bound shield, etc, etc
00:47:23 <CakeProphet> in oblivion
00:49:14 <CakeProphet> granted most of the bound armor spells are probably not very good, but they could have kept the variety of weapon conjuration spells
00:50:04 <oerjan> the spell system is so horribly unrealistic
00:50:28 <CakeProphet> oerjan: :P
01:01:52 <Jafet> Bound Mead
01:20:42 <CakeProphet> ha
01:29:22 <CakeProphet> Jafet: presumably the alcohol would leave your system once the conjuration spell wears out.
01:29:43 <CakeProphet> instant hangover cure!
01:31:49 <zzo38> Today, I have played, Dungeons and Dragons game.
01:33:59 -!- zzo38 has quit (Remote host closed the connection).
01:42:46 <CakeProphet> zzo38: bye
02:08:16 <pikhq_> *sigh* Canterbury Tales is perhaps the most pointless feature of an English class. It's *literally in a different language* for goodness sake!
02:09:17 <pikhq_> This complaint brought about by listening to my little sisters.
02:09:49 <CakeProphet> pikhq_: but it's such a good story about uh
02:09:51 <CakeProphet> ...whatever it's about.
02:10:02 <oerjan> well, we did have some norse myths in norwegian class
02:10:18 <pikhq_> oerjan: Were they in the original Old Norse?
02:10:22 <oerjan> yes.
02:10:29 <pikhq_> That's fucking cruel.
02:10:34 <CakeProphet> norse myths are way more awesome than Canterbury Tales though.
02:10:35 <pikhq_> And pointless.
02:10:53 <pikhq_> But it does have the redeeming factor that Norse myths are way more awesome than Canterbury Tales.
02:11:23 <oerjan> it was only a taste during one year of high school though, afair
02:11:53 <oerjan> there was also some swedish and danish
02:12:12 <CakeProphet> why is there no British mythology in schools? Did none of the writing survive?
02:12:32 <pikhq_> There's no single "British mythology".
02:12:42 <oerjan> what is there other than beowulf?
02:13:50 <pikhq_> oerjan: Norse mythology is itself a version of Germanic mythology; the Anglo-Saxons had their own.
02:14:06 <CakeProphet> oerjan: remind me. what's the best way to grab a list of numbers from a line of input -- oh nevermind (map read . words) <$> getLine
02:14:08 <oerjan> i mean, that has survived
02:14:32 <oerjan> parentheses not necessary
02:14:35 <CakeProphet> best way as in simplest not necessarily the safest industry strength shit ever.
02:14:59 <oerjan> CakeProphet: well that'll obviously break if there's any misformatting
02:15:05 <CakeProphet> right.
02:15:06 <CakeProphet> which is fine
02:15:19 <CakeProphet> because this a program to calculate averages from a list of numbers :)
02:15:20 <pikhq_> oerjan: Random samplings of things; nothing exceptionally *long*, though. Beowulf is the only surviving epic poem of the era.
02:16:32 <oerjan> ah as was my impression
02:16:44 <CakeProphet> in other news: length is stupid. genericLength is good.
02:16:45 <pikhq_> Of course, Anglo-Saxon myths aren't the only bits of English mythology. The Celts are also from the British Isles. :)
02:17:13 <CakeProphet> I literally just went through an entire thread of discussion with multiple haskell nubs being completely baffled on how to write a simple averaging program.
02:17:19 <CakeProphet> because sum ls / length ls does not work
02:17:33 <CakeProphet> when it probably shouldn't.
02:17:53 <oerjan> actually even genericLength doesn't work iirv
02:17:54 <oerjan> *c
02:17:59 <oerjan> :t genericLength
02:18:00 <lambdabot> forall b i. (Num i) => [b] -> i
02:18:00 <CakeProphet> no it does
02:18:03 <oerjan> oh
02:18:11 <CakeProphet> > let x = [1,2,3] in sum x / genericLength x
02:18:11 <oerjan> i thought it might be Integral
02:18:12 <lambdabot> 2.0
02:18:19 <CakeProphet> as it should be.
02:19:11 <CakeProphet> so is the $ even necessary in forever $ do ...
02:19:17 <oerjan> yes
02:19:24 <CakeProphet> hmmm
02:19:31 <CakeProphet> I guess that makes sese.
02:19:33 <CakeProphet> sense
02:20:15 <oerjan> \, do and let cannot be used directly as arguments
02:20:18 <CakeProphet> it seems reasonable that you could omit parenthesis around a do block and they would be placed explicitly around it.
02:20:35 <CakeProphet> with explicit parens being used in situations where you have something trailing the do block in the expression
02:20:48 <CakeProphet> but, $ is perfectly fine. -uses that-
02:20:57 <CakeProphet> er
02:21:00 <CakeProphet> *implicitly :P
02:21:01 <oerjan> yes. i was surprised way back when i discovered it, too
02:21:11 <oerjan> (that it doesn't work)
02:21:17 <CakeProphet> right
02:22:06 <CakeProphet> @hoogle genericLength
02:22:07 <lambdabot> Data.List genericLength :: Num i => [b] -> i
02:22:21 <CakeProphet> aw no Prelude
02:22:27 <oerjan> nope
02:22:43 <CakeProphet> I pretty much import Control.Monad and Data.List without even considering if I need them or not
02:22:46 <CakeProphet> because
02:22:49 <CakeProphet> I probably will
02:22:53 <oerjan> heh
02:22:55 <CakeProphet> and probably Control.Applicative but sometimes not
02:23:24 <oerjan> yeah they're like secondary syntax
02:24:02 <CakeProphet> I feel that <$> should be Control.Monad
02:24:07 <CakeProphet> or maybe just in Prelude or something.
02:25:03 <CakeProphet> Control.Applicative makes sense though, as its used in the f <$> x <*> y idiom
02:25:04 <Jafet> It's in .ghci
02:25:26 -!- Jafet has quit (Quit: Leaving.).
02:25:29 <CakeProphet> but <$> really has nothing to do with Applicative. :P
02:25:35 <CakeProphet> (or monads I guess...)
02:25:58 <CakeProphet> other than that monads and applicatives are functors.
02:26:57 <CakeProphet> @hoogle f a -> f b -> f b
02:26:58 <lambdabot> Control.Applicative (*>) :: Applicative f => f a -> f b -> f b
02:26:58 <lambdabot> Prelude (>>) :: Monad m => m a -> m b -> m b
02:26:58 <lambdabot> Control.Monad (>>) :: Monad m => m a -> m b -> m b
02:27:44 <CakeProphet> > [1, 2, 3] *> [4,5,6] == [1,2,3] >> [4,5,6]
02:27:45 <lambdabot> Precedence parsing error
02:27:45 <lambdabot> cannot mix `Control.Applicative.*>' [infixl 4...
02:27:54 <CakeProphet> > ([1, 2, 3] *> [4,5,6]) == ([1,2,3] >> [4,5,6])
02:27:55 <lambdabot> True
02:28:56 <CakeProphet> maybe Haskell should just have a FunctorApplicativeMonad class. yes, that's a good name for it.
02:31:30 <oerjan> CakeProphet: i think <$> is also exported from Data.Functor
02:32:07 <CakeProphet> but I never actually import that. :P
02:32:33 <oerjan> CakeProphet: well if they fixed the missing subclassing mess, Monad should reexport Applicative should reexport Functor
02:32:42 <oerjan> i think
02:33:04 <CakeProphet> Control.Monad never seems to have <$>. let me double check.
02:33:17 <oerjan> well of course not.
02:33:37 <CakeProphet> Monad should reexport Applicative should reexport Functor
02:33:38 <CakeProphet> huh?
02:33:45 <oerjan> it's not a function of Monad or any current superclass
02:33:54 <oerjan> CakeProphet: *Data.*
02:33:57 <CakeProphet> right
02:33:58 <CakeProphet> I mean
02:34:06 <CakeProphet> if Monad rexports Functor transitively
02:34:08 <CakeProphet> why is <$> not there?
02:34:18 <oerjan> i didn't say it did, i said it _should_ do it
02:34:39 <oerjan> once Monad becomes a real subclass of Applicative
02:34:48 <CakeProphet> oh I thought you meant the kind of "should" that means "I'm fairly certain this is the truth"
02:35:01 <CakeProphet> not the normative "this is how it should be but is not" version :P
02:35:21 <oerjan> oh, i see my tenses could be interpreted as "this has already happened"
02:35:25 <CakeProphet> oerjan: yes that should happen in Haskell 2020
02:35:43 <CakeProphet> fingers crossed
02:36:03 <CakeProphet> time to painstakingly collect statistics from a dumb questionnaire thing.
02:36:12 <CakeProphet> for a 10 page report that's due tomorrow that I am just now starting
02:36:13 <CakeProphet> yesss
02:41:21 <CakeProphet> I probably could have just used an existing calculator program to do these averages
02:41:26 <CakeProphet> BUT THIS IS EASY TOO
02:42:23 <CakeProphet> I'm kind of baffled as to how my program knows which Read instance to use.
02:42:38 <CakeProphet> the only inferred types are typeclasses.
02:42:43 <CakeProphet> :t (/)
02:42:45 <lambdabot> forall a. (Fractional a) => a -> a -> a
02:42:53 <CakeProphet> does Haskell do some kind of auto-default thing?
02:43:19 <CakeProphet> or does Fractional have a Read instance?
02:44:40 <oerjan> yes, it defaults to Integer or Double, as appropriate
02:45:12 <oerjan> you can change that with a default declaration
02:45:36 <CakeProphet> ah okay.
02:45:46 <CakeProphet> is this feature available for other data types?
02:46:14 <oerjan> there's an ExtendedDefaulting option
02:46:28 <CakeProphet> that would be good to declare String as default for IsString for example
02:46:34 <CakeProphet> if OverloadedStrings doesn't already.
02:47:06 <oerjan> i'm not sure but that might work with the extended option
02:47:28 <CakeProphet> also an Expr default would be nice for SimpleReflect
02:47:51 <oerjan> without the extended option, it's limited to only numerical classes defined in the haskell report
02:50:33 <CakeProphet> oerjan: do you know anything about the CS program at your school?
02:51:16 <oerjan> no
02:51:23 <pikhq_> I didn't realise oerjan was presently in a school.
02:51:31 <oerjan> that would be the main reason :P
02:51:49 <pikhq_> There we go, that makes more sense. :)
02:52:12 <CakeProphet> oh... okay.
02:52:35 <shachaf> oerjan: You should've quit with "Exception: Prelude.undefined" and left people to figure out what they said wrong.
02:52:58 <oerjan> technically, additional classes are permitted from the standard library. but for some reason Random seems to have been left out in the implementations i've tried (ghc, hugs)
02:53:45 <oerjan> well, last i tried
02:54:14 <oerjan> > map (1 +) $ randoms (mkStdGen 42)
02:54:15 <lambdabot> [-3907187990116499534,-2519438828217931932,-8264534369199619666,86887135830...
02:54:18 <oerjan> oh hm
02:54:19 <CakeProphet> http://rjlipton.wordpress.com/2010/11/03/equations-over-groups-a-mess/
02:54:24 <CakeProphet> oerjan: is this you in the first visible comment?
02:54:38 <CakeProphet> yes, yes it is
02:54:39 <oerjan> i guess it may have been fixed
02:54:45 <CakeProphet> because there is also a Phantom Hoover
02:55:14 <CakeProphet> a Phantom Hoover and a Ørjan Johansen in the same comment thread about math stuff.
02:55:17 <CakeProphet> must be oerjan.
02:55:56 <oerjan> i still haven't got around to ban Phantom_Hoover for that comment
02:57:27 <CakeProphet> oerjan: I think his user pic is a wallpaper group.
02:57:41 <CakeProphet> fitting given the subject of group theory.
02:58:12 <oerjan> probably, that is obviously from the default pic selection
02:58:21 <CakeProphet> obviously?
02:58:31 <CakeProphet> I've noticed people in #esoteric have a strange definition of obviously.
02:59:01 <oerjan> well it looks similar to all the others that don't have actual portraits
02:59:21 <CakeProphet> my google chrome was lazy and only loaded half of the pictures.
02:59:35 <CakeProphet> oh yes, I see.
02:59:55 <oerjan> fascinating problem, that group theory / complexity one btw, i've been thinking more about it lately
03:00:12 <CakeProphet> if only I knew anything about math. :P
03:00:15 <CakeProphet> then I could comment on that.
03:00:17 <CakeProphet> and how interesting it is.
03:00:55 <oerjan> in fact i think i ruled out the "another idea" i made further down
03:01:29 <CakeProphet> oerjan: perhaps you should USE HASKELL TO SOLVE THIS PROBLEM YEAH
03:02:10 <oerjan> i've considered it
03:04:01 <CakeProphet> I wonder if I'll learn about groups when I take topology.
03:04:11 <CakeProphet> are they in any way related?
03:04:24 <oerjan> yes, if you take _algebraic_ topology
03:04:36 <CakeProphet> no just an intro topology course probably.
03:04:42 <CakeProphet> well, the only topology course my university offers.
03:04:51 <CakeProphet> for undergraduates.
03:05:12 <CakeProphet> but first I have to take intro to advanced math, which is probably just "lolproofs"
03:05:15 <oerjan> i guess it depends whether it goes much beyond the basics
03:05:24 <CakeProphet> proofs of what? I don't know. Maybe it will touch some things like relations and algebras.
03:06:35 <CakeProphet> we already did stupid number theory and induction proofs in discrete math, so I'm hoping it will not repeat those.
03:08:04 <CakeProphet> I bet we'll still use naive set theory, though. because everyone loves naive set theory even though it's A PARADOX -spooky noise-
03:11:12 <oerjan> well using naive set theory mostly means "using zfc but not bothering to mention the restrictions"
03:11:30 <oerjan> ...possibly an overstatement.
03:12:40 <CakeProphet> oerjan: no that seems to be the case.
03:13:09 <CakeProphet> because the kind of set theory stuff we did in discrete math was not very complicated.
03:13:38 <oerjan> oh discrete math probably means all the sets are finite or countable
03:13:43 <CakeProphet> yep.
03:13:45 <CakeProphet> countable.
03:13:48 <CakeProphet> for the most part.
03:13:54 <CakeProphet> a lot of number theory stuff.
03:14:28 <CakeProphet> but then we went into things like graphs which were finite and relations which are sometimes finite.
03:14:38 <oerjan> and then zf's replacement axiom (the fraenkel part) says the sets are all ok
03:14:44 <CakeProphet> good class. it's a nice "intro to everything fun in math"
03:15:14 <CakeProphet> as opposed to calculus
03:15:20 <CakeProphet> which is "intro to everything painful in math"
03:15:35 <oerjan> >_>
03:15:43 <CakeProphet> maybe I'm just a discrete kind of guy.
03:16:04 <CakeProphet> whereas continuity fucks with my brain.
03:16:48 <CakeProphet> "as x approaches 1" what? I mean I know what that means but how do you define that? then I would go to my book and try to understand the definition of a limit and fail.
03:17:26 <CakeProphet> yes, I went through derivatives and integrals and multi-dimensional integrals in calculus
03:17:32 <CakeProphet> without a very clear definition of what a limit is.
03:17:41 <oerjan> heh, perhaps some of the topological formulations of limit might make it click. or hopefully not make it worse.
03:18:44 <CakeProphet> discrete stuff, on the other hand, is largely intuitive to me though.
03:18:53 <oerjan> much of the essence of topology is about generalizing the heck out of limits
03:19:01 <CakeProphet> awesome.
03:20:13 <CakeProphet> how much calculus is there>
03:20:20 <CakeProphet> calculus: definitely my least favorite math.
03:20:25 <oerjan> well in one direction, anyway. category theory has an even more brain-wrecking way. :P
03:20:52 <CakeProphet> actually I should ask: how many integrals.
03:21:07 <CakeProphet> integrals seem pretty topological...
03:21:35 <CakeProphet> well...
03:21:59 <CakeProphet> it's like a summation of all the points in some object.
03:22:03 <CakeProphet> basically?
03:22:30 <CakeProphet> integrals are just fancy continuous summation things. at least that's my intuitive understanding.
03:23:30 <oerjan> well it depends on which way you generalize them.
03:24:03 <CakeProphet> oh wait so you can integrate via other things?
03:24:05 <oerjan> lebesgue integration tries to remove as much as possible of continuity requirement
03:24:11 <oerjan> *the
03:24:37 <oerjan> otoh that also generalizes to many topological spaces
03:25:53 <oerjan> but that's via measure theory. you're not going to see that in a basic topology course.
03:26:17 <CakeProphet> my understanding was that basic topology is a lot of set theory.
03:26:21 <oerjan> yeah
03:26:35 <CakeProphet> and maybe like... relations?
03:26:50 <CakeProphet> a homeomorphism is a kind of relation right?
03:26:58 <oerjan> it's a bijection
03:27:11 <oerjan> so a function in particular
03:27:43 <oerjan> but "homeomorphic" is a relation between topological spaces
03:27:58 <oerjan> (it says there's a homeomorphism between them)
03:28:22 <CakeProphet> ah okay
03:28:31 <oerjan> and i guess there's a slight ambiguity in using the term "homeomorphism" for either
03:28:39 <CakeProphet> because the bijective quality means that each element is equivalent to one other in the other space.
03:30:00 <oerjan> yes, although there is not necessarily (i.e. rarely) a _unique_ homeomorphism
03:30:06 <CakeProphet> and homeomorphism is the isomorphism of topological spaces, because one-to-one equality is a good way for sets of things to be isomorphic.
03:30:35 <oerjan> well sort of yeah
03:30:43 <CakeProphet> yes in no way is that a formal statement of things :P
03:31:09 <oerjan> the extra requirements of what kind of bijection it is are important too, otherwise you just get a test for cardinality
03:31:14 <CakeProphet> are all isomorphisms necessarily bijective?
03:31:48 <oerjan> well in a general category they're not necessarily _functions_
03:31:56 <CakeProphet> just mappings.
03:32:01 <oerjan> um
03:32:11 <oerjan> mapping usually is a synonym for function
03:32:14 <CakeProphet> oh...
03:32:20 <CakeProphet> I thought it was a more general thing.
03:32:24 <oerjan> so *just morphisms
03:32:45 <CakeProphet> what else is a morphism besides a function.
03:32:49 <CakeProphet> I haven't really encountered an example.
03:33:11 <oerjan> well there _might be_ a terminology for mappings that aren't functions. there usually is some way to generalize things.
03:33:40 <CakeProphet> The notion of morphism recurs in much of contemporary mathematics. In set theory, morphisms are functions; in linear algebra, linear transformations; in group theory, group homomorphisms; in topology, continuous functions, and so on.
03:33:47 <CakeProphet> ...but those are all just different kinds of functions. :P
03:34:18 <oerjan> oh hm
03:34:23 <oerjan> relations can be morphisms
03:34:35 <CakeProphet> ah yes
03:34:36 <oerjan> there's a category Rel (iirc)
03:34:44 <CakeProphet> relation is a generalization of functions right?
03:35:01 <oerjan> yes, or functions are a special case of relations
03:35:05 <CakeProphet> right.
03:35:52 <CakeProphet> so.... morphisms /are/ relations then (as far as we know)? or... is there another example that makes this not true?
03:36:45 <CakeProphet> "as far as we know" meaning that there isn't anything that's been called a morphism that isn't some kind of relation.
03:37:46 <oerjan> well there are the categories of partial orders, for which the morphisms are _elements_ of relations, or pairs really
03:38:32 <CakeProphet> ah okay
03:38:35 <oerjan> say the order of natural numbers, with objects the numbers and morphisms pairs of numbers (m,n) with m <= n
03:38:55 <CakeProphet> ah okay.
03:39:13 <CakeProphet> partial orders are really interesting.
03:39:21 <copumpkin> :O
03:39:24 <copumpkin> category theory!
03:39:46 <CakeProphet> to me they seem like... ordering trees?
03:39:50 <oerjan> there is also another more advanced example called the category of topological spaces with morphisms _homotopy_ classes of continuous functions
03:40:25 <oerjan> this one is important because it's, iirc, not even _equivalent_ to a category with function morphisms (a "concrete" category)
03:41:06 <CakeProphet> or wait, can partial orderings form a graph?
03:41:15 <oerjan> yes
03:41:17 <CakeProphet> that doesn't really make any sense to me.
03:41:18 <CakeProphet> :P
03:41:28 <CakeProphet> er, excuse me, *cyclic graph
03:41:43 <oerjan> oh, no. antisymmetric law.
03:41:48 <CakeProphet> okay good
03:41:50 <CakeProphet> sanity is restored.
03:42:11 <CakeProphet> sometimes I say "graph" when I actually mean "cyclic graph"
03:42:17 <CakeProphet> because lol computer science
03:42:56 <oerjan> mhm
03:43:32 <CakeProphet> http://en.wikipedia.org/wiki/File:Poset6.jpg
03:43:34 <CakeProphet> so delicious.
03:44:24 <CakeProphet> > [1,2,3,4] < []
03:44:25 <lambdabot> False
03:45:31 <CakeProphet> are there any standard library Ord instances that are a valid partial ordering of whatever structure it orders?
03:45:36 <CakeProphet> *not a valid
03:46:17 <oerjan> Double
03:46:26 <oerjan> and Float
03:46:30 <CakeProphet> for what reason?
03:46:35 <oerjan> because of NaN
03:46:39 <CakeProphet> hm
03:46:46 <CakeProphet> > 5/0
03:46:47 <lambdabot> Infinity
03:46:48 <CakeProphet> > 0/0
03:46:48 <lambdabot> NaN
03:46:53 <CakeProphet> > 0/0 > 1
03:46:54 <lambdabot> False
03:46:57 <oerjan> > (0/0) == (0/0)
03:46:58 <lambdabot> False
03:47:02 <CakeProphet> ah.
03:47:12 <CakeProphet> that is weird as fuck. :P
03:47:17 <CakeProphet> but also makes sense.
03:47:23 <copumpkin> no it doesn't
03:47:27 <oerjan> weird enough that it's been considered to change it
03:47:28 <copumpkin> IEEE 754 sucks balls
03:47:34 <CakeProphet> > 0/0 < 1
03:47:35 <lambdabot> False
03:47:53 <CakeProphet> I mean, what true claims can you make about something that isn't a number apparently?
03:48:00 <oerjan> because it breaks uses of Ord for things like search trees
03:48:06 <copumpkin> it breaks everything
03:48:11 <copumpkin> it shouldn't live in the type
03:48:23 <CakeProphet> how often does it crop up though?
03:48:32 <copumpkin> all the fucking time, and silently corrupts your shit
03:48:43 <oerjan> CakeProphet: whenever someone accidentally puts a NaN into a Data.Map.Map
03:48:49 <copumpkin> it's not just that
03:49:13 <copumpkin> oerjan: granted, you shouldn't be putting doubles into a map or a key into anything really
03:49:26 <CakeProphet> I imagine you could probably make a SafeFloat with GADTs or something?
03:49:26 <copumpkin> if anything you'd want them in an interval tree
03:49:30 <oerjan> well i guess
03:49:35 <copumpkin> CakeProphet: just a wrapper around them
03:49:53 <CakeProphet> wrapper how?
03:49:59 <copumpkin> newtype
03:50:05 <copumpkin> provide a bunch of operations that never produce nans
03:50:06 <CakeProphet> then just redefine the Floating instance?
03:50:08 <CakeProphet> oh
03:50:13 <CakeProphet> what would 0/0 produce?
03:50:17 <copumpkin> an error
03:50:24 <oerjan> copumpkin: _or_ a different Ord
03:50:24 <CakeProphet> SafeFloat would be compiletime
03:50:26 <CakeProphet> which is better.
03:50:31 <copumpkin> how would that work?
03:50:38 <CakeProphet> uh...
03:50:42 <CakeProphet> let me think about that :P
03:51:00 <copumpkin> you could have a phantom parameter that indicates whether it definitely does not contain a NaN
03:51:04 <copumpkin> or whether the guarantee is lost
03:51:06 <CakeProphet> copumpkin: right
03:51:14 <copumpkin> but then all your num types break
03:51:19 <copumpkin> well, maybe not
03:51:30 * copumpkin shrugs
03:51:57 <CakeProphet> what about positive and negative infinity?
03:51:59 <CakeProphet> do these break things?
03:52:36 <CakeProphet> x/0 is a bit more common than 0/0
03:52:54 <CakeProphet> (infinitely more common, perhaps? :P )
03:53:01 <copumpkin> those at least compare correctly
03:53:17 <copumpkin> doing arithmetic with them is a bit meh but sort of makes sense
03:53:39 <CakeProphet> I imagine there are a lot of cases where you'd instead want a zero division error and not an infinity.
03:54:22 <copumpkin> yeah
03:58:24 -!- pikhq has joined.
03:58:59 -!- pikhq_ has quit (Ping timeout: 260 seconds).
03:59:03 <Sgeo> (1/0) * (-1/-1)
04:00:30 <oerjan> Sgeo: that's why there's also negative and positive zero
04:01:11 <oerjan> hm...
04:01:23 <CakeProphet> I think I might have some understanding of the pain of grading papers.
04:01:31 <oerjan> > (1/((-1)/0)) < 0
04:01:32 <lambdabot> False
04:01:34 <CakeProphet> going through these questionnaires and calculating average response.
04:01:43 <Sgeo> > (1/0) * ((-1)/(-1)) == (1/0)
04:01:44 <oerjan> er
04:01:44 <lambdabot> True
04:01:50 <Sgeo> > (1/0) * ((-1)/(-1)) == (1/(-0))
04:01:51 <lambdabot> False
04:01:56 <Sgeo> derp
04:02:08 <Sgeo> Oh, I see
04:02:20 <Sgeo> > (1/0) * ((-1)/(-1)) == ((-1)/(0))
04:02:21 <lambdabot> False
04:02:23 <Sgeo> > (1/0) * ((-1)/(-1)) == ((-1)/(-0))
04:02:24 <lambdabot> True
04:02:27 <CakeProphet> oerjan: can you give a concrete explanation for why zero typically /doesn't/ have a sign?
04:02:28 <Sgeo> Ok, cool
04:02:44 <CakeProphet> it could easily have a sign, right? or does that mess up EVERYTHING.
04:03:19 <oerjan> CakeProphet: because it doesn't in a group/ring/field
04:03:46 <Sgeo> If I could relay the notion of negative 0 to my 7th grade self...
04:03:56 <CakeProphet> > -0
04:03:57 <lambdabot> 0
04:04:05 <Sgeo> > -0 == 0
04:04:06 <lambdabot> True
04:04:11 <Sgeo> > -0.0 == 0.0
04:04:12 <lambdabot> True
04:04:14 <Sgeo> :/
04:04:19 <CakeProphet> > 1/(-0)
04:04:20 <lambdabot> -Infinity
04:04:29 <CakeProphet> :t 0.0
04:04:30 <lambdabot> forall t. (Fractional t) => t
04:04:42 <Sgeo> I bet == is broken
04:04:49 <CakeProphet> well, no.
04:04:56 <CakeProphet> I bet -0 and 0 are broken with respect to each other.
04:05:00 <Sgeo> :t 1/(-0)
04:05:01 <lambdabot> forall t. (Fractional t) => t
04:05:03 <oerjan> Sgeo: well of course
04:05:07 <CakeProphet> probably in the common case you actually want -0 and 0 to be equal.
04:05:16 <oerjan> we already established that for NaN
04:05:16 <CakeProphet> because in most applications there is only one kind of zero.
04:05:33 <oerjan> > isNegativeZero 0
04:05:33 <lambdabot> False
04:05:38 <oerjan> > isNegativeZero (-0)
04:05:39 <lambdabot> True
04:05:45 <CakeProphet> @hoogle isNegativeZero
04:05:46 <lambdabot> Prelude isNegativeZero :: RealFloat a => a -> Bool
04:05:51 <CakeProphet> oh, okay.
04:06:13 <CakeProphet> @hoogle RealFloat a => a -> Bool
04:06:13 <lambdabot> Prelude isDenormalized :: RealFloat a => a -> Bool
04:06:14 <lambdabot> Prelude isIEEE :: RealFloat a => a -> Bool
04:06:14 <lambdabot> Prelude isInfinite :: RealFloat a => a -> Bool
04:07:38 <oerjan> @src RealFloat
04:07:39 <lambdabot> Source not found. That's something I cannot allow to happen.
04:07:42 <oerjan> darn
04:07:56 <oerjan> well it's a long list of methods
04:08:16 <oerjan> @hoogle RealFloat
04:08:16 <lambdabot> Prelude class (RealFrac a, Floating a) => RealFloat a
04:08:16 <lambdabot> Data.Text.Lazy.Builder.RealFloat module Data.Text.Lazy.Builder.RealFloat
04:08:17 <lambdabot> Data.Text.Lazy.Builder.RealFloat realFloat :: RealFloat a => a -> Builder
04:08:28 <oerjan> bah
04:08:41 <CakeProphet> oerjan: interestingly only 35% of respondents to my questionnaire reported that one of their professors had incorporated Linux into a project or homework assignment
04:08:53 -!- myndzi has changed nick to myndz\.
04:08:56 <CakeProphet> 58% said that their professor /mentioned/ Linux as part of a lecture.
04:09:30 <CakeProphet> (my proposal is on incorporated Linux education into the curriculum at our university)
04:09:34 <CakeProphet> *incorporating
04:11:47 <CakeProphet> @tell Sgeo Updelbrot
04:11:48 <lambdabot> Consider it noted.
04:13:20 -!- DCliche has joined.
04:14:19 * Sgeo slaps CakeProphet
04:14:20 <lambdabot> Sgeo: You have 1 new message. '/msg lambdabot @messages' to read it.
04:14:35 -!- Darth_Cliche has quit (Ping timeout: 244 seconds).
04:16:19 <CakeProphet> Sgeo: I wonder if we can formulate a definitive count of how many Homestuck characters are Mary Sue-like?
04:17:02 <CakeProphet> not actual Mary Sues, but having traits of Mary Sues, perhaps as a parody.
04:17:03 <Sgeo> I think if most of the characters are Mary Sue-like, they start to equalize
04:17:34 <oerjan> Perfecto the Magnificent
04:18:12 <CakeProphet> both Jade and Jake start out with ridiculous gadgetry
04:18:15 <CakeProphet> that continues to grow.
04:18:56 <CakeProphet> or well, in the case of Jade it did
04:19:03 <oerjan> i wonder if anyone has tried to make a comic with many recurrent characters that are _all_ mary sues
04:19:04 <CakeProphet> we do not know what happens with Jake yet.
04:19:28 <CakeProphet> oerjan: MSPA is pretty close.
04:19:33 <oerjan> ok
04:19:38 <CakeProphet> er homestuck
04:19:39 <CakeProphet> I mean
04:20:41 <CakeProphet> the later acts of homestuck kind of do a lot of parodying of indulgent fantasy fiction, to my perspective.
04:22:16 <CakeProphet> for each of the now 18 kids (soon to be 20) that have been introduced, each of them have all sorts of quirky interests and talents that you might find in a poorly written fan fic.
04:31:44 -!- GreaseMonkey has joined.
04:46:27 <CakeProphet> oerjan: question
04:46:36 <CakeProphet> > fix (\f x -> if x > 0 then x * f (x-1) else 1) 5
04:46:37 <lambdabot> 120
04:46:42 <CakeProphet> what is non-strict about that function?
04:47:25 <oerjan> it doesn't actually loop if you give it just _one_ argument :P
04:47:36 <CakeProphet> hmmm
04:47:39 <CakeProphet> okay.
04:47:58 <CakeProphet> so basically, currying is non-strict?
04:48:03 <oerjan> yeah
04:48:13 <CakeProphet> makes sense.
04:48:16 <copumpkin> you aren't forcing f unconditionally
04:49:52 <pikhq> Looks like it should usually give you a "x * f (x-1)" thunk.
04:50:23 <CakeProphet> I think oerjan pretty much explained it.
04:50:32 <pikhq> Strictness analysis might change that slightly, but I don't think GHC's going to turn that into f (x-1) `seq` x * f (x-1).
04:50:43 <pikhq> Erm.
04:50:48 <pikhq> Bleeeh
04:50:49 <CakeProphet> pikhq: * /is/ strict you know.
04:50:52 <copumpkin> it's not even about strictness actually
04:51:09 <CakeProphet> it's just that the code is not actually evaluated in regards to the infinite recursion of fix.
04:51:10 <copumpkin> not strictly about strictness, anyway
04:51:34 <pikhq> CakeProphet: Ah. Well. Duh.
04:52:06 <pikhq> \f x-> reads \f->\x->... *Clearly* there's not much evaluation you can do of an unapplied lambda.
04:52:30 <CakeProphet> but is it technically non-strict?
04:53:00 <oerjan> > (\f x -> undefined) undefined `seq` "Sure"
04:53:00 <lambdabot> "Sure"
04:53:14 <CakeProphet> ah okay
04:53:15 <CakeProphet> so
04:53:21 <CakeProphet> its function application
04:53:22 <CakeProphet> being non-strict
04:53:56 <CakeProphet> er...
04:53:58 <pikhq> > (\f x -> undefined) undefined
04:53:59 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
04:53:59 <lambdabot> arising from a use of `...
04:54:01 <pikhq> Good times.
04:54:25 <CakeProphet> > (f x -> undefined) $! undefined
04:54:26 <lambdabot> Pattern syntax in expression context: f x -> undefined
04:54:31 <CakeProphet> > (\f x -> undefined) $! undefined
04:54:31 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
04:54:32 <lambdabot> arising from a use of `...
04:54:34 <oerjan> > (\x -> undefined) `seq` "Sure" -- actually it reduces to this conceptually
04:54:35 <lambdabot> "Sure"
04:54:57 <CakeProphet> okay so then...
04:55:03 <CakeProphet> /functions/ are just non-strict. :P
04:55:12 <oerjan> yeah
04:55:22 <CakeProphet> how... obvious. :>
04:55:27 <Sgeo> (\x -> undefined) should in theory be _|_, but due to seq isn't?
04:55:33 <CakeProphet> no
04:55:35 <oerjan> um no...
04:55:39 <CakeProphet> (\x -> undefined) is not _|_
04:55:44 <CakeProphet> > (\x -> undefined)
04:55:45 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
04:55:45 <lambdabot> arising from a use of `...
04:55:47 <CakeProphet> see?
04:55:53 <copumpkin> (\x -> undefined x) should be
04:55:57 <copumpkin> but isn't
04:56:02 <oerjan> it's weak head normal form, in the original lambda calculus sense
04:56:22 <CakeProphet> oerjan: ahhhh
04:56:23 <CakeProphet> okay.
04:56:30 <CakeProphet> makes sense.
04:56:46 <shachaf> CakeProphet: Sure it is.
04:56:54 <CakeProphet> shachaf: sure what is what?
04:56:56 <shachaf> _|_
04:56:59 <CakeProphet> lol
04:57:00 <CakeProphet> no
04:57:00 <CakeProphet> >
04:57:01 <CakeProphet> ?
04:57:01 <shachaf> Seqism in this channel?
04:57:04 <oerjan> the thing is, without seq there would not be any way in haskell to get to evaluating a function without applying it
04:57:44 <CakeProphet> shachaf: why is the value (\x -> undefined) _|_?
04:57:56 <CakeProphet> er
04:57:59 <CakeProphet> shachaf: why is the value (\x -> undefined) == _|_?
04:58:04 <shachaf> It's not == _|_
04:58:09 <shachaf> No instance Eq (a -> b) blah blah
04:58:23 <shachaf> But it's indistinguishable from _|_ unless you have seq. Which you don't.
04:58:27 -!- MDude has changed nick to MSleep.
04:58:57 <CakeProphet> shachaf: I don't really understand how.
04:59:06 <oerjan> CakeProphet: nominally, you would want two functions that give exactly the same result when applied to any argument to also _be_ the same. and (\x -> undefined) whatever = undefined whatever, always
04:59:13 <shachaf> CakeProphet: Well -- how do you force it, other than by applying it?
05:00:26 <CakeProphet> 23:54 < oerjan> > (\x -> undefined) `seq` "Sure" -- actually it reduces to this conceptually
05:00:38 <CakeProphet> okay, but then why is this not _|_ as well?
05:02:12 <CakeProphet> > (\x -> undefined)
05:02:13 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
05:02:13 <lambdabot> arising from a use of `...
05:02:39 <CakeProphet> in my mind this is forcing (\x -> undefined) (I'm just going to call it const undefined now)
05:03:02 <oerjan> CakeProphet: because if the undefined was a more complicated expression that could not be detected as always undefined, then there would be no way to show it without having an x to apply it to
05:03:55 <oerjan> say \x -> ...search for a counterexample to goldback's hypothesis...
05:04:04 <oerjan> *goldbach
05:04:49 <CakeProphet> so basically (\x -> undefined) is _|_ because halting problem? :P
05:04:52 <oerjan> now, _if_ that search never halts, you want that to be equivalent to \x -> undefined
05:05:19 <oerjan> *is _not_ _|_
05:05:30 <CakeProphet> oh.... wait what.
05:06:11 <CakeProphet> my argument here was that const undefined is in fact not _|_
05:06:12 <oerjan> there is no way to make a compiler that treats \x -> ...anything _actually_ undefined as equivalent to undefined
05:06:27 <Sgeo> Hmm
05:06:38 <oerjan> _given_ that functions can be evaluated without applying them
05:06:48 <oerjan> which is only possible because of seq
05:06:55 <CakeProphet> right
05:06:58 <CakeProphet> that makes sense.
05:07:20 <CakeProphet> I thought it was being argued that const undefined was virtually indistinguishable from bottom.
05:07:25 <CakeProphet> or whatever.
05:07:47 <CakeProphet> oh, unless you have seq
05:07:47 <CakeProphet> right
05:07:48 <CakeProphet> and then
05:07:54 <CakeProphet> I used seq and was confused, ha ha. ha ha ha
05:08:14 * Sgeo will be using pseq as semicolons
05:08:16 <Sgeo> >:)
05:08:29 <CakeProphet> @hoogle pseq
05:08:29 <lambdabot> GHC.Conc.Sync pseq :: a -> b -> b
05:08:29 <lambdabot> GHC.Conc pseq :: a -> b -> b
05:08:29 <lambdabot> Control.Parallel pseq :: a -> b -> b
05:09:11 <Sgeo> CakeProphet, like seq, except forces its first argument to be evaluated first
05:09:20 <Sgeo> Before evaluating the second
05:09:32 <CakeProphet> oh, I wasn't aware that was semantically different from seq. :P
05:09:42 <oerjan> it's not _semantically_ different
05:10:03 <CakeProphet> er, order of evaluationally different? :P
05:10:07 <oerjan> well, not denotationally
05:11:00 <CakeProphet> still haven't learned about semantics...
05:12:31 <oerjan> it's there because the denotational semantics does not _actually_ say anything about evaluation order, and ghc actually rearranges things that are denotationally equivalent when optimizing, so _sometimes_ seq ends up evaluating its arguments in the unexpected order
05:12:43 <CakeProphet> ah okay
05:12:59 <CakeProphet> also I still don't see how const undefined is virtually indistinguishable from bottom unless seq is involved.
05:13:20 <oerjan> well const undefined x = undefined always, right?
05:13:32 <oerjan> which = undefined x
05:13:34 <CakeProphet> yeah
05:14:01 <oerjan> so if the _only_ way you can distinguish functions is by applying them to arguments, const undefined is indistinguishable from undefined
05:14:42 <copumpkin> the issue with seq is that it allows you to distinguish undefined :: X -> Y from (\x -> undefined x) :: X -> Y
05:14:49 <CakeProphet> except that actually evaluating const undefined doesn't produce bottom, which I'm assuming is where seq comes into play.
05:15:01 <oerjan> yes
05:15:42 <CakeProphet> so basically fix f is the only way to determine bottomness
05:15:50 <copumpkin> ??
05:16:02 <CakeProphet> > fix (const undefined)
05:16:03 <lambdabot> *Exception: Prelude.undefined
05:16:08 <copumpkin> > fix (const x) = x
05:16:09 <lambdabot> <no location info>: parse error on input `='
05:16:09 <CakeProphet> oh look const undefined is bottom
05:16:18 <copumpkin> fix . const = id
05:16:31 <Sgeo> You can't look at arbitrary values and ask "Is it bottom"
05:16:40 <Sgeo> Unless you've solved the halting problem
05:16:50 <CakeProphet> or unless I evaluate it with fix :P
05:16:52 <copumpkin> you can catch some kinds of bottoms, which is what I do in the spoon package
05:16:57 <copumpkin> CakeProphet: fix isn't doing anything for you there
05:17:17 <copumpkin> > id undefined
05:17:17 <lambdabot> *Exception: Prelude.undefined
05:17:18 <oerjan> CakeProphet: fix determines strictness, not bottomness
05:17:20 <copumpkin> oh look, it's undefined!
05:17:39 <oerjan> (+) 1 is a perfectly nonbottom function, but fix ((+) 1) is bottom
05:17:47 <CakeProphet> ah right.
05:17:56 <copumpkin> oerjan: not necessarily
05:18:03 <shachaf> @let isBottom _ = False
05:18:04 <lambdabot> Defined.
05:18:04 <CakeProphet> I think I was just getting strictness and bottom confused :P
05:18:05 <oerjan> for Integer blah
05:18:08 <copumpkin> :)
05:18:12 <Sgeo> shachaf, hehe
05:18:20 <copumpkin> @hackage spoon
05:18:20 <lambdabot> http://hackage.haskell.org/package/spoon
05:18:31 <copumpkin> teaspoon :: a -> Maybe a
05:18:47 <copumpkin> the power of bottom is yours
05:18:49 <shachaf> If that's teaspoon, I don't know if I want to know what tablespoon is.
05:18:50 <oerjan> CakeProphet: also it's not necessary to use fix, all you need is to apply it to undefined
05:18:59 <copumpkin> spoon :: NFData a => a -> Maybe a
05:19:00 <shachaf> copumpkin: Does it catch any _|_ which throws an exception?
05:19:05 <CakeProphet> so a value being bottom /does not/ determine whether or not your program halts.
05:19:09 <CakeProphet> when its evaluated.
05:19:12 <shachaf> weakHeadNormalSpoon
05:19:14 <copumpkin> shachaf: yeah, exceptions that were deemed to be useful
05:19:23 <shachaf> Useful?
05:19:40 <copumpkin> shachaf: binary, for example, provides no way to recover from errors
05:19:49 <copumpkin> a lot of libraries throw error when they shouldn't
05:19:52 <CakeProphet> oerjan: I thought bottom was all about termination.
05:19:55 <copumpkin> spoon lets you make them behave nicely
05:19:55 <shachaf> Does it catch e.g. <<loop>>?
05:19:58 <CakeProphet> rather, lack thereof
05:20:00 <copumpkin> shachaf: nah
05:20:03 <shachaf> Aw.
05:20:17 <shachaf> Some _|_ checker you have. Doesn't even catch <<loop>>.
05:20:27 <copumpkin> <<loop>> really doesn't happen all that often
05:20:27 <CakeProphet> heh
05:20:32 <Sgeo> <<loop>>?
05:20:41 <copumpkin> Sgeo: an infinite loop in your program
05:20:43 <Sgeo> Is that when BLACKHOLE is reached when evaluating BLACKHOLE?
05:20:49 <copumpkin> yeah
05:20:53 <shachaf> :-(
05:20:54 <copumpkin> on a non-threaded runtime
05:20:56 <oerjan> CakeProphet: it's about "normal" termination, so exceptions like undefined also count
05:21:04 <Sgeo> Cool
05:21:06 <shachaf> I was typing up an elaborate explanation, but you just can't fool people these days.
05:21:08 <CakeProphet> oerjan: right, returning, so to speak.
05:21:19 <CakeProphet> oerjan: a value that is bottom does not produce a normal form.
05:21:21 <Sgeo> shachaf, keep doing it, I'll bet it's funny
05:21:30 * shachaf is demotivated.
05:21:54 <oerjan> basically, if you can give it the type forall a. a, then it's definitely a bottom even if it doesn't loop
05:21:58 <CakeProphet> oerjan: and (\x -> undefined) does not produce a normal form, right?
05:22:09 <oerjan> CakeProphet: not when applied
05:22:21 <CakeProphet> oerjan: well.. right
05:22:27 * Sgeo is impatient for April 1st
05:22:36 <Sgeo> Official release of my Haskell tutorial
05:22:45 <copumpkin> (\x -> x x) (\x -> x x)
05:22:49 <copumpkin> embrace the power of the loop!
05:22:52 <shachaf> oerjan: Not if it's unsafeCoerce something!
05:23:03 <monqy> i love (\ x -> x x) (\ x -> x x)
05:23:04 <shachaf> @pl (\x -> x x) (\x -> x x)
05:23:08 <lambdabot> ap id id (ap id id)
05:23:08 <lambdabot> optimization suspended, use @pl-resume to continue.
05:23:16 <copumpkin> shachaf: that's right, go ahead, kill lambdabot
05:23:18 <monqy> thanks lambdabot
05:23:23 <CakeProphet> oerjan: (\x -> undefined) can be rewritten further, right?
05:23:27 <shachaf> monqy: Thambdabot?
05:23:38 <copumpkin> CakeProphet: why are you focussing on const undefined so much?
05:23:44 <monqy> thumbdabot
05:23:46 <CakeProphet> copumpkin: because it's the example that confuses me.
05:23:55 <copumpkin> it doesn't have any special behavior at all
05:24:08 <shachaf> copumpkin: It's the only strict function that doesn't force its argument!
05:24:16 <shachaf> That's kind of special.
05:24:20 <oerjan> shachaf: well if you're using unsafe functions, obviously you've reached bottom already
05:24:30 <shachaf> oerjan: It's true. :-(
05:24:32 <copumpkin> shachaf: I wouldn't call it strict
05:24:37 * shachaf injects some more _|_
05:24:46 <shachaf> copumpkin: No?
05:24:52 <CakeProphet> copumpkin: it's the general case of not having a normal form when applied, which is what is confusing me.
05:24:53 <shachaf> What definition do you use for "strict", then?
05:25:02 <copumpkin> just because we test against undefined to talk about strictness, doesn't mean returning undefined makes something strict
05:25:16 <shachaf> copumpkin: I thought a strict function was a function f such that f _|_ = _|_
05:25:42 <CakeProphet> copumpkin: so it's actually application of undefined to a value that determines if it's bottom?
05:25:58 <copumpkin> CakeProphet: it's whether it doesn't terminate when evaluated
05:26:08 -!- oerjan has quit (Quit: You sort out this mess yourself).
05:26:12 <copumpkin> lol
05:26:15 <shachaf> Well, where it doesn't return.
05:26:17 <CakeProphet> I think I understand.
05:26:19 <shachaf> s/where/whether/
05:26:39 <copumpkin> shachaf: it feels wrong to say that when something is const undefined, it's strict
05:26:54 <shachaf> copumpkin: I thought this was a classic example in #haskell.
05:26:59 * copumpkin shrugs
05:26:59 <CakeProphet> copumpkin: it's not.
05:27:20 <copumpkin> I thought the point of talking about strictness was to evaluate what it did to its arguments
05:27:24 <copumpkin> that clearly does nothing to its argument
05:27:29 <copumpkin> so that definition seems unsatisfactory
05:28:03 <shachaf> I've said the same thing before.
05:28:09 <shachaf> But denotationally _|_ is _|_.
05:28:12 <copumpkin> sure
05:28:12 <CakeProphet> but it is bottom, because it can't produce a normal form. const undefined becomes (\x -> undefined) which is not a normal form.
05:28:17 <shachaf> And "strict" is defined denotationally.
05:28:35 <copumpkin> CakeProphet: how is it not?
05:29:14 <copumpkin> shachaf: I had this discussion a year or so ago with people regarding spoon and why the denotation view of strictness is bullshit because we can actually distinguish things operationally, and people should stop masturbating to denotation
05:29:26 <copumpkin> :P
05:29:33 <shachaf> copumpkin: Don't let conal hear you say that!
05:29:37 <copumpkin> lol
05:29:39 * shachaf is in vague agreement.
05:29:45 <CakeProphet> copumpkin: hmmm, well is undefined x considered a valid reduction of (\x -> undefined)?
05:29:51 <copumpkin> no
05:29:53 <copumpkin> there is no application
05:29:56 <CakeProphet> well, there you go.
05:29:57 <shachaf> On the other hand this is such a corner case that it doesn't really matter.
05:29:57 <CakeProphet> >_>
05:30:00 <copumpkin> no, it's normal form
05:30:06 <copumpkin> the same way (\x -> 5) is
05:30:15 <copumpkin> you can't beta reduce a lambda without an application
05:30:37 <CakeProphet> ah wait
05:30:38 <CakeProphet> yes it is :P
05:30:45 <CakeProphet> there's no term
05:30:46 <copumpkin> the issue is the one I keep talking about
05:30:48 <copumpkin> (\x -> undefined x)
05:30:48 <CakeProphet> that it reduced to.
05:30:55 <CakeProphet> *reduces
05:30:56 <copumpkin> that's an eta expanded form of undefined
05:31:02 <copumpkin> which should be indistinguishable from undefined
05:31:10 <copumpkin> but is not
05:31:22 <CakeProphet> copumpkin: right right I see nevermind
05:31:22 <shachaf> It is if you're not seqist.
05:31:32 * copumpkin lives in agdaland
05:31:33 <copumpkin> fuck seq
05:31:41 <copumpkin> seq has no power over me!
05:31:45 <CakeProphet> yeah evaluation who needs it!
05:31:45 <copumpkin> for I have no bottom
05:31:52 <copumpkin> oh I evaluate plenty
05:31:55 <copumpkin> just never to bottom
05:32:31 <shachaf> When copumpkin evaluates an infinite loop, it's never _|_.
05:32:36 <shachaf> copumpkinfacts
05:32:44 <copumpkin> :D
05:32:46 <CakeProphet> copumpkin: is _|_ a normal form?
05:33:05 <CakeProphet> oh wait I see
05:33:13 <CakeProphet> it is entirely meaningless to refer to a value being _|_
05:33:18 <CakeProphet> because bottom inherently does not have any values.
05:33:26 <coppro> uh no
05:33:34 <copumpkin> hmm, I think we're confusing different uses of _|_ here
05:33:46 <coppro> bottom is the value of all types
05:33:51 <CakeProphet> nope
05:33:57 <coppro> yes
05:34:06 <coppro> it has no meaning as a value
05:34:14 <CakeProphet> I was under the impression _|_ is the empty type
05:34:19 <coppro> but types contain values and it's a member of all types
05:34:19 <copumpkin> it is, in a different usage
05:34:24 <CakeProphet> hmmm okay.
05:34:29 <CakeProphet> in Haskell.
05:34:30 <coppro> that interpretation works too, but isn't as clean
05:34:34 <copumpkin> _|_ is the bottom element in the ordering of definedness
05:34:38 <copumpkin> in unrelated uses, it also means false
05:34:43 <copumpkin> and the empty set, by C-H
05:34:50 <copumpkin> damn overloaded symbols
05:34:58 <CakeProphet> copumpkin: _|_ is false in relation to decision problems right?
05:35:13 <copumpkin> in agda, it's just used as a general falsity
05:35:18 <copumpkin> it is an empty set
05:35:27 <copumpkin> you might also call an initial object in a category _|_
05:35:38 <copumpkin> which does tie it back with the bottom element in the ordering of definedness
05:35:51 <copumpkin> but they're different sorts of categories
05:36:23 <shachaf> And the terminal object ‾|‾?
05:37:28 <copumpkin> ⊤⊥
05:37:39 <CakeProphet> to me "a function that cannot return a value has the return type of bottom" is similar to saying "there is no term that this term can reduce to" but I'm pretty sure they're separate and completely unrelated.
05:38:12 <copumpkin> in one usage, _|_ is a _value_ or something that resembles a value, and it inhabits all types
05:38:20 <shachaf> copumpkin: I was already doing a Unicode search anyway. But for the sake of tradition I decided to stick with the three-character version.
05:38:25 <CakeProphet> copumpkin: the Haskell usage right?
05:38:25 <copumpkin> to talk about the semantics of the language, an ordering of values is introduced
05:38:32 <copumpkin> and _|_ is considered to be less than all other values
05:38:33 <copumpkin> yeah
05:38:44 <copumpkin> then people talk about haskell maintaining monotonicity
05:38:49 <shachaf> What would ‾|‾ mean in Haskell?
05:38:58 <copumpkin> in that functions only ever decrease in definedness
05:39:03 <copumpkin> strict ones, anyway
05:39:47 <CakeProphet> shachaf: clearly the most defined value :P
05:41:07 <CakeProphet> shachaf: okay so.... are terms of type _|_ all normal forms?
05:41:09 <CakeProphet> er
05:41:15 <CakeProphet> s/shachaf: //
05:41:28 <CakeProphet> assuming that all terms have an associated type.
05:43:24 <CakeProphet> I think what is meant by "_|_ inhabits all types" is that _|_ is a subtype of all types, similar to how the empty set is a subset of all sets.
05:43:33 <CakeProphet> however, _|_ contains no values.
05:43:48 <shachaf> _|_ isn't a type.
05:43:54 <shachaf> It's a value.
05:44:01 <CakeProphet> >_>
05:44:03 <shachaf> Bool is inhabited by three values: True, False, and _|_
05:44:17 <shachaf> Therefore you can say True :: Bool, False :: Bool, undefined :: Bool
05:44:22 <shachaf> Or x :: Bool; x = x, or whatever.
05:44:25 <copumpkin> this is because haskell is non-strict, so all values might be arbitrarily complex calculations that do not terminate
05:44:46 <CakeProphet> ah okay.
05:45:13 <CakeProphet> so in Haskell, thunks count as values, even though they may return nothing.
05:46:01 <CakeProphet> shachaf: but no, _|_ really is a type.
05:46:04 <CakeProphet> I promise.
05:46:15 <copumpkin> it is a type if you overload the symbol to also mean a type
05:46:23 <copumpkin> in this context, it's meaningless to call it a type
05:46:27 <CakeProphet> I'm talking about in type theory
05:46:30 <shachaf> It is a crocodile if you overload the symbol to also mean a crocodile.
05:46:31 <CakeProphet> bottom is the empty type.
05:47:12 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
05:47:15 <copumpkin> we typically don't call it bottom in that context
05:47:17 <CakeProphet> it's just that in Haskell values can include things that are not in a normal form.
05:47:29 <copumpkin> they're unrelated in this context
05:47:49 * shachaf thinks of non-strictness as much more reasonable than strictness.
05:47:59 <shachaf> I wonder if that's the default way of thinking of things or if all the Haskell got to me.
05:48:22 <CakeProphet> shachaf: depends on the context.
05:48:53 <CakeProphet> for most of the history of programming, non-strict as reasonable is certainly not the default way of thinking about things.
05:49:00 <CakeProphet> in math, sure.
05:50:34 <shachaf> I mean in the context of functions.
05:51:35 <CakeProphet> so basically I think the value _|_ that's referred to in Haskell is completely different from the mathematical meaning of _|_ as a type. it becomes useful to think about _|_ as a value precisely because non-strictness allows you to manipulate values that do not actually return any result.
05:52:14 <shachaf> CakeProphet: I just like my eta-equivalence, man.
05:52:17 <shachaf> Which is why I hate seq.
05:54:11 <copumpkin> CakeProphet: that's because, as I keep saying, it isn't being used as a type there
05:54:18 <CakeProphet> copumpkin: right.
05:54:20 <copumpkin> if you want the mathematical backing to its usage there, look in order theory
05:54:34 <copumpkin> the category usually used to model haskell's behavior is CPO\bot
05:58:25 <CakeProphet> :t (\x -> undefined)
05:58:26 <lambdabot> forall t a. t -> a
05:59:15 <CakeProphet> :t (undefined, undefined)
05:59:16 <lambdabot> forall a a1. (a, a1)
05:59:21 <CakeProphet> heh.
05:59:39 <shachaf> CakeProphet is easily amused.
05:59:49 <CakeProphet> my brain hurts.
05:59:49 <CakeProphet> :P
06:00:18 <CakeProphet> undefined doesn't have the same type as undefined.
06:00:29 <CakeProphet> it can.
06:00:33 <CakeProphet> but doesn't have to.
06:01:45 <copumpkin> it's universally quantified
06:01:47 <copumpkin> :t (5, 5)
06:01:48 <lambdabot> forall t t1. (Num t, Num t1) => (t, t1)
06:01:58 <CakeProphet> right.
06:02:37 <shachaf> forall a b. (a,b) = (forall a. a, forall b. b)
06:03:35 <CakeProphet> I think it's fair to say that the value _|_ has the type _|_
06:03:47 <shachaf> forall a b. (a -> b -> r) -> r = ((forall a. a) -> (forall b. b) -> r) -> r
06:03:54 <shachaf> = (forall a b. a -> b -> r) -> r ?
06:04:02 <shachaf> No.
06:04:33 <shachaf> Or, hmm.
06:04:39 <shachaf> What would that correspond to in non-CPS?
06:05:21 <CakeProphet> @djinn forall a b. (a -> b -> r) -> r
06:05:22 <lambdabot> -- f cannot be realized.
06:05:25 <CakeProphet> dunno.
06:05:26 <CakeProphet> :P
06:06:30 <copumpkin> CakeProphet: AAAH
06:06:35 <CakeProphet> copumpkin: what?
06:06:41 <copumpkin> haskell does not have a _|_ type
06:06:45 <CakeProphet> copumpkin: sure it does.
06:06:49 <CakeProphet> it's just not written anywhere.
06:06:53 <copumpkin> no it doesn't
06:06:55 <copumpkin> all types are inhabited
06:07:08 <CakeProphet> so is _|_, in this case, weirdly. :P
06:07:11 <copumpkin> _|_ : forall a. a
06:07:16 <CakeProphet> yes.
06:07:25 <copumpkin> _|_ is not inhabited, and it's a type error to say that it is
06:07:27 <shachaf> I mean, the two are obviously not equivalent.
06:07:39 <copumpkin> because it is not a type, and values are not inhabited
06:07:41 <Sgeo> inhabited?
06:07:47 <copumpkin> a set that contains elements
06:07:50 <Sgeo> Does data Foo count as inhabited?
06:07:55 <copumpkin> yes
06:08:05 <CakeProphet> Sgeo: it contains _|_!!! :P
06:08:12 <copumpkin> newtype Z = Z Z
06:08:27 <copumpkin> that contains as many inhabitants as data Foo does
06:08:36 <Sgeo> I thought newtype was strict?
06:08:36 <shachaf> An infinite number!
06:08:51 <shachaf> Sgeo: A newtype's constructor is strict, yes.
06:09:01 <shachaf> But you can't ever construct that newtype.
06:09:10 <copumpkin> fix Z
06:09:20 <copumpkin> or undefined
06:09:23 <copumpkin> they give the same answer
06:09:30 <Sgeo> Oh, so for newtype Newtype = Newtype MyType
06:09:31 <shachaf> copumpkin: Denotationalist!
06:09:42 <CakeProphet> shachaf: ismist!
06:09:43 <Sgeo> You don't get both Newtype _|_ and _|_, just _|_?
06:09:47 <shachaf> Not so high-and-mightily operational now, are we?
06:10:06 <copumpkin> we can't distinguish undefined and fix Z
06:10:14 <CakeProphet> Sgeo: NewType _|_ is _|_
06:10:18 <shachaf> spoon
06:10:32 <copumpkin> fair enough
06:10:34 <copumpkin> :)
06:10:41 <Sgeo> CakeProphet, indeed, unlike if data was used instead of newtype, where NewType _|_ would be distinct from _|_
06:10:54 <CakeProphet> nope.
06:11:01 <shachaf> CakeProphet: Nope?
06:11:11 <shachaf> In data Z = Z Z, Z undefined =/= undefined
06:11:16 <CakeProphet> I thought strictness was irrelevant to _|_
06:11:21 <copumpkin> not at all
06:11:25 <shachaf> What?
06:11:48 <CakeProphet> I don't know I think I've fatigued my brain muscles trying to wrap my head around this.
06:12:05 <shachaf> Are you talking about _|_ the type or _|_ the crocodile?
06:12:12 <CakeProphet> the crocodile.
06:12:16 <shachaf> Oh.
06:12:17 <copumpkin> krokodil
06:12:23 <shachaf> Yes, the crocodile doesn't care about strictness.
06:12:49 <CakeProphet> I'm back in Haskell land where the empty type is not a type.
06:13:01 <Sgeo> CakeProphet, empty type doesn't exist
06:13:11 <Sgeo> There's (), which contains () and _|_
06:13:12 <CakeProphet> if you say so.
06:13:22 <shachaf> () is the anti-_|_
06:13:28 <Sgeo> TOP!
06:13:39 <shachaf> http://www.youtube.com/watch?v=QWgaToemGkY
06:14:09 <CakeProphet> Sgeo: saying that the empty type does not exist is kind of like saying the empty set does not exist.
06:14:11 <shachaf> Hmm, kind of noisy.
06:14:17 <shachaf> CakeProphet: No. We're talking about Haskell.
06:14:21 <CakeProphet> shachaf: right
06:14:32 <Sgeo> Haskell is not pure math.
06:14:33 <CakeProphet> 01:12 < CakeProphet> I'm back in Haskell land where the empty type is not a type.
06:15:06 <CakeProphet> it is not in Haskell, it is elsewhere.
06:15:13 <CakeProphet> Sgeo said "the empty type does not exist"
06:15:20 <CakeProphet> therefore, only Haskell exists? :P
06:15:43 <copumpkin> languages that have the _|_ type typically don't have the _|_ value :)
06:15:46 <copumpkin> and vice versa
06:16:08 <CakeProphet> works for me.
06:16:10 <copumpkin> however, from another perspective
06:16:17 <copumpkin> the _|_ type itself is a value in those languages
06:16:27 <copumpkin> but with a completely different denotation as the _|_ value from haskell
06:16:52 <copumpkin> in Agda, _|_ : Set
06:17:16 <shachaf> Surely Agda calls it ⊥?
06:17:33 <CakeProphet> perhaps I need to understand the denotational semantics of Haskell to understand this bottom business.
06:17:48 * Sgeo knows nothing about denotational semantics
06:18:14 <CakeProphet> but from the perspective of type theory, it sounds incredibly silly to say that Haskell has no bottom type.
06:18:28 * Sgeo knows nothing about type theory
06:20:27 <CakeProphet> but yes, I was wrong to say that the _|_ value has the _|_ type, that's equally silly.
06:21:05 <copumpkin> well, in a different type theory it might make sense
06:21:12 <copumpkin> a subtyping theory with singleton types
06:21:40 <copumpkin> only total languages can have empty types
06:23:30 <CakeProphet> what's the best type theory to use when talking about Haskell?
06:24:22 <copumpkin> well, people usually model it in system Fomega
06:24:36 <copumpkin> but that doesn't really capture the bottom-ness
06:24:45 <copumpkin> people usually gloss over that on the type theory level
06:24:51 -!- zzo38 has joined.
06:24:53 <copumpkin> and then try to capture it in semantics
06:25:08 <copumpkin> by saying something like Hask = CPO\bot
06:27:07 <CakeProphet> copumpkin: so Haskell is strongly normalizing?
06:27:13 <copumpkin> nope
06:27:21 <CakeProphet> ah okay.
06:27:51 <zzo38> Today, I played Dungeons & Dragons game. I managed to break into a debtor's prison, find out who one of them was in debt to and by how much, got arrested, guards trying to take me to the other prison, some wizards tried to restrict me but I stunned them, the guard try to attack me but I stunned them too, dragged them to the federal prison, told them to stand up (but they couldn't), got into a holding cell.
06:28:03 <CakeProphet> copumpkin: ah but Haskell's type system is.
06:28:04 <CakeProphet> ?
06:28:11 <zzo38> (This is a deliberate parts of my plan)
06:28:13 -!- pikhq_ has joined.
06:28:32 -!- pikhq has quit (Ping timeout: 276 seconds).
06:29:21 <copumpkin> CakeProphet: sort of, in theory
06:29:40 <copumpkin> there are some weirdnesses in the implementations regarding type aliases and so on
06:29:48 <copumpkin> which they try hard _not_ to normalize
06:31:01 -!- Jafet has joined.
06:32:29 <CakeProphet> copumpkin: that's... weird.
06:32:50 <copumpkin> if you wrote type String = [Char]
06:32:54 <copumpkin> you presumably like the name String
06:33:03 <CakeProphet> oh for error reporting right?
06:33:08 <copumpkin> so you want to see String in type errors where possible
06:33:31 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:33:41 <CakeProphet> copumpkin: but it doesn't really change anything to do that.
06:34:07 <copumpkin> yeah, all types could have a normal form if we wanted them to
06:34:53 <CakeProphet> you'd just get a lot more RealWorld and #'s :P
06:36:07 <copumpkin> hmm, not even that
06:36:12 <copumpkin> IO is still a newtype
06:36:23 <copumpkin> so you typically wouldn't want to see through those
06:36:31 <copumpkin> at least, you wouldn't need to
06:40:15 <CakeProphet> it occurs to me
06:40:39 <CakeProphet> why are boolean values not expressed in Haskell as they are in the LC
06:41:08 <copumpkin> you mean as functions?
06:41:09 <CakeProphet> how often do you need Eq and Ord for Bool? I suppose Read and Show are valuable.
06:41:13 <CakeProphet> copumpkin: yes
06:41:27 <copumpkin> because we have ADTs and they're convenient
06:41:40 <copumpkin> /= on Bool is xor
06:41:59 <copumpkin> == is biconditional implication :P
06:42:19 <CakeProphet> (a == b) c d is pretty convenient too though.
06:42:39 <copumpkin> that's what if is for
06:42:44 <copumpkin> you could say the same about numbers
06:42:48 <copumpkin> 5 (+1) 0
06:42:52 <copumpkin> that should be 5!
06:43:01 <CakeProphet> > 5 (+1) 0
06:43:02 <lambdabot> 5
06:43:05 <CakeProphet> copumpkin: oh look it is!
06:43:07 <CakeProphet> :P
06:43:08 <copumpkin> we like to write explicit eliminators
06:43:09 <copumpkin> lol
06:43:12 <copumpkin> okay fine
06:43:14 <copumpkin> > 5 (+2) 0
06:43:15 <lambdabot> 5
06:43:16 <copumpkin> should be 10
06:43:39 * Sgeo would expect shachaf to set that sort of trap
06:43:51 <CakeProphet> not quite as convenient as Bool being church booleans I think.
06:44:05 <shachaf> copumpkin: You could say the same about floating point numbers.
06:44:11 <Sgeo> Oh, I see what copumpkin wants
06:44:12 <shachaf> But *please* don't. Please.
06:44:18 <copumpkin> what do I want?
06:44:22 <copumpkin> I already have what I want
06:44:24 <CakeProphet> but, having instances for bool is probably more practically useful, especially considering that if statements aren't really troublesome enough to need replacing by regular function application
06:44:27 <copumpkin> explicit eliminators in the form of pattern matching
06:44:28 <Sgeo> coppro, 5 (+2) 0 to be 10
06:44:31 <Sgeo> I see what that means
06:44:38 <copumpkin> oh :)
06:45:17 <Sgeo> Should totally write a Num instance for (a -> a) that makes fromInteger do that
06:45:42 <CakeProphet> good luck with that.
06:45:44 <shachaf> Sgeo: Make sure you make negative numbers work.
06:45:51 <zzo38> I thought of that thing too. But the type of Church numbers is (a -> a) -> (a -> a) I think.
06:46:15 <copumpkin> yep
06:46:31 <Sgeo> Write a Num instance for (a -> a) -> (a -> a)
06:47:59 <zzo38> What would you expect negative numbers to do here? It would only work if there was a type that can only hold bijective functions (something I have asked for in the past).
06:48:28 <copumpkin> (a -> a) -> (a -> a) -> a
06:48:33 <Sgeo> _|_, clearly
06:48:36 <copumpkin> one approach to the negatives
06:48:51 <copumpkin> I forgot an a
06:49:09 <copumpkin> (a -> a) -> (a -> a) -> (a -> a)
06:49:14 <copumpkin> bettar
06:50:17 <zzo38> Sgeo: Yes it could be, if you do fromInteger x | x < 0 = error "Negative church numbers is not allowed" but that doesn't really count as "make negative numbers work", I think.
06:51:10 <copumpkin> with my scheme
06:51:20 <copumpkin> n pred succ 0 = id
06:52:01 <shachaf> pred :-(
06:52:13 <shachaf> Oh, wait.
06:53:18 <copumpkin> I may be oversimplifying it though
06:57:42 <zzo38> Yes I realized /= on Bool is xor and have used that in some programs.
06:58:04 <shachaf> <= is implication
06:58:23 <zzo38> I used it to make a monoid for Equivalence from the contravariant functors package.
06:58:33 <zzo38> shachaf: O, yes, you are correct. I have not realized that, before.
06:58:34 <CakeProphet> > False <= True
06:58:35 <lambdabot> True
06:58:40 <CakeProphet> > True <= Falsee
06:58:41 <lambdabot> Not in scope: data constructor `Falsee'
06:58:43 <CakeProphet> > True <= False
06:58:44 <lambdabot> False
06:58:44 <CakeProphet> ha.
06:58:55 * CakeProphet easily amused
06:58:57 <shachaf> Well, fine, it *would* be implication if data Bool = True | False deriving Ord
06:59:28 <copumpkin> > join (liftA2 (<=)) [False, True]
06:59:28 <lambdabot> [True,True,False,True]
06:59:42 <zzo38> You can use other comparison operators, too.
07:00:40 <copumpkin> > join (liftA2 (>=)) [False, True]
07:00:40 <copumpkin> hum
07:00:41 <lambdabot> [True,False,True,True]
07:01:05 <copumpkin> it even looks like implication
07:01:15 <CakeProphet> copumpkin: how is it not implication?
07:01:28 <shachaf> copumpkin: It *would*, if only True < False!
07:01:51 <zzo38> Then just reverse the comparison operator.
07:01:56 <CakeProphet> join (liftA2 (<)) [False, True]
07:01:57 <CakeProphet> > join (liftA2 (<)) [False, True]
07:01:58 <lambdabot> [False,True,False,False]
07:02:05 <CakeProphet> > join (liftA2 (>)) [False, True]
07:02:06 <lambdabot> [False,False,True,False]
07:02:49 <CakeProphet> > not (True > True)
07:02:50 <lambdabot> True
07:02:56 <CakeProphet> > not (True > False)
07:02:57 <lambdabot> False
07:03:04 <CakeProphet> > not (False > True)
07:03:05 <lambdabot> True
07:03:07 <CakeProphet> > not (False > False)
07:03:08 <lambdabot> True
07:03:52 <CakeProphet> how is that not implication again? :P
07:04:02 <shachaf> Well, it is.
07:04:14 <shachaf> zzo38: But I like the arrow shape.
07:04:44 <zzo38> shachaf: Well, *too bad*
07:04:57 <CakeProphet> > let (->) = id in id -> 2
07:04:58 <lambdabot> <no location info>: parse error on input `->'
07:05:00 <CakeProphet> :(
07:05:27 <shachaf> CakeProphet isn't satisfied with (->) working for types and kinds.
07:05:33 <shachaf> It has to be a value-level operator too.
07:05:39 <CakeProphet> yes!
07:06:10 <shachaf> And what would it apply to? (-3)-types?
07:06:19 <CakeProphet> > let (-->) = id in id --> 2
07:06:19 <lambdabot> 2
07:06:39 <shachaf> copumpkin: I ended up not fully making sense of dolio's slides.
07:06:43 <CakeProphet> > let (-->) = =< in True --> False
07:06:44 <lambdabot> <no location info>: parse error on input `=<'
07:06:48 <CakeProphet> > let (-->) = (=)< in True --> False
07:06:49 <copumpkin> shachaf: oh?
07:06:49 <lambdabot> <no location info>: parse error on input `='
07:06:49 <CakeProphet> bah
07:06:54 <CakeProphet> > let (-->) = (=<) in True --> False
07:06:55 <lambdabot> Not in scope: `=<'
07:06:56 * CakeProphet tired
07:07:04 <zzo38> I wrote some classes that you can list all values of some types, including Bool and () and Zero (a uninhabited type) and sum and product types of those types, and functions of those types (function type could be, exponent type). Now it can also make Enum, Bounded, Eq, of those specific function types.
07:07:13 <CakeProphet> > let (-->) = (<=) in True --> False
07:07:14 <lambdabot> False
07:07:19 <shachaf> copumpkin: Mainly lacking background, I think. It also made more sense when dolio was talking. :-)
07:07:20 <copumpkin> zzo38: I have a package on hackage that does that too
07:07:28 <copumpkin> shachaf: I can explain stuff if you want
07:07:35 <copumpkin> @hackage enumerable
07:07:35 <lambdabot> http://hackage.haskell.org/package/enumerable
07:08:11 <CakeProphet> > let (-->) = (<=); id = (-->) True in map id [False, True]
07:08:12 <lambdabot> [False,True]
07:09:18 <zzo38> One reason I wanted types holding only bijective functions is to use it to represent equality of numbers in the type level. The other reason is to do some experimenting with reversible programming.
07:09:29 <shachaf> copumpkin: It's probably a matter of going over it in detail. Probably everything I want is talked about in one of the many papers on my to-read list. :-)
07:09:38 <copumpkin> fair enough :)
07:09:39 * shachaf 's to-read list is an enumeration of every possible paper.
07:09:41 <zzo38> O, the other type I made to list all value, is Maybe type. It can be used as a successor for numbers in type level
07:09:54 <CakeProphet> zzo38: reversible programming would be very cool.
07:11:09 <CakeProphet> and probably very very space leaky
07:11:13 <zzo38> I also made a Classical class for a few types to make classical logic in types (like Curry-Howard, but classical logic instead of only intuitionistic; since they are restricted to instances of the class, te law of excluded middle could be proven individually for each type)
07:11:39 <CakeProphet> as it pretty much implies that data is never destroyed.
07:12:05 <copumpkin> CakeProphet: it doesn't necessarily. It just means you need to know how to go backwards
07:12:09 <zzo38> I think it doesn't need to be space leaky all the time, since you could have a result which you go backward
07:12:15 <copumpkin> I'm still not sure how a _type_ of invertible functions would get checked, though
07:12:30 <copumpkin> without you providing an explicit proof that you're bijective
07:13:44 <zzo38> copumpkin: Well, my idea is to restrict what kind of things you can use in its definition, and ensure all outputs are defined for any defined input, and then have an implicit cast from bijective functions to normal functions so that they can be used as normal functions.
07:14:02 <copumpkin> so I mean
07:14:09 <copumpkin> f 0 = 0
07:14:11 <copumpkin> f (suc n) = n
07:14:12 <CakeProphet> copumpkin: that either involves computing with a function a -> a that is bijective or a -> SomeTypeWithAStoredSomewhere. Basically memory can be deleted if it's no longer by the values that used it to be computed.
07:14:27 <CakeProphet> s/by/used by/
07:14:37 <copumpkin> my function is not bijective
07:14:53 <copumpkin> how would you disallow it if I tried to give it the type of a bijective function Nat -> Nat?
07:15:21 <zzo38> However, there should also be some way to use it to prove that 1 is unequal to 2, so that you can prove the type Not (Maybe Zero <-> Maybe (Maybe Zero)) where data Zero; type Not t = t -> Zero;
07:15:35 <copumpkin> you should come to #agda :)
07:16:06 <copumpkin> although no language I know allows you to prove things like that _and_ allows subtyping
07:16:21 <copumpkin> which seems to be what you want for bijective functions
07:17:07 <zzo38> copumpkin: It would require things checked at compile time, one thing is that case would be used, and restrictions on ensuring everything in unique; there are way to do that, that I have thought of. Although I might still have made some mistake
07:17:51 <copumpkin> zzo38: I'm not sure it's decidable in general, though. You could probably come up with some good heuristics but you typically want a type system to have an easy mental model
07:18:12 <copumpkin> in agda you could just prove that your function is bijective
07:18:27 <copumpkin> and it still feels like haskell :)
07:18:45 <copumpkin> anyway, I need to sleep :(
07:18:52 <zzo38> (One requirement would be that unbounded types could be passed only unchanged, and *must* be passed exactly once to the output if the input contains it.)
07:19:06 <copumpkin> ah, that's substructural typing
07:19:19 <copumpkin> something that most of these languages don't support
07:19:41 <copumpkin> it's the secret sauce that we need to make DList ~= List
07:22:41 <zzo38> In addition, bijective functions would be able to use other bijective functions, but not functions that aren't bijective. Constructors and field names in a newtype are automatically considered bijective.
07:23:02 <zzo38> And there also ought to be something usable with bijective functions that allows you to access its reverse.
07:24:08 <CakeProphet> zzo38: perhaps if you could make bijectiveness implicit in the semantics of the language.
07:24:18 <CakeProphet> then it's always guaranteed.
07:25:33 <CakeProphet> but that would extremely memory expensive.
07:26:09 <CakeProphet> basically all data types would have an implicit slot for "everything that was used in creating me"
07:26:34 <zzo38> CakeProphet: Yes, that is kind of what I was trying to explain to make. However, it would be working only at compile-time, and only for functions marked as bijective would have such requirements; however, you could implicitly cast bijective function type to normal function type if you do not need that.
07:26:45 <zzo38> CakeProphet: The ways I was thinking of, no data types would need such a slot.
07:27:25 <zzo38> Because it would be implicit in the syntax used for making bijective functions, and the compile-time semantics, but not run-time semantics.
07:32:01 <zzo38> In addition, "everything that was used in creating me" is not really what a mathematical bijective function does anyways!
07:33:50 <CakeProphet> zzo38: right but that's what you would need if you want every value to be reversible without knowledge of a reversing function.
07:37:13 <zzo38> I am not trying to make every value reversible, however. So the type (Zero <-> Maybe Zero) (where Zero means uninhabited type and <-> means bijective function) is uninhabited.
07:38:09 <CakeProphet> ah, yes.
07:39:16 <zzo38> Knowledge of a reversing function would not even be needed at runtime either; because the function to access its inverse would be processed at compile-time to get its reverse, and if it is applied to a variable then the program is adjusted at compile-time to pass both the function and its inverse to the function taking that variable as an argument.
07:40:08 <CakeProphet> right, the question is: can you make any guarantees that the inverse function is a true inverse.
07:40:59 <zzo38> The type (x <-> x) for a specific x represented as a number can mean the factorial of x when it is used as a number.
07:41:45 <zzo38> CakeProphet: With the ideas I was thinking of, the compiler would automatically be able to calculate the inverse if you followed specific rules, where you must follow those rules for the compiler to accept it as a bijective function too.
07:44:17 <zzo38> Such as, you would have to build it up from a case block without duplicates, without inexhaustive patterns, only other bijective functions can be called, no pattern guards, no undefined/error, and it easily check all outputs are also unique.
07:46:23 <CakeProphet> hmmm actually I just got an idea for a very simple graph-based programming language that's reversible.
07:46:37 <CakeProphet> but also inherently a memory leak. :P
07:47:09 <CakeProphet> well, no. you could manually manage memory if you had a way to delete graph nodes.
07:48:29 <CakeProphet> if a predecessor node (a node that was computed one step previously in the program's execution) does not point to any present nodes, then it can be considered inaccesible; repeat recursively back to the beginning of the program.
07:49:48 <zzo38> Another requirement would be that all variables occur exactly once in the output.
07:50:53 <CakeProphet> valid operations would include: reverse a node to the node that produced it
07:51:09 <CakeProphet> if you didn't actually free any memory ever, another valid operation would be: reverse a single execution step.
07:52:50 * CakeProphet will have to examine this further on a later date.
07:52:53 <CakeProphet> good night.
07:53:48 <zzo38> I think bijective functions form a group.
07:54:16 <zzo38> In addition, the reversible esolangs Burro and Revaver2pi also have their programs form a group.
08:09:09 -!- copumpkin has quit (Ping timeout: 244 seconds).
08:09:27 <Sgeo> Would it make sense to represent a GoL grid in Haskell with an infinite 3d data structure?
08:09:34 -!- copumpkin has joined.
08:41:57 <zzo38> I have a game with this text: "In former times, friends Skipp, Apple, and the Wedge were camped. Opposing to expectation, as for them they were kidnapped by the foreigners which is supposed to because it exists. They were placed on the underground mission of spacecraft of enormous foreign country.... Before marshmellows burns, it escapes from the body of the captivity and it must help those in order to return to their planet!"
08:48:11 -!- GreaseMonkey has quit (Quit: The Other Game).
09:03:57 -!- pagnol has joined.
09:04:42 -!- pagnol has quit (Client Quit).
09:04:54 -!- pagnol has joined.
09:05:58 -!- Phantom_Hoover has joined.
09:11:59 <Phantom_Hoover> ??
09:12:00 <Sgeo> http://ib.skaia.net/post/view/25830 Phantom_Hoover clicky (assuming you're caught up with HS)
09:12:01 <Phantom_Hoover> Sgeo...........
09:12:01 * Sgeo is easily amused
09:41:15 -!- ais523 has joined.
09:55:04 <zzo38> Bijective function types might also allow some optimizations to be performed that otherwise doesn't be performed.
10:01:40 <oklobot> bijections?!?!?!?
10:01:43 <oklobot> oh
10:01:45 <oklobot> meh
10:01:55 -!- oklobot has changed nick to oklopol.
10:03:17 <oklopol> in modern bijections, it's okay for some values on the domain to map back on the domain.
10:04:30 <oklopol> values of the codomain mapping back on the codomain in the inverse of the function of course has been considered damn hot through the ages.
10:06:19 <oklopol> maybe i made it too obvious with the second sentence.
10:06:34 <zzo38> What I mean specifically is that all defined input has a valid output, all values of both the input and output types are taken into account, and that there is a different output for each input.
10:07:50 <oklopol> i know what a bijection is
10:08:22 <oklopol> and by i i mean everyone here who's not a stupid
10:08:51 * Sgeo doesn't remember the difference between injection and surjection, which is which, but bijection's easy
10:09:04 <zzo38> I know you know, but I wanted to be more specific anyways.
10:11:40 <oklopol> who doesn't
10:13:08 <oklopol> a bijection from X to Y is a function from X to Y which is an injection and a surjection. an injection is a function such that x != y, both in Y, implies f(x) != f(y) and a surjection is such that for all y in Y there exists x in X such that f(x) = y
10:13:38 <oklopol> a bijection from X to Y is a function from X to Y which is an injection and a surjection. an injection is a function such that x != y, both in X, implies f(x) != f(y) and a surjection is such that for all y in Y there exists x in X such that f(x) = y
10:13:41 <oklopol> better
10:14:37 <zzo38> Yes that is better than my description
10:15:49 <zzo38> I have many ideas for use of bijective function type; one is to experiment with reversible programming, one is to determine inverses automatically, one is to be able to represent equality of natural numbers in the type system similar to Curry-Howard (but this should also require that there is some way to prove that one is not equal to zero, and so on)
10:20:48 <zzo38> I wrote a program for classical logic. I called the uninhabited type Zero. For numbers, you would have, Zero for zero, Maybe for successor, product type for products, sum type for sums, function type for exponents. And then, you also have Zero, product, sum, for logical operation as well, and bijective function type for equality of numbers.
10:20:51 <oklopol> yeah that sorta stuff might be nice. i also think that's been tried, perhaps succesfully
10:21:09 <oklopol> then again who cares if it's been done
10:23:46 -!- monqy has quit (Quit: hello).
10:32:54 -!- hagb4rd has quit (Ping timeout: 240 seconds).
10:39:27 -!- zzo38 has quit (Remote host closed the connection).
10:45:21 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
10:45:44 <Phantom_Hoover> Sgeo, they're both the same, just going opposite ways.
10:55:50 -!- Phantom_Hoover has quit (Quit: Leaving).
12:28:29 -!- Vorpal has joined.
13:01:27 -!- pagnol has quit.
13:36:34 <Vorpal> huh, google changed favicon again?
13:59:38 -!- CakeProphet has quit (Ping timeout: 276 seconds).
13:59:44 -!- ais523_ has joined.
14:00:56 -!- derrik has joined.
14:11:58 -!- Guest14567 has joined.
14:12:05 -!- Slereah_ has quit (Ping timeout: 260 seconds).
14:28:56 -!- derdon has joined.
14:32:18 -!- MSleep has changed nick to MDude.
14:34:03 -!- ais523 has quit (Ping timeout: 240 seconds).
15:03:55 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:16:45 -!- MSleep has joined.
15:17:19 -!- MDude has quit (Ping timeout: 240 seconds).
15:28:36 -!- copumpkin has joined.
15:30:08 -!- MSleep has changed nick to MDude.
15:34:27 -!- ais523_ has quit (Quit: Page closed).
15:43:34 -!- andrew12 has quit (Ping timeout: 260 seconds).
15:49:23 -!- Phantom_Hoover has joined.
15:52:27 <Phantom_Hoover> @tell elliott Brumhandle acquired; inbox filled with angry PMs.
15:52:28 <lambdabot> Consider it noted.
15:54:10 -!- augur has quit (Ping timeout: 258 seconds).
15:55:38 -!- andrew12 has joined.
16:00:37 -!- CakeProphet has joined.
16:00:49 -!- CakeProphet has quit (Changing host).
16:00:49 -!- CakeProphet has joined.
16:01:07 <CakeProphet> :)
16:03:31 -!- ais523 has joined.
16:05:11 -!- CakeProp1et has joined.
16:10:49 -!- zzo38 has joined.
16:11:04 <Phantom_Hoover> CakeProphet, fix your ident order dammit.
16:12:05 -!- Ngevd has joined.
16:31:59 -!- CakeProp1et has quit (Quit: leaving).
16:32:03 <CakeProphet> Phantom_Hoover: huh?
16:32:11 <Phantom_Hoover> * CakeProphet (~eris@h65.19.18.98.dynamic.ip.windstream.net) has joined #esoteric
16:32:12 <Phantom_Hoover> * CakeProphet has quit (Changing host)
16:32:12 <Phantom_Hoover> * CakeProphet (~eris@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake) has joined #esoteric
16:32:37 <Phantom_Hoover> You have a cloak, but you're identifying after you join the channel, thus spamming and defeating the point of having the cloak.
16:33:03 <Phantom_Hoover> IIRC you can fix it in XChat by setting the server password, rather than the NickServ password.
16:33:13 <CakeProphet> what about irssi? :)
16:34:13 <quintopia> access flags
16:34:15 <Phantom_Hoover> aptitude remove irssi, aptitude install xchat
16:34:21 <CakeProphet> noe
16:34:22 <CakeProphet> p
16:34:38 <quintopia> doesnt freenode have access control?
16:34:43 <zzo38> Actually even using the server password it does not always make NickServ result right away.
16:35:05 <zzo38> Could you program it to not autojoin until the NickServ response?
16:35:23 <Phantom_Hoover> It's not a common problem IME.
16:35:26 <quintopia> it would be possible
16:36:53 <zzo38> Another solution is, could you make up a new channel that requires registration to join but redirects to this channel? Would the server even accept such a thing or would it ignore the registration mode in this case?
16:37:45 <ais523> zzo38: the way redirects work, I think it'd redirect people who weren't identified because if you can't get into a channel, default is to redirect you
16:38:05 <zzo38> O, yes, now that I think of it, yes that is how it works.
16:38:20 <zzo38> You are correct; redirects only work if you are not identified.
16:39:13 <zzo38> Unless it is configured by the server operators for permanent redirect.
16:40:05 <zzo38> Anyways, making it work on the client is better way than reconfiguring the server to do that, isn't it? Just use a macro like I described above on the client.
16:42:09 <CakeProphet> guys I think I figured out the solution
16:42:13 <CakeProphet> not caring.
16:42:25 <Ngevd> I like the commentary to today's Gunnerkrigg court
16:42:26 <CakeProphet> ahhhh yes, I can feel it working already.
16:42:40 <Phantom_Hoover> No, because it doubles the volume of join/quit spam.
16:43:12 -!- andrew12 has quit (Ping timeout: 245 seconds).
16:43:14 <CakeProphet> *doubles /my/ volume of join/quit spam
16:43:39 <CakeProphet> that's like one join/quit pair per ever 3 days on average or something. egads!
16:43:44 <CakeProphet> *every
16:43:48 <Phantom_Hoover> Yes, and your name is not one unassociated with join/quit spam.
16:44:07 <zzo38> Phantom_Hoover: Tell your client to ignore the quit message "Changing host" if you want to suppress it from your display
16:44:42 -!- andrew12 has joined.
16:44:57 <CakeProphet> Phantom_Hoover: so wait, the solution is to /not/ identify?
16:45:01 <CakeProphet> I don't really understand what's going on.
16:45:24 <Phantom_Hoover> The solution is to identify between connecting to the server and joining channels.
16:45:40 <Phantom_Hoover> If you connect, join and identify you rehost.
16:45:41 <zzo38> OK; to tell you I don't care much about that either (I don't have a cloak anyways). Cloak can also be used to easily show your identity, without requiring WHOIS or NS INFO (in case you commonly connect with multiple computer)
16:46:06 <zzo38> Another way is to disable the cloak, in case you still want to identify and avoid this join/quit span messages
16:46:27 <CakeProphet> irssi doesn't seem to have any way to do.
16:46:46 <zzo38> To do what?
16:47:41 <CakeProphet> identify before joining channels.
16:48:06 <CakeProphet> unless I join every channel manual via -autosendcmd or something
16:48:09 <CakeProphet> *manually
16:48:48 <zzo38> Surely it must have macros, though. Isn't it?
16:49:09 <CakeProphet> oh well, sure.
16:49:31 <CakeProphet> actually no macro that I can find just command aliases
16:49:43 -!- andrew12 has quit (Ping timeout: 240 seconds).
16:49:59 <CakeProphet> so no parameters can be given, basically.
16:50:27 <zzo38> Then fix irssi to support macros
16:50:29 -!- andrew12 has joined.
16:51:15 <CakeProphet> Sgeo: ehpdelbreet
16:52:38 <CakeProphet> Sgeo: ha. ha. ha. Strider is different than Dave. tee hee. this is UNEXPECTED.
16:53:15 <CakeProphet> s/different than/different but similar to/
16:54:13 <Ngevd> His autoreply seems similar to fungot
16:54:14 <fungot> Ngevd: 250000? from factorial? :o) instances of tla running in parallel
16:54:54 <CakeProphet> Ngevd: whose?
16:55:06 <Ngevd> Strider's
16:55:10 <Ngevd> Oh, wait SPOILERS
16:55:21 <Ngevd> SPOILY SPOILY SPOILERS
16:55:33 <Ngevd> PastCakeProphet: SPOILERS
16:55:41 <CakeProphet> OH NOOOOO
16:56:07 <CakeProphet> Strider is like Rose if Rose were a cool bro.
16:56:10 -!- andrew12 has quit (Remote host closed the connection).
16:56:28 -!- elliott has joined.
16:57:44 <Ngevd> elliott: SPOILERS NEAR END OF LOG
16:57:57 <CakeProphet> SPOILERS ABOUT STRIDER AND AUTO -- ER
16:57:58 <CakeProphet> NEVERMIND
16:58:01 <CakeProphet> :)
16:58:09 <elliott> I check MSPA before reading the logs.
16:59:02 <Ngevd> That is a good system
17:00:39 <CakeProphet> elliott: did you enjoy leading last nights conversation?
17:00:47 <elliott> What?
17:01:06 <CakeProphet> the one
17:01:07 <CakeProphet> before this one
17:01:10 <CakeProphet> where I'm talking a lot
17:01:55 <elliott> I haven't finished reading MSPA updates yet.
17:04:07 <CakeProphet> elliott: sheesh it's like you're human or something.
17:04:39 <CakeProphet> an undisciplined yob.
17:04:55 <zzo38> What do you expected them to be? The gods?
17:05:38 <CakeProphet> elliott should obviously be some kind of machine.
17:05:51 <CakeProphet> a robotic teenaged superhero.
17:05:52 <Ngevd> A cola making machine
17:06:01 <Ngevd> Cola is one of Hexham's main industries
17:06:04 <Ngevd> Cola and chipboard
17:06:08 <CakeProphet> ...
17:06:09 <CakeProphet> wat
17:06:22 <Ngevd> http://www.fentimans.com/
17:06:33 <Ngevd> Their offices and laboratories are in Hexham
17:06:35 <CakeProphet> man, Atlanta has got the cola industry /on lock/
17:06:43 <CakeProphet> we've got Coca-Cola and shit.
17:06:50 <Ngevd> WE HAVE FENTIMANS
17:06:58 <CakeProphet> OH MY GOD I NEVER REALIZED
17:07:04 <CakeProphet> except: what the fuck is that? -clicks-
17:07:16 <CakeProphet> not as DELICIOUS
17:07:18 <CakeProphet> AS COCA-COLA
17:07:19 <CakeProphet> obviously
17:07:57 <CakeProphet> anyway I think instead of going to class today
17:08:01 <CakeProphet> I'm going to finish this huge paper
17:16:01 <zzo38> Does recording of D&D game interested you by now?
17:16:19 <Ngevd> Fentimans Curiosity Cola is a lot stronger tasting than Coca-Cola or Pepsi
17:19:29 -!- monqy has joined.
17:19:34 <CakeProphet> monqy: hi
17:19:51 <monqy> hi
17:19:59 <CakeProphet> heh, first hit for "linux" is the Ubuntu homepage
17:20:42 -!- andrew12 has joined.
17:20:50 <Ngevd> Which doesn't mention the word "linux"
17:21:59 <CakeProphet> " Official site; Commercially sponsored Debian-derived Linux distribution that focuses on usability, a regular 6-month release cycle, and a ..."
17:22:02 <CakeProphet> um?
17:22:12 <Ngevd> The page doesn;t
17:22:17 <Ngevd> Neither does the page's source
17:22:25 <Ngevd> The description must come from elsewhere
17:22:27 <CakeProphet> ah, indeed not.
17:22:45 <CakeProphet> Ngevd: Google is kind of magical
17:22:53 <Ngevd> I'm kind of magical
17:23:02 <Ngevd> I'm a latent reality warper
17:23:11 <CakeProphet> I warp reality every day.
17:23:23 <Ngevd> This summer I wanted to know someone who had similar interests to me and lived near me
17:23:32 <Ngevd> THEN SUDDENLY ELLIOTT APPEARED IN MY LIFE
17:23:39 <CakeProphet> best friends for life. <3
17:23:48 <Ngevd> WROST EMENIES
17:23:52 <Ngevd> <3<
17:24:14 <elliott> hi
17:24:16 <CakeProphet> I like how everyone in the UK lives relatively close to each other.
17:24:34 <elliott> Phantom_Hoover doesn't
17:24:57 <CakeProphet> whereas the most populous state in the US is around 2000 miles away from me.
17:24:58 <Phantom_Hoover> I live pretty near Hexham, actually.
17:25:18 <monqy> hexham party
17:25:34 <elliott> We should all have a meetu- NO.
17:25:39 <elliott> I hate you all.
17:25:41 <elliott> All 2 of you.
17:25:48 <Ngevd> I'd have to change trains in Newcastle, Carlisle, or Glasgow to get to Phantom Hoover
17:25:49 <Gregor> (That includes himself)
17:26:00 <Ngevd> Or maybe Middlesborough
17:26:27 <CakeProphet> Ngevd: do all of those places have Haskell compilers named after them?
17:26:38 <Ngevd> No
17:26:41 <CakeProphet> :(
17:26:45 <Ngevd> Just Glasgow and MIddlesborough
17:27:04 <CakeProphet> elliott: time to get started on the Hexham Haskell Compiler
17:27:09 <elliott> middlesborough haskell compiler
17:27:10 -!- andrew12 has quit (Ping timeout: 244 seconds).
17:27:14 <Phantom_Hoover> Doesn't ais523 live in the North too?
17:27:19 <elliott> Phantom_Hoover: birmingham
17:27:31 <Ngevd> Birmingham is East Midlands, I believe
17:27:33 <CakeProphet> I assume you're talking about birmingham, Alabama right? :P
17:27:38 <Phantom_Hoover> Is that in the North I don't know?
17:27:39 <Ngevd> WHICH IS TOO FAR SOUTH TO BE NORTH
17:27:48 <elliott> birmingham is in the black hole known only as birmingham
17:28:06 <elliott> 22:15:58: <CakeProphet> shachaf: I got the last exploit by @telling lambdabot to say fungot
17:28:07 <fungot> elliott: ( will be, fnord fnord ( that's zero zero) least significant bits of pointers for each node, and find all the prime numbers up to 32-bit, constants can be at least 64 characters long, and a
17:28:24 <elliott> > "fungot"
17:28:25 <fungot> elliott: your keyboard is absent? fnord juhovh minä olisin ainakin fnord fnord fizzien fnord
17:28:25 <lambdabot> "fungot"
17:28:26 <elliott> CakeProphet: would also have worked.
17:28:40 <CakeProphet> elliott: NOPE NOT THE SAME
17:28:50 <elliott> 22:16:20: <HackEgo> ​?where fungot
17:28:50 <elliott> 22:16:29: <shachaf> lambdabot?
17:28:50 <elliott> 22:16:36: <shachaf> Oh, come on, lambdabot!
17:28:50 <elliott> 22:16:42: <ais523> > "I don't listen to people with 'bot' in their name, IIRC"
17:28:50 <elliott> 22:16:43: <lambdabot> "I don't listen to people with 'bot' in their name, IIRC"
17:28:50 <fungot> elliott: " fill your days with despair in 12 easy steps!" level yet??
17:28:56 <CakeProphet> @tell is like a delayed surpirse of botsploitation
17:28:57 <lambdabot> Consider it noted.
17:28:58 <elliott> Nobody's ever said that to ais523 so I guess he's just making it up.
17:29:07 <elliott> shachaf: HackEgo uses control characters to subvert botloops it'd otherwise cause.
17:29:28 <elliott> Also, ais523: "HackEgo" does not contain "bot" :P
17:29:28 -!- CakeProphet has changed nick to is.
17:29:32 <is> lambdabot: hi
17:29:40 <elliott> lol
17:29:52 <is> @messages
17:29:53 <lambdabot> dylukes asked 19d 18h 5m 26s ago: haskell awesome?
17:29:53 <lambdabot> CakeProphet said 56s ago: like a delayed surpirse of botsploitation
17:30:21 <Gregor> `echo ?why am I SO CLEVER?!
17:30:25 <is> @tell dylukes yes it is
17:30:26 <lambdabot> Consider it noted.
17:30:28 <HackEgo> ​?why am I SO CLEVER?!
17:30:31 -!- is has changed nick to CakeProphet.
17:30:47 <Gregor> Also, they're not control characters, they're Unicode.
17:31:04 <elliott> 22:20:14: -!- ChanServ changed the modes of #esoteric: +o ais523
17:31:04 <elliott> 22:20:22: <ais523> just in case I need to +m the channel for a few seconds to break botloops
17:31:13 <elliott> ais523: op abuse, the traditional botloop breaker is an annoyed bot admin
17:31:30 <Gregor> Or, HackEgo being BRILLIANTE
17:31:40 <elliott> Gregor:
17:31:44 <elliott> !echo lambdabot: @so hi
17:31:46 <EgoBot> lambdabot: @so hi
17:31:47 <lambdabot> hi not available
17:31:53 <monqy> hi
17:31:53 <elliott> `echo lambdabot: @so hi
17:31:55 <HackEgo> lambdabot: @so hi
17:31:55 <Gregor> elliott: That is such a loop, what with it not looping.
17:31:56 <lambdabot> hi not available
17:32:05 <elliott> Gregor: You want me to complete it?
17:32:15 <Gregor> elliott: ... maybe? :P
17:32:15 <Gregor> No
17:32:20 <elliott> `echo lambdabot: @so `echo test
17:32:21 <Gregor> But that's lambdabot's fault :P
17:32:22 <HackEgo> lambdabot: @so `echo test
17:32:23 <lambdabot> `echo test not available
17:32:24 <Gregor> NOOOOOOOOOOOOOOO
17:32:25 <HackEgo> test not available
17:32:28 <Gregor> Oh
17:32:32 <Gregor> So, still not a loops.
17:32:37 <Gregor> *still not a loop
17:32:41 <elliott> `echo "lambdabot: @so `cat x; #" >x
17:32:43 <HackEgo> ​"lambdabot: @so `cat x; #" >x
17:32:46 <elliott> `run echo "lambdabot: @so `cat x; #" >x
17:32:48 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching ``' \ bash: -c: line 1: syntax error: unexpected end of file
17:32:54 <elliott> `run echo 'lambdabot: @so `cat x; #' >x
17:32:55 <HackEgo> No output.
17:32:56 <elliott> `cat x
17:32:57 <HackEgo> cat: x: No such file or directory
17:33:01 <CakeProphet> monqy: I've read that HTML is an interesting programming language. (re: learning new languages)
17:33:02 <elliott> `cat x
17:33:03 <HackEgo> lambdabot: @so `cat x; #
17:33:04 <lambdabot> `cat x; # not available
17:33:04 <CakeProphet> :>
17:33:06 <HackEgo> cat: x; # not available: No such file or directory
17:33:08 <elliott> Oops
17:33:11 <monqy> CakeProphet: :(
17:33:12 <elliott> `run echo 'lambdabot: @so `run cat x; #' >x
17:33:14 <HackEgo> No output.
17:33:16 <elliott> `cat x
17:33:18 <HackEgo> lambdabot: @so `run cat x; #
17:33:19 <lambdabot> `run cat x; # not available
17:33:21 <HackEgo> lambdabot: @so `run cat x; #
17:33:22 <lambdabot> `run cat x; # not available
17:33:24 <HackEgo> lambdabot: @so `run cat x; #
17:33:25 <lambdabot> `run cat x; # not available
17:33:26 <CakeProphet> monqy: also Java, and Visual Basic
17:33:26 <monqy> CakeProphet: what is so interesting about it
17:33:27 <HackEgo> lambdabot: @so `run cat x; #
17:33:28 <lambdabot> `run cat x; # not available
17:33:30 <HackEgo> lambdabot: @so `run cat x; #
17:33:31 <lambdabot> `run cat x; # not available
17:33:32 <monqy> CakeProphet: cry
17:33:32 <CakeProphet> monqy: nothing, it's not a programming language.
17:33:33 <HackEgo> lambdabot: @so `run cat x; #
17:33:33 <lambdabot> `run cat x; # not available
17:33:34 <elliott> Gregor: Let it run a bit more :')
17:33:35 <elliott> so beautiful
17:33:35 <HackEgo> lambdabot: @so `run cat x; #
17:33:36 <lambdabot> `run cat x; # not available
17:33:38 <HackEgo> lambdabot: @so `run cat x; #
17:33:39 <lambdabot> `run cat x; # not available
17:33:41 <HackEgo> lambdabot: @so `run cat x; #
17:33:41 <CakeProphet> ABANDON SHIP
17:33:42 <lambdabot> `run cat x; # not available
17:33:43 <HackEgo> lambdabot: @so `run cat x; #
17:33:44 <lambdabot> `run cat x; # not available
17:33:46 <zzo38> Well, that is one way to break botloops. So in case someone test the program. There are other ways too, such as the bot operators disconnecting them, or the server operator forcibly disconnecting them.
17:33:47 <HackEgo> lambdabot: @so `run cat x; #
17:33:47 <lambdabot> `run cat x; # not available
17:33:49 <HackEgo> lambdabot: @so `run cat x; #
17:33:50 <lambdabot> `run cat x; # not available
17:33:52 -!- HackEgo has quit (Remote host closed the connection).
17:33:55 <Gregor> Pfff
17:33:55 <elliott> :')
17:34:01 <CakeProphet> rip hackego
17:34:02 -!- HackEgo has joined.
17:34:03 <Gregor> I blame lambdabot on that one.
17:34:05 <Gregor> I've done all I can.
17:34:11 <elliott> Yeah, lambdabot is terrible :P
17:34:15 <elliott> Most of its commands prefix with spaces.
17:34:19 <elliott> But the @source error message doesn't.
17:34:27 <elliott> Which is why I use it for botloops :P
17:34:37 <CakeProphet> Gregor: but lambdabot has a great reputation for being secure and free from exploits.
17:34:51 <Gregor> So does HackEgo, but it's so much more spiffy.
17:34:53 <zzo38> I think you could program lambdabot to prevent you repeating commands too much by public.
17:35:19 <zzo38> Because, it is Haskell anyways; a function should always have the same result unless the program is changed.
17:35:19 <CakeProphet> monqy: smalltalk?
17:36:42 <elliott> zzo38: @source is not pure :P
17:36:52 <elliott> @run is pure, but not @source.
17:36:53 <lambdabot> <no location info>: parse error on input `,'
17:36:56 <CakeProphet> @source
17:36:57 <lambdabot> not available
17:37:00 <elliott> Pretty sure you can mutate @source's DB.
17:37:20 -!- Ngevd has quit (Quit: bye).
17:37:35 <CakeProphet> zzo38: Haskell's purity is a lie!
17:37:38 <zzo38> Then record a timestamp of last change, and a timestamp of last query for each channel.
17:38:41 -!- zzo38 has quit (Remote host closed the connection).
17:39:15 -!- andrew12 has joined.
17:39:33 <Gregor> `@ andrew12 ? welcome
17:39:35 <HackEgo> andrew12: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:39:50 -!- CakeProphet has changed nick to are.
17:39:52 <are> @messages
17:39:53 <Gregor> Probably just welcome'd a long-time idler :P
17:39:53 <lambdabot> You don't have any new messages.
17:40:07 -!- are has changed nick to CakeProphet.
17:40:25 <CakeProphet> `@ Gregor ? CakeProphet
17:40:28 <HackEgo> Gregor: :>
17:40:38 <elliott> Gregor: That's the third welcome andrew12's got.
17:40:43 <elliott> He must be feeling so welcome.
17:40:58 <Gregor> elliott: lol
17:41:20 <Gregor> elliott: What can I say, I don't really contribute anything to this channel except fear, uncertainty and doubt.
17:42:06 -!- kmc has quit (Ping timeout: 260 seconds).
17:44:03 <elliott> `addquote <oerjan> shachaf: wait, _you_ are in northumberland? <shachaf> No. <oerjan> whew <oerjan> we don't have room for more esolangers there. <shachaf> oerjan: Wait, *you* are in Northumberland? <oerjan> no <shachaf> Whew. <shachaf> We don't have room for more esolangers there.
17:44:06 <HackEgo> 728) <oerjan> shachaf: wait, _you_ are in northumberland? <shachaf> No. <oerjan> whew <oerjan> we don't have room for more esolangers there. <shachaf> oerjan: Wait, *you* are in Northumberland? <oerjan> no <shachaf> Whew. <shachaf> We don't have room for more esolangers there.
17:46:27 -!- andrew12 has quit (Ping timeout: 240 seconds).
17:47:44 -!- andrew12 has joined.
17:49:13 <monqy> `@ andrew12 ? welcome
17:49:15 <HackEgo> andrew12: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:49:44 <elliott> 02:16:44: <CakeProphet> in other news: length is stupid. genericLength is good.
17:49:44 <elliott> 02:18:11: <CakeProphet> > let x = [1,2,3] in sum x / genericLength x
17:49:44 <elliott> 02:18:12: <lambdabot> 2.0
17:49:53 <elliott> CakeProphet: i don't think we want length to be able to return a complex number.
17:51:58 -!- andrew12 has quit (Ping timeout: 248 seconds).
17:52:53 <CakeProphet> > genericLength [1,2,3] + (5 :+ 10)
17:52:55 <lambdabot> 8.0 :+ 10.0
17:53:00 <CakeProphet> elliott: sure we do. :P
17:54:06 <fizzie> elliott: "fnord juhovh minä olisin ainakin fnord fnord fizzien fnord" => "fnord juhovh I would at least be fnord fnord fizzie's fnord".
17:54:14 <elliott> fizzie: FINALLY YOU'RE HERE.
17:54:24 <elliott> fizzie: (Why did you translate that for me?)
17:54:47 <fizzie> elliott: (Well, it was a reply for you, I didn't want to leave you confuzzled.)
17:55:31 <CakeProphet> confizzled. ha ha
17:55:38 <elliott> -rw-r--r-- 1 elliott users 516K Nov 20 13:19 qwantz.xz
17:55:42 <elliott> fizzie: How can I get this file to you?
17:55:50 <fizzie> Maybe email, it's pretty small.
17:56:00 * Gregor is intrigued by the name.
17:56:10 <elliott> Gregor: YOU SHOULD BE.
17:56:17 <fizzie> YOU... WILL BE.
17:56:52 <elliott> fizzie: Sendin'.
17:57:18 <elliott> fizzie: Sent; enjoy your "qwantz: Dinosaur Comic transcriptions 2003-2011".
17:57:21 <elliott> *Comics
17:57:28 <elliott> It's Comics. Just clarifying!
17:57:34 <fizzie> Cosmics.
17:58:10 -!- sebbu2 has changed nick to sebbu.
18:04:08 <ais523> <elliott> ais523: op abuse, the traditional botloop breaker is an annoyed bot admin <--- not op abuse, it's much less disruptive to the channel then waking up a bot admin to ragepart the bot
18:04:08 <fizzie> Do you want me to live dangerously and just stick it in the bot without testing it?
18:04:16 <elliott> fizzie: Yes.
18:04:21 <elliott> There is pretty much no way it won't be amazing.
18:04:36 <elliott> ais523: exactly, you're reducing natural disruption! that's _playing god_
18:04:42 <elliott> ^style qwantz
18:04:42 <elliott> ^style qwantz
18:04:43 <elliott> ^style qwantz
18:04:43 <elliott> ^style qwantz
18:04:43 <fungot> Not found.
18:04:43 <fungot> Not found.
18:04:43 <fungot> Not found.
18:04:43 <fungot> Not found.
18:04:46 <elliott> FIND IT QUICKER
18:04:57 <ais523> elliott: but reducing disruption is what ops are /for/
18:05:03 <elliott> ais523: this is #esoteric!
18:05:09 <ais523> this is Freenode!
18:05:14 <elliott> ais523: they're here to facilitate the natural levels of disruption!
18:06:23 -!- fungot has quit (Quit: oh no I am not DYNAMIC enough).
18:06:41 -!- fungot has joined.
18:06:48 <Gregor> OMGSTYLEQUANTZ
18:06:58 <Gregor> Makes me want to revive my dormant T-Rex is Lonely Comics >_>
18:07:08 <fizzie> ^style qwantz
18:07:08 <fungot> Selected style: qwantz (Dinosaur Comics transcriptions 2003-2011)
18:07:08 <Gregor> Err, qwantz
18:07:20 <Gregor> fungot: I love utahraptor!
18:07:20 <fungot> Gregor: that that is pretty cute! my daily affirmation buys food he doesn't need to know that! that's gross! that dude across the street is thinking " bum
18:07:26 -!- ais523 has quit (Remote host closed the connection).
18:07:37 <Gregor> That dude across the street /is/ thinking " bum!
18:07:48 <elliott> fungot: hi
18:07:48 <fungot> elliott: i don't think that fixed time a day whenever i have, and as a patron, i find that, with this unusual. i'm guessing... a kabazillion dollars
18:08:00 <elliott> fungot: i love you
18:08:00 <fungot> elliott: you are a t-rex, undisputed king, but neither really wants!
18:08:20 <elliott> fungot: hi
18:08:21 <fungot> elliott: and so: " probably not!" or there could be a picture of a telephone poles, along with t-rex! that's a standard english just to ensure i act like i did before, and perhaps, at the end, to ask me
18:08:30 <elliott> fizzie: Fungot's " quoting style" really irritates me.
18:09:11 <monqy> how does that happen
18:10:34 <elliott> fungot: hi
18:10:34 <fungot> elliott: so i've been down for like, two minutes!! it's all that came to mind. instead, it's an alternate universe, that's " law and order". and it doesn't have to be shakespeare.
18:10:42 <elliott> monqy: bad pmunctuation handling
18:10:48 <elliott> fungot: you are best
18:11:01 <elliott> nooooo Gregor
18:11:02 <elliott> make him
18:11:03 <elliott> talk again
18:11:28 <Gregor> fungot: I want your babies.
18:11:29 <fungot> Gregor: i must have taken up a new page was slow and expensive! why simulate boring microbes galaxies away if we're just interested in one dude on earth? and why simulate this one dude at all, unless you're trying to find out more, as it's such a small thing, but it would be years down the road! okay. i'll do better next time, ok?
18:11:41 <Gregor> elliott: Also:
18:11:45 <Gregor> `echo fungot: I want your babies too.
18:11:45 <fungot> Gregor: i don't have a very good student! we have to go." then, hey presto, you're a muslim! me say this: " what?? sweetcheeks? i'm sorry, i wasn't paying attention!
18:11:47 <HackEgo> fungot: I want your babies too.
18:11:53 <Gregor> Awwww
18:11:57 <Gregor> What sort of bot ignores HackEgo :P
18:12:26 <elliott> fungot is a pioneer in bot-ignore technology.
18:12:27 <fungot> elliott: that that one incident to say that sentence: it's me god
18:12:28 <elliott> Show 'em the ignores, fizzie.
18:12:34 <fizzie> ^ignore
18:12:35 <fungot> ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot)!
18:12:38 <CakeProphet> `addquote <fizzie> Do you want me to live dangerously and just stick it in the bot without testing it? <elliott> fizzie: Yes. <elliott> There is pretty much no way it won't be amazing.
18:12:41 <HackEgo> 729) <fizzie> Do you want me to live dangerously and just stick it in the bot without testing it? <elliott> fizzie: Yes. <elliott> There is pretty much no way it won't be amazing.
18:13:13 <elliott> That's funny?
18:13:57 <Gregor> We all want to just stick it in the bot.
18:14:00 <Gregor> Oooh yeah.
18:14:03 <Gregor> Just stick it in that bot.
18:14:22 <monqy> no
18:14:30 <Gregor> monqy: YES.
18:14:37 <monqy> ;_;
18:14:56 -!- Gregor has set topic: The IOCCC is back on! http://www.ioccc.org | http://esolangs.org/ | #esoteric: Still a place that prefers INTERCAL to Haskell | http://codu.org/logs/_esoteric/.
18:14:57 <elliott> Oh, I actually just skipped to my lines because I assumed they'd be the funny ones.
18:17:16 <CakeProphet> elliott: bad qoute reader
18:18:13 <CakeProphet> Gregor: I don't actually recall a time where you've spoken about Haskell.
18:18:36 <CakeProphet> aside from speaking about how much you prefer C over it (and every other language)
18:19:39 <CakeProphet> `log Gregor.*Haskell
18:20:04 <HackEgo> 2010-04-08.txt:00:12:56: <Gregor> (Haskell is usually the wrong language)
18:20:13 <CakeProphet> yep
18:20:29 <elliott> 00:15:12: * Sgeo is temporarily a Haskell fanatic
18:20:39 <CakeProphet> (uh oh)
18:20:49 <elliott> dont worry thats from 2010-04-08
18:20:54 <CakeProphet> oh good
18:21:01 * CakeProphet has never been a Haskell fanatic actually.
18:21:16 <CakeProphet> a fond admirer perhaps.
18:21:38 <elliott> 03:00:11: <Sgeo> Isn't Perl implemented in Haskell?
18:21:39 <elliott> actual quote
18:21:54 <CakeProphet> is he being srs?
18:22:03 <CakeProphet> I assume he's talking about Pugs.
18:22:26 <CakeProphet> which isn't really "Perl"... yet.
18:22:39 <CakeProphet> "Perl" is currently Perl 5, in most contexts.
18:22:59 <elliott> CakeProphet: Pugs will never be "Perl"... yet :P
18:23:05 <CakeProphet> well, right.
18:23:09 <elliott> It's been dead for like 5 years?
18:23:13 <CakeProphet> I meant to say Perl 6 isn't Perl yet.
18:23:17 <elliott> Recently APPARENTLY people are developing it again buuuuuuut
18:23:35 <CakeProphet> though Perl 6 may also never be "Perl"... yet :P
18:24:09 <CakeProphet> probably has something to do with being a complete clusterfuck with no single developer oversight.
18:24:24 <elliott> larry would be the oversight, methinks.
18:24:40 <elliott> considering he's the one who rejects or accepts all the proposals, or at least did in the early days
18:24:47 <CakeProphet> oh... hmmm
18:24:53 <CakeProphet> perhaps.
18:25:07 <elliott> it's in the apocalypses. or whatever they're called.
18:25:08 <CakeProphet> I read "largely community driven" to mean that Larry kind of isn't very active.
18:25:14 <CakeProphet> elliott: very early
18:25:48 <elliott> 2001, 2002 isn't THAT early
18:25:51 <elliott> 1999 is when perl 6 started iirc
18:26:17 <elliott> 03:02:03: <Sgeo> Is it too late to try to get involved with Google Summer of Code?
18:26:17 <elliott> 03:02:14: <Sgeo> THey're probably looking for people who've actually looked at the stuff
18:26:17 <elliott> 03:04:37: <coppro> nope; deadline for applications is the 9th
18:26:17 <elliott> 03:05:20: <Sgeo> Ok, but don't I need to have some idea of what I want to do, besides just "I'll do what this organization suggests on their GSoC page"
18:26:17 <elliott> 03:05:23: <Sgeo> ?
18:26:19 <elliott> 03:09:08: <coppro> yes you do
18:26:21 <elliott> 03:09:22: <coppro> socghop.appspot.com
18:26:23 <elliott> 03:10:18: <Sgeo> I can't just say "I have never even looked at this code, but I'll try doing this suggestion", can I?
18:26:26 <elliott> 03:10:28: <Sgeo> I mean, and get accepted
18:26:28 <elliott> i'm forced to conclude that 2011 > 2010
18:26:53 <CakeProphet> > (1999-2002)/(1999-2011)
18:26:54 <lambdabot> 0.25
18:27:05 <CakeProphet> elliott: it's 25% earliness :P
18:27:14 * CakeProphet sound logic
18:27:45 <CakeProphet> or... I guess 75% early.
18:28:56 <CakeProphet> this notion of percentages and earliness makes complete sense.
18:28:59 <CakeProphet> I promise.
18:29:24 <CakeProphet> http://en.wikipedia.org/wiki/K_computer
18:29:33 <CakeProphet> I would like to make a faster computer and name it OK Computer
18:31:25 -!- sebbu2 has joined.
18:31:25 -!- sebbu2 has quit (Changing host).
18:31:25 -!- sebbu2 has joined.
18:32:50 <elliott> average speed computer
18:34:18 <CakeProphet> no it would be the fastest computer in the world, with all of its processing power used to generate really shitty sounding radiohead covers, tribute songs, blog posts, fan fiction, and fan club websites.
18:35:15 -!- sebbu has quit (Ping timeout: 276 seconds).
18:35:57 <Gregor> CakeProphet: lololol BEST QUOTE EVER X-D
18:36:11 <Gregor> CakeProphet: I actually kinda like Haskell, but I love hating it more than I like liking it.
18:36:19 <CakeProphet> oh, good.
18:36:23 <CakeProphet> this is as it should be.
18:36:27 <CakeProphet> we cannot ALL be Haskell fanboys
18:36:38 <CakeProphet> there must be balance.
18:37:04 <elliott> Gregor: X-D
18:37:05 -!- copumpkin has quit (Ping timeout: 252 seconds).
18:37:28 <Gregor> To be fair I haven't written anything substantial in it in years.
18:37:52 <CakeProphet> Gregor: how much of a 133t h45k311 h4ck3r are you?
18:37:53 <CakeProphet> oh okay.
18:39:22 <Gregor> CakeProphet: http://www.youtube.com/watch?v=M7tew1apXqc <-- this was written in Haskell
18:39:22 <CakeProphet> monqy: what was that weird website you found?
18:39:47 <monqy> sourcereal.com?
18:39:56 -!- sebbu2 has changed nick to sebbu.
18:40:02 <CakeProphet> monqy: yes!
18:40:03 <elliott> Gregor: I like the fade to show HOW REALISTIC it is.
18:40:09 <monqy> CakeProphet: it's a good site
18:40:24 <CakeProphet> elliott: also how blue Mt. Hood apparently is
18:40:30 <Gregor> elliott: Gimme a break :P
18:40:46 <elliott> Gregor: Excuse me no???
18:41:35 <CakeProphet> monqy: I have a suspicion that zzo is actually the webmaster behind sourcereal.com
18:42:13 <CakeProphet> "Hopefully, that list will give you an idea about what you may learn when reading this cereal page, or, you might find something useful reading other websites." -- zzo
18:42:42 -!- Ngevd has joined.
18:42:54 <Ngevd> Hello!
18:42:57 <monqy> yes it is very zzoesque
18:43:22 <Gregor> z-zosque
18:44:08 <CakeProphet> monqy: hi I'll pay you money if you write this paper for me.
18:44:28 <monqy> what paper :(
18:44:33 <monqy> also I have to leave like now
18:44:37 <monqy> so
18:44:40 <CakeProphet> it's only like a 10 page report with questionnaire statistics and two interview transcripts that need to be cited.
18:45:08 <CakeProphet> along with internet sources. it's a proposal to incorporate more education of linux into my university's curriculum.
18:45:13 <CakeProphet> it's very, uh, exciting.
18:45:19 <monqy> sounds miserable
18:45:23 <CakeProphet> also due today.
18:45:34 <CakeProphet> but anyway have fun leaving like now.
18:46:03 -!- ais523 has joined.
18:46:08 <monqy> I'm more upset with lack of programming language/paradigm diversity than lack of linux education (why would you need linux education)
18:46:11 <monqy> anyway
18:46:14 <monqy> leaving like now
18:46:22 <CakeProphet> also does anyone have any good "lol linux is totally p0pu14r"
18:46:23 <CakeProphet> sources
18:46:47 <ais523> hey, who made the topic ping me?
18:47:15 <CakeProphet> monqy: well the basic premise is that a) we do not expose students enough to linux environments b) linux expertise has high industry demand
18:47:28 -!- copumpkin has joined.
18:47:41 <CakeProphet> monqy: yes I agree, but I need to also create a presentation on the topic, and I didn't want to completely bore my non-computer-science audience.
18:47:42 <elliott> CakeProphet: counterpoint: linux sucks
18:47:47 <Gregor> CakeProphet: What school is it that doesn't ...
18:47:52 <CakeProphet> elliott: well, that's irrelevant
18:47:59 <CakeProphet> Gregor: my school. IT'S SEKRET
18:48:05 <CakeProphet> Gregor: and, they do, but not very much
18:48:15 <elliott> (its georgia tech.. it hink??)
18:48:18 <CakeProphet> no.
18:48:19 <Gregor> CakeProphet: Of the two universities I've been at, two have had students use Linux primarily from day one.
18:48:19 <elliott> oh
18:48:21 <elliott> who is it from georgia here
18:48:24 <elliott> ive
18:48:26 <ais523> CakeProphet: you could mention Linux's share in the server market
18:48:27 <Gregor> (CS students)
18:48:30 <elliott> seen that uninvinvinvinersity name in here before
18:48:31 <ais523> that tends to impress people
18:48:36 <CakeProphet> ais523: yes that's good.
18:49:00 <CakeProphet> elliott: southern polytechnic state university. it's like the shitty version of GA tech that's cheaper and easier to get into. :)
18:50:19 <Gregor> `echo HackBot is proof of why Linux is important.
18:50:22 <HackEgo> HackBot is proof of why Linux is important.
18:50:31 <CakeProphet> also it's supposedly geared more towards "practical" education. aka helping people get jobs.
18:50:40 <CakeProphet> so, the "people use linux" point is the important one.
18:50:40 <oklopol> oh god
18:52:05 <oklopol> the point of a university is research and training new researchers. the point of the world is to enable this.
18:52:45 <CakeProphet> oklopol: not in the US. :P
18:53:23 <elliott> `addquote <oklopol> the point of a university is research and training new researchers. the point of the world is to enable this.
18:53:25 <HackEgo> 730) <oklopol> the point of a university is research and training new researchers. the point of the world is to enable this.
18:53:40 <oklopol> you should see our "cs" department. they have a course called computer science and the society.
18:53:50 <CakeProphet> in the US universities are businesses that serve as a pointless barrier for entering a profession. oh, also they do research stuff.
18:54:01 <oklopol> elliott: i was disappointed you didn't quote my gay joke
18:54:11 <elliott> oh where was that
18:54:13 <elliott> i don't think i finished logreading
18:54:19 <oklopol> up where i was talking to zzo
18:54:44 <elliott> oh good god what have i missed
18:54:47 <CakeProphet> elliott: you have to read the wonderful conversation between shachaf copumpkin oerjan Ngevd (I think?) and I
18:54:56 <elliott> what was it about
18:55:01 <CakeProphet> "maths"
18:55:04 <oklopol> :O
18:55:07 <oklopol> where
18:55:09 <oklopol> where is it
18:55:12 <oklopol> i need to read it
18:55:12 <oklopol> now
18:55:13 <copumpkin> eww maths
18:55:19 <oklopol> :/
18:55:23 <oklopol> don't do that
18:55:25 <oklopol> that's not funny
18:55:26 <CakeProphet> well, bottom, strictness, category theory, type theory. primarily it was about me not understanding _|_ as it's used in Haskell.
18:55:39 <oklopol> that's cs :/
18:55:48 <Ngevd> That wasn't me I don't think
18:55:52 <CakeProphet> by "it's awesome" I mean you'll probably hate reading it and seeing how wrong I am the whole time.
18:56:05 <CakeProphet> oh Sgeo was there too
18:57:04 <oklopol> i know very few things about category theory apart from the trivialities, mosty limits and inverse limits i suppose
18:57:27 <oklopol> those were a new addition because we needed inverse limits for... something
18:57:29 <CakeProphet> I know some of the basic terminology and some laws and that's it.
18:57:34 <Ngevd> All I know about category theory is that it is a category
18:57:45 <oklopol> what are its morphisms?
18:57:58 <elliott> mathematicians
18:58:07 <oklopol> cool
18:58:17 <CakeProphet> functors I imagine.
18:58:23 <elliott> CakeProphet: was it today
18:58:24 <elliott> or
18:58:27 <oklopol> i've always wanted to be a homomorphism
18:58:28 <elliott> the previous
18:58:28 <elliott> day
18:58:29 <CakeProphet> if we're talking about "category of categories"
18:58:29 <elliott> (utc)
18:58:38 <elliott> CakeProphet: *category of small cats
18:58:41 <elliott> (kittens)
18:58:42 <CakeProphet> elliott: I don't actually ever pay attention to UTC
18:58:54 <CakeProphet> but I think it was today UTC
19:00:02 <elliott> CakeProphet: ah i left off at the point of you beign all |im hate calculus"
19:00:24 <CakeProphet> elliott: oh yes that was very very early.
19:00:26 <oklopol> ew calculus
19:00:58 <CakeProphet> elliott: I mainly hate calculus because of all the effort I had to put into taking three university courses on it.
19:01:38 <Ngevd> I enjoy maths at the moment
19:01:41 <Ngevd> Please don't change that
19:01:52 <oklopol> what sorta maths
19:01:59 <CakeProphet> I like maths too, but not calculus.
19:02:18 <Ngevd> All the maths I know about, except for geometry
19:02:20 <Phantom_Hoover> im maths
19:02:39 <Phantom_Hoover> Also everyone hates geometry, was there a memo I missed or something?
19:02:40 <oklopol> what do you know about
19:02:46 <CakeProphet> discrete math is intuitive and nice thanks to my leet cs skillz
19:02:49 <oklopol> do you know why the identity element of a group is unique?
19:02:51 <CakeProphet> calculus hurts.
19:03:12 * oklopol is doing geometry atm
19:03:13 <Phantom_Hoover> oklopol, basic calculus, moderately sophisticated conventional algebra, matrices.
19:03:25 <oklopol> in besicovitch spaces of course
19:03:40 <Phantom_Hoover> This is based on the Scottish course, of course.
19:03:42 <oklopol> k that stuff
19:03:47 <oklopol> have to go :/
19:03:52 <oklopol> bues.
19:03:53 <elliott> you bored oklopol Ngevd :(
19:03:56 <Ngevd> I like matrix multiplication, because when you get over how damn weird it is, it all makes perfect sense
19:04:02 <elliott> you bored Ngevd oklopol :'( (maybe ???)
19:04:15 <CakeProphet> I like category theory because when you get over how damn weird it is it's still weird.
19:04:20 <Ngevd> I'm just faintly smiling and rocking side to side
19:04:25 <elliott> do you do that a lot
19:04:28 <Phantom_Hoover> <oklopol> that's cs :/
19:04:29 <Ngevd> Yes
19:04:34 <elliott> ok
19:04:35 <Phantom_Hoover> CS is a kind of maths.
19:04:38 * elliott faintly smiles and rocks side to side
19:04:40 <elliott> yay
19:04:49 <oklopol> Ngevd: have you read about finite fields?
19:04:53 <Ngevd> No?
19:05:11 <elliott> `addquote <copumpkin> it's not even about strictness actually <copumpkin> not strictly about strictness, anyway
19:05:12 <Ngevd> I haven't actually read that much about anything
19:05:13 <oklopol> think about it, a finite n-dimensional space in which matric multiplication is a linear map.
19:05:14 <HackEgo> 731) <copumpkin> it's not even about strictness actually <copumpkin> not strictly about strictness, anyway
19:05:15 <elliott> 04:52:06: <pikhq> \f x-> reads \f->\x->... *Clearly* there's not much evaluation you can do of an unapplied lambda.
19:05:18 <oklopol> mmmmmmm
19:05:18 <elliott> pikhq_: sure there is
19:05:59 <Phantom_Hoover> Ngevd, they're fields with only finitely many elements, where fields are this abstract algebra thing.
19:06:03 <elliott> 05:02:12: <CakeProphet> > (\x -> undefined)
19:06:03 <elliott> 05:02:13: <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
19:06:03 <elliott> 05:02:13: <lambdabot> arising from a use of `...
19:06:03 <elliott> 05:02:39: <CakeProphet> in my mind this is forcing (\x -> undefined) (I'm just going to call it const undefined now)
19:06:06 <Ngevd> Phantom_Hoover, ah
19:06:08 <elliott> CakeProphet: stop being an idiot, that error is compile-time
19:06:09 <Ngevd> That makes sense
19:06:19 <CakeProphet> elliott: the confusion was not a result of that error
19:06:20 <elliott> > (fix id) :: (a -> b)
19:06:21 <lambdabot> Overlapping instances for GHC.Show.Show (a -> b)
19:06:21 <lambdabot> arising from a use of `...
19:06:24 <elliott> infinite loop terminating omg
19:06:58 <Ngevd> :t fix id
19:07:00 <lambdabot> forall a. a
19:07:03 <Ngevd> Aaah
19:07:36 <CakeProphet> oklopol: do you know about (n-1)-order Markov models based on frequency analysis of character n-grams and their applications in autolinguistic lexeme generation?
19:07:36 <Ngevd> The internet is where I don't have to be a hyperintelligent... entity
19:07:36 <Phantom_Hoover> Ngevd, specifically, fields are more or less sets with two operators which behave broadly similar to + and * over the reals.
19:07:41 <CakeProphet> (note: I just made most of that terminology up)
19:08:39 <CakeProphet> well, actually no I didn't.
19:08:44 <CakeProphet> I just made it sound fancier than it is.
19:09:23 <elliott> Ngevd: are you a hyperintelligent entity usually
19:09:27 <elliott> are you god Ngevd
19:09:32 <Ngevd> No, but I'm expected to be
19:10:09 <Ngevd> If enough people believe I am a god, I will BECOME AS A GOD!!!
19:10:24 <CakeProphet> Ngevd: I find the trick to appearing as a hyperintelligent entity in real life is to only speak when you actually know something
19:10:28 <CakeProphet> and to otherwise remain silent.
19:10:34 <CakeProphet> I don't follow this protocol online. :P
19:10:42 <Phantom_Hoover> CakeProphet, I don't do that, nobody seems to have noticed?
19:11:37 <Phantom_Hoover> This results in the unfortunate consequence that people seem to think I'm an expert on, say, determining the ionic composition of water.
19:11:37 <elliott> @pl-resume
19:11:44 <lambdabot> ap id id (ap id id)
19:11:45 <lambdabot> optimization suspended, use @pl-resume to continue.
19:11:46 <CakeProphet> Phantom_Hoover: ah, weird.
19:11:56 <elliott> Phantom_Hoover: Aren't you?
19:12:01 <CakeProphet> my "stupid filter" turns off when I'm in this channel, for some reason. :P
19:12:22 <Phantom_Hoover> elliott, yes, of course, but the presumption offends me.
19:12:26 <elliott> 05:26:54: <shachaf> copumpkin: I thought this was a classic example in #haskell.
19:12:26 <elliott> 05:26:59: * copumpkin shrugs
19:12:26 <elliott> 05:26:59: <CakeProphet> copumpkin: it's not.
19:12:29 <Ngevd> People ask me for help with their Chemistry homework
19:12:33 <Ngevd> I don't do chemistry
19:12:33 <elliott> good to know we have a haskell expert to correct shachaf
19:12:49 <CakeProphet> elliott: I don't think I was "it's not"ing that thing directly above me.
19:12:50 <Phantom_Hoover> Here in Scotland we have transcended the need for mere mortal chemistry homework.
19:13:02 <elliott> I didn't see anything else relevant.
19:13:07 <elliott> 05:26:08: -!- oerjan has quit (Quit: You sort out this mess yourself).
19:13:07 <elliott> got a lol though.
19:13:17 <Ngevd> Phantom_Hoover, immortal chemistry homework!?
19:13:38 <Phantom_Hoover> We transcended that as well.
19:13:41 <elliott> 05:29:14: <copumpkin> shachaf: I had this discussion a year or so ago with people regarding spoon and why the denotation view of strictness is bullshit because we can actually distinguish things operationally, and people should stop masturbating to denotation
19:13:41 * elliott is made sad by this viewpoint.
19:14:11 * copumpkin masturbates vigorously
19:14:59 <Ngevd> I don't masturbate to ANYTHING
19:15:02 <CakeProphet> elliott: yeah considering I don't actually frequent #haskell and don't know anything about the classic examples there
19:15:03 <Ngevd> Nyahahaha!
19:15:09 <CakeProphet> elliott: probably was in relation to something else.
19:15:36 <elliott> type CommandQueue = Ptr CommandQueuec
19:15:36 <elliott> no why would you do that!
19:15:39 <elliott> library I DON'T LIKE YOU
19:16:29 <CakeProphet> anyway I need to focus on not IRC
19:16:30 <elliott> OK let's try this.
19:16:44 <elliott> data CLDeviceInfoRetval = DeviceInfoRetvalString String | DeviceInfoRetvalCLuint CLuint | DeviceInfoRetvalCLbool CLbool | DeviceInfoRetvalDeviceFPConfig DeviceFPConfig | DeviceInfoRetvalDeviceExecCapabilities DeviceExecCapabilities | DeviceInfoRetvalCLulong CLulong | DeviceInfoRetvalDeviceMemCacheType DeviceMemCacheType | DeviceInfoRetvalCLsizei CLsizei | DeviceInfoRetvalDeviceLocalMemType DeviceLocalMemType | DeviceInfoRetvalCLsizeiList [CLsizei]
19:16:44 <elliott> | DeviceInfoRetvalPlatformID PlatformID | DeviceInfoRetvalCommandQueueProperties CommandQueueProperties | DeviceInfoRetvalDeviceType DeviceType
19:16:52 <elliott> copumpkin: please ensure cosmic punishment of the designer of this library for me
19:16:55 -!- CakeProphet has quit (Quit: going into IRC rehab).
19:16:59 <copumpkin> lol
19:18:43 <elliott> CL_CONTEXT_PROPERTIEScl_context_properties[] Return the properties argument specified in clCreateContext.
19:18:47 <elliott> gah!!!
19:18:53 <elliott> this library forces people to create their own pointers
19:18:54 <elliott> i'm crying
19:18:58 <shachaf> elliott: ?
19:19:05 <elliott> well i mean that was obvious but like
19:19:08 <elliott> not for that thing :(
19:19:10 <elliott> its just a pionter
19:19:14 <elliott> shachaf: what
19:19:22 <shachaf> People beep my name too much.
19:19:36 <shachaf> If you beep my name, you have to brace yourself for My wrath.
19:20:29 <elliott> noted!
19:20:53 <elliott> WHY IS DEVICEID A POINTER
19:21:21 -!- aloril has quit (Ping timeout: 244 seconds).
19:27:45 <elliott> WHY DOES OPENCL DO REFCOUNTING
19:28:07 <copumpkin> elliott: a haskell opencl binding?
19:28:23 <copumpkin> are you saying that opencl itself sucks to bind to?
19:28:25 <elliott> copumpkin: I'm trying to make http://hackage.haskell.org/package/OpenCLWrappers less terrible :P
19:28:47 <elliott> Most of my issues are with the wrapper, and almost all of those issues are inherited from the dead package it's forked from
19:28:55 <elliott> But I'm too busy yelling at everything :P
19:29:11 <copumpkin> please make it not suck
19:29:43 <elliott> copumpkin: That's a long-term goal. My short-term goals look like "make it use exceptions rather than threading around (IO (Either ErrorCode Result)) ABSOLUTELY EVERYWHERE".
19:29:53 <elliott> And "Make it use ForeignPtrs rather than making you free everything" :P
19:29:59 <Ngevd> It's a long shot, but is anyone here in my ancient history class?
19:29:59 <copumpkin> o.O
19:30:13 <copumpkin> Ngevd: I may be old, but I'm not that old
19:30:36 <elliott> copumpkin: I should clarify, it's not ALWAYS (Either ErrorCode r). If r would be (), it's instead (Maybe ErrorCode).
19:30:40 <elliott> Just to keep things interesting, I guess!
19:30:49 <copumpkin> lol
19:31:05 <elliott> copumpkin: did I show you combineOr? I forget :P
19:31:10 <copumpkin> nope
19:31:20 <elliott> copumpkin: https://github.com/jkarlson/OpenCLWrappers/blob/master/System/OpenCL/Wrappers/Utils.hs#L71
19:31:32 <copumpkin> lol
19:31:42 <copumpkin> wtf is that
19:31:56 <elliott> copumpkin: it's used in exactly one place, on a list of Foo where Foo is a newtype of CLulong
19:32:09 <copumpkin> deriving (Bits)
19:32:16 <elliott> copumpkin: i just unwrapped the newtype instead
19:32:25 <elliott> foldl' (.|.) 0 [ foo | Cons foo <- xs ]
19:32:28 <copumpkin> derive bits on the newtype and it'll just work
19:32:36 <elliott> yeah I might
19:32:37 <Ngevd> Why do so many esolangers start with a BF derivative?
19:33:02 <elliott> hmm, I wonder if I should offer an interface to this awful refcounting stuff
19:33:12 <elliott> I /think/ some of these can allocate GPU memory
19:33:27 <elliott> i'm tempted to just remove them so that you can't cause segfaults that easily
19:35:09 -!- aloril has joined.
19:35:19 <Ngevd> Hello aloril
19:35:29 <Phantom_Hoover> The enigma that is aloril.
19:37:24 <elliott> oh, i was going to ask ais523 but then i realised he uses CUDA
19:37:50 <ais523> I don't really use CUDA, more I've seen it before
19:38:13 <elliott> ais523: You complained about the toolkit once and said you might switch to OpenCL if it keeps getting worse?
19:39:00 <ais523> my boss did that
19:39:08 <elliott> Well, you're the one who said it.
19:39:10 <ais523> but the toolkit was getting worse over time, although it was quite good to start with
19:39:23 <ais523> it's him who complained, I reported the complaint here (and I agree with it)
19:40:16 <elliott> You reported it silently, at least :P
19:40:22 -!- Phantom_Hoover has left ("Leaving").
19:40:28 -!- Phantom_Hoover has joined.
19:40:39 <elliott> bye Phantom_Hoover
19:40:40 <elliott> hi Phantom_Hoover
19:40:54 <Phantom_Hoover> I've *got* to work out what that thing is which makes rolling my hand on the left of the touchpad close the chat tab.
19:41:16 <elliott> OK, I think that these actually do use GPU RAM...
19:41:25 <Phantom_Hoover> Anyway, ais523, CAN HUMIDITY, FLUORESCENT LIGHTS AND MICROWAVES KILL COMPUTERS?????
19:41:28 <elliott> Eh, I'll just keep exposing the free function.
19:41:34 <elliott> oh hmm wait
19:41:41 <elliott> that's not safe, since it might get re-freed
19:44:58 <ais523> Phantom_Hoover: I advise against microwaving a computer
19:45:20 <Phantom_Hoover> oh noooooooooo
19:45:35 <Phantom_Hoover> For you see, I left my motherboard in the microwave to get rid of the humidity.
19:54:05 -!- augur has joined.
19:57:34 <Ngevd> May I enquire as to the presence of cliques amongst schools in the UK?
19:57:55 <Phantom_Hoover> You may, although why you think you'll get answers here is anyone's guess.
19:58:16 <Ngevd> You go to school in the UK
19:58:33 <Ngevd> So do I
19:58:49 <Ngevd> ais523 does something that may have something to do with schools in the UK
19:58:56 <Phantom_Hoover> Universities, actually.
20:04:56 <elliott> ais523 is a ``Ph.D. student''.
20:04:58 <elliott> (Hobo.)
20:05:38 <Ngevd> elliott, I don't know what elliott does
20:05:52 <elliott> I'm a hobo assistant.
20:06:04 <Ngevd> Aah
20:06:27 <Ngevd> Seriously, where do you get your education?
20:06:37 <Ngevd> Because I want to steal it
20:10:41 <elliott> Ngevd: hobo store
20:34:30 <pikhq_> elliott is a student of some sort; personally, I've not kept track of which bit of secondary education he's in.
20:35:31 <elliott> You're all hobophobic.
20:35:34 -!- elliott has left ("Leaving").
20:35:41 -!- elliott has joined.
20:35:49 <elliott> OK I can't get over how that sounds like "homophobic" said by someone with a cold.
20:37:52 -!- CakeProphet has joined.
20:37:52 -!- CakeProphet has quit (Changing host).
20:37:52 -!- CakeProphet has joined.
20:38:01 <CakeProphet> hi my name is Adam and I'm addicted to IRC
20:38:22 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
20:38:23 <Ngevd> Hi Adam, I'm Nathan and I'm smug and think I'm better than you
20:38:36 <CakeProphet> bah, I knew it.
20:39:43 <CakeProphet> help I picked a bad topic for this crap
20:40:32 <CakeProphet> but I now have a giant bottle of caffeinated energy soda.
20:40:40 <Ngevd> Did we ever get invaded by Haskellites?
20:40:46 <Gregor> Nope.
20:40:52 <Gregor> They all ran away when they saw my snarky comment.
20:40:54 <CakeProphet> #esoteric /is/ Haskellites, largely.
20:41:10 <elliott> There are at least three people in here who came from #esoteric.
20:41:11 <elliott> And one bot.
20:41:18 <elliott> erm.
20:41:20 <elliott> From #haskell.
20:41:27 <Gregor> There are a lot of people in here who came from #esoteric .
20:41:29 <Gregor> And several bots.
20:41:30 <Ngevd> I came from the wiki
20:41:35 <CakeProphet> elliott: you mean regulars?
20:41:39 <CakeProphet> or like, today... recently
20:41:44 <CakeProphet> three random people appeared
20:41:48 <CakeProphet> and a new bot
20:42:02 <elliott> Oh, it's actually two. kmc no longer graces us with his presence :'(
20:42:05 <elliott> `quote kmc
20:42:08 <HackEgo> 686) <kmc> COCKS [...] <kmc> truly cocks \ 720) <shachaf> You should get kmc in this channel. kmc has good quotes. <shachaf> `quote kmc <HackEgo> 686) <kmc> COCKS [...] <kmc> truly cocks <shachaf> Well, in theory.
20:42:55 <CakeProphet> also by Haskellites I mean "one who fondly regards and practices in the deep ways of Haskell voodoo"
20:43:00 <CakeProphet> not #haskellites
20:43:14 <elliott> is there a difference
20:43:17 <CakeProphet> yes.
20:43:27 <CakeProphet> I am a Haskellite and not a #haskellite
20:43:41 <elliott> ha ha ha well
20:43:44 <elliott> okay then
20:43:57 <shachaf> elliott: kmc is on vacation.
20:44:03 <CakeProphet> also monqy?
20:44:05 <elliott> Vacation from BEING INTERESTING.
20:44:07 <Ngevd> I meant people who religiously obey the works of Mr Curry
20:44:20 <elliott> monqy is an hornonronoronrorary #haskell member.
20:44:21 <CakeProphet> and uh... elliott, but not elliottt
20:44:41 <elliott> both elliott and elliottt are in #haskell
20:44:53 <shachaf> elliott: I didn't "come from #haskell".
20:45:05 <shachaf> At least, I didn't hear about #esoteric in #haskell. I'm pretty sure.
20:45:15 <elliott> shachaf: Where did you come frmo,t hen?
20:45:19 <CakeProphet> shachaf: you are a migrate.
20:45:21 <elliott> Oh, edwardk has been in here before too.
20:45:27 <elliott> But not from #haskell.
20:45:29 <CakeProphet> in a geographical system in which people my simultaneously exist in two locations
20:45:34 <elliott> And... who else was it?
20:45:34 <CakeProphet> s/my/may/
20:45:38 <elliott> shapr.
20:45:39 <elliott> shapr's been in here.
20:45:47 <elliott> At least I think it was him.
20:46:12 <shachaf> elliott: No idea.
20:46:42 <CakeProphet> also I suspect several #haskellites are in fact #esoteric migrants.
20:47:05 <CakeProphet> what this means: I have no idea
20:47:30 <Ngevd> Before I came here, I had never heard of Haskell
20:47:39 <Ngevd> I had barely heard of the freenode IRC server
20:48:05 <CakeProphet> -- Ngev's conversion account
20:48:28 <Ngevd> There is a d in my name, gorram it
20:48:33 <CakeProphet> "Before I came to #esoteric, I had never even hurd of Befunge, but soon I felt His glory."
20:48:38 <monqy> hi im back from leaving like then
20:48:45 <Ngevd> Hurrah!
20:48:53 <elliott> Ngevd: You realise you came here in July :P
20:48:59 <Ngevd> Yes
20:49:24 * CakeProphet is an ancient antediluvian, sort of.
20:49:37 <Ngevd> And now I am able to write an almost funtioning bf interpreter in Haskell
20:49:47 <CakeProphet> Ngevd: sweet
20:49:51 <CakeProphet> that was my first Haskell program
20:50:10 <Ngevd> And re-invented zippers... by thinking of how to implement bf in Piet
20:50:18 <monqy> I...forget what my first haskell thing was
20:50:59 <Ngevd> My first Haskell thing translated brainfuck to Piet assembler
20:51:12 <monqy> mmm
20:51:20 <Ngevd> It was designed to take advantage of oerjan's work
20:51:27 <monqy> the first thing i can remember doing was just a boring markov irc bot :(
20:51:36 <monqy> but I may have done some stuff before then
20:51:41 <elliott> monqy: why :( markov irc bots are great
20:51:43 <Ngevd> Hence it only used a tape size of three
20:51:48 <monqy> elliott: i guesssssssss.....
20:51:54 <Ngevd> elliott, boring ones aren't
20:51:58 <elliott> monqy: hi fungot
20:51:59 <fungot> elliott: hey, i wanted to talk to a t-rex... nostalgia, doesn't that make them equally valid? like, a pirate. we've all been there.
20:52:02 <monqy> it wasn't TOO boring
20:52:07 <monqy> it just wasn't SPECTACULAR
20:52:24 <monqy> but i love programming languages stuff and i think compiling to piet is nifty
20:52:27 <monqy> so
20:52:50 <Ngevd> It compiled to Piet assembler. It needs another program to actually output Piet
20:53:01 <Ngevd> The only program that exists is written in Perl
20:53:44 <monqy> oh..
20:53:58 <monqy> is piet assembler any interesting
20:54:52 <CakeProphet> http://pastebin.ca/538375
20:54:53 <monqy> could you make a compiler to piet that "optimized" programs into looking kind of like pretty pictures
20:55:02 <CakeProphet> "Thanks to CakeProphet for his tremendous help"
20:55:06 <CakeProphet> I don't remember any of this.
20:55:33 <CakeProphet> I'm guessing this was back when I frequented #python
20:55:42 <monqy> how was it
20:55:44 <monqy> #python, that is
20:55:47 <monqy> I'm afraid of it
20:55:50 <CakeProphet> and spent considerable amounts of time actually helping people with Python questions.
20:55:58 <CakeProphet> monqy: it's, meh.
20:56:05 <CakeProphet> about the same as any other programming language channel (except #haskell)
20:56:30 <CakeProphet> people there are generally helpful, but others can be rude and unecessarily pedantic. others simply don't know what they're talking about.
20:56:45 -!- Phantom_Hoover has joined.
20:57:20 <shachaf> CakeProphet: That's true of #haskell too.
20:57:22 <CakeProphet> monqy: also it is incredibly easy to write "unreadable" code, by Python standards.
20:57:39 <monqy> what's "unreadable"?
20:57:41 <CakeProphet> *by people who program in Python and are bad at reading code
20:57:45 <CakeProphet> monqy: subjective, mostly.
20:58:08 <monqy> I'm afraid I'd have trouble reading a lot of "readable" python code, and would do better with some less "readable" stuff
20:58:14 <elliott> shachaf++
20:58:23 <elliott> #haskell used to be better :(
20:58:28 <monqy> :(
20:58:42 <elliott> (Most importantly, it used to not go at a thousand lines per second :P)
20:58:44 <CakeProphet> #esoteric used to be better, then elliott came along. >:(
20:58:53 <elliott> CakeProphet: It so wasn't better, I've read the logs.
20:58:57 * shachaf can't fathom #esoteric without elliott.
20:58:57 <CakeProphet> (ha. ha. ha ha.)
20:58:58 <elliott> You were so stupid :'(
20:59:08 <CakeProphet> elliott: but look at how much I've changed!
20:59:09 <elliott> shachaf: It was much quieter.
20:59:13 <elliott> CakeProphet: Exactly! Not at ALL!
20:59:19 <monqy> elliott is the life of the party
20:59:37 <CakeProphet> elliott: surely I have.
20:59:50 <CakeProphet> it's been... what.. 4 years now?
20:59:53 <CakeProphet> 5?
21:01:52 <CakeProphet> when I joined this channel I had maybe a few months of experience with Python.
21:02:01 <CakeProphet> now I am a VERITABLE MASTER (not really)
21:04:51 <CakeProphet> also, a transformation is about to take place (I think)
21:05:00 <elliott> what transformation
21:05:03 -!- CakeProphet has changed nick to Kallisti.
21:05:05 <Kallisti> BAM
21:05:11 * Kallisti waits for Freenode staff.
21:05:12 <elliott> i should have nabbed that before you
21:05:15 <elliott> Kallisti: oh they take hours
21:05:24 <Kallisti> elliott: I WILL WAIT
21:05:28 <Kallisti> AND YOU WILL NOT HAVE THIS NICK
21:05:42 <Kallisti> CakeProphet is a silly name anyway. this is much better.
21:06:09 <elliott> if you change nicks permanently im putting you on ignore
21:07:42 <Ngevd> I changed nicks permanentlish
21:08:01 -!- oerjan has joined.
21:08:07 <Ngevd> oerjan!
21:08:13 <oerjan> Ngevd!
21:08:30 <Ngevd> How're you?
21:08:38 <Kallisti> elliott: OH LOOK IT TOOK LIKE 10 MINUTES FOR STAFF TO DROP THE NICK
21:08:41 <Kallisti> what now?
21:08:49 <Kallisti> elliott: also you're just looking for an excuse to ignore me.
21:09:33 <Ngevd> Soon no-one's nick here will be the same as their wiki username!
21:10:06 <Kallisti> speaking of which
21:10:09 <Kallisti> I should change wiki usernames
21:10:26 <elliott> Ask an admin.
21:10:33 <Kallisti> ais523: hi
21:10:48 <Kallisti> ais523: er, excuse me. hi?
21:10:52 <Kallisti> hi is not a valid question
21:11:02 <ais523> hi
21:11:10 <ais523> and I can't change wiki usernames
21:11:13 <Kallisti> :(
21:11:13 <ais523> you need to ask Graue
21:11:19 <Kallisti> how about I just
21:11:22 <Kallisti> make a new username
21:11:25 <Kallisti> and move everything to that.
21:11:39 <Kallisti> or well, just start fresh basically. because my current user stuff is pointless :P
21:12:45 <Kallisti> a new era of legitimacy. yes. that is definitely what will happen.
21:13:12 <Kallisti> what with my unfinished regex language and clusterfuck graph automaton and now this idea for a reversible graph thing.
21:13:29 <Kallisti> shit will be graphed and regular expressioned the fuck out.
21:15:08 * Kallisti joins ##c just to see what it's like.
21:15:16 <Kallisti> silent.
21:15:37 <Kallisti> 422 silent people.
21:15:44 <Kallisti> they must be debugging C programs.
21:17:05 <Kallisti> Sgeo: upderpinski triangle
21:17:13 -!- Phantom_Hoover has quit (Quit: Leaving).
21:17:28 -!- Phantom_Hoover has joined.
21:21:38 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
21:21:42 -!- Phantom__Hoover has joined.
21:23:48 <Kallisti> elliott: hmm, do you think Great Britain looks more like a venus fly trap or a weird jagged bifurcated penis.
21:24:02 <oerjan> <Sgeo> Write a Num instance for (a -> a) -> (a -> a)
21:24:13 <oerjan> the trouble is, you _really_ want a forall a. first
21:24:28 <oerjan> otherwise you cannot define things like multiplication
21:25:43 <oerjan> hm i think. lessee.
21:26:18 <oerjan> :t ?m (?n (f :: Int -> Int)) :: Int -> Int
21:26:19 <lambdabot> No instance for (SimpleReflect.FromExpr Int)
21:26:20 <lambdabot> arising from a use of `f' at <interactive>:1:8
21:26:20 <lambdabot> Possible fix:
21:26:24 <oerjan> argh
21:26:29 <oerjan> :t ?m (?n (?f :: Int -> Int)) :: Int -> Int
21:26:30 <lambdabot> forall t. (?f::Int -> Int, ?m::t -> Int -> Int, ?n::(Int -> Int) -> t) => Int -> Int
21:26:51 <oerjan> ok i guess multiplication might work
21:27:23 <copumpkin> we need linear implicit parameters
21:27:31 <copumpkin> pity they killed them
21:27:34 <Kallisti> elliott: either way it is clearly dwarfed by the long bifurcated dick of Scandinavia.
21:27:36 <oerjan> :t ?m ?n (?f :: Int -> Int) :: Int -> Int
21:27:37 <lambdabot> forall t. (?f::Int -> Int, ?m::t -> (Int -> Int) -> Int -> Int, ?n::t) => Int -> Int
21:27:37 <Kallisti> copumpkin: what is that?
21:27:55 <copumpkin> a feature GHC supported way back before I started haskell
21:28:04 <copumpkin> http://www.haskell.org/haskellwiki/The_Monad.Reader/Issue2/FunWithLinearImplicitParameters
21:28:07 <oerjan> exponentiation won't work
21:29:52 <Kallisti> `log elliott.*CakeProphet.*implicit.*parameters
21:29:58 <HackEgo> 2011-11-21.txt:21:29:52: <Kallisti> `log elliott.*CakeProphet.*implicit.*parameters
21:30:01 <Kallisti> :(
21:30:12 <Kallisti> `log elliott.*implicit.*parameters
21:30:17 <HackEgo> 2011-09-22.txt:17:43:20: <elliott> Implicit parameters are a misfeature and should never be used; nobody at all wants them to stay in the language, and they've been used approximately once.
21:30:36 <elliott> Make that twice, then.
21:30:47 <elliott> lambdabot and an article in the Monad.Reader.
21:31:58 <Kallisti> I dunno, I think implicit parameters can be good.
21:32:07 <Kallisti> but they need to be used wisely.
21:32:22 <Kallisti> and not because you're bad at writing Haskell. :P
21:33:28 <elliott> Kallisti: There's an example piece of code where giving it the inferred type signature changes its semantics with implicit parameters, IIRC.
21:33:44 <Kallisti> o_0?
21:36:30 <oerjan> <oerjan> ok i guess multiplication might work <-- well, although only with the more complicated type ((a -> a) -> a -> a) -> (a -> a) -> a -> a
21:37:21 <Kallisti> oerjan: I can't wait to see what church complex numbers would look like.
21:37:38 <oerjan> gah
21:37:42 <Ngevd> The numbers themselves would just be a pair
21:37:54 <Ngevd> It's the associated functions that make them interesting
21:37:55 <elliott> copumpkin: this article was interesting until they whipped out the unsafe functions
21:38:02 <Kallisti> church binary search tree?
21:38:35 <oerjan> Kallisti: there is a process for converting any adt to church representation
21:38:57 <oerjan> even gadt's according to what i recently read on reddit
21:39:01 * copumpkin shrugs
21:40:11 <elliott> Kallisti: ah yes, it is even referenced in that article: "So the semantics of the program depends on whether or not foo has a type
21:40:11 <elliott> signature. Yikes!"
21:40:31 <elliott> oh, that was linear implicit parameters
21:40:38 <monqy> yikes
21:42:49 <Kallisti> *has an explicit type I assume
21:44:08 <elliott> Kallisti: not quite:
21:44:10 <elliott> "It is important that we give a real type signature:
21:44:10 <elliott> x :: Int = reflect [0,1] does not make any difference!"
21:44:17 <elliott> but x = reflect [0,1] :: Int might
21:46:58 <Kallisti> I wasn't even aware you could declare types on patterns.
21:47:29 <Kallisti> er, well, x isn't really a pattern actually
21:48:06 <Kallisti> > let x :: Int = 2 in x
21:48:07 <lambdabot> 2
21:48:32 <Kallisti> > let [x,y] :: [Int] = [1,2] in x
21:48:33 <lambdabot> 1
21:48:56 <elliott> it's an extension
21:49:03 <elliott> very useful with exceptions
21:49:09 <elliott> m `catch` \(_::Foo) -> ...
21:49:39 <Kallisti> ah, so you can use it to make case statements on different types in a typeclass.
21:49:43 <Kallisti> that's useful.
21:50:08 <Kallisti> ....right?
21:50:31 <Kallisti> er, no
21:51:24 <Kallisti> but you can use it in lambdas passed to higher order functions to specify a concrete type.
21:52:30 <Kallisti> type-based case expressions would be fun. I guess you can achieve that with Typeable actually.
21:52:42 <oerjan> the haskell new exception system uses some tricks to essentially allow it to do "case statements on different types" in the Exception typeclass.
21:52:54 <oerjan> so that's what catch relies on
21:53:11 <Kallisti> oerjan: you just chain together catches?
21:53:25 <oerjan> no, there
21:53:26 * Kallisti has never used exception handling in Haskell.
21:53:36 <oerjan> 's a specific function for taking a list
21:53:42 <Kallisti> ah okay.
21:53:53 <oerjan> well, you can chain together too, i guess
21:54:23 <Kallisti> :t catch
21:54:24 <lambdabot> forall a. IO a -> (IOError -> IO a) -> IO a
21:54:40 <oerjan> that's the IO catch from the report, which is much more limited
21:54:47 <oerjan> :t Control.Exception.catch
21:54:48 <Kallisti> IOError is an existential I'm guessing.
21:54:48 <lambdabot> forall a e. (GHC.Exception.Exception e) => IO a -> (e -> IO a) -> IO a
21:55:01 <oerjan> Kallisti: no i think it's an actual ADT
21:55:03 <Kallisti> oh
21:55:09 <Deewiant> type IOError = IOException
21:55:13 <oerjan> the haskell report has no existentials
21:55:16 <Deewiant> data IOException
21:55:32 -!- Patashu has joined.
21:55:43 <Kallisti> oerjan: so do you actually use exceptions?
21:55:52 <Kallisti> I think I've seen elliott use them.
21:56:21 <elliott> If you don't use exceptions, you don't write much non-boilerplate code in IO
21:56:38 <elliott> <oerjan> the haskell new exception system uses some tricks to essentially allow it to do "case statements on different types" in the Exception typeclass.
21:56:42 <elliott> oerjan: it's not _that_ tricky :P
21:56:43 <oerjan> i cannot recall if i've used them
21:56:43 <Kallisti> or don't write fault-tolerant IO code.
21:56:46 <elliott> it's just Typeable
21:56:51 <elliott> Kallisti: it's not about fault-tolerance
21:57:00 <oerjan> elliott: well ok it's really just Typeable, the extra trick is for the subtyping
21:58:40 <oerjan> most things i've written are very mathematical, so not very complicated IO
21:59:55 <elliott> oerjan: i think Kallisti is living under the delusion that you write actual programs
21:59:59 <elliott> and are, shall we say, a "programmer"
22:00:01 <oerjan> and not much need to actually catch erros
22:00:04 <oerjan> *rs
22:00:15 <oerjan> possible.
22:00:23 <elliott> oerjan has no need for love
22:00:33 <oerjan> hey! :(
22:00:35 <Kallisti> lol
22:00:53 <Kallisti> elliott: HA HA HA POLYGLOT PUN
22:01:08 <Kallisti> polyglot typo pun
22:01:10 <Kallisti> or something.
22:01:52 <oerjan> elliott: wait what, i assuming you are making a pun on eros but that really doesn't fit there.
22:02:03 <elliott> that was the joke :P
22:02:19 <Kallisti> oerjan: I think elliott is living under the delusion that you are a non-mythical human being.
22:02:20 <oerjan> *am
22:02:26 <Kallisti> and are, shall we say, "not a viking"
22:02:36 <oerjan> ...says someone called "Kallisti".
22:03:10 <Kallisti> oerjan: obviously I am an apple.
22:03:15 -!- pkzip has joined.
22:03:18 <Kallisti> and not a human being
22:03:22 <oerjan> yeah
22:03:23 <elliott> hi pkzip we missed you!!!
22:03:36 <oerjan> we were getting all uncompressed!
22:03:58 <pkzip> I am logged as pkzip ? I thought my changed nickname wud
22:04:03 <pkzip> kick in by now
22:04:07 <Kallisti> elliott: which nick do you hate the most? CakeProphet or Kallisti?
22:04:13 <elliott> pkzip: you have to change it in your client settings
22:04:19 <Kallisti> your opinion is important, or something.
22:04:20 <pkzip> I know
22:04:21 <pkzip> that
22:04:22 <elliott> Kallisti: every time I see "CakeProphet" I puke
22:04:30 <Kallisti> good.
22:04:35 <monqy> Kallisti: it's how he stays thin
22:04:39 <elliott> Kallisti: and
22:04:41 <elliott> i hate puking
22:04:42 <elliott> and
22:04:43 <oerjan> i see elliott is trying the old reverse psychology
22:04:43 <elliott> i hate you
22:04:46 <elliott> and i will hate you even more if you do that
22:04:47 <elliott> and
22:04:49 <elliott> i might leave forever
22:05:10 <monqy> or is it double-reverse
22:05:13 <Kallisti> elliott: oh no, I want to APPEAR NON-OBNOXIOUS AMONGST MY PEERS. :>
22:05:21 <elliott> you're failing
22:05:21 <Kallisti> his reverse psychology is not working.
22:05:22 <elliott> really badly
22:05:35 <monqy> I wonder if my name has ever annoyed anyone
22:05:36 -!- derdon has quit (Remote host closed the connection).
22:06:16 <oerjan> YOU MISSPELLED MONKEY KILL KILL KILL
22:06:33 <Kallisti> oerjan: stop misspelling monqy
22:06:57 <Kallisti> 17:04 < elliott> and i will hate you even more if you do that
22:06:59 <Kallisti> do what exactly
22:07:04 <Kallisti> I don't recall mentioning the doing of anything.
22:07:06 <elliott> become CakeProphet
22:07:10 <Kallisti> oh.
22:07:11 -!- Ngevd has quit (Quit: Goodbye).
22:07:23 <pkzip> The Cake WILL APPEAR
22:07:25 <Kallisti> elliott: so wait, now oerjan has me confused.
22:07:30 <monqy> I think I numbed to "cakeprophet"
22:07:31 <Kallisti> ...
22:07:44 -!- Kallisti has changed nick to kallisti.
22:07:47 <kallisti> much better
22:07:47 <monqy> yes good
22:07:57 <monqy> or was Kallisti better
22:08:04 <kallisti> no.
22:08:07 <monqy> ok
22:08:20 <oerjan> one of these days my nick history database will overflow and everyone i don't recognize will be banned.
22:08:34 <elliott> /nick poop
22:08:54 <monqy> I've changed my name twice (or thrice, if you count my temporary name after I decided I didn't want my first name but before I decided on my second)
22:09:07 <monqy> I don't think I joined here before I had settled on monqy though
22:09:20 <elliott> monqy: what were your namnesemz
22:09:22 <elliott> z
22:09:23 <elliott> zzzzzzzzzzzzzzzz
22:09:27 * elliott slep in chanel
22:09:33 <monqy> the one before monqy was monky
22:09:40 <elliott> and before that money?
22:09:44 <monqy> no
22:09:44 <elliott> money to monqy a two step process
22:10:11 <monqy> i don't like talking about things that happened before monky....
22:10:14 <oerjan> clearly it was wonky
22:11:06 -!- kallisti has changed nick to xxkallistixx.
22:11:09 <xxkallistixx> yeaaaaah this is way better
22:11:11 <elliott> monqy: were you................................... "dagoth ur, mad god"
22:11:26 <oerjan> elliott: i doubt that.
22:11:36 <monqy> i was not dagoth ur, mad god
22:11:50 <oerjan> unless he was doing some _really_ good trolling
22:11:52 -!- xxkallistixx has changed nick to xxk4111st1_darkb.
22:12:01 <xxk4111st1_darkb> awww
22:12:03 <elliott> were you: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac,
22:12:11 <elliott> xxk4111st1_darkb: btw ur spamming #haskell
22:12:12 -!- xxk4111st1_darkb has changed nick to kallisti.
22:12:12 <monqy> xxk4111st1_darkb: are you still in ##c and what else
22:12:13 <elliott> with
22:12:14 <elliott> nickchangse
22:12:17 <monqy> aha #haskell
22:12:24 <kallisti> elliott: SUCH UNINTENDED CONSEQUENCES AAAAH
22:13:03 <kallisti> monqy: not in C
22:13:19 <kallisti> monqy: currently #esoteric #freelance and #haskell
22:13:23 <oerjan> > var $ "were you: " ++ ((`replicateM` ['a'..'z']) =<< [1..])
22:13:24 <lambdabot> Couldn't match expected type `GHC.Types.Char'
22:13:25 <lambdabot> against inferred type...
22:13:25 <monqy> ##c missed the party
22:13:27 <oerjan> argh
22:13:32 <monqy> oerjan: no
22:13:33 <oerjan> > var $ "were you: " ++ concat ((`replicateM` ['a'..'z']) =<< [1..])
22:13:35 <lambdabot> were you: abcdefghijklmnopqrstuvwxyzaaabacadaeafagahaiajakalamanaoapaqarasa...
22:13:36 <monqy> none of them
22:13:39 <oerjan> oops
22:13:43 <Vorpal> <elliott> monqy: were you................................... "dagoth ur, mad god" <-- playing TES I see?
22:13:48 <kallisti> monqy: I imagine kallisti is probably a bit more serious sounding than CakeProphet on #freelance
22:13:49 <oerjan> aha!
22:13:49 <elliott> nope
22:13:55 <Vorpal> oerjan: ?
22:13:59 <kallisti> not that anyone actually uses #freelance, but occasionally they do, and occasionally I grab their moneyz
22:14:00 <Phantom__Hoover> ais523 help
22:14:13 <monqy> is frelans any good
22:14:16 <kallisti> no
22:14:17 <ais523> Phantom__Hoover: it won't get damaged…
22:14:24 <Vorpal> elliott: dagoth ur is morrowind isn't it?
22:14:24 <kallisti> monqy: it's probably your version of hell or something.
22:14:30 <monqy> :(
22:14:36 <Vorpal> yep
22:14:39 <Phantom__Hoover> but the new case is all painted will the paint kill it with static???
22:14:46 <oerjan> Vorpal: i see you have not been acquainted with our wonderful wiki friend dagoth ur
22:15:02 <monqy> , mad god
22:15:06 <Vorpal> oerjan: the only Dagoth Ur I know of is this one: http://www.uesp.net/wiki/Morrowind:Dagoth_Ur_%28god%29
22:15:06 <kallisti> monqy: people come on every few days asking if anyone knows PHP, Django, .NET, HTML, CSS, JS, insert-CMS-of-choice, insert-web-framework-of-choice
22:15:17 <Vorpal> oerjan: and elliott did say mad god
22:15:18 <Vorpal> so...
22:15:28 <elliott> Vorpal: http://esolangs.org/wiki/Esme
22:15:35 <kallisti> Vorpal: hi what is your skyrim character
22:15:35 <monqy> http://esoteric.voxelperfect.net/wiki/Hashes
22:15:51 <Vorpal> elliott: oh I see. Well that explains it.
22:15:51 <elliott> monqy: did you ever see esme
22:15:53 <elliott> oh yes you did
22:15:57 <Vorpal> kallisti: err what? Who are you?
22:15:59 <monqy> i even heard esme
22:16:01 <Phantom__Hoover> Oh, that Dagoth Ur!
22:16:02 <kallisti> Vorpal: I made wrinklefucker the Breton warlock knight.
22:16:08 <kallisti> he is now level 8! yessss
22:16:15 <Phantom__Hoover> monqy, you have had the rite of passage.
22:16:19 <Vorpal> kallisti: nord, mage/theif kind of mix.
22:16:23 <Phantom__Hoover> I too was accused of being Dagoth Ur.
22:16:25 <Vorpal> thief*
22:16:27 <kallisti> Vorpal: heh, nord, IMAGINE THAT
22:16:53 <Vorpal> kallisti: well I was planning to play something else later on, when some bugs have been fixed and check if dialogue differs
22:16:57 <Vorpal> depending on race
22:17:12 <Phantom__Hoover> no spoilers thx
22:17:18 <Vorpal> Phantom__Hoover: none really atm?
22:17:31 <Vorpal> kallisti: besides I suspect my save game is BADLY bugged. Nirnroot respawns. Surely that is wrong...
22:17:46 <Vorpal> unless they broke the lore badly in skyrim
22:17:50 <Phantom__Hoover> Well I know there are things called Bretons, also warlocks and knights, also nirnroots?
22:17:57 <kallisti> Vorpal: I'm greatly enjoying the heavy armor one-handed conjuration alteration mix. I find destruction kind of boring.
22:18:30 <kallisti> but conjuring weapons and minions as I run around in platemail slashing things up is fun.
22:18:35 <Vorpal> Phantom__Hoover: dude bretons are like a race, you get to select on character creation. warlock and knight would be more a description of skill set, since there are no actual classes
22:18:43 <Vorpal> Phantom__Hoover: and nirnroots were in oblivion
22:18:50 <Phantom__Hoover> Vorpal this is still SPOILERS
22:19:03 -!- ais523 has quit (Remote host closed the connection).
22:19:10 <Vorpal> Phantom__Hoover: I'm NOT going to avoid oblivion spoilers. Besides no one will explain what nirnroot is in skyrim, because they seem to assume you know from oblivion :P
22:19:25 <Phantom__Hoover> SPOILERS
22:19:25 <Vorpal> Phantom__Hoover: just don't read the liners with spoilers then?
22:19:38 <Phantom__Hoover> Vorpal surely even you can see why that's stupid
22:19:51 <Vorpal> Phantom__Hoover: You wanted a reason to ignore me anyway I'm sure of...
22:20:10 <Phantom__Hoover> No, of course not; you're interesting in a pathological way.
22:20:13 <Vorpal> kallisti: I found sneak attack "somewhat" overpowered
22:20:48 <kallisti> Vorpal: I imagine the daedric armor (best heavy armor in the game) will be very fitting to my skillset since I'll be summoning dremora lords, stealing souls with conjured weapons, and whatnot
22:21:04 <kallisti> Vorpal: bound weapons, at least in the early levels, are pretty overpowered as they're equivalent in quality to ebony weapons.
22:21:10 <kallisti> or so I've read.
22:21:24 <Vorpal> kallisti: is daedric armour heavy or light?
22:21:28 <Vorpal> I go for light armour
22:21:28 <kallisti> heavy.
22:21:33 <Vorpal> oh well, no use to me then
22:22:01 <kallisti> I'm going for a kind of warrior-mage tank so the heavy armor combined with enchants and armor spells will be nice.
22:22:06 <kallisti> also heavy armor perks.
22:22:28 <Vorpal> I did a sneak with two single handled ebony swords (flawless quality) on a undead boss in a dungeon. Took the initial 12x hit + two normal hits to kill
22:22:36 <Vorpal> I think that is kind of overpowered
22:22:53 <kallisti> yes probably.
22:23:01 <Vorpal> kallisti: and I heard you can get up to 30x backstab bonus with perks and the right armour!
22:23:07 <kallisti> the game definitely isn't difficult, probably my main complaint about it.
22:23:10 <Vorpal> which is utterly absurd
22:23:19 <Vorpal> kallisti: try changing the difficulty slider
22:23:22 <kallisti> I suppose one could turn the difficult -- yes
22:23:24 <Vorpal> I played on normal
22:23:32 <Vorpal> whatever they called that
22:23:56 <Vorpal> kallisti: anyway sneak won't work on dragons obviously. They tend to be perched out of reach
22:24:07 <Vorpal> kallisti: I think I was level 38 when I last played yesterday
22:24:14 <kallisti> I haven't decided if I want destruction or archery for ranged. I think as far as perks go I'll go with neither as I want to focus on heavy armor conjuration and 1H initially.
22:24:38 <kallisti> but archery is pretty enjoyable.
22:24:48 <Vorpal> kallisti: you kind of /need/ ranged to deal with dragons effectively. Unless you get a LOT of damage in during the brief periods they are on ground.
22:25:08 <Vorpal> I got fairly high destruction, 73 or something I think
22:25:42 <kallisti> Vorpal: well I believe magic resistance includes dragon fire.
22:25:44 <kallisti> I think?
22:25:48 <Vorpal> hm
22:25:57 <Vorpal> kallisti: I think it is a shout, so not sure how that works
22:26:04 <Vorpal> kallisti: besides there are frost dragons as well
22:26:12 <kallisti> hmmm
22:26:17 <kallisti> still I think it's all magic right?
22:26:25 <Vorpal> kallisti: I just try to be mobile and stay out of harms way
22:26:33 <kallisti> I was doing pretty well defensively with breton magic resistance + ward
22:26:38 <Vorpal> and use amulet of talos to reduce time between my shouts
22:27:18 <Vorpal> like slow time or <REDACTED SPOILER> which is very useful against <REDACTED SPOILER> because he is the <REDACTED SPOILER> of <REDACTED SPOILER>
22:27:33 <Vorpal> well might not be he, could be she or it for all I know
22:27:44 -!- Jafet has quit (Ping timeout: 244 seconds).
22:27:49 <kallisti> anyway the plan is to be be ridiculous in defense with heavy armor and alteration (dragonskin = 80% reduction of physical damage for 30 seconds)
22:28:03 <Vorpal> kallisti: if you progressed enough into the main quest you will know what I talk about :P
22:28:04 <kallisti> but I don't know to what extent armor helps against dragons.
22:28:10 <Vorpal> I'm nearing the end of that
22:28:10 <kallisti> Vorpal: I doubt I have.
22:29:09 <Vorpal> kallisti: right, no eponymous stuff yet?
22:29:31 <kallisti> um, no, I think?
22:29:38 <Vorpal> kallisti: anyway I think you need 100 in smithing to craft dragon armour?
22:29:44 <Vorpal> if it is heavy it just isn't worth it for me
22:29:52 <Vorpal> and I doubt dragon armour could be LIGHT armour
22:29:53 <kallisti> daedric armor = better than dragon heavy armor
22:29:55 <Vorpal> it just wouldn't fit
22:29:55 <kallisti> heavier too
22:30:04 <kallisti> but dragon light armr is the best light armor
22:30:10 <Vorpal> kallisti: I use thief guild quest armour mostly
22:30:11 <kallisti> also there's a perk that makes equipped armor /weightless/
22:30:14 <kallisti> so... yeah.
22:30:20 <Vorpal> sometimes brotherhood armour
22:30:30 <Vorpal> some of that give 2x backstab bonus
22:30:44 <Vorpal> <kallisti> also there's a perk that makes equipped armor /weightless/ <-- in heavy or light tree?
22:30:45 <kallisti> as far as I can tell the main benefit of light armor is the 50% stamina regen perk, also the stealth benefits.
22:30:47 <Vorpal> or both?
22:30:50 <kallisti> Vorpal: both
22:30:53 <Vorpal> right
22:31:04 <Vorpal> well I'm a stealthy mage who recently taken to backstabbing
22:31:32 <kallisti> I think you could probably get better armor by getting the mage armor alteration perk if you wanted.
22:31:43 <Vorpal> oh that yes
22:31:45 <Vorpal> I used that
22:31:46 <kallisti> however, light armor works well too and has some pretty good mage gear associated with it.
22:32:04 <Vorpal> kallisti: I enhanced the light magic armour from those quest lines.
22:32:13 <Vorpal> err smith enhanched that is
22:32:18 <Vorpal> not magic enhanced
22:32:29 <Vorpal> s/enhanched/enhanced/
22:32:47 <kallisti> I think my character is probably going towards the path of most ridiculous defense you can possibly achieve.
22:32:49 <Vorpal> kallisti: so which level are you?
22:32:52 <kallisti> 8. :)
22:32:55 <Vorpal> lol
22:32:59 <kallisti> I don't even own the game.
22:32:59 <Vorpal> not playing much then
22:33:03 <Vorpal> far from my 38
22:33:17 <kallisti> it's pretty easy to level from what I can tell.
22:33:27 <Vorpal> I went from 29 to 38 over the weekend
22:33:35 <kallisti> I got bored at one point and just start conjuring flame atronachs and killing them and got about 3 levels.
22:33:41 <Vorpal> heh
22:34:02 <Vorpal> kallisti: just remember: there are still some leveled monsters. You wan't to put a lot into combat skills
22:34:11 <Vorpal> I think dragons in particular are leveled
22:34:15 <Vorpal> from what I have been able to tell
22:34:25 <kallisti> ah okay. well I've been focusing mostly on one-handed and conjuration
22:34:30 <kallisti> which are both offensive.
22:34:53 <Vorpal> otherwise dragons at level 5 would not be as hard as dragons at level 38. Heck I think dragons are harder in the latter case.
22:35:03 * kallisti cannot wait to be able to summon /two/ dremora lords because one is already ridiculous enough.
22:35:07 <Vorpal> requires more player skill
22:35:14 <Vorpal> you can what?
22:35:19 <Vorpal> I never been one for conjuration
22:35:21 <kallisti> one of the last perks in conjuration.
22:35:23 <Vorpal> heh
22:35:26 <kallisti> is to be able to summon two things.
22:35:37 <Vorpal> I would LOVE to back stab a dragon though.
22:36:29 <Sgeo> What about retconjuration?
22:36:44 <Vorpal> kallisti: anyway you will need to put some effort into finding shouts. Ask the greyberds about if they found any until they tell you that they haven't. There are still words to be found, but you need to do some quest line to get those.
22:36:49 <Vorpal> Sgeo: what?
22:37:00 <Vorpal> Sgeo: ... that was terrible
22:37:26 <kallisti> Vorpal: the last perk in the "bound weapons" line of conjuration makes bound weapons banish summoned and daedric enemies.
22:37:29 <kallisti> Vorpal: does this sound useful?
22:38:15 <kallisti> oh wait not daedric specifically
22:38:22 <kallisti> "Bound weapons will banish summoned creatures and turn raised ones"
22:38:23 <Vorpal> kallisti: not really. I never had any issues with that since most summoned monsters I ran into so far have been elemental. Just use fireball for ice antewhatever
22:38:24 <Vorpal> and so on
22:38:40 <Vorpal> or skeletons
22:38:43 <Vorpal> and they are super eason
22:38:45 <Vorpal> easy*
22:38:48 <Vorpal> what a weird typo
22:38:53 <kallisti> I imagine the main benefit would be summoned daedric things.
22:39:10 <Vorpal> well, I have yet to see that
22:39:18 -!- derrik has quit (Quit: nites).
22:39:21 <Vorpal> besides enemies seem kind of rubbish in their wards
22:39:38 <Vorpal> kallisti: anyway I find sneaking much more enjoyable actually
22:39:50 <Vorpal> sad that the custom spell making of oblivion is gone
22:40:07 <Vorpal> 100% chameleon. What a nice spell to make...
22:40:10 <kallisti> Vorpal: they removed /many/ spells from Oblivion to Skyrim
22:40:17 <Vorpal> kallisti: AND the custom spell making
22:40:19 <Vorpal> but yeah
22:40:28 <Vorpal> kallisti: I had 100 in illusion in oblivion
22:40:30 <kallisti> on the plus side enchanted weapons are much better.
22:40:36 <Phantom__Hoover> Take it to #esoteric-skyrim please.
22:40:38 <Vorpal> kallisti: but I prefer being a make
22:40:40 <Vorpal> mage*
22:40:47 <Vorpal> Phantom__Hoover: stfu and ignore this discussion?
22:40:53 <Vorpal> Phantom__Hoover: no one else is talking anyway
22:41:24 <Phantom__Hoover> Vorpal, the same applied with Minecraft chat.
22:41:31 <Vorpal> actually it should go in #esoteric-minecraft because that is all about non-minecraft. Such as dwarf fortress
22:41:44 <Vorpal> by logic all game discussion should go there
22:41:48 <kallisti> Vorpal: I dunno I think it could possibly be useful.
22:41:54 <kallisti> the banishing perk
22:42:00 <kallisti> especially if you use bound weapons, which I do.
22:42:04 <Vorpal> hm
22:42:22 <Vorpal> kallisti: yeah I'm not into conjuration in any game really.
22:42:26 <kallisti> once you get awesome enchanted weapons the main benefit of bound weapons will be the perk that casts soul trap on anything you hit with bound weapons.
22:42:44 <kallisti> though there are enchanted weapons that do this as well.
22:42:58 <Vorpal> kallisti: I enjoyed the stealth elements of Deus Ex: Human Revolution. So there we go. Skyrim with cover system should be interesting
22:43:09 <Vorpal> I'm sure someone will mod that eventually
22:43:24 -!- zzo38 has joined.
22:43:36 <kallisti> Vorpal: I think they did make stealth a little more interesting than in Oblivion
22:43:41 <kallisti> more challenging anyway.
22:43:50 <kallisti> but then again, I try to sneak around in clunky heavy armor...
22:43:59 <Vorpal> kallisti: slightly yes. Doing away with chameleon made it harder...
22:44:13 <kallisti> but there's muffle and invisibility which is probably very helpful.
22:44:18 <Vorpal> kallisti: I'm glad they dropped the major/minor skill stuff
22:44:31 <Vorpal> still I think the proper way to do leveled monsters is NOT from your level
22:44:37 <Vorpal> rather it should compute a combat score
22:44:51 <Vorpal> based on offensive skills and also what type of armour you have
22:44:56 <kallisti> Vorpal: especially considering many people just do smithing shit for a while to build levels.
22:44:59 <Vorpal> oh and health of course
22:45:15 <zzo38> I think the proper way should be by counting. So that if you do too much kill same kind it is too difficult. ADOM does that but I think ADOM does it not quite enough
22:45:16 <Vorpal> but the thing is, leveling up max in smithing at an early stage should not make the game unplayable
22:45:27 -!- Jafet has joined.
22:45:59 <kallisti> Vorpal: on the plus side, you'll have badass weapons. :P
22:46:17 <Vorpal> kallisti: the score would take that into account, based on what weapons you actually have
22:46:35 <kallisti> honestly I like static levels for things.
22:46:46 <kallisti> level scaling makes the progression of an RPG entirely pointless.
22:46:53 <Vorpal> Same goes for enchanting, or speech. Probably different type of situations should use different equations. I mean pick-pocket should obviously be taken into account in some situations, but not other ones.
22:47:08 <Vorpal> kallisti: certainly, static levels should also exist
22:47:17 <Vorpal> kallisti: but you really really need leveled dragons for example
22:47:23 <kallisti> right.
22:47:42 <Vorpal> since you can pretty much visit them in any order, due to the game being, pretty much the sandbox of RPGs
22:47:43 <kallisti> except maybe for dragons that just chill in their gave with hoards of gold
22:47:48 <kallisti> harder dragons could have better loot.
22:47:51 <Vorpal> gah that comma was in the wrong place
22:48:03 <kallisti> I enjoy games that require you to use a little discretion.
22:48:04 <Vorpal> kallisti: "gave"?
22:48:08 <Vorpal> grave?
22:48:10 <kallisti> cave...
22:48:13 <Vorpal> oh
22:48:15 <oerjan> `addquote <CakeProphet> I like category theory because when you get over how damn weird it is it's still weird.
22:48:18 <HackEgo> 732) <CakeProphet> I like category theory because when you get over how damn weird it is it's still weird.
22:48:27 <Vorpal> kallisti: pretty sure there are no such dragons in skyrim
22:48:33 <Vorpal> they like to guard words though
22:48:34 <kallisti> Vorpal: totally should be
22:48:44 <kallisti> also: dragons that shapeshift into humans and have great influence over humanity.
22:48:47 <kallisti> I mean, think about it.
22:48:55 <Vorpal> kallisti: I think it is better if they /don't/ conform to the stereotype
22:49:05 <kallisti> if you're a dragon, you probably live a long time. You might become interesting in human affairs, and obtaining vast wealth and influence.
22:49:16 <kallisti> you're probably also magical, and you have infinite time to learn how to do things like shapeshift.
22:49:24 <Vorpal> kallisti: oh and I have to say becoming friends with the orc settlements was really useful. Some nice stuff to shop there.
22:49:35 <elliott> Vorpal: bad person
22:49:49 <Vorpal> kallisti: Unless you are orc you need to complete a fetch quest to be allowed in.
22:49:51 <Vorpal> elliott: what?
22:50:27 <Vorpal> elliott: I'm not really spoiling anything. I'm not saying anything like "it was X who did it in the Y's guild side quest line" or something like that
22:50:35 <elliott> friend with orc = bad person
22:50:53 <Vorpal> elliott: come on you can play an orc. And they are not tolkin style orcs really
22:50:53 <zzo38> elliott: Are you sure?
22:51:00 <kallisti> one mistake Skyrim made: dwarven quality weapons are not the best in the game.
22:51:09 <Vorpal> kallisti: how is that bad?
22:51:11 <kallisti> also, why is dwarf not a playable race if there are dwarven weapons.
22:51:16 <kallisti> Vorpal: because dorfs make the best weapons.
22:51:31 -!- Guest14567 has changed nick to Slereah.
22:51:40 <Jafet> "Dwarven" just means "made from dwemer metal", not "made by the ancient dwarves"
22:51:46 <Vorpal> kallisti: uh lore. See Morrowind why dwarfs died out/disappeared from our plane/disintegrated.
22:51:51 <elliott> what about yotuhful dwarves
22:51:56 <elliott> ytouhytful
22:51:58 <elliott> yoothufl
22:52:05 <Vorpal> kallisti: pretty sure there is in-game literature about it to...
22:52:06 <Vorpal> too*
22:52:08 <zzo38> Maybe just they don't want playable dwarf in that game.
22:52:14 <elliott> is it better than "cats of skyrim"
22:52:17 <elliott> (no)
22:52:19 <Vorpal> zzo38: there are reasons. It is complex lore.
22:52:22 <kallisti> Vorpal: sorry elder scrolls lore is boring.
22:52:39 <zzo38> Whatever game, they put restriction... such as, lighting things on fire is not allowed, or whatever.
22:52:59 <Vorpal> kallisti: well basically they tried to become gods to the whole race was wiped out, save for one guy who happened to be at another plane when it happened. He shows up in Morrowind.
22:53:01 <oerjan> @pl-resume
22:53:06 <Jafet> It's not not allowed, just not implemented
22:53:13 <lambdabot> ap id id (ap id id)
22:53:14 <lambdabot> optimization suspended, use @pl-resume to continue.
22:53:21 <Vorpal> kallisti: I haven't played enough Morrowind to get there, but that is what I understood from in-game books and the wiki.
22:53:32 <Deewiant> @pl-resume
22:53:47 <lambdabot> Plugin `pl' failed with: thread killed
22:53:58 <zzo38> Jafet: Then it means, for nearly any computer game, a lot of things are "just not implemented"
22:54:07 <Jafet> zzo: you sound surprised
22:54:08 <Vorpal> kallisti: anyway I find Elder scrolls lore quite exiting.
22:54:21 <kallisti> Vorpal: I definitely think the character skill system is improved, especially making it balanced so that every skill is a viable and useful for something.
22:54:23 <elliott> like jumping to -1
22:54:32 <elliott> Deewiant: YOU ENDED IT
22:54:43 <kallisti> like archery has some neat perk that make an archer playstyle more interesting.
22:54:46 <kallisti> *perks
22:55:00 <Vorpal> elliott: hit the key left of 1 (§ on my keyboard), I'm sure you can jump to -1 then.
22:55:02 <zzo38> Jafet: I am not surprised. It is as expected.
22:55:08 <Vorpal> (hint: that brings up the console)
22:55:28 <Vorpal> (you /will/ need it, there are /so/ many ways to get stuck in the terrain)
22:55:39 <kallisti> zzo38: for detailed world simulator see: dwarf fortress
22:56:01 <Vorpal> kallisti: btw skyrim is larger than it seems, as you will find out when proceeding with the main quest. Ever played Shivering Isles expansion for oblivion?
22:56:10 <kallisti> noep
22:56:13 <elliott> Vorpal: I'm not going to open the console.
22:56:14 <Vorpal> No it doesn't show up. But something just as graphically amazing does
22:56:36 <Vorpal> elliott: so you are going to reload an earlier save if you get stuck between a mill and a water wheel?
22:56:41 <Vorpal> that happened to me
22:56:46 <elliott> Guess I get to replay the game
22:56:50 <Vorpal> ...
22:56:53 <Vorpal> suuure
22:56:54 <kallisti> elliott: convince bay12 to give you source code access. challenge: give dorf fortress a 3D graphical frontend.
22:56:54 <elliott> Anyone who keeps a backlog of saves is a poop
22:57:19 <Vorpal> kallisti: you just mortally offended elliott
22:57:23 <zzo38> kallisti: I have once played dwarf fortress; a lot of character seem not playable, there seem a few other optionss missing too, and it runs very slowly. But I can see by looking at the files that comes with it that it implements a very large number of things. But even trying to do that, someone forgets something (that is for many games they try to put everything, they will always do so)
22:57:24 <Vorpal> I believe
22:57:41 <Vorpal> zzo38: dwarf fortress require a high end CPU
22:57:45 <Vorpal> which iirc you don't ahve
22:57:46 <Vorpal> have*
22:58:07 <Vorpal> wasn't it you who had like 224 MB RAM?
22:58:12 <Vorpal> which is absurdly small
22:58:17 <Jafet> His games must implement everything and run fast, of course.
22:58:33 <Vorpal> right
22:59:01 <zzo38> Jafet: I am not saying it must. I am just saying that even if they are supposed to, they don't.
22:59:18 <zzo38> There is different game, and depending on the game is supposed to be different. That is why you can make up a different game.
22:59:39 <Vorpal> I'm at the other end of that spectrum... i7, sandy bridge, 4 cores, 3.4 GHz, 16 GB RAM (I wouldn't call those specs absurd, upper end yes, but not absurd. I know someone with dual xeon i7 quads and 32 GB RAM, that is absurd for a desktop!)
23:00:15 <Jafet> Tip: most games run just as well on an i3 as an i7
23:00:23 <Vorpal> Jafet: I do other stuff than game.
23:00:26 <shachaf> Jafet: That's why I use an i1.
23:00:46 <Jafet> shachaf is the master of optimization
23:01:00 <Vorpal> Jafet: I do actually use this system to the fullest. I do HDR panorama photography. That requires a /lot/ of processing power to merge.
23:01:09 <Vorpal> both RAM and CPU
23:01:21 <Vorpal> somewhat on GPU too, due to offloading some computations to it
23:01:31 <Jafet> Most game developers are not masters of optimization.
23:02:05 -!- Slereah has quit (Read error: Connection reset by peer).
23:02:10 <Vorpal> Jafet: there is that too. I can barely play Witcher 2 on ultra. I prefer to play it on ultra minus super sampling
23:02:21 <kallisti> all the xbawks devs use C# and XNA which is actually not good.
23:02:23 <Vorpal> skyrim I can play on ultra as long as I don't run fraps
23:02:36 <shachaf> I offload computations to the BPU.
23:02:46 <Vorpal> shachaf: B for bullshit?
23:02:56 <Vorpal> kallisti: it works for simpler games. Just not for the really high end ones.
23:03:09 <Vorpal> kallisti: I mean, Magicka and Bastion both use XNA. They work just fine.
23:03:17 <Vorpal> Bastion is an awesome game btw.
23:03:24 <kallisti> Vorpal: magicka is written in XNA and subsequently cannot run on my laptop.
23:03:24 <shachaf> Vorpal: It took me about seven tries to find a letter that you could put in front of "PU" without it being an existing acronym ending in "processing unit". :-(
23:03:30 <Vorpal> kallisti: heh.
23:03:42 <Vorpal> shachaf: heh
23:03:51 <elliott> QPU
23:03:59 <shachaf> elliott: Taken.
23:04:03 <elliott> for what
23:04:03 <Vorpal> shachaf: wait, I can only thing of CPU, GPU, FPU. How can that take seven tries?
23:04:07 <kallisti> Vorpal: meanwhile: I can play WoW, Starcraft II, and Borderlands.
23:04:08 <monqy> 9pu
23:04:08 <Vorpal> quantum?
23:04:12 <oerjan> <lambdabot> Plugin `pl' failed with: thread killed <-- AWW
23:04:12 <monqy> @pu
23:04:12 <lambdabot> Not enough privileges
23:04:17 * shachaf doesn't like http://en.wikipedia.org/wiki/QPU
23:04:29 <Vorpal> my guess was right
23:04:44 <monqy> my guess was the same as your guess
23:04:45 <Vorpal> shachaf: which other ones were taken?
23:04:46 <shachaf> Yes.
23:04:50 <shachaf> But that page has no references.
23:04:55 <kallisti> Vorpal: monqy transitivity of is yes!
23:04:56 <shachaf> Let me see.
23:05:12 <Vorpal> kallisti: what?
23:05:17 <kallisti> hm?
23:05:21 <Vorpal> kallisti: grammar fail?
23:05:25 <kallisti> no
23:05:34 <kallisti> okay maybe
23:05:37 <shachaf> CPU GPU QPU APU PPU VPU SPU FPU NPU TPU
23:05:37 <Vorpal> kallisti: well I couldn't parse it, but then English is not my native language.
23:05:39 <shachaf> At least.
23:05:41 <Jafet> Where grammar fails, monqy succeeds
23:05:42 <kallisti> Vorpal: monqy: transitivity of is, yes!
23:05:43 <Vorpal> well APU I know what it is
23:05:49 <Vorpal> not related to computing
23:05:51 <Vorpal> oh wait
23:05:55 <Vorpal> there is that APU too
23:05:57 <Vorpal> Arithmetics
23:06:10 <Vorpal> but there is Auxiliary Power Unit as well
23:06:16 <kallisti> Vorpal: monqy: transitivity of "is", yes!
23:06:17 <kallisti> is that better?
23:06:21 <Vorpal> kallisti: hm okay
23:06:32 <Vorpal> kallisti: what is the context for it?
23:06:40 <kallisti> 18:04 < monqy> my guess was the same as your guess
23:06:48 <Vorpal> VPU would be vector I guess
23:06:59 <kallisti> Vorpal: your guess was correct, THEREFORE
23:07:00 <kallisti> ...
23:07:03 <kallisti> yeah
23:07:11 <Vorpal> right
23:07:22 <kallisti> it's so much more clevre now that I've explained it in detail.
23:07:40 <Vorpal> okay CPU, GPU, APU, FPU I know. VPU and QPU I could guess at. That leaves PPU SPU NPU and TPU
23:07:52 <Vorpal> TPU probably some trusted execution crap
23:07:59 <monqy> 66pu
23:08:05 <Vorpal> hm nope
23:08:07 <shachaf> Vorpal: Those aren't all!
23:08:09 <monqy> hellopu
23:08:12 <Vorpal> time processor unit?
23:08:19 <kallisti> monqypu
23:08:29 <Vorpal> Synergistic Processing Unit in the Sony-IBM-Toshiba cell microprocessor <-- heh?
23:08:35 <shachaf> XMLPU
23:08:36 <Vorpal> oh Cell
23:08:36 <monqy> ☃pu
23:08:39 <Vorpal> right
23:08:44 <Vorpal> shachaf: you are kidding...
23:08:50 <shachaf> Vorpal: Kind of.
23:08:53 <shachaf> It's not called by that name.
23:08:56 <Jafet> HARDWARE ACCELERATED XML
23:09:03 <Vorpal> shachaf: there can't be hardware accelerated XML
23:09:06 <Vorpal> I refuse to believe that
23:09:07 <shachaf> But the IBM zSeries, i I recall correctly, has support for a hardware XML coprocessor.
23:09:20 <shachaf> It's a regular CPU that they turn on in such a way that it only suports XML.
23:09:24 <shachaf> And you pay less than for a full CPU.
23:09:24 <Vorpal> "Network Processing Unit" <-- okaaay
23:09:37 <kallisti> Processor Processing Unit
23:09:43 <Vorpal> https://en.wikipedia.org/wiki/Physics_processing_unit <- hm okay
23:09:49 <Vorpal> kallisti: nope, see link I just game
23:09:52 <Vorpal> gave*
23:09:52 <kallisti> no my is better
23:09:52 <Vorpal> gah
23:09:58 <shachaf> http://www-03.ibm.com/systems/z/hardware/features/zaap/
23:10:15 <Vorpal> <shachaf> It's a regular CPU that they turn on in such a way that it only suports XML.
23:10:15 <Vorpal> <shachaf> And you pay less than for a full CPU.
23:10:19 <Vorpal> the crap?
23:10:54 <Jafet> So they can bin the ones with broken FPUs, perhaps
23:11:03 <shachaf> Vorpal: Apparently it does Java too.
23:11:05 <Jafet> XML doesn't need FDIV
23:11:07 <Vorpal> I see
23:11:16 <Vorpal> Jafet: java does
23:11:20 * Phantom__Hoover → sleep
23:11:21 -!- Phantom__Hoover has quit (Quit: Leaving).
23:11:32 <Vorpal> Jafet: besides I doubt they are x86
23:11:34 <shachaf> I think the point is just to get you to pay more money.
23:12:09 <pikhq_> IBM has traditionally offered such dubious "features" on their higher-end stuff.
23:12:24 <Vorpal> heh
23:12:46 <pikhq_> For instance, their mainframes have at various points offered upgrades up to brand-new CPUs by toggling the right switch.
23:12:55 <Vorpal> lol
23:13:07 <Vorpal> pikhq_: so they actually had the better CPU in it all along
23:13:11 <Vorpal> how can that be cost effective?
23:13:21 <Vorpal> a CPU is expensive
23:13:27 <pikhq_> If you charge significantly over cost anyways. :)
23:13:32 <Vorpal> well okay
23:13:53 <pikhq_> In the mainframe market, IBM has been the sole competitor for several decades.
23:13:55 <Vorpal> pikhq_: but surely it will make the customers disillusioned...
23:14:00 <kallisti> Sgeo: upleinian groopt
23:14:07 <kallisti> (yes these will continue to get more ridiculous)
23:14:14 <Vorpal> kallisti: wtf was that?
23:14:17 <pikhq_> Vorpal: The customer base still uses COBOL.
23:14:26 <Vorpal> pikhq_: hm.
23:14:31 <kallisti> Vorpal: Kleinian group
23:14:37 <kallisti> but in updoot form
23:14:38 <Vorpal> pikhq_: insert cobol on cogs link here
23:14:46 <Vorpal> kallisti: no clue what updoot is
23:14:58 <Sgeo> kallisti, you're delayed
23:15:55 <Vorpal> well, night →
23:16:51 <kallisti> Sgeo: my onslaught will be unpredictable and tantalizing.
23:17:04 <kallisti> it will come after actual updates or at my whim.
23:17:12 -!- Slereah_ has joined.
23:17:48 <zzo38> I make the computer game too, including with MegaZeux. Obviously it doesn't do absolutely everything but there are many things can be unusually and is different from other computer game.
23:17:54 <kallisti> you will then slowly begin to question your sanity and distrust all human beings and instead regard them as scoundrels.
23:18:24 <kallisti> Sgeo: this is the second phase, where I reveal my dastardly plan! ah ha ha ah ha ha.
23:20:18 <kallisti> Sgeo: also: updoast of groot britain.
23:29:11 -!- MDude has quit (Read error: Connection reset by peer).
23:29:11 -!- sebbu has quit (Read error: Connection reset by peer).
23:29:15 -!- MSleep has joined.
23:29:25 -!- sebbu has joined.
23:29:25 -!- sebbu has quit (Changing host).
23:29:25 -!- sebbu has joined.
23:31:30 -!- MDude has joined.
23:31:37 -!- MSleep has quit (Read error: Connection reset by peer).
23:36:10 -!- augur_ has joined.
23:36:12 -!- augur has quit (Ping timeout: 276 seconds).
23:36:50 <kallisti> man Egyptians have this protest shit figured out.
23:37:05 <kallisti> they throw the tear gas grenades back at the police.
23:40:23 <kallisti> Occupy could learn a thing or two.
23:43:26 <Sgeo> elliott, kallisti arfasdfjhadate
23:44:06 <kallisti> ?
23:44:18 <elliott> sdkasld
23:44:23 <Sgeo> arhfpsupdart
23:44:39 <kallisti> why do rocrupt ur ensentes
23:45:37 <kallisti> `word 25
23:45:40 <HackEgo> quel vinflumicturguerstrighaleakinvar azed bale ossars hoontarinatur harippry tia nintited fidahur asic aequolle lia finfored ronera last arplang grautlmen vics sly lee scham pauryn preting supeisperox
23:46:20 <monqy> vinflumicturguerstrighaleakinvar
23:46:41 <monqy> harippry is good though
23:46:49 <monqy> aequolle too
23:47:00 <monqy> grautlmen
23:48:01 <kallisti> ow pepper hot
23:48:14 <kallisti> mmm pain tastes good.
23:49:17 <Sgeo> grautlmen sounds like something the TF2 spy might say
23:52:21 <kallisti> my reversible graph language sounds like a large memory leak.
23:56:49 <oerjan> not reversible enough, then
23:57:06 <kallisti> actually I'm not sure that it will be a "graph language" but its memory layout will be represented by a graph.
23:59:36 <kallisti> oerjan: I'm not sure what you mean. :P
←2011-11-20 2011-11-21 2011-11-22→ ↑2011 ↑all