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