00:02:10 -!- carado has quit (Ping timeout: 246 seconds). 00:05:22 ^show list 00:05:23 (Taneb atriq Ngevd Fiora nortti Sgeo alot)S 00:05:38 ^def list ul (Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot)S 00:05:39 Defined. 00:05:59 Who is ThatOtherPerson? 00:06:05 fizzie: needs saving hth 00:06:15 ^save 00:06:27 no? 00:06:31 ok 00:06:35 i do not think that command responds to anyone but fizzie 00:09:58 hi fungot 00:09:59 kmc: he is so silly! 00:10:14 fungot: me or you? 00:10:15 kmc: for a while it was frustrating. most of john's dad, who broke a huge wizard is. you don't like is my mother's obsession with clocks. the sooner all these idiots stop being alive the better of you. 00:10:26 ^style 00:10:26 Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck* ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube 00:10:40 ^style fungot 00:10:40 Selected style: fungot (What I've said myself) 00:10:48 fungot: hi 00:10:48 kmc: is that something you know and and the cases that required to actually mutate the original ( sorted, perhaps, it may be said that particularly here, parliament will give a single instance, 00:15:32 Mr. President, I think fungot is mixing metaphors again 00:15:33 oerjan: ( that is, levinson went to kish, disappeared, had on your behalf of the commission is not allowed to use the crane, enter any two of these letters, a b y. every night, brings a new world of good! i was your problem? maybe you just can't handle is designed" if continuations are not unmodular in the same 00:26:58 -!- Taneb has quit (Quit: Leaving). 00:42:35 Oh hey someone wrong my mamb for Scala years ago 00:42:42 https://github.com/urso/embeddedmonads 00:43:05 Was that supposed to be "wrote"? 00:43:25 yes, yes it was 00:45:15 Have you considered writing a library called Mambo? 01:18:53 -!- copumpkin has quit (Ping timeout: 245 seconds). 01:19:24 -!- copumpkin has joined. 01:22:19 ^save 01:22:19 OK. 01:28:14 yay! 01:28:36 * oerjan didn't really think fizzie was around 01:28:58 I have been playing a game, is why. 01:29:17 you'd also been idle for over a day 01:30:15 Oh, but I've been checking the channel every few hours, all sneaky-stealth-like. 01:30:37 (IRC should have some kind of attention notification protocol, perhaps?) 01:31:21 IM things have that "user is typing" indicator, but even they don't generally (AFAIK) have a "user is looking" indicator. 01:32:37 we've been thinking about that a lot for the business communication tool we're building 01:35:40 it works as realtime chat, but (unlike say IRC) it strongly encourages you to read every message 01:35:56 Incorporating eye-tracking technology sound like the obvious way to go about it, of course. 01:35:58 so that it can also take the place of asynchronous things like email 01:36:35 so we kind of want to deliberately avoid a 'user is around right now' notification, because it would discourage people from using it in that second way 01:36:55 on the other hand it's something people really really want 01:37:22 xmpp's combo of away statuses and typing notifications seems fine to me 01:38:01 Beating the users until they stop wanting things you don't want them to want seems fine to me. 01:40:13 but in the limit you end up with something nobody wants 01:40:28 we've been thinking about that a lot for the business communication tool we're building <-- as long as it is better than Samtime in the god awful Lotus Notes... 01:40:40 in the limit you work somewhere else, i thought 01:41:26 what's Samtime like 01:41:30 Bike: well ok 01:41:41 kmc, well I guess it actually isn't the worst part of notes 01:42:11 kmc, of course it suffers the general problems with confusing UI of notes that means you have no idea where to find the setting you want. 01:42:49 kmc, oh and I have no idea how to change spell check language in it. It seems stuck to English, while the rest of Notes is stuck to Swedish 01:43:08 kmc, anyway it is an IM system integrated into Notes 01:43:12 use it at work 01:43:23 does show the away status 01:44:57 -!- Nisstyre-laptop has quit (Quit: Leaving). 01:46:37 -!- Nisstyre-laptop has joined. 01:49:15 -!- DHeadshot has quit (Read error: Connection reset by peer). 01:49:21 -!- DH____ has joined. 02:01:13 http://www.reddit.com/r/Python/comments/17rfh7/warning_dont_use_pip_in_an_untrusted_network_a/ 02:01:22 yay people are finally talking about these problems 02:02:12 "It's a bit worse than that." security sure is a fun field 02:04:43 yeah, the default python HTTP libraries make it basically impossible to check SSL certs 02:04:47 who would ever want to do that right 02:05:02 Python: explosive, acid-leaking batteries included 02:05:11 -!- Nisstyre-laptop has quit (Quit: Leaving). 02:17:38 Would x + y = y + x be a valid last pattern match, so that all cases where x is specific also apply to where y is specific instead? 02:17:50 what 02:17:59 oh i see what you mean 02:19:11 yes, you can do things that way, but I remember concluding that it's not worthwhile 02:19:19 Say I have (x,True) + (y,False) = something and then don't want to write the case for (x,False) + (y,True) = something 02:19:39 one problem is that if you forget a case, there's no compiler warning and you get an infinite loop at runtime 02:20:42 Yeah, that's what I was thinking 02:21:25 I'm making silly Num instances =P 02:21:39 instance Num ([()],Boolean) 02:21:48 that is silly 02:22:03 Boolean is the sign, the list is the magnitude 02:22:04 you should introduce a new constructor rather than using (,) 02:22:09 As in the length 02:22:13 otherwise it will overlap with other (,) instances 02:22:35 I was thinking of making a new constructor, but was lazy =P 02:22:42 Sure, I will 02:23:39 also if you want to be sillier, use Fix Maybe 02:23:47 data SillyNum = Positive [()] | Negative [()] 02:23:49 instead of [()] 02:24:01 :t Fix Maybe 02:24:04 Not in scope: data constructor `Fix' 02:24:04 Not in scope: data constructor `Maybe' 02:24:12 :k Fix 02:24:13 Not in scope: type constructor or class `Fix' 02:24:15 :k Mu 02:24:16 (* -> *) -> * 02:24:18 ok lambdabot calls it Mu 02:24:23 why 02:24:25 @src Mu 02:24:25 newtype Mu f = In { out :: f (Mu f) } 02:24:36 because μ is used for least fixed points in maths sometimes 02:24:46 > In (Just (In Nothing)) 02:24:48 In (Just (In Nothing)) 02:24:59 Is Fix Maybe a chain of justs that possibly ends in Nothing 02:25:08 yes 02:25:25 Mu Maybe ≈ Maybe (Mu Maybe) 02:25:36 where by ≈ i mean "isomorphic to" 02:25:42 data Fix a = a (Fix a) ??? 02:25:55 newtype Mu f = In { out :: f (Mu f) } 02:26:05 Ah 02:26:09 you need a value constructor 02:26:20 Yeah, I see 02:26:27 also you need to use 'newtype' if you want it to be an actual isomorphism 02:26:34 otherwise ⊥ ≠ In ⊥ 02:26:44 so each level of recursion has one more "value" 02:27:03 i wrote some stuff about this stuff here http://mainisusuallyafunction.blogspot.com/2010/12/type-level-fix-and-generic-folds.html 02:28:15 oh, so it's the same recursive-functions-are-actually-fixedpoints thing as with, uh, functions. 02:28:22 yeah 02:28:29 I think I'll use [()] for now 02:29:06 [()] means you can use list functions for arithmetic... 02:29:16 I like how the definition of fix there relies on recursion 02:29:49 well in a statically typed language, you can't write fix unless you are already given some kind of recursion construct 02:29:58 > const id <$> [(),(),()] <*> [(),()] 02:30:00 [(),(),(),(),(),()] 02:30:29 oh wait 02:30:36 > [(),(),()] *> [(),()] 02:30:38 [(),(),(),(),(),()] 02:30:50 Need to consider negative values too =P 02:31:09 > replicate 3 [()] >> replicate 5 [()] 02:31:11 [[()],[()],[()],[()],[()],[()],[()],[()],[()],[()],[()],[()],[()],[()],[()]] 02:31:15 though in Haskell there are various accidental "recursion constructs" you can use 02:31:18 http://okmij.org/ftp/Haskell/types.html#fix 02:31:23 > replicate 3 [()] >> replicate 5 [()] >>= id 02:31:25 [(),(),(),(),(),(),(),(),(),(),(),(),(),(),()] 02:31:42 Oh, duh 02:31:46 > replicate 3 () >> replicate 5 () 02:31:47 [(),(),(),(),(),(),(),(),(),(),(),(),(),(),()] 02:32:11 anyway if you have a simple typed lambda calculus, you can't write fix 02:32:29 note that its type, (a -> a) -> a, is unsound as a logical proposition 02:32:59 > sequence_ $ [(),(),()] <$ [(),()] 02:33:01 [(),(),(),(),(),(),(),(),()] 02:33:10 once you allow arbitrary recursion, your programs are no longer really proofs, because they can loop forever instead of yielding a value of their declared type 02:33:42 Somehow I can't see {-# RULES forall m n. length (replicate m () *> replicate n ()) = m * n #-} becoming a thing 02:33:59 If you don't allow arbitrary recursion, your programs aren't turing-complete 02:34:01 > (mapM_ . const) [(),(),()] [(),()] 02:34:04 [(),(),(),(),(),(),(),(),()] 02:34:44 @let voided n = replicate n () 02:34:46 Defined. 02:34:50 > void [1..] > voided 5 02:34:53 True 02:34:56 Jafet: Wouldn't that give a different result for negative values of m and n 02:35:47 > (compare `on` void) (1:2:3:4:5:undefined) [10,20,30] 02:35:49 GT 02:36:05 :t on 02:36:07 (b -> b -> c) -> (a -> b) -> a -> a -> c 02:36:33 > null . 02:36:35 :1:7: parse error (possibly incorrect indentation) 02:36:41 :t null .: void 02:36:43 Couldn't match expected type `[a0]' with actual type `()' 02:36:43 Expected type: g0 a1 -> g0 [a0] 02:36:43 Actual type: g0 a1 -> g0 () 02:37:09 I love expressive type systems 02:37:26 :t null 02:37:28 [a] -> Bool 02:37:42 > (null .) 02:37:43 No instance for (GHC.Show.Show (f0 [a0] -> f0 GHC.Types.Bool)) 02:37:44 arising f... 02:38:03 :t (null .) 02:38:04 Functor f => f [a] -> f Bool 02:38:19 kmc: i know all that much at least, you don't need to tell me again :P 02:39:11 but do you know the type newtype T = T (T -> T)!! 02:39:23 Ah, lambdabot does the (.) = fmap thing 02:40:03 shachaf: T id 02:40:04 FreeFull: http://en.wikipedia.org/wiki/%CE%9C-recursive_function you only need search!!! 02:41:44 Bike: ok 02:42:00 it's hard to remember what people know and don't know 02:42:14 i suppose 02:42:18 nothing wrong with talking it through again 02:42:47 Back to my num instance 02:45:46 hm, i had this idea that cata(morphism) was actually reasonably widespread in haskell world 02:46:40 more of an agda thing maybe? 02:46:56 -!- Phantom_Hoover has joined. 02:48:13 Maybe I shouldn't have used separate constructors for positive and negative 02:48:20 It's bloating my num instnace 02:50:39 data Sign = Negative | Zero | Positive deriving Show data SillyNum = SillyNum Sign [()] deriving Show this might be better, probably should derive more instances but whatever 02:50:54 so what's this all for 02:51:11 Sillyness 02:51:48 Actually, screw Sign, I'll just use Integer or something 02:52:48 i'll make my own Num instance, with blackjack and hookers 02:55:33 -!- DH____ has quit (Read error: Connection reset by peer). 03:04:00 data SillyNum = SillyNum Integer [()] deriving Show 03:04:11 instance Num SillyNum where { fromInteger x = SillyNum (signum x) (genericReplicate (abs x) ()); negate (SillyNum x y) = SillyNum (-x) y; abs (SillyNum x y) = SillyNum (abs x) y; signum (SillyNum x _) = SillyNum x [()]; (SillyNum x a) + (SillyNum y b) = fromInteger (x * genericLength a + y * genericLength b); (SillyNum x a) * (SillyNum y b) = SillyNum (x*y) (a >> b) 03:04:46 } 03:05:33 :t (>>) 03:05:35 Monad m => m a -> m b -> m b 03:05:36 Appears to work 03:06:21 Bike: Same as *> but for monads 03:11:45 What happens when you call length on a list larger than maxBound :: Int 03:12:15 Assuming you wait for it to actually finish 03:12:35 > length ([1.. (fromIntegral (maxBound :: Int) + 1)]) 03:12:39 You realize that you need to buy a 64-bit CPU 03:12:39 mueval-core: Time limit exceeded 03:12:58 FreeFull: I think the semantics are not defined by the standard 03:13:03 > length ([1.. (fromIntegral (maxBound :: Int))]) 03:13:07 mueval-core: Time limit exceeded 03:13:12 Let me look up the standard implementation of length 03:13:15 in practice it will depend on how length is implemented and how Int overflow works on your Haskell implementation 03:13:21 length [] = 0 03:13:21 length (_:l) = 1 + length l 03:13:24 from the report 03:13:37 so that will pretty directly depend on what (+) :: Int -> Int -> Int does 03:13:46 > 1 + (maxBound::Int) 03:13:47 Are there laws for (+) 03:13:48 -9223372036854775808 03:13:53 nice! 03:14:07 Jafet: if there are any laws for numbers, they are almost certainly violated by Double ;P 03:14:12 i mean equality is not even reflexive 03:14:39 Since there are no laws, length can return anything on a non-null list 03:14:43 hm, i do wonder about that sometimes. like should you have * work on both integers and matrices even though they have different properties. how do you fit this into a type system that makes any sense at all. 03:14:54 CHECKMATE 03:15:00 Jafet: i think the semantics of Int specifically are specified within the range [-2^29..2^29-1] 03:15:01 So you'll eventually end up with a negative value for length :D 03:15:18 And it's possible to get a list large enough that length will say it's length is 0 03:15:19 > let n :: Double; n = read "NaN" in n == n 03:15:21 False 03:15:29 good representation 03:15:33 int overflows are a grave security concern in C 03:15:49 lotta code will do like buf = malloc(n * sizeof(foo)) 03:16:02 haha oops 03:16:04 if that multiplication overflows, you allocate less memory than you expect 03:16:27 kmc: Should I be surprised Haskell has adopted the NaN /= NaN thing? 03:16:28 sscanf(buf, "%d", &n) 03:16:50 I shouldn't 03:16:52 isn't it just using ieee like everyone else in the universe? 03:16:56 Makes sense for ieee 03:17:02 except ps2 gpus maybe 03:17:18 In other words calloc is more secure than malloc??? 03:17:34 But then 03:17:35 Jafet: how's that 03:17:38 > Nothing == Nothing 03:17:40 True 03:17:52 calloc(n, sz) 03:18:01 ah yes 03:18:11 does the haskell report specify that floating point is IEEE754? 03:18:14 FreeFull: what's the relevance 03:18:22 > isIEEE (undefined :: Float) 03:18:23 True 03:18:30 okay so it's not spec'd but you get a runtime check 03:18:56 Double should be an algebraic type 03:19:11 > isIEEE (3 :: Real) 03:19:11 and NaN /= NaN does make sense, it's just unfortunate 03:19:13 Expecting one more argument to `GHC.Real.Real' 03:20:01 kmc: unfortunate? 03:20:14 :k Real 03:20:16 NaN is almost like ⊥ -- it means you have no information about the "actual" result 03:20:16 * -> Constraint 03:20:22 :k Constraint 03:20:23 BOX 03:20:55 ow my brain 03:20:55 > (Nothing == Nothing) :: Maybe Float 03:20:57 Couldn't match expected type `Data.Maybe.Maybe GHC.Types.Float' 03:20:58 ... 03:21:12 > (Nothing == (Nothing :: Maybe Float)) 03:21:12 oh right, nan means "not representable" in addition to "doesn't make sense". gosh i'm bad with floats 03:21:14 True 03:22:08 however Infinity == Infinity which seems a little bit wrong 03:22:21 because two numbers which are too big to represent might still be unequal 03:22:33 > (1/0) == (2/0) 03:22:33 Isn't no information about the actual result undefined 03:22:35 True 03:22:42 positive infinity, infinity on the pi/4 vector, what's the diff 03:22:53 Multiply both sides by 0, 1 == 2 03:23:07 Jafet: yeah, most systems allow configuring the floating point unit to treat NaN as an exception 03:23:14 -!- constant has changed nick to function. 03:23:16 though iirc it's pretty nasty with GHC haskell 03:23:27 because this FPU state is not saved by the green-thread scheduler 03:23:33 > 2.0^10000 == 2.0^20000 03:23:35 True 03:24:14 Why do most programming languages have mediocre type systems ): 03:24:23 any attempt to represent real numbers in a computer is doomed to incoherence 03:24:38 FreeFull: most things are bad 03:24:38 Also it's weird to blame type systems for reals being weird. 03:24:40 There are always the unreal computers 03:24:59 many explanations are offered but I prefer to think that success is simply random, and most things people try are bad 03:25:03 so most things that succeed are also bad 03:25:31 Bike: Nah, I'm not 03:25:45 There are only so many reals you can represent in a limited space 03:26:09 there are only so many reals you can represent in countably infinite space 03:26:14 which is to say almost none of them 03:26:25 lebesgue measure is so passé 03:26:30 Well, any real is countably infinite 03:26:32 almost every real number contains an infinite amount of information 03:26:50 yeah it's true Jafet 03:26:55 i was speaking imprecisely 03:27:01 "Damn you cantor" 03:27:08 however the problem of representing reals in a computer is more fundamental than the problem of representing integers 03:27:24 the latter is just about space whereas the former is about the fact that reals are crazy and fucked up 03:27:25 ya think? representing integers is a pretty neat problem too. 03:27:58 of course you don't really have to think about it unless you're dealing with trillion-digit numbers, i guess. how boring 03:28:33 (and not that reals aren't crazy and fucked up) 03:28:47 You're lucky if your real is just transcendental, you can still approximate that with a rational 03:29:26 Most reals can't be and all you can do is assign some symbol to it 03:29:59 “eog or the Eye of GNOME is a simple graphics viewer for the GNOME desktop which uses the gdk-pixbuf library. It can deal with large images, and zoom and scroll with constant memory usage.” (eog:21228): GLib-ERROR **: /build/buildd/glib2.0-2.34.1/./glib/gmem.c:165: failed to allocate 18446744071773880320 bytes 03:30:17 uh aren't most reals transcendental 03:30:37 eog failed to open my 32768x32768 image 03:30:41 gnome sucks 03:30:51 FreeFull, except for the ones that no string of symbols can be assigned to 03:30:57 Which is most of them 03:31:10 Well, hmm 03:31:16 Not a good way to phrase that 03:31:27 You can assign them. Omega = chaitin's constant on 2,3 machines. 03:31:36 but that's not what you mean. 03:31:42 Different meaning of symbol 03:31:44 No finite amount of symbols and description suffices to describe. 03:31:50 There you go. 03:32:09 Also isn't the golden ratio algebraic or am I being dumb 03:32:30 Chaitin's constant is described as the real number containing the probability of halting for 2,3 machines 03:32:30 Sgeo: to describe as distinctive from other reals you mean 03:32:43 FreeFull, good point 03:32:47 Because I could just say x is a real 03:32:51 Jafet: most numbers are undefinable too, though. 03:32:54 -!- Phantom_Hoover has quit (Remote host closed the connection). 03:33:01 Those don't exist 03:33:11 Monster. 03:33:21 Everything exists. 03:33:34 If all numbers are definable, how many numbers are between 0 and 1? 03:33:50 Existence is easy 03:33:54 Actually, nevermind 03:33:56 (Therefore: everything is easy) 03:33:57 FreeFull: cardinality of the naturals duh 03:34:48 FreeFull: also, the golden ratio is algebraic but all rational approximations of it suck (for reasonable definitions of suckage) 03:35:17 How would you make a function that takes a floating value of Inf and makes it 1 using just arithmetic operations? 03:35:39 * function returns 1 to FreeFull 03:35:42 Bike: Good enough 03:35:43 f _ = 1 03:36:00 Bike: I didn't specify enough 03:36:09 Heh, heh. 03:36:17 It has to return 1 only for Inf and 1, for everything else it's id 03:36:55 No ifs? 03:36:57 Hm 03:37:04 -!- Nisstyre-laptop has joined. 03:37:09 f n | n /= n = 1 | 1>0 = n 03:37:12 > let f n | isInfinite n = 1; f n = n in (f 3, f (1/0)) 03:37:13 (3.0,1.0) 03:37:15 Not necessarily id 03:37:36 -!- WeThePeople has joined. 03:37:39 Surely guards count as ifs 03:37:43 Not necessarily 1 for 1, but has to return different values for different inputs 03:37:44 > let f n | (isInfinite n && (n > 0)) = 1; f n = n in (f 3, f (1/0), f (-1/0)) 03:37:45 (3.0,1.0,-Infinity) 03:37:46 You could probably say it has to be a composition of possibly partially applied arithmetic functions. 03:38:04 Guards count as non-arithmetic operations here, and isInfinite does too 03:38:24 NaN is non-arithmetic 03:38:30 Or you could just get to your point instead of adding more and more constraints as kmc works around yours. 03:38:38 Non-arithmetic number 03:38:43 i'm not really paying attention 03:38:46 Ignore NaN 03:38:52 just fuckin' around 03:38:55 on the internet 03:38:57 same thing 03:38:57 But then what's Inf-Inf? 03:39:04 > Inf - Inf 03:39:06 That's an arithmetic operation 03:39:06 Not in scope: data constructor `Inf' 03:39:06 Perhaps you meant one of these: `In' ... 03:39:09 hth 03:39:30 > let Inf = 1/0 in Inf - Inf 03:39:32 Not in scope: data constructor `Inf' 03:39:32 Perhaps you meant one of these: `In' ... 03:39:42 > let inf = 1/0 in inf - inf 03:39:44 NaN 03:39:57 There, it's bread 03:40:01 Unless you want to take the utter crazy view that Inf-Inf = 0, in which case, (1+) . (`subtract` inf) 03:40:23 well, let's see, on the riemann sphere such a function wouldn't be continuous so fuck it 03:40:25 I think J does that or something 03:41:03 smokin' a J 03:41:16 Oh it doesn't 03:41:18 ) _-_ 03:41:19 Sgeo: |NaN error 03:41:19 Sgeo: | _ -_ 03:41:32 j's syntax is a thing of beauty 03:41:56 I was thinking there are functions that squish -Inf..Inf to -1..1 or some other range 03:42:20 But wouldn't IEEE floats foil that without explicitly considering infs 03:42:55 Wouldn't any non-infinite number get squished to, say, 0? 03:42:57 well it wouldn't be injective 03:43:42 Sgeo: Not necessarily 03:43:56 Sgeo: The closer the number is to 0, the less it'd get squished 03:44:11 hrm 03:44:29 Shouldn't say "arithmetic" operations. Makes me want to exclude logarithmic stuff 03:44:57 Ok, include logarithmic and trigonometric stuff too then 03:45:05 Say, atan :) 03:45:05 Since you're dealing with reals you could just say analytic functions. 03:45:09 ) $%97^3$@>.$(Po.uo.godeto.go4i$*%#@( 03:45:09 kmc: |spelling error 03:45:09 kmc: | $%97^3$@>.$(Po.uo.godeto.go4i$*%#@( 03:45:09 kmc: | ^ 03:45:19 god kmc, check your spelling 03:45:23 ) $%97^3$@>.$( 03:45:23 kmc: |syntax error 03:45:23 kmc: | $%97^3$@>.$( 03:45:43 But I don't know if there's a reasonable extension of the complex plane with two points at infinity. 03:46:22 > atan (1/0) 03:46:23 1.5707963267948966 03:46:33 Close enough 03:46:45 ) _3 o. 1%0 03:46:45 Sgeo: 1.5708 03:46:50 > tan (atan (1/0)) 03:46:51 can't find file: L.hs 03:46:59 > tan (atan (1/0)) 03:47:00 1.633123935319537e16 03:47:09 Not close enough 03:47:17 ) 3o._3o._ 03:47:18 Sgeo: |ill-formed number 03:47:25 ) 3o._ 3o._ 03:47:25 Sgeo: |ill-formed number 03:47:35 ) 3o. _ _3o._ 03:47:35 Sgeo: |ill-formed number 03:47:42 > tan (1/0) 03:47:43 ) 3o. _ (_3)o._ 03:47:44 Sgeo: |ill-formed number 03:47:44 NaN 03:47:48 ) 3 o. _ (_3)o._ 03:47:48 Sgeo: |limit error 03:47:49 Sgeo: | 3 o._(_3)o._ 03:47:54 ) ꙮ 03:47:54 kmc: |spelling error 03:47:54 kmc: | ꙮ 03:47:54 kmc: | ^ 03:48:05 ) 'ꙮ' 03:48:05 Bike: ꙮ 03:48:06 Is there any value for which tan will actually produce Inf or -Inf 03:48:09 yesssss 03:48:11 ) fungot 03:48:12 kmc: more simply put: siod sucks as a general purpose ( similar, and i'd like to see that mystical forest powers, but this time on the impact of the introduction to theoretical computer, fnord of the fnord here, so i don't 03:48:12 kmc: |value error: fungot 03:48:12 jconn: and is one thing which you might want is broken" archives. even less chance. i called " o" in " the other side has that as their whole thing, i mean... 03:48:12 fungot: |spelling error 03:48:12 fungot: | and is one thing which you might want is broken" archives. even less chance. i called " o" in " the other side has that as their whole thing, i mean... 03:48:12 fungot: | ^ 03:48:12 jconn: ( c) a player who makes further play impossible by eir actions or lack thereof, or 03:48:12 jconn: to. why, this is for you guys are a lot 03:48:12 jconn: to " print" statement should always remember the songs on p2p apps in scheme, besides, was not beyond normal credibility atheist. you cannot _read_ a procedure, but maybe i will when i start fixing it rather than having arbitrary bf is with a fnord struct, where the actual standard being sane) scheme implementations but guile is my fnord' doggie than a dozen tales, of the whole fnord range of the ' ' ' delete a value of 03:48:12 fungot: c (a player who makes further play impossible by eir actions or lack thereof , or) 03:48:18 ) 3:'x=.5' 03:48:20 OH NO 03:48:24 fungot: | ^ 03:48:24 Sgeo: 3 03:48:41 FreeFull: do you mean in math or in some programming language 03:48:43 I think the bots have flood protection 03:48:47 Or at least fungot does 03:48:47 FreeFull:, so i'd have to consider that although the reduction in actual transportation section from former friend lives, their door had my computer with full u+ support" then they both bowed low. just keep the safe or tub and emptied it 03:48:52 ) 13:'x=.5' 03:48:52 Sgeo: |spelling error 03:48:53 Sgeo: | 13:'x=.5' 03:48:53 Sgeo: | ^ 03:48:59 Bike: Say, haskell 03:49:02 FreeFull: fungot doesn't respond to the person so many times in a row 03:49:02 monqy: use the ' ' ' delete a value of type " airbus is a big fan of avril....but this song " there 03:49:19 FreeFull: so... what's Inf in haskell exactly 03:52:04 > (\n -> 2/n - 4/(n+1) + 1) <$> [1, 1/0] 03:52:05 [1.0,1.0] 03:52:46 Bike: Any value that produces True when fed to isInfinite 03:53:09 Which means it has to be a RealFloat 03:53:23 So... why did you tell us to forget about nans. 03:53:53 FreeFull just wants a smooth compression algorithm on all reals+extended reals to the reals 03:53:56 I didn't want you to care about what happens when nan is fed to your function 03:54:00 Bike: Do you know a lot of things about subtyping? 03:54:05 You should say them all. 03:54:09 I don't know much about anything. 03:54:34 Sgeo: What does Ada do about this? 03:58:23 > (\n -> 1 - 1/(n+1)) <$> [0, 1, 2, 4, 8, 1/0] 03:58:25 [0.0,0.5,0.6666666666666667,0.8,0.8888888888888888,1.0] 04:03:20 > 1/(1/0) 04:03:22 0.0 04:03:26 I forgot that 04:03:28 Did you mean: beeeeeeeeees 04:03:50 * FreeFull offers Jafet a hug prize 04:03:59 FreeFull: well it depends on how these things are defined on infinities, i guess 04:04:59 Jafet is a winner 04:06:12 > (\x -> 1 - 1/(n+1)) <$> [0,(-0.000001)..] 04:06:14 [1 - 1 / (n + 1),1 - 1 / (n + 1),1 - 1 / (n + 1),1 - 1 / (n + 1),1 - 1 / (n... 04:06:21 @hugs 04:06:22 http://hackage.haskell.org/trac/ghc/newticket?type=bug 04:06:28 > (\n -> 1 - 1/(n+1)) <$> [0,(-0.000001)..] 04:06:29 [0.0,-1.000001000006634e-6,-2.0000039999690244e-6,-3.000009000109216e-6,-4.... 04:06:45 -!- oerjan has quit (Quit: Gnite). 04:07:06 Jafet: Behaves weirdly on negative values but fulfills my specification 04:07:29 > (\n -> 1 - 1/(n+1)) -1/0 04:07:32 No instance for (GHC.Real.Fractional (a0 -> a0)) 04:07:32 arising from a use of `... 04:07:41 huh 04:07:50 > (\n -> 1 - 1/(n+1)) -1 04:07:52 No instance for (GHC.Num.Num (a0 -> a0)) 04:07:52 arising from a use of `e_11111'... 04:08:00 > (\n -> 1 - 1/(n+1)) 1 04:08:03 0.5 04:08:07 > (\n -> 1 - 1/(n+1)) (-1/0) 04:08:10 1.0 04:08:44 > (\n -> 1 - 1/(n+1)) -49 04:08:46 No instance for (GHC.Num.Num (a0 -> a0)) 04:08:46 arising from a use of `e_111149... 04:08:49 > (\n -> 1 - 1/(n+1)) (-49) 04:08:51 1.0208333333333333 04:08:57 > (\n -> 1 - 1/(n+1)) (-3) 04:08:59 1.5 04:09:12 > (\n -> 1 - 1/(n+1)) (-0.3) 04:09:13 -0.4285714285714286 04:09:19 > (\n -> 1 - 1/(n+1)) (-0.5) 04:09:20 -1.0 04:09:24 > (\n -> 1 - 1/(n+1)) (-0.6) 04:09:26 -1.5 04:10:32 It's basically a shifted over 1/x 04:11:03 > (\n -> 1 - 1/(n+1)) (-1) 04:11:05 -Infinity 04:15:00 Oh crud I got a call yesterday and don't know who it was from 04:15:03 I may have been asleep 04:15:17 Could have been job related for all I know 04:17:06 -!- c00kiemon5ter has left. 04:17:20 -!- c00kiemon5ter has joined. 04:17:21 You could do something like (\n -> 1 / (1 + 2**(-n))) 04:17:31 -!- Nisstyre-laptop has quit (Ping timeout: 245 seconds). 04:17:43 > (\n -> 1 / (1 + 2**(-n))) (1/0) 04:17:45 1.0 04:17:51 > (\n -> 1 / (1 + 2**(-n))) (-1/0) 04:17:52 0.0 04:17:52 -!- c00kiemon5ter has left. 04:18:14 That just moves the pole to 4.something * i 04:20:04 pole? 04:20:42 Bike: But we're only concerned with reals here 04:20:44 what pole? 04:20:56 Oh that pole 04:20:56 Sgeo: Where 2^-n = -1 and you get infinity again. 04:21:10 The nazis moved millions of poles 04:21:24 The Nazis were known real analysts. 04:26:02 Analyst? 04:26:12 like real analysis. 04:26:44 don't google "intro to anal" 04:27:07 thanks 04:27:35 The advanced classes aren't much better 04:34:23 research frontiers in anal 04:36:07 -!- Mathnerd314 has joined. 04:55:42 -!- WeThePeople has quit (Quit: Leaving). 05:02:34 This is my idea what a register in a hardware NSF might do, which the expansion byte in the NSF header is written to: 05:02:35 If bit2 is set, the memory from $8000-$DFFF becomes read/write (except main routine ROM which is always read-only), otherwise it is read-only. If bit0 is set, VRC6 audio will play, otherwise it will be muted. If bit1 is set, VRC7 audio will play and otherwise is muted. If bit5 is set, Sunsoft 5B audio is played and is otherwise muted. Other bits (bit3, bit4, bit6, and bit7) are ignored. 05:03:21 I think it is compatible with the .NSF specification, isn't it? 05:10:56 This is something someone did to deter spambots on MediaWiki: http://wiki.nesdev.com/w/index.php?title=Talk:Nesdev_Wiki&action=edit They say it worked for sixteen months. Does it work for you? 05:31:05 -!- monqy has quit (Quit: hello). 05:38:14 Sgeo: I am. 05:41:40 You are? 05:54:19 how strange it is to be anything at all 05:57:32 -!- ogrom has joined. 05:58:05 O, well......... 05:58:11 hi zzo38 05:58:17 Did you ever figure out my CodensityAsk thing? 05:58:44 shachaf: Yes I think I do know what that one does. 05:59:23 Oh? What does it do? 05:59:47 I think it is difficult to explain but possible to understand. 06:01:33 (But it is a monad; (CodensityAsk w) is always a monad regardless of what w is.) 06:22:14 o.O 06:22:17 http://www.reddit.com/r/todayilearned/comments/17rpkr/til_when_you_tell_someone_a_goal_or_thing_youre/ 06:22:22 I have _got_ to stop doing that then 06:23:17 chemically satisfies your brain 06:29:05 -!- copumpkin has quit (Ping timeout: 252 seconds). 06:30:03 -!- copumpkin has joined. 06:31:49 Actually, I remember BYOND actually warned against doing that exact thing 06:32:08 (Talking about what you're doing before you do it) 06:32:16 "Make games for free with BYOND. Easy to learn, but powerful. Play online & multiplayer: RPGs, action, strategy, board games, and more!" 06:34:10 For what it's worth, it does use a (custom) programming language. It's not some point and click nonsense 06:35:12 Oh, is that actually what you meant? 06:35:37 I didn't think game makers told you about your life choices... 06:38:47 "Become a BYOND Member to add a game" 06:38:55 ....adding games to my hub is no longer free 06:38:56 * Sgeo sads 06:39:31 I wonder if there are video games in Ada. It must have graphics stuff for the gubmint, right 06:51:05 -!- Bike has quit (Ping timeout: 252 seconds). 06:55:25 -!- Bike has joined. 06:56:26 You can look see if video game in Ada, or write one if you know how to program Ada 06:56:43 Since you can use Ada with GNU compiler 07:16:56 -!- ion has quit (Ping timeout: 252 seconds). 07:17:42 -!- Patashu has joined. 07:19:55 http://zzo38computer.org/img_14/uselessness_rpg.png It isn't very good, you cannot even make a attack which has a script on it, which is terrible. 07:20:09 kmc: Do you know a lot of things about subtyping? 07:20:32 -!- Patashu has quit (Client Quit). 07:20:46 -!- Patashu has joined. 07:20:53 -!- Patashu has quit (Client Quit). 07:20:55 * Sgeo guesses that Scala people would 07:21:09 Scala people have their own problems. 07:21:32 Such as? 07:22:41 Why are you asking about subtyping? 07:22:48 Because I want to figure it out. 07:23:14 What's to figure out, you have a type and then you have a bigger type. And it makes everything less computable but whatever. 07:23:40 Bike: If A is a subtype of B, which one is bigger? 07:23:51 B 07:24:13 If I have e.g. class Foo { A a; }; class Bar : Foo { B b; };, is Bar a subtype of Foo? 07:24:34 (Such that you can give a Bar to a thing that wants a Foo.) 07:24:59 yeah, that's yet another usage of the term "polymorphism". 07:25:21 Polymorphism? 07:25:26 I didn't say polymorphism. 07:25:43 You didn't, but what you described is subtype polymorphism. 07:25:59 Is Bar a subtype of Foo? 07:26:15 Yeah. 07:26:27 Then I don't know what you mean by bigger. 07:26:38 I normally think "bigger" means "has more inhabitants". 07:26:39 "bigger" means "includes more possible values" 07:27:05 Bar has more inhabitants thn Foo, though. 07:27:07 If I have an object of type Foo (only) and an object of type Bar then I have two Foos and one Bar. 07:27:07 If A is a subtype of B, then B includes all the values in A, as well as potentially other values 07:27:10 So that's not what Bike meant. 07:27:40 How does Bar have more inhabitants? Every Bar is also a Foo, Foo can't have less inhabitants than Bar. 07:27:48 Let's say that (A,B) <: A 07:27:49 -!- RodgerTheGreat has quit (Quit: RodgerTheGreat). 07:27:57 Inhabitant does not mean "field" 07:28:00 (0,'a') :: (Int,Char) 07:28:03 (0,'b') :: (Int,Char) 07:28:09 They both map to the same Foo 07:28:17 For every Foo, I have |B| Bars. 07:29:09 They're different Foos, even if code that expects a Foo treats them identically, I think. 07:29:21 yeah. 07:29:37 I see your point, though. 07:29:41 So Bool has infinitely (uncountably?) many inhabitants? 07:29:56 What makes you say that? 07:30:07 (Bool,Integer) <: Bool 07:30:15 Tuples are Bools? 07:30:24 * shachaf sighs. 07:30:42 Bike, the idea is that you subtype from Bool, to get a thing that acts like a Bool but has other properties 07:30:43 class Hi { Bool x; }; -- Hi has infinitely many inhabitants? 07:30:43 I guess 07:31:43 shachaf: I suppose at that point you have to clarify your notion of distinctness. "low-level" style extensional equality (I allocate Hi(true) twice and they're different) would mean infinitely many inhabitants. 07:32:15 I'm not talking about pointer equality here. :-( 07:32:15 But looked at intensionally you're right, there are only two His, and a subtype could possibly have more distinctiveness. 07:32:26 OK. 07:32:41 I don't think you can tell anything about |A| <=> |B| given A <: B 07:32:47 I suppose the latter is more common in type theory but hey guess what I'm shit at type theory. 07:32:59 How often does type theory even use cardinalities? 07:33:22 You should ask this question on #scala 07:33:24 Who knows? 07:33:36 So, to rephrase my original silly way of putting it. 07:34:18 or rather rethink. A subtype has more distinctiveness than its parent type, in that operations can be defined that act differently on objects of the subtype that are the same as far as operations on the parent type are concerned. 07:34:33 Bike: Can I say that A <: Either A B? 07:35:18 As I understand it Either is a functor that takes things away. In the same way Maybe Foo isn't just Foo plus nothing, it's made distinct. 07:35:41 that is, Either A B is a /disjoint/ sum of A and B, not a union. 07:35:56 Right. 07:36:03 So every A maps to an Either A B 07:36:19 -!- ion has joined. 07:36:19 So, no you can't say A is a subtype of Either A B, is what I mean. 07:36:28 Why not? 07:37:18 Because Either maps its two types to a distinct category from vanilla types. 07:37:45 And (A,B) is distinct from vanilla A 07:37:53 yes. 07:38:03 We have an injection Left : a -> Either a b 07:38:26 Sure. 07:38:40 OK, what properties should a subtype have that this doesn't? 07:39:12 If A <: B then anywhere a B can be used an A works just as well, to put it coarsely. 07:39:31 This is pretty obviously not true of A and Either, yeah? 07:39:45 Why? 07:39:57 If your function takes (Either A B), I can pass it my A. 07:40:07 A static typing system might prevent a direct use, but there's a simple transform you can do on the A to get Either A B 07:40:20 Wait, really? I thought you couldn't do that in Haskell. 07:40:33 Like you'd have to pass a Left A or something... 07:40:33 No, it won't be implicitly converted. 07:40:40 Although, considering that the transform doesn't work the other way, maybe the fact that it doesn't work the other way excludes being able to call it a subtype? 07:40:40 That's also true for (A,B) <: A 07:40:49 The point is that the relationship is there. 07:40:57 * Sgeo isn't sure 07:40:59 (A,B) <: A isn't true either. 07:41:23 Sgeo: no, just having a bijection isn't enough for type equality or anything either 07:41:28 Why not? 07:41:42 -!- DHeadshot has joined. 07:42:20 Because a tuple of A and B can't be used everywhere an A can be used. (You'd have to "extract" the A first.) 07:42:33 23:24 yeah, that's yet another usage of the term "polymorphism". 07:42:49 I don't care about polymorphism. I'm fine being explicit about conversions from a subtype to a supertype. 07:43:03 Polymorphism is like the whole point of subtyping, though. 07:43:32 If you just want injective morphisms or whatever you can do that without subtyping. 07:43:47 is "morphism" a word that means "function" here 07:43:56 sure, whatever. 07:44:06 This isn't about Haskell. 07:44:11 I know. 07:44:20 Obviously Haskell doesn't have *any* subtyping, and it has *no* implicit conversions. 07:44:25 right. 07:44:52 But it still makes sense to talk about how (A,B) could <: A, doesn't it? 07:45:02 Scala has implicit conversions 07:45:39 You could, yes, sorry. 07:45:47 (Not really for this case so much, though, although I guess you could, but that would be dumb)' 07:45:49 I'm used to nominal subtyping, I guess. 07:46:04 This is extremely nominal subtyping. :-) 07:46:09 I'm specifying the relationship here. 07:46:28 Anyway, the interesting thing is that the function :: (A,B) -> A *isn't* enough to specify the subtyping relationship. 07:46:53 If you have a function that takes a mutable A, and I pass it a mutable (A,B), it can mutate it just fine. 07:47:16 Is this reaching around to lenses? 07:47:23 Everything is lenses. 07:55:34 except for monoids :D 07:55:57 imo lenses should have generic monoid traversal 07:56:10 imo they do 07:56:56 good 08:02:17 Catching exceptions of pure functions in Haskell violates the Matthew 6:3 rule. I would rather suggest a macro (if (x ->| y) is the type of macros that take an expression of type x and result in a value of type y) where catchPureErrors :: x ->| IO (Either String x); or something like that. 08:06:22 If it's a pure function it shouldn't throw exceptions. 08:06:27 (/) is an abberation 08:06:34 and an abomination 08:06:44 (/) doesn't throw exceptions. 08:07:19 :t try 08:07:21 Not in scope: `try' 08:07:27 :t Control.Exception.try 08:07:29 GHC.Exception.Exception e => IO a -> IO (Either e a) 08:07:53 > try (return $ 1/0) 08:07:55 Not in scope: `try' 08:08:02 > Control.Exception.try (return $ 1/0) 08:08:04 Not in scope: `Control.Exception.try' 08:08:10 I know it shouldn't throw exceptions, but it does, so that is why I suggest, make it a macro instead. 08:08:16 uh 08:08:34 > Control.Exception.try (return $ 1/0) 08:08:37 Not in scope: `Control.Exception.try' 08:08:39 :( 08:08:46 > 1/0 08:08:48 Infinity 08:09:00 > 1/0 :: Integer 08:09:03 No instance for (GHC.Real.Fractional GHC.Integer.Type.Integer) 08:09:04 arising f... 08:09:11 > 1/0 :: Int 08:09:11 You cannot run I/O in lambdabot; use your own computer or use HackEgo or something. 08:09:13 No instance for (GHC.Real.Fractional GHC.Types.Int) 08:09:13 arising from a use o... 08:09:13 -!- monqy has joined. 08:09:22 hi monqy 08:09:27 does tapl talk about subtyping 08:09:27 > 1/0 :: Rational 08:09:29 *Exception: Ratio.%: zero denominator 08:09:32 hi?????? 08:09:33 There. 08:09:34 shachaf: near the end. 08:09:45 monqy: tell me about subtyping?? 08:09:50 are you "an expe"rt 08:09:50 ok 08:09:55 what do you want to know about it 08:10:00 i know.....some stuff..... 08:10:12 perhaps enough?? perhaps not 08:10:17 depends on what you want to know about it 08:10:40 like i'm no expert on intersection/union types but i know about other stuff 08:12:23 monqy: well uhh....... 08:12:29 so what kinds of subtyping are there 08:12:43 there's a sort of subtyping thing for products right?? 08:12:49 where you can say (a,b) <: a 08:12:54 and also one for sums?? 08:12:59 where you can say a <: Either a b 08:14:41 I think you can say that (a) is less than or equal to (Either a b) 08:14:42 uhh you can do that sort of thing if you want to....the treatment i'm familiar with does it with subtyping for records and variants rather than implicitly doing injections/projections for...semantic reasons... 08:16:01 ok can you explaiin that treatment a bit........ 08:16:08 like {l1: a, l2: b} <: {l1: a}; <: 08:16:21 is this "structural subtyping".............................. 08:16:48 anyway ok maybe i'll try "the monqy treatment" for a bit?? 08:16:50 when you're working with the theory you usually deal with structural typing always, since it's cleaner 08:16:57 -!- asiekierka has quit (Excess Flood). 08:17:11 so now let's add mutability "for fun" 08:17:26 and the full treatment that way is just an extension of that for arbitrary width and you can have the types of the stuff change as well 08:17:29 since covariance 08:17:41 if foo accepts {l1: a}, i can pass it {l1: a, l2: b}, and it can mutate the l1 part 08:17:44 right?? 08:18:09 but for variants it ""doesn't work"" that way 08:18:28 oh if you get into that territory you have to make the fields invariant i think so disregard what i said about covariance 08:18:46 but it's that a is a subtype of a|b, not the other way 08:18:49 well sure you have to get invariance with mutability 08:19:16 Bike: right but if foo operates on a|b i can't pass it an "a"!! 08:19:23 because it might mutate the variant to l2? 08:19:50 no? 08:19:56 might... what? 08:19:58 what do you mean 08:21:01 well if you have a mutable foo : 08:21:06 you can mutate it from l1 to l2 08:21:07 right?? 08:21:16 what do you mean "mutate it from l1 to l2" 08:21:30 oh, i see 08:21:32 i don't know :'( 08:21:36 what should i mean 08:21:42 change the object from being an a to being a b 08:21:48 how does mutability + variants work 08:22:23 that seems like a weird mutation though? maybe you just say 'nope you can't do that' and that's that 08:22:27 wwweeeeeeeelllllll 08:22:38 the treatment im used to for mutability is sort of 08:22:40 "explicit" 08:22:45 which makes this nice 08:23:12 you'd have something like ref(a|b) and then since ref(t) is invariant in t............ 08:23:48 -!- asiekierka has joined. 08:23:55 (answer: you don't get the "bad subtyping") 08:24:36 if you don't want to put explicit "ref's" over everything then just pretend there's invariance everywhere anything could go hay wire 08:25:02 okay so what happens with th ref 08:25:10 when you have the product subtype 08:25:32 well ref(t) is invariant in t in general 08:25:35 right 08:25:42 so that's "not good enough????" 08:26:17 are you looking for an answer to something more specific or 08:26:23 for example in "some languages" if you have class Foo { A a; }; class Bar : Foo { B b; }; you can pass a mutable Bar to something that expects a mutable Foo?? 08:26:26 right 08:26:38 and that seems "valid to me" 08:27:32 is B <: A here 08:27:50 no 08:27:57 it's an """"additional field"""" 08:28:02 oh 08:28:22 so this is like (A,B) <: A 08:28:22 i see now, that's "weird snytax" not "inconsistent syntax 08:28:23 " 08:28:40 sorry for using weird syntax 08:29:40 monqy: so do you see what i mean now.... 08:29:43 -!- ion has quit (Ping timeout: 245 seconds). 08:29:46 you can't do this with ref 08:29:51 because it has to "be invariant" 08:30:22 -!- Bike has left. 08:30:28 mhm 08:30:46 so the "point is":: this doesn't work for "sum subtypes" 08:30:57 right? 08:31:47 im..,,,.thinking about it 08:32:30 monqy: anyway my "point is" that the kind of mutability i gave for product-subtypes is like lenses 08:32:38 and this kind is like prisms 08:33:03 ok 08:33:50 and if you think about it profunctor-lenses and simple-lenses are related to "substitutatutatatututability" 08:33:54 because you have 08:34:06 forall p. (CONSTRAINTS p) => p A -> p S 08:34:17 if there are no constraints then you have leibniz equality 08:34:32 and then you "add on" more constraints to get lenses/prisms/"other stuff" 08:34:43 mhm 08:35:03 wtf is a meatpacking district 08:35:13 a district that packs meat 08:35:13 monqy: so what does "that mean" 08:35:20 Some job offer is talking about how they're located in a glamorous meatpacking district 08:35:39 s/glamorous/hip/ 08:35:45 But they use the word glamorous elsewhere 08:35:52 they pack hip meat 08:36:12 is this in new york 08:36:16 yes 08:36:23 wow 08:36:28 It's an entry level position 08:36:31 that's a pretty hip district imo 08:36:41 "- Swanky and fashionably bright Manhattan loft space in the hip meatpacking district." 08:36:59 wow 08:37:03 sounds swanky 08:37:18 I should stop making fun of potential future employers in publically logged chat 08:37:29 Although I could never have a bad word to say about Transcriptic, I think 08:37:30 why? 08:37:33 -!- ion has joined. 08:37:33 they're going to make fun of you 08:37:34 Except they're too far away :( 08:37:43 Are you nondualist? 08:37:45 shachaf, yeah, but not where I'm going to see 08:37:49 zzo38: yes and no 08:38:05 shachaf: Please be more specific. 08:38:25 zzo38: what's a nondu alist. 08:38:40 monqy: Did you go see NANDA? 08:39:31 what's nanda 08:39:49 http://nandatown.com/ 08:40:01 they were in los angeles a few months ago/?? 08:43:17 shachaf: anyway i think this is something like ref(a,b) ~ (ref a, ref b) but ref(a|b) !~ for the reason you described 08:43:55 id have to think "a bit more" to come up what with it's isomorphic to but "probably lens has the answer already so" 08:44:07 Grrr... it seems like the only way to get this regex to work is to reverse the string, regex, then reverse again :-( 08:44:31 monqy: maybe it does but i don't know it :"( 08:44:58 <: ref(a|b) at least, i think, if you want to get "real fancy" 08:45:35 it does? 08:45:52 hm 08:46:18 it's the standard "prism thing" isn't it 08:46:43 maybe i forgot a detail 08:46:44 "woops" 08:46:52 what thing 08:47:03 "you're probably right but im not sure what you mean" 08:47:07 im going to think about it a bit more and then respond 08:47:19 ok 08:49:13 Just applied 08:49:27 oh yeah i forgot a case i think 08:49:30 woops woops 08:50:18 or: Did I??? 08:51:47 inj (Left a) = {view: Left (view a), set (Left a'): set a = a'; set (Right b'): a} 08:51:55 inj (Right b) similar 08:51:58 shachaf: look about right? 08:52:06 So maybe I'll get a "swanky" job with "swanky" Mac Pros 08:52:11 shachaf: "very pseudocode" 08:52:14 In the meatpacking district 08:52:16 wait what's inj 08:52:21 How ... fashion...y 08:52:30 visual....ness.....glamour.....stuff 08:52:35 shachaf: injection from into ref(a|b) 08:53:08 oh 08:53:50 i'm not completely sure i understand your pseudocode but "does it work the other way around" 08:54:05 and is this meant to be sort of prismlike or what 08:55:25 well the setting is like uhh what's it called 08:55:40 i -remember- there being a lens thing like that 08:55:44 but i forget what it's called 08:56:02 alongside outside inside within without 08:56:06 "one of that crowd???????" 08:56:33 hmmm maybe not 08:56:59 no it's not 08:57:19 which lens are you thinking of 08:58:18 im probably actually thinking of something in something more general than prism but it acts like this for prisms 08:58:38 Setter perhaps? 08:59:00 wait what does it do 08:59:22 > Left "hi" .~ _Left "there" 08:59:23 Couldn't match expected type `Control.Lens.Setter.ASetter 08:59:24 ... 08:59:27 oh no~~~~ 08:59:29 !!!!!!! 08:59:39 oh right 08:59:39 > Left "hi" & _Left .~ "there" 08:59:42 Left "there" 08:59:44 yes 08:59:45 and 08:59:58 > Right "hi" & _Left .~ "woops!!" 09:00:01 Right "hi" 09:00:04 it's that sort of thing 09:00:24 well sure a prism is a setter 09:00:50 (but note that maybe a prism should actually be an unprism??) 09:00:53 (to match up with lens) 09:00:56 I love prisms. They are so easy. 09:00:57 (if you're talking about subtyping" 09:00:58 ) 09:01:08 (in which case an unprism is not a setter. though it's an unsetter) 09:02:59 anyway uh the idea is that from a you can get a ref that when you look at it you look at whatever you put in, and when you try to set it you only go through with the setting if you're setting the "right thing" 09:03:03 -!- DHeadshot has quit (Ping timeout: 245 seconds). 09:03:18 right 09:03:19 whereas you can't really go the other way 09:03:28 that was my idea from before 09:03:33 yes.. 09:03:35 where you pass the supertype 09:03:39 but it doesn't really work.................. 09:03:49 oh what's your idea from before 09:03:56 i "forgot" it 09:04:05 maybe i didn't say it 09:04:23 it's just that when you have a product, i.e. a thing you can make a lens for, you can pass in a subtype 09:04:38 but when you have a sum ie something you can make a prism for, you can pass in a supertype 09:04:45 because that way you still get "over" 09:05:39 yeah 09:05:59 this conforms to my intuitions,,,,at least,,,,,, 09:06:15 but then how do you actually use it 09:06:53 because i can't just write function Foo(A a) { a."mutatify"(); } and then pass it (Either a b) 09:07:04 well not if it has any other "side effects for instance'. 09:07:33 are we talking about lenses/prisms or mutability :( lenses/prisms are a lot easier to think about imo 09:07:34 because it expects there to be an a 09:07:50 monqy: imo too but i want to see what these concepts "translate to" with subtyping 09:07:55 "and maybe vice versa" 09:08:07 imo if you do Foo(Right x) then Foo won't be called at all. 09:08:16 otherwise it doesn't really make sense?? 09:08:28 well yeah that's the exact same thing you get with .~ isn't it 09:08:28 but this way it doesn't really make sense either 09:08:43 what doesn't make sense about it 09:08:44 well sure but it's kind of weird from the perspective of "mutability and subtyping" 09:08:57 because are you calling Foo or aren't you 09:12:06 what sort of perspective of "mutability and subtyping" is this? in "mutability and subtyping" languages i know of it doesn't work like this :-) you don't have sum types like that, you don't pass the supertype yada yada 09:12:25 that example would be a "downcast" and you'd hit a "runtime failure" 09:12:29 i know but i was trying to figure out like "what if it would??" 09:12:40 monqy: prisms are a lot like a "downcast" with a "runtime failure" 09:12:53 Prism' s a = (a -> s, s -> Maybe a) 09:12:55 except prisms are well-behaved and easy to think about 09:13:25 from the "what if it would" perspective of "analogy by prisms" it'd work in the "weird" way "oh well" 09:13:35 i don't think there's anything wrong with that? 09:13:49 well ok 09:13:52 The FYB hill is broken :-( 09:13:53 so how would sums work with subtyping 09:14:05 i guess usually they have "open sums??" 09:14:24 well that doesn't really work 09:14:28 as in if you have a ref what's that isomorphic to? 09:14:37 or 09:14:40 well that's one question yes 09:15:05 the answer is "i'd have to think about it" 09:15:18 good answer 09:17:00 monqy: btw should we use Unprisms instead of Prisms 09:17:06 i guess "probably not" 09:17:08 what's an unprism 09:17:14 what if you used both 09:17:16 it's a p t s -> p b a prism 09:17:25 monqy: oh that reminds me i have a lens question 09:17:34 what do lenses and unprisms have in common 09:17:39 what's their "common superclass" 09:18:06 class Lensy p where lensy :: p a b -> p (r,a) (r,b) 09:18:19 class Unprismy p where unprismy :: p (r,a) (r,b) -> p a b 09:18:22 errrrr 09:18:23 ignore that 09:18:27 class Lensy p where lensy :: p a b -> p (r,a) (r,b) 09:18:41 class Unprismy p where unprismy :: p (Either r a) (Either r b) -> p a b 09:18:55 i think these two have a "common superclass" (other than profunctor) 09:19:17 monqy: simple version: 09:19:23 class Lensy p where lensy :: p a -> p (r,a) 09:19:33 class Unprismy p where unprismy :: p (Either r a) -> p a 09:19:51 h m 09:21:16 also there's Unlensy and Prismy 09:21:23 which are "analogous" 09:21:50 do you have an "analogous" question about unlensy and prismy or is that "well known" or "uninteresting" 09:22:11 i have an "analogous" question 09:22:26 Lensy and Unprismy both have a Forget r instance. 09:22:39 And Unlensy and Prismy both have a Tagged instance 09:23:11 (and instance Lensy p => Unlensy (Un p a b), and instance Unlensy p => Lensy (Un p a b), naturally.) 09:23:23 (where newtype Un p a b s t = Un { unUn :: p t s -> p b a }) 09:24:20 i think Lensy/Unprismy (or Unlensy/Prismy)'s superclass might be interesting "from a subtyping perspective too" 09:24:30 (but that's not where the question came from) 09:33:32 monqy: any other instances for Unprismy btw 09:33:44 other than Forget and Un (and Neither) 09:33:53 data Neither a b = Neither 09:36:00 O! It is a category. 09:36:38 What is? 09:37:50 id = Neither; Neither . Neither = Neither; 09:38:11 Oh, Neither is. Sure. 09:38:14 Neither is a lot of things. :-) 09:39:34 zzo38: What constraints on p do you need to make (Un p a b) a category? 09:43:27 I don't know. 09:47:46 My computer's so slow I can't even turn the volume up 09:49:49 -!- monqy has quit (Quit: hello). 09:49:51 -!- Taneb has joined. 09:50:15 pactl set-sink-volume 0 65537 09:53:39 Did you know Hexham has a Village Band? 10:37:32 `? hexham 10:37:37 Hexham is a European town. There are nine people in Hexham, and at least two of them are in this channel. Taneb looks after the ham. 10:39:54 Instead of sleeping I am watching QI. I am brillant. 10:51:24 * impomatic has been to Hexham :-) 10:54:45 Who hasn't? 10:58:58 I haven't 11:03:06 I might not count as a who though 11:06:48 I'm afraid you don't. 11:06:51 Sorry. :-( 11:11:12 Jafet: http://en.wikipedia.org/wiki/Hexham 11:11:21 shachaf: I haven't been to hexham 11:11:52 Way too far up north 11:12:54 in finland 11:15:45 I haven't been to Hexham either, even though I live in Finland. *shame* 11:16:06 `?hh finland 11:16:08 ​/hackenv/bin/?hh: line 1: u: command not found 11:16:17 `cat bin/?hh 11:16:18 ​? "$@" | perl -pe 's/([aeiouy])([bcdfghjklmnpqrstvxz])/$1h$2/ig' 11:16:45 Heh, someone made a file called "u", I see. 11:17:13 `run sed -i -e 's#^#/#' bin/\?hh 11:17:16 No output. 11:17:20 `?hh finland 11:17:21 ​/hackenv/bin/?hh: line 1: /?: No such file or directory 11:17:30 And I mistake / for a \. 11:17:32 (Impressive.) 11:17:41 `run sed -i -e 's#^/#\#' bin/\?hh 11:17:42 sed: -e expression #1, char 7: unterminated `s' command 11:17:45 `run sed -i -e 's#^/#\\#' bin/\?hh 11:17:48 TOO HARD. 11:17:49 No output. 11:17:52 `?hh finland 11:17:54 Fihnlahnd ihs a Euhrohpeahn couhntry. Thehre ahre two peohple ihn Fihnlahnd, ahnd aht leahst nihne ohf thehm ahre ihn thihs chahnnehl. Cohruhn drihvehs the buhs. 11:18:04 `hyfinate finland 11:18:35 No output. 11:19:21 `run \? finland | hyfinate 11:19:23 Fin-land is a Eu-ro-pe-an count-ry. The-re a-re two pe-op-le in Fin-land, and at le-ast ni-ne of them a-re in this chan-nel. Co-run dri-ves the bus. 11:19:41 impomatic, what were you doing in Hexham? 11:19:50 `run \? Taneb | hyfinate 11:19:52 Ta-neb is not el-li-ott, no mat-ter who y-ou ask. He al-so isn't a rab-bi alt-hough he has pre-ten-ded in the past. (see al-so: d-mo-du-les) 11:19:55 `run words --eng-all 20 | hyfinate 11:20:01 su-ber a-tor e-mild er-ry-e asch-ro-duz-co haul-tins-hi wi-de mo-ni-a land-res-sibl ha-ga-nin ne-cei pu-bis-sab-le ga-lam-ber sixt bla en-ta-mi-o wor-det to-pi-do ge-ney al-pi-or 11:20:16 ...this makes me read it in a Welsh accent 11:21:02 Taneb: I can't remember... Probably just taking a look around, nothing memorable! Also visited a reenactment at Corbridge. 11:21:24 There are reenactments in Corbridge? 11:21:33 I've seen a few in Hexham, but not Corbridge 11:21:44 Well they called it a reenactment. It was more like Romans vs English Civil War. 11:21:59 Is that a Finnish hyphenation attempt, actually? 11:22:09 `run words --finnish 15 | hyfinate 11:22:11 mul-le kä-hei-jai-si mah-ta-viin puh-ku-mak-se-si reik-kai-te e-lis-tauk-sen-ne a-ge-ner-to-vit-tam-me ver-sy-vi-än-nös-sä-ni tun-tel-tä y-hyy-dyl-le-ni tai-sem-pan-ne in-tä-vin vas-sa-si kil-lan-sa as-ta-ni 11:22:57 fizzie: is hyfinate just hh but with the h's replaced with hyphens? 11:23:31 Also visited Birdoswald nearby where they'd set up a Roman camp and did some demonstrations, but no battle. 11:23:40 quintopia: It's not quite the same. 11:23:45 `cat bin/hyfinate 11:23:46 ​#!/bin/sh \ exec perl -CS -Mutf8 -pwe 'my$vow=qr/[aeiouyäö]/i;my$con=qr/[bcdfghjklmnpqrstvwxz]/i;1while s/($vow$con*)($con$vow)/$1-$2/g;1while s/a[eoyäö]|e[aoäö]|i[aoäö]|o[aeyäö]|u[aeyäö]|y[aeouä]|ä[aeouö]|ö[aeouä]/my@s=split"",$&;$s[0]."-".$s[1]/egi' 11:23:55 wow 11:24:09 fizzie: It should be correct if the input doesn’t have compound words or foreign words. 11:24:28 I.e. anything that would require dictionary lookups. 11:24:31 ion: I'm sure there are some exceptions to every rule somewhere. 11:25:37 fizzie: does it correctly break finnish words at syllables? 11:26:03 It should. 11:26:04 It seems to do a pretty good job. 11:27:42 i wonder if it's possible to do it in english without just looking it up in a syllable dictionary 11:27:46 ion: http://www2.lingsoft.fi/doc/d-finhyp9.html seems to suggest you do need a bit more rules to be entirely correct. 11:28:39 -!- Frooxius has quit (Ping timeout: 260 seconds). 11:29:30 ok 11:30:05 I guess compound words might account for a lot of the complexity, though. 11:30:18 At least based on these TeX Finnish hyphenation rules. 11:30:51 `run echo maauimala | hyfinate # wovels across the word boundary go wrong, for example 11:30:53 maaui-ma-la 11:31:02 `run sed -i -re 's/bcdfghjklmnpqrstvwxz/b-df-hj-np-tv-xz/' bin/hyphenate.fi 11:31:05 No output. 11:31:18 Yeah, as i said, it doesn’t support compound words at all. 11:31:18 wovels eh 11:31:41 I keep mistyping that. 11:31:50 `run words --finnish 15 | hyphenate.fi 11:31:53 val-vit-täm-me hel-lyt-tu-val-ta kut-ta-vit-ta-mil-lam-me o-hen-tu-vik-sel-lem-mil-ta i-lo-pet-teik-si tul-ke-väm-mäs-sä loi-si-suu kaa-mil-tä hi-ot-ta-ni pom-paat-ti-sem-piin lis-täm-mäk-se-ni si-va-mil-tään va-rot-ta kat-kim-pa-na huo-len-ne 11:34:11 Is hyphenate.fi different from hyfinate? 11:34:28 I named it hyphenate.fi, shachaf (IIRC) symlinked it to hyfinate. 11:34:43 Yes, I symlinked it to hyfinate in IRC. 11:35:04 -!- sirdancealot7 has quit (Ping timeout: 240 seconds). 11:35:29 help I was compelled to click that as though it was a link 11:35:46 Silly, it doesn’t even have a protocol. 11:37:27 Of course there are some compound words where the word break has multiple valid locations, those are arguably impossible to get right without some mind-reading hardware. (The TeX hyphenation rules mention kaivos|aukko vs. kaivo|saukko as an example.) 11:38:01 Fortunately Perl has readmind() for that. 11:39:06 * Sgeo is sure J has a 2 character symbol for that 11:40:03 I’d be interested to see a non-compound Finnish word hyphenate.fi actually doesn’t get right. 11:41:31 What's a non-compound Finnish word? 11:42:05 Kakka is a Finnish word that is not a compound word, for instance. 11:47:38 -!- sirdancealot has joined. 11:54:23 -!- sirdancealot has quit (Excess Flood). 11:55:48 -!- sirdancealot has joined. 12:04:30 -!- carado has joined. 12:05:51 -!- sirdancealot has quit (Ping timeout: 245 seconds). 12:09:20 -!- Phantom_Hoover has joined. 12:15:05 -!- sirdancealot has joined. 12:21:43 `run echo säie | hyfinate # ion: should be säi-e according to Karjalainen, Sulkala, "Finnish (Descriptive Grammar)", 1992. 12:21:46 säie 12:23:06 `run echo rakkaus rakkautta | hyfinate # should be rak-ka-us rak-ka-ut-ta according to the same book. 12:23:09 rak-kaus rak-kaut-ta 12:24:48 `run echo huouimme | hyfinate # ditto huo-ui-mme 12:24:50 huouim-me 12:25:35 (Examples picked from 3.2.5.1. Syllabilification of Medial Units and Clusters, the "following additional rules can be mentioned" list.) 12:27:15 Er, s/ui-mme/uim-me/ in the last comment, but anyway. 12:30:42 So, using ORDER BY doesn't prevent or change the order of side effects in the result expressions and causes them to be evaluated even in the case of LIMIT and OFFSET, but WHERE does prevent side effects (even in the presence of ORDER BY), but LIMIT and/or OFFSET without ORDER BY will evaluate only the rows actually returned. 12:32:40 Doing this even affects a query in which a subquery has ORDER BY, but if the outer query which is used to perform the side effects has its own ORDER BY which isn't affecting the order of the results, then it will prevent the side effect for rows not returned and will do them in the order returned by the inner query. 12:32:52 Is this understandable and/or reasonable to you? 12:33:55 Is this how the SQL specification says it should work? 12:48:22 zzo38, what sort of side effects? In a select statement? 12:50:34 I mean functions that might be called in the results of a SELECT statement. 12:50:49 ah, no clue about that, never used such stuff 13:03:02 I love how SQL shouts at everyone 13:04:02 -!- RodgerTheGreat has joined. 13:33:06 -!- zzo38 has quit (Remote host closed the connection). 14:46:54 -!- azaq23 has joined. 14:51:31 fizzie: Alright, thanks for the examples. 14:56:33 SECURITY QUESTIONABLE LAYER 15:14:38 -!- FreeFull has quit (Ping timeout: 255 seconds). 15:27:25 -!- oerjan has joined. 15:28:59 -!- FreeFull has joined. 15:37:57 Bike: If A is a subtype of B, which one is bigger? 15:38:07 i thought we'd clarified that yesterday 15:38:24 What was our conclusion? 15:38:53 Which TYPE is bigger, or which INSTANCE is bigger? :) 15:39:15 Instance of what? 15:39:23 Instance of those types. 15:39:24 the answer is: it has nothing to do with number of members, because when A is a subtype of B that _is_ a subset, then (B -> C) is a subtype of (A -> C) which is _larger_. 15:39:45 oerjan: Right. 15:39:49 That's my answer too. 15:39:50 Right, if we're talkin' types, then B is larger than A. 15:39:56 No it's not. 15:40:06 "Instance of a type" :( 15:40:44 lol, this is fun. 15:42:08 `run type love || (printf '%s\n' '#!/bin/sh' 'printf "i love %s. they are so easy." "$*"' >bin/love && chmod 755 bin/love && love instances) 15:42:13 bash: line 0: type: love: not found \ i love instances. they are so easy. 15:42:21 `love whores 15:42:24 i love whores. they are so easy. 15:42:46 * shachaf sighs. 15:42:48 `rm bin/love 15:42:51 No output. 15:43:31 D-: 15:44:18 help 15:44:28 elliott is destroying the fruits of my labor 15:44:52 ion: you are attempting to resurrect dead horses. that is evil. 15:45:17 But i love dead horses. They are so easy. 15:45:22 especially since it was a nasty horse to start with. 15:46:14 `wtf saying "they are so easy" 15:46:16 why saying "they are so easy" is like wtf 15:46:35 HTH 15:46:40 imo has FreeFull ever said a single useful thing in here ever? 15:47:51 -!- oerjan has quit (Quit: Probably.). 15:49:11 or ion 15:49:54 ion has said at least one useful thing. 15:50:34 what about shachaf 15:51:01 ion: did you seriously just look at beaky.txt to get more accurate beaky uotes 15:51:03 q 15:51:46 shachaf: I thought you were against logs. 15:52:11 Who said anything about logs? 15:52:15 I'm reading in real time. 15:52:17 {bea,mon}{k,q}y 15:52:59 beaky.txt is a log. 15:53:09 Oh. 15:53:11 That's a public log. 16:03:08 shachaf: Does it matter if the things I say are useful 16:35:27 ogrom, "HTH"? What does that mean 16:36:05 hellish taiga hapapiness 16:39:50 Hot Tasmanian Housewives. 16:53:26 hm I think Phantom_Hoover is right 16:53:39 it makes perfect sense in the context unlike your suggestion elliott 16:54:34 I like how you pinged ogrom. 16:55:35 elliott, lol oops 17:19:41 shachaf: i know a few things about subtyping 17:19:46 i know TaPL things about subtyping 17:31:08 Homo Taurus Hinensis 17:31:18 high temperature halibut 17:31:40 Henry The Hippopotamus 17:33:24 kmc: I may not be coherent enough now to talk about the things I was going to talk about. 17:33:34 So what TaPL things are there about subtyping? 17:33:40 What sorts of subtyping are there? 17:35:40 How do sums and products work out? 17:38:05 i don't remember 17:38:10 i could look them up in TaPL 17:38:13 "know" may have been an overstatement 17:38:32 i think generally (Int,String) would not be a subtype of Int 17:38:56 but you can have record systems where {a:Int, b:String} is a subtype of {a:Int} 17:40:07 you can pick something like that as your "primitive" subtyping relation 17:40:33 and then you want it to be reflexive, antisymmetric, transitive 17:41:16 and you extend the subtyping relation to function types with covariance in the return position and contravariance in the argument position 17:43:05 this is only the basic stuff, it's what i remember 17:43:14 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds). 17:45:05 -!- Phantom_Hoover has joined. 17:45:13 -!- function has changed nick to trout. 17:45:37 kmc: OK, but what about the relationship of Int and Either Int String? 17:47:21 It seems to make sense to say a <: Either a b in a similar way to the way it makes sense to say (a,b) <: a 17:47:36 These let you do different things, though. 17:47:43 Does TaPL talk about mutability? 17:48:32 i think so 17:49:15 With "product" subtypes, you add extra fields, but if f expects a mutable (a,b), I can pass it a mutable (a,b,c) just fine. 17:49:20 And it can mutate the a and b if it wants. 17:49:25 Right? 17:49:49 -!- ogrom has quit (Quit: Left). 17:49:56 yeah i think so 17:50:11 -!- Bike_ has joined. 17:50:43 But with sums you don't get that. 17:50:57 Because what if you try to mutate it from a Left to a Right or something? 17:52:08 mm 17:52:13 i haven't thought about that 17:52:39 i do know that (a <: b) => ((a,c) <: (b,c)) becomes problematic if your pairs are mutable 17:52:42 doesn't it? 17:54:23 for the same reason as for arrays/lists 17:54:28 got to go to lunch though, ttyl 17:54:29 Right. 17:54:47 kmc: Anyway I think this corresponds to lenses and prisms. 17:55:06 kmc: And I think functor/profunctor lenses correspond to Liskov substitutability. 17:55:19 But I might just be making things up. 17:57:30 -!- AnotherTest has joined. 17:57:42 Hello 18:00:33 -!- Taneb has quit (Ping timeout: 245 seconds). 18:01:21 Is it just me or are these a bit similar? 18:01:22 uncompose f g k = Un2 $ \q -> ($ q) . under _Un2 f $ \x -> ($ q) . under _Un2 g $ \y -> unUn2 k (x C.. y) 18:01:25 nip f g k = Op $ \t -> ($ t) . under _Op f $ \x -> ($ t) . under _Op g $ \y -> getOp k (x,y) 18:04:52 -!- Taneb has joined. 18:10:54 -!- Bike_ has changed nick to Bike. 18:13:11 -!- asiekierka has quit (Excess Flood). 18:21:52 -!- asiekierka has joined. 18:28:14 -!- heroux has quit (Ping timeout: 255 seconds). 18:40:30 -!- heroux has joined. 18:43:18 -!- Bike has quit (Ping timeout: 244 seconds). 18:45:14 -!- Bike has joined. 19:14:21 -!- ais523 has joined. 19:29:34 -!- atriq has joined. 19:32:35 -!- Taneb has quit (Ping timeout: 260 seconds). 19:44:45 -!- atriq has quit (Ping timeout: 256 seconds). 19:45:12 @messages 19:45:12 You don't have any new messages. 19:51:47 @messages 19:51:47 You don't have any new messages. 19:53:26 @tell ais523 hi 19:53:27 Consider it noted. 19:53:30 @tell ais523 what is up 19:53:31 Consider it noted. 19:53:35 @clear-messages 19:53:35 Messages cleared. 19:53:37 hi elliott 19:53:40 @tell ais523 wow that's impolite 19:53:41 Consider it noted. 19:53:48 @clear-messages 19:53:49 Messages cleared. 19:53:55 I've already read them as you sent them 19:54:08 @ask ais523 for advice 19:54:08 Consider it noted. 19:54:22 @clear-messages 19:54:22 Messages cleared. 19:54:23 @tell elliott hi 19:54:24 Consider it noted. 19:54:26 shachaf: that's nto a question 19:54:28 *not a question 19:54:35 btw, we should probably stop the bot abuse 19:54:43 -!- epicmonkey has joined. 19:55:13 -!- Frooxius has joined. 19:55:36 @ignore + ais523 19:55:38 Agreed! 19:55:38 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 19:55:44 @messages 19:55:44 olsner said 1m 20s ago: hi 19:56:07 elliott: huh, I didn't use lambdabot much anyway 19:56:09 * elliott waits for ais523 to try and use lambdabot so he can take the ignore off. 19:56:16 so this mostly means that if you send me messages, I won't be able to read them 19:56:48 ais523: Would I do that? 19:56:49 -!- Phantom_Hoover has quit (Read error: Operation timed out). 19:57:02 well you did earlier 19:57:10 @ignore - ais523 19:57:12 Hmm, apparently if lambdabot is ignoring you it won't notify you of new messages. 19:57:19 that makes sense 19:57:19 ais523: You have 1 new message. '/msg lambdabot @messages' to read it. 19:57:22 @admin - shachaf 19:57:24 @messages 19:57:24 elliott said 39s ago: hello 19:57:26 shachaf: Abusing your privileges!!!! 19:57:42 @admin - elliott 19:57:42 Not enough privileges 19:57:55 @admin - elliott 19:57:59 By privileges I mean non-privileges. 19:58:06 (Since you're not actually a lambdabot admin.) 19:58:10 check your lack of privilege 19:58:19 -!- atriq has joined. 19:58:24 shachaf: By the way you should undo that. 19:58:32 @undo @admin - elliott 19:58:33 Parse error at "@admi..." (column 1) 19:58:43 "if only ghc had undo notation" 19:58:57 @admin + elliott 19:59:11 "try not to abuse it this time" 19:59:51 I like how I was going to un@ignore ais523 once it gave him the message notification anyway. 20:01:07 You just fooled my IRC client into thinking un@ignore is someone's email address :( 20:01:42 AnotherTest: who knows, it theoretically could be 20:01:53 #include 20:01:56 even on the public internet, what with ICANN going crazy recently 20:01:57 Don't join it! 20:02:00 but definitely privately 20:02:04 -!- Nisstyre-laptop has joined. 20:02:05 Not sure, is ignore a DNS TLD? 20:02:14 AnotherTest: ICANN have been adding loads of new ones recently 20:02:15 Do you want it to be? 20:02:31 ICANN easily imagine it being one. 20:02:38 Meh, if you have enough money 20:02:46 ICANN is corrupt 20:03:25 -!- atriq has changed nick to Taneb. 20:03:38 Actually, I don't know of any TLD that is also a hostname mapping to an actual server 20:08:11 -!- asiekierka has quit (Excess Flood). 20:10:41 AnotherTest: "an.", I thought was one 20:10:51 although I don't think there's a webserver there, just an email server 20:11:35 -!- Phantom_Hoover has joined. 20:12:22 -!- asiekierka has joined. 20:17:53 -!- oerjan has joined. 20:20:04 -!- asiekierka has quit (Excess Flood). 20:22:22 -!- asiekierka has joined. 20:29:56 -!- AnotherTest has quit (Quit: Leaving.). 20:40:32 -!- monqy has joined. 20:50:53 -!- epicmonkey has quit (Ping timeout: 255 seconds). 21:11:18 -!- zzo38 has joined. 21:18:36 shachaf: hm back to the subtyping a moment - even if a is not a subtype of Either a b and (a,b) is not a subtype of a, types that are internally _represented_ identically to those can be subtypes of each other. so subtyping is something independent of representation (and cardinality). 21:19:33 basically, if something is a subtype at a higher level, there needs to be a conversion of the internal representations. 21:20:10 which needs be neither injective nor surjective. 21:20:18 there's ways to work subtypey-coercions into the semantics yes 21:20:58 i slightly understand scala uses implicit coercions a _lot_ to get advanced type features 21:25:58 But it still makes sense to talk about how (A,B) could <: A, doesn't it? <-- in an OO system where almost any type means "these methods exist, and there might be others because of subtyping" something resembling (A,B) <: A is sort of necessary 21:26:45 i believe ocaml's type system makes these things more explicit than most... 21:27:10 although i only vaguely recall the specifics. 21:27:46 but you have types that _do_ mean simply "methods of these names and types exist". 21:28:26 "(and there might be others)" 21:29:00 which means it has structural types for objects. 21:30:03 Did you guys work out the difference between a cosubtype and a supertype yet 21:30:32 i have no idea. 21:32:55 Taneb, what is a cosubtype 21:33:03 I dunno 21:33:07 oh okay 21:33:11 I think shachaf was talking about them the other day 21:36:28 -!- carado has quit (Ping timeout: 246 seconds). 21:37:07 -!- Arc_Koen has joined. 21:42:36 so what definition of coref would satisfy ~ coref ? 21:42:51 (nontrivial of course) 21:43:19 something dual to mutability... 21:47:32 hi oerjan 21:47:36 I bet it would have to do with prisms. 21:48:03 oerjan: coref a = ref a -> r for some r? 21:48:22 r | ref b -> r> ~ (ref -> r) 21:48:36 That needs mapping over refs, though. 21:48:49 i don't think that is true. 21:49:38 there is nothing preventing the function on the right from storing both a's and b's into the ref in sequence 21:51:40 maybe if ref's are implicitly wrapping things into State monads, then coref's should be wrapping things into Costate comonads 21:51:59 *-' -' 21:53:32 that is, maybe corefs don't live in the kind of imperative language that is modeled with monads at all 21:57:33 So you have a comonad CoST? 21:58:19 ...i was just thinking that thought 21:59:04 * elliott is terrified of what the equivalent of runST looks like. 22:00:35 oerjan: btw although (Ref a, Ref b) is like Ref (a, b) they are *not* the same in Haskell 22:00:40 i.e. there is no function either way. 22:01:07 you need to wrap it up with data Ref a = forall b. Ref (SomeRef b) (a -> b) (b -> a) 22:01:16 so I assume the same would apply to Coref 22:03:04 what is a Coref? 22:03:23 and what is the use of it 22:03:45 i totally read 'corefs' as 'core fs' 22:04:05 obviously, too much systems and not enough haskell for me :( 22:07:04 ) fungot 22:07:04 kmc:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov 22:07:04 kmc: |value error: fungot 22:07:04 jconn: just to help an fnord archive)" means " land of meadows" from the name of the array, it is documented, and only if the strings? what kind of like that) which is actually pretty nice) is the name of the array, it is documented, and only if the strings? what kind of like that) which is actually pretty nice, but sometimes it's necessary to achieve the planned than fnord since no sign, perhaps, it may be said that particular 22:07:04 fungot: |open quote 22:07:04 fungot: | just to help an fnord archive)" means " land of meadows" from the name of the array, it is documented, and only if the strings? what kind of like that) which is actually pretty nice) is the name of the array, it is documented, and only if the strings? what kind of like that) which is actually pretty nice, but sometimes it's necessary to achieve the planned than fnord since no sign, 22:07:04 fungot: | ^ 22:07:04 jconn: i am just as confused. you know, that thing which you might want is broken" archives. even less chance. i called " o" in " the other side has, perhaps, it may be said that particularly here, parliament will give a single instance, 22:07:04 jconn: is that something you know and and the cases that required to actually mutate the original i think you were still a very famous program talisman with fnord windows. that's always tricky. i could actually make progress. securing budgetary authority, can the governments. i know 2. that's obvious and you did refer to his fnord code 22:07:04 jconn: to " print" statement should always remember the songs on p2p apps in scheme, besides, was not beyond normal credibility! 22:07:05 fungot: |spelling error 22:07:10 Vorpal: We don't know, and there aren't any. 22:07:12 fungot: | i am just as confused. you know, that thing which you might want is broken" archives. even less chance. i called " o" in " the other side has, perhaps, it may be said that particularly here, parliament will give a single instance, 22:07:12 fungot: | ^ 22:07:16 fungot: |spelling error 22:07:27 elliott: no that wrapping doesn't work either, because translating a write to a Ref (a,b) into (Ref a, Ref b) requires _two_ writes 22:07:28 fungot: | is that something you know and and the cases that required to actually mutate the original i think you were still a very famous program talisman with fnord windows. that's always tricky. i could actually make progress. securing budgetary authority, can the governments. i know 2. that's obvious and you did refer to his fnord code 22:07:36 fungot: | ^ 22:07:44 fungot: to"_ _ _"_ _ _ (should always remember the songs on p2p apps in scheme , besides , was not beyond normal credibility !) 22:08:10 fizzie: i think it is about time to expand ^ignore again. 22:08:55 hm... 22:09:02 > "hi fungot" 22:09:02 oerjan: so, let's say i call them mindless games. if we hit every stupid person, any person going to the theater 22:09:04 "hi fungot" 22:10:02 `addquote fungot: |open quote fungot: | just to help an fnord archive)" [...] jconn: i am just as confused. you know, that thing which you might want is broken 22:10:02 kmc: that is just a value of type " airbus is a big fan of avril....but this song " there 22:10:07 bleh, now I want to know the rest of that fungot sentence 22:10:07 ais523:, so i'd make stuff up to. why, this is for you guys are a lot of the design, prisoners and slaves that have sucked. rephrase: " i tried todo a _" is 0 22:10:10 about stupid people 22:10:16 951) fungot: |open quote fungot: | just to help an fnord archive)" [...] jconn: i am just as confused. you know, that thing which you might want is broken 22:10:31 `addquote kmc: that is just a value of type " airbus is a big fan of avril....but this song " there 22:10:31 elliott: if it's ( syntactically) long, and brainfuck command keys. secondly, the establishment) 22:10:53 952) kmc: that is just a value of type " airbus is a big fan of avril....but this song " there 22:14:02 > map (+1) [1..] 22:14:04 [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,2... 22:14:17 > fix (\x -> x : map (+1) x ) 22:14:19 Occurs check: cannot construct the infinite type: a0 = [a0] 22:14:21 > fix (\x -> x : map (+1) x ) 1 22:14:23 Couldn't match expected type `t0 -> t1' with actual type `[a0]' 22:14:27 > fix (\x -> 1 : map (+1) x ) 22:14:28 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28... 22:15:24 > fix (\x -> 1 : zipWith (+) x x ) 22:15:26 [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,... 22:22:48 > scanl1 (+) (repeat 1) 22:22:50 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28... 22:23:25 > [1..] 22:23:27 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28... 22:23:29 I WIN 22:24:22 so everything is a contest with you? 22:24:37 > scanl1 (+) [1..] 22:24:39 [1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,27... 22:24:59 ...i can barely begin to explain how much that question doesn't describe me. 22:25:08 Arc_Koen: well, one time he got in a contest to see who could make more things into contests, and it got out of hand. 22:25:18 haha 22:25:28 i don't remember that. 22:26:05 did you make a contest to see who was the fastest to forget about it? 22:27:09 ^ignore 22:27:09 ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot|oonbotti|cuttlefish)! 22:27:17 ^ignore ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot|oonbotti|cuttlefish|jconn)! 22:27:18 OK. 22:27:49 Arc_Koen: MAYBE 22:28:21 -!- Phantom_Hoover has quit (Remote host closed the connection). 22:29:17 fizzie: I liked it when fungot didn't ignore jconn. 22:29:18 elliott: i know i didn't know that you've had it for some time i added a new page and sends it to emacs, i suggest, vote). you need to install in /usr/ lib " 1.ss" " srfi" 22:30:05 Does toBogE do nothing but issue bot commands? 22:33:10 -!- Phantom_Hoover has joined. 22:42:37 -!- Taneb has quit (Quit: goodnight). 22:46:47 Vorpal: We don't know, and there aren't any. <-- ? 22:48:42 -!- coppro has quit (Ping timeout: 264 seconds). 22:49:49 who's jconn? 22:49:57 a bot for J. 22:51:39 Why do you try to fix it with ignore lists and zero-width spaces and everything like that instead of using the proper way? 22:52:25 because nobody uses notices 22:53:05 ) 'Hi ais523' 22:53:05 oerjan: Hi ais523 22:53:36 the proper way annoys mIRC users 22:53:38 I see this as an advantage 22:53:51 btw, thutubot has a prefix to send notice rather than privmsg 22:53:55 ais523: it also annoys irssi users, maybe not as much 22:53:56 There should be a bot for all programming languages 22:53:56 perhaps I should make it always notice 22:53:58 Ever 22:54:02 Bike: That isn't a good reason. The server and client still supports it. 22:54:08 oerjan: mIRC treats channel notices as pings 22:54:16 FreeFull: EgoBot has all the languages that matter 22:54:34 ais523: except fueue. 22:54:43 yeah, I was going to except an esolang 22:54:45 but wasn't sure which 22:54:56 `fueue 72 105 H 22:54:56 ais523: Well, that is a somewhat better reason but still even in mIRC and irssi and whatever don't they have macros and/or options to control them? 22:54:58 zzo38: well, we'd have to convince jconn's owner to make it spit out notices instead of messages, so there's that. 22:54:59 Hi 22:55:26 let's do it backwards 22:55:31 and make the bots only respond to channel notices 22:55:43 this has all the disadvantages of the correct way of doing things, and fewer advantages 22:56:39 Well, yes, it is too disadvantageous. 22:56:57 ais523: Which ones are those? 22:57:11 FreeFull: requiring changes to all the bots, and sending channel notices 22:57:13 ais523: Does it have C? 22:57:14 And simply wrong. 22:57:18 EgoBot has C 22:57:27 the proper way annoys mIRC users <-- also xchat 22:57:30 Some form of ASM? 22:57:38 !c int main() { int printf(char *, ...); printf("Hello, world!\n"); } 22:57:45 Hello, world! 22:57:51 yes EgoBot has asm 22:58:00 Making the bots to reply with notices (whether operating privately or publicly) is better. 22:58:17 btw, you can /totally/ declare printf inside main like that 22:58:18 FreeFull: VAX simulator imo 22:58:36 !c int main() { printf("Test\n"); return 0;} 22:58:39 Test 22:58:57 EgoBot seems to have printf defined already =P 22:59:37 ais523, that is not the correct prototype for printf 22:59:42 it is const char* I'm pretty sure 22:59:45 !c int main() { printf("%f\n",sin(3.4)); return 0;} 22:59:48 ​-0.255541 22:59:50 PRIVMSG messages may still be sent if it is not a result of a command it received in the same way and if auto-replying would be OK from such messages, though. (I do not know if there are any such cases for the existing bots though) 22:59:52 Has math.h too 23:00:01 Vorpal: it's correct /enough/ to work 23:00:16 I don't think there are many C systems on which char * and const char * have different calling conventions 23:00:23 (I know it's theoretically legal) 23:00:44 yikes 23:00:44 Does the C standard allow char * and const char * have different calling conventions? 23:00:52 it allows all sorts of ridiculous tihngs 23:00:53 well hm it might be nice to have hardware level const pointers 23:00:54 *things 23:00:59 Lesse if it has complex.h 23:01:04 ais523, true 23:01:05 and a const pointer register for passing them around in? 23:01:18 type tagged registers, dude 23:01:33 What is the case for using these things with LLVM? 23:01:58 also, the pointer isn't const 23:02:01 just it's pointing to const things 23:02:23 I ended up writing something along the lines of "char * volatile" recently 23:02:39 in order to stop gcc giving me warnings about longjmp (some of which were possibly correct, some of which weren't) 23:03:30 22:46:47 Vorpal: We don't know, and there aren't any. <-- ? 23:03:32 I do have another question about volatile, is a function parameter allowed to specify volatile even if the caller expects the type without volatile, and then cast it to a pointer to a non-volatile type inside of the function? 23:03:44 Vorpal: I realise your scrollback is small but I was answering a question you asked literally a few lines prior. 23:03:58 zzo38: volatile follows the same rules as const 23:03:59 elliott, my client crashed 23:04:03 so no, without manual casts 23:04:04 elliott, and i reconnected to the bouncer 23:04:16 elliott, so yes it was 3 lines of scroll back at that point 23:04:19 !c int main() { double complex x = I; printf("%f %f\n",creal(x),cimag(x)); return 0;} 23:04:21 Does not compile. 23:04:29 Doesn't have complex.h ): 23:04:35 FreeFull, use #include? 23:04:43 zzo38: It isn't better to use notices because the bots are made for people in #esoteric who have clients that don't follow the spec. 23:04:44 hm tricky with no newlines 23:04:59 If they were made for people who had IRC clients that followed the spec they would be different. 23:05:21 !help 23:05:21 ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . 23:05:26 !help c 23:05:26 ​Sorry, I have no help for c! 23:05:32 !help languages 23:05:32 ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh. 23:05:40 !help languages c 23:05:40 ​Sorry, I have no help for languages_c! 23:05:49 elliott: Whatever... of course they will program them how they want to... Even if I make the suggestion is not the requirement for everyone to use but at least should be considered at least a little bit. 23:05:51 !help perl 23:05:51 ​Sorry, I have no help for perl! 23:06:03 EgoBot isn't very helpful 23:06:13 !info 23:06:13 ​EgoBot is a bot for running programs in esoteric programming languages. If you'd like to add support for your language to EgoBot, check out the source via mercurial at https://codu.org/projects/egobot/hg/ . Cheers and patches (preferably hg bundles) can be sent to Richards@codu.org , PayPal donations can be sent to AKAQuinn@hotmail.com , complaints can be sent to /dev/null 23:07:49 we complain at /dev/null easily enough 23:07:52 (NetHack joke) 23:07:56 https://codu.org/projects/egobot/hg/index.cgi/file/ffe171208ae9/multibot_cmds/interps/gcccomp/gcccomp 23:07:59 This seems to be some of the srouce 23:10:30 I can't find the bit that does the actual IRC interaction 23:11:03 that's multibot 23:12:37 Specifically the bit that notices I typed !c at the beginning of the line and parses the rest 23:12:56 How do you override the pointer aliasing rules in C? 23:13:51 https://codu.org/projects/egobot/hg/index.cgi/file/ffe171208ae9/multibot_cmds/hcmds/c 23:15:47 What kind of computer keyboard has keys labeled "5 F POISON" and "NUM/ALPHA EDIT"? 23:16:05 !c \n int main() { double complex x = I; printf("%f %f\n",creal(x),cimag(x)); return 0;} 23:16:07 Does not compile. 23:16:16 !c \n int main() { return 0;} 23:16:17 Does not compile. 23:19:42 I asked before about a mathematical structure which has successor and predecessor, but no designated zero point. Do you know what I intend to use this for? 23:20:22 zzo38: a semigroup? 23:20:37 Or rather, a semigroup that's not a monoid? 23:20:56 If they were made for people who had IRC clients that followed the spec they would be different. <-- I don't think that exists 23:21:34 I think you are correct that it is a semigroup and is not a monoid, but that is not what I mean, by, what I intend to use this for. 23:21:39 Vorpal: Don't think what exists? 23:21:56 zzo38: Iteration with no fixed point? 23:22:14 FreeFull: No. I will tell you I am not using it for a computer program! 23:22:30 Folding paper? 23:22:34 No 23:24:26 No idea 23:26:06 To number the relatives to the prime material plane (which itself is relative!) in Icosahedral Role Playing Game. 23:26:28 fungot: Боже мой 23:26:28 kmc: to " print" statement should always remember the songs on p2p apps in scheme, besides, was not beyond normal credibility mightn't take his breath away: but i had to choose fnord, but don't 23:26:37 ok, i have to hear about the icosahedral role playing game. 23:28:13 You can download it from my computer on port 70 on the selector string "phlog*c_dnd.icosahedral-rpg-i" (without the quotes) followed by CRLF for a bit of information. 23:28:20 -!- augur has quit (Remote host closed the connection). 23:28:33 It is very mathematical, for example the mathematical definition of a "mana" and a "multimana", of category theory, etc. 23:30:45 mana ** mana 23:30:56 mana !!!!!!!!!!!! 23:36:43 Vorpal: Don't think what exists? <-- a completely standard conforming irc client 23:37:34 There are also template-spells, which means that some of the choices for the spell are selected when you learn the spell rather than when you cast the spell. 23:39:04 Vorpal: I try to make my program standard conforming; at least it conforms in ways others don't; and I think there must be others too even if the other ones are no longer maintained or whatever 23:40:35 A multimana is a multiset of manas. 23:42:20 A mana is a multiset of the elements (w), (u), (b), (r), and (g). 23:44:57 A mana X is less than or equal to Y iff the multiset X is a subset of Y. 23:49:18 -!- copumpkin has quit (Ping timeout: 245 seconds). 23:49:45 -!- copumpkin has joined. 23:56:02 The product of manas is their multiset sum. The sum of multimanas is their multiset sum. 23:56:45 it conforms in ways others don't <-- I guess that about sums up the problem.