←2011-07-14 2011-07-15 2011-07-16→ ↑2011 ↑all
00:00:15 <hagb4rd> numbers, endlessly looping a series of digits are also called periodics, yes?
00:00:37 <hagb4rd> like, 1,2343434
00:00:55 <oklofok> they are called rationals
00:01:21 <oklofok> and such symbolic sequences are called eventually periodic or ultimately periodic, occasionally also periodic
00:04:12 <hagb4rd> i guess occasionally periodic when falling back into unstructred?
00:04:28 <hagb4rd> like 1,234343434343425235623
00:04:52 <oklofok> that's not really a proper definition
00:05:07 <oklofok> ofc you can use that term if you like, haven't heard it
00:05:30 <oklofok> there are many terms for sequences that are sort of periodic, recurrence, quasiperiodicity etc
00:06:21 <oklofok> say if for all words w, there is an n such that every subword of length n in your point (your infinite sequence) contains a copy of w, then the point is, umm, recurrent i think?
00:07:53 <oklofok> if for all i and n there is a nonzero p such that x[i, ..., i+n+mp] = x[i, i+n+mp] for all m, then the point is called quasiperiodic iirc (although quasiperiodic can mean a lot of things, people just love using it for everything)
00:09:31 <oklofok> then you call the point iso...somethingic if that same thing holds, but you might have to move a bit; that is, for all w occurring in x, there is a k and a p such that x[k + pm, ..., k + pm + |w| - 1] = w
00:09:44 <oklofok> following me?
00:09:57 <oklofok> i don't recall the names of the terms because they are not as standard as one would hope
00:10:04 <oklofok> but i can check them if you're interested
00:10:53 <oklofok> or you can check them yourself, kurka has a marvellous book online called topological and symbolical dynamics where he gives the defs for arbitrary dynamical systems
00:10:56 <hagb4rd> yea thanks you for this nice excursion
00:11:32 <oklofok> well i sort of do it for a living :D
00:12:08 <oklofok> (not very good at remembering terms)
00:12:33 * oklofok wants to talk more
00:13:55 <oklofok> so every subshift has a recurrent point
00:14:24 <hagb4rd> i'm sure elliott'll be back in a moment ready to kick your ass with his final question :P
00:14:45 <hagb4rd> we alle wait for
00:15:56 <elliott> what
00:16:24 <hagb4rd> life, universe and all
00:17:20 <oklofok> let S be a subshift, and let w_1, ... be an enumeration of all words. if for every word, you have the recurrence property in every point of S, then we're done. otherwise, take the first w_i for which it doesn't hold. then, there is a point x in S which contains arbitrarily big subwords without an occurrence of w_i, so this point x and its shifted versions have a limit point without an occurrence of w_i. so, S \cap Y is a nonempty proper subshift of S,
00:18:07 <oklofok> now, observe that repeating this we obtain an infinite chain S_i of subshifts such that S_i does not have an occurrence of any w_j with j<=i unless w_j appears recurrently in every point of S
00:18:30 <hagb4rd> btw.. i bought the book ian bell mentioned as his favourite on his homepage ;) ..the cosmic serpent
00:18:44 <hagb4rd> i can't wait to have it
00:18:57 <oklofok> so, just take the intersection of such S_i, it's a descending chain of compact non-empty shift-invariant sets and therefore the intersection is also a compact non-empty shift-invariant set.
00:19:14 <oklofok> it is clear that in this intersection, every point is recurrent
00:19:52 <oklofok> was nice to get that off my chest
00:27:55 -!- Lymee has quit (Ping timeout: 240 seconds).
00:30:21 -!- foocraft has quit (Quit: So long, and thanks for all the fish!).
00:30:39 -!- foocraft has joined.
00:31:44 -!- Lymee has joined.
00:51:28 <oklofok> i just love shift spaces so much
00:51:41 <oklofok> i just... can't get enough of them
01:07:23 -!- hagb4rd has quit (Quit: hagb4rd).
01:09:12 <CakeProphet>
01:10:01 <monqy> hi
01:10:24 <CakeProphet> drugs.
01:10:36 -!- azaq23 has quit (Ping timeout: 250 seconds).
01:12:53 * Phantom_Hoover → sleep
01:12:54 -!- Phantom_Hoover has quit (Quit: Leaving).
01:16:44 -!- azaq23 has joined.
01:25:05 -!- hagb4rd has joined.
01:35:08 -!- azaq23 has quit (Ping timeout: 240 seconds).
01:40:24 <CakeProphet> > :D
01:40:24 <lambdabot> <no location info>: parse error on input `:'
01:40:38 <CakeProphet> > <no location info>: parse error on input `<'
01:40:39 <lambdabot> <no location info>: parse error on input `<'
01:41:19 <CakeProphet> all error messages from my language interpreters will be valid code.
01:41:28 <CakeProphet> thus preventing error-based quines.
01:42:47 <oerjan> > 1:Maybe "so"
01:42:48 <lambdabot> Not in scope: data constructor `Maybe'
01:42:58 <coppro> O_o
01:43:02 <oerjan> > Not in scope: data constructor `Not'
01:43:02 <lambdabot> <no location info>: parse error on input `in'
01:43:08 <oerjan> damn
01:43:35 <oerjan> > 1:Just "so"
01:43:36 <lambdabot> Couldn't match expected type `[t]'
01:43:36 <lambdabot> against inferred type `Data.Mayb...
01:44:16 <oerjan> > 1:hm
01:44:17 <lambdabot> Not in scope: `hm'
01:45:12 <oerjan> oh well
01:48:19 <oklofok> (in any dimension, the binary shifts that are lattices are exactly the shifts where the set of 1's is linear)
01:49:03 <oklofok> (linear in the sense used with semilinear sets, that is, each 1 forces a periodic sequence of 1's in different directions)
01:49:22 <oklofok> (just as easy as i thought, and done exactly as i guessed earlier)
01:49:48 -!- azaq23 has joined.
01:51:04 <oklofok> ermerm sorry not linear. but anyway that period thing.
01:57:54 -!- elliott has quit (Remote host closed the connection).
01:58:40 -!- elliott has joined.
01:58:43 <oklofok> as for shift spaces that are boolean algebras, they are just the full shifts and the periodic shifts
01:59:00 <oklofok> binary ones that is
01:59:51 <oklofok> (the general case is slightly more complicated, although i did solve that one too, in a sense)
02:01:56 <oklofok> where's that... whatever his/her nick was last time, that crazy math dude; why is he not here, i need someone to eagerly repeat "uhhuh? i'm listening!" :\
02:22:44 <CakeProphet> > fix error
02:22:45 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
02:24:06 <CakeProphet> not quite what I was hoping for.
02:24:09 <oerjan> :t fix (?f.)
02:24:09 <lambdabot> forall b (f :: * -> *). (?f::b -> b, Functor f) => f b
02:24:34 <coppro> what is the ?
02:24:43 <oerjan> implicit argument
02:25:04 <CakeProphet> > fix (error.)
02:25:05 <lambdabot> No instance for (GHC.Show.Show (f [GHC.Types.Char]))
02:25:05 <lambdabot> arising from a use ...
02:25:06 <oerjan> aka dynamically scoped variable
02:25:24 <elliott> it's not exactly a _variable_ :D
02:25:36 -!- elliott has left ("Leaving").
02:25:40 -!- elliott has joined.
02:25:54 <oerjan> > fix (error.) "is too!"
02:25:55 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
02:25:55 <CakeProphet> :t fix (('a':).)
02:25:56 <lambdabot> forall (f :: * -> *). (Functor f) => f [Char]
02:26:26 <oerjan> CakeProphet: it's because of lambdabot's (.) = fmap definition
02:26:30 <CakeProphet> right
02:27:46 <CakeProphet> :t fix ((.).(.).)
02:27:47 <lambdabot> The operator `.' [infixr 9] of a section
02:27:47 <lambdabot> must have lower precedence than that of the operand,
02:27:47 <lambdabot> namely `.' [infixr 9]
02:27:57 <CakeProphet> :t fix (((.).(.)).)
02:27:58 <lambdabot> Occurs check: cannot construct the infinite type: a = f (f1 a)
02:27:58 <lambdabot> Expected type: f2 (a -> b)
02:27:58 <lambdabot> Inferred type: f2 (f (f1 a) -> f (f1 b))
02:28:16 <coppro> :t ((.).(.))
02:28:17 <lambdabot> forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b)
02:28:25 <elliott> ugh this is stupid
02:28:38 <coppro> :t .
02:28:39 <lambdabot> parse error on input `.'
02:28:40 <coppro> :t (.)
02:28:41 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
02:29:11 <oerjan> :t ((.).(Prelude..))
02:29:12 <lambdabot> forall (f :: * -> *) b c a. (Functor f) => (b -> c) -> f (a -> b) -> f (a -> c)
02:29:15 <CakeProphet> > (const 4) . putStrLn "Hello!"
02:29:16 <lambdabot> <IO Integer>
02:29:28 <coppro> oerjan: ah. Which (.) are we using?
02:29:35 <oerjan> coppro: fmap
02:29:45 <elliott> coppro: caleskell
02:29:51 <coppro> where is it defined? And how does it shadow Prelude's?
02:30:12 <oerjan> coppro: in lambdabot's L module
02:30:19 <elliott> "how"?
02:30:22 <elliott> you can shadow anything
02:30:28 <elliott> on import
02:30:36 <CakeProphet> elliott weighs in on the matter.
02:30:40 <coppro> elliott: Really? I thought you couldn't ever have two things with the same name
02:30:51 <elliott> coppro: what on earth gave you that impression?
02:30:54 <oerjan> O_o
02:30:56 <CakeProphet> import Prelude hiding ((.))
02:30:59 <elliott> module Foo (map) where
02:31:01 <elliott> import Prelude hiding (map)
02:31:03 <elliott> map = 99
02:31:04 <elliott> and then:
02:31:07 <elliott> import Prelude hiding (map)
02:31:08 <elliott> import Foo
02:31:10 <elliott> main = print map
02:31:14 <elliott> -- program will print 99
02:31:33 <coppro> elliott: derp ok
02:31:50 <elliott> coppro: you can also e.g.
02:31:52 <elliott> > let map = 99 in map
02:31:53 <lambdabot> 99
02:31:59 <coppro> wait no, still doesn't answer my question
02:32:01 <CakeProphet> also if you qualify the name then you can have both in scope.
02:32:03 <coppro> Prelude is imported by default
02:32:15 <elliott> coppro: yes, but adding an explicit import declaration overrides that
02:32:18 <coppro> ah ok
02:32:24 <coppro> also there is no shadowing there
02:32:28 <coppro> (except in the 'let' declaration)
02:32:30 <monqy> alternatively, NoImplicitPrelude or whatever it is
02:32:33 <elliott> coppro: yes there is
02:32:35 <monqy> which also does other stuff
02:32:41 <elliott> > let {map = 99} in {9 + map}
02:32:41 <lambdabot> <no location info>: parse error on input `{'
02:32:45 <elliott> > let {map = 99} in 9 + map
02:32:46 <lambdabot> 108
02:32:50 <elliott> coppro: map is shadowed in the scope of the in expressio
02:32:51 <elliott> n
02:32:52 <CakeProphet> I believe import Prelude () will hide it entirely?
02:32:54 <monqy> I forget what else, aside from letting you use your own monad definition for do notation
02:32:55 <coppro> elliott: I said except in the let declaration
02:33:00 <elliott> coppro: well, duh :)
02:33:16 <monqy> CakeProphet: do you feel an urge to abuse NoImplicitPrelude
02:33:25 <CakeProphet> I don't see how it could be abused.
02:33:31 <CakeProphet> unless improving the Prelude is abuse.
02:34:08 <elliott> dammit mvaen i want automatic builds in eclipse
02:34:08 <monqy> I'm sure there's some way to abuse it
02:34:51 <CakeProphet> any kind of abuse I can think of would be highly contrived.
02:35:01 <CakeProphet> not as obvious as the ways one can abuse OverloadedStrings
02:35:39 <CakeProphet> of course by "abuse" I mean "use in ways that are completely allowed by Haskell and typecheck with no special hacks required"
02:35:48 <elliott> haha monqy
02:35:48 <elliott> what if
02:35:50 <elliott> i asked stack overflow
02:36:19 <monqy> CakeProphet: do you find unsafecoerce hilarious
02:36:27 <monqy> elliott: what would happen I'm not a stackoverflow guy
02:36:35 <CakeProphet> I'm not even sure what the hell that is supposed to do.
02:36:41 <monqy> :t unsafeCoerce
02:36:41 <lambdabot> Not in scope: `unsafeCoerce'
02:36:43 <CakeProphet> the notion of coercing types in Haskell confuses me.
02:36:44 <monqy> oops
02:36:52 <CakeProphet> @hoogle unsafeCoerce
02:36:52 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
02:37:05 <monqy> it's used in Data.Dynamic or whatever it is
02:37:08 <monqy> do you find Data.Dynamic hilarious
02:37:35 <elliott> monqy: stackoverflow ims a bad persons
02:37:36 <CakeProphet> ...I don't find anything in Haskell particularly hilarious.
02:37:47 <CakeProphet> Dynamic is interesting and possibly useful.
02:38:21 <CakeProphet> it demonstrates that Haskell can support dynamic typing, which is pretty incredible
02:38:36 <monqy> CakeProphet: also when I said NoImplicitPrelude I meant RebindableSyntax (which implies NoImplicitPrelude)
02:38:37 <CakeProphet> :t fromDynamic
02:38:37 <lambdabot> forall a. (Typeable a) => Dynamic -> Maybe a
02:38:49 <elliott> CakeProphet: What does Haskell look like?
02:39:01 <CakeProphet> elliott: what the hell kind of question is that.
02:39:10 <elliott> CakeProphet: What country are you from?
02:39:22 <CakeProphet> ....
02:39:29 <elliott> CakeProphet: "...." ain't no country I ever heard of. They speak Haskell in ....?
02:39:33 <CakeProphet> I refuse to answer all of these questions.
02:39:42 <CakeProphet> HASKELL MOTHERFUCKER, DO YOU SPEAK IT?
02:39:50 <elliott> CakeProphet: DESCRIBE WHAT HASKELL LOOKS LIKE.
02:40:00 <CakeProphet> what?
02:40:16 <CakeProphet> okay we cannot quote Pulp fiction anymore.
02:40:18 <CakeProphet> I am leaving now.
02:40:19 <monqy> please tell me if i am dying or crying i cannot tell
02:40:28 <monqy> they rhyme this is confusing to me
02:40:28 <elliott> CakeProphet: God dammit just get to the bitch part so I can ask if Haskell looks like Perl.
02:40:39 <CakeProphet> LAME
02:40:41 <CakeProphet> NO
02:40:58 <CakeProphet> also you will have to ask why I am trying to fuck it like a Perl.
02:41:04 <CakeProphet> which is pretty disturbing.
02:41:06 <monqy> CakeProphet: http://www.haskell.org/ghc/docs/7.0.2/html/users_guide/syntax-extns.html#rebindable-syntax
02:41:06 <elliott> No; code it like a Perl.
02:41:34 <CakeProphet> so you're saying that Dynamic is only useful if you want to code Perl in Haskell? is this the grand point?
02:41:44 <oerjan> !haskell {-# LANGUAGE RebindableSyntax #-} import qualified Prelude; a >>= b = b a; main = Prelude.print $ do x <- 3; y <- 4; x Prelude.+ y
02:41:53 <EgoBot> ​/tmp/input.30856.hs:1:13: unsupported extension: RebindableSyntax
02:41:56 <monqy> :(
02:42:04 <oerjan> GRMBL
02:42:32 <CakeProphet> actually, that's a potential use case, writing a Perl interpreter in Haskell could make use of Dynamic.
02:42:43 <elliott> oerjan: NoImplicitPrelude used to do it, IIRC
02:42:46 <monqy> embed perl in haskell
02:42:49 <oerjan> oh
02:43:02 <oerjan> !haskell {-# LANGUAGE NoImplicitPrelude #-} import qualified Prelude; a >>= b = b a; main = Prelude.print $ do x <- 3; y <- 4; x Prelude.+ y
02:43:12 <CakeProphet> though I suspect not using Dynamic could lead to better results.
02:43:19 <oerjan> heh
02:43:34 <elliott> oerjan: that doesn't absolve you of the need to type main properly :P
02:43:36 <CakeProphet> since Perl has a finite number of types, using a single PerlData type would work.
02:43:51 <oerjan> !haskell {-# LANGUAGE NoImplicitPrelude #-} import Prelude hiding (>>=); a >>= b = b a; main = print $ do x <- 3; y <- 4; x + y
02:44:10 <oerjan> !haskell {-# LANGUAGE NoImplicitPrelude #-} import Prelude hiding ((>>=)); a >>= b = b a; main = print $ do x <- 3; y <- 4; x + y
02:44:28 <oerjan> wtf
02:44:31 <oerjan> !haskell {-# LANGUAGE NoImplicitPrelude #-} import Prelude hiding ((>>=)); a >>= b = b a; main = print $ do x <- 3; y <- 4; x + y
02:45:12 <CakeProphet> TH + Dynamic = fun abuse of Haskell
02:45:22 <oerjan> oh whatever
03:00:38 <elliott> Java is literally intolerable.
03:01:37 <monqy> are there any jvm languages worth using
03:02:01 * Sgeo wants Seph
03:02:42 <elliott> monqy: it isn't even the language that's giving me pain
03:03:39 <monqy> if it's the ide, don't use the ide, but then the language gives you pain, at which point fix that???
03:04:44 <elliott> monqy: it's the combination of ide and build system
03:04:51 <oklofok> quick, what's the last word that pops into your head
03:04:56 <elliott> oklofok: head
03:05:06 <oklofok> :o
03:05:17 <monqy> my words are still popping
03:05:19 <monqy> when will they stop
03:05:31 <oklofok> i hope he didn't type that in and quickly shoot himself before anything else did
03:10:28 <CakeProphet> > fix monqy
03:10:28 <lambdabot> Not in scope: `monqy'
03:11:04 <monqy> im long gone
03:13:08 <oerjan> > fix ?monqy
03:13:09 <lambdabot> mueval-core: internal error: PAP object entered!
03:13:09 <lambdabot> (GHC version 6.12.3 f...
03:13:24 <oerjan> MWAHAHAHA
03:13:45 <oerjan> :t fix ?monqy
03:13:46 <lambdabot> forall a. (?monqy::a -> a) => a
03:14:02 <elliott> IM STAB A FORK THROUGH THE CHEST OF JAVA
03:14:09 <elliott> CRYING ALWAYS
03:15:26 -!- CakeProphet has quit (Ping timeout: 252 seconds).
03:21:15 <elliott> "Develop with pleasure!" --IDEA
03:22:52 <monqy> diaf
03:23:21 <elliott> rude dude rude
03:30:43 -!- azaq23 has quit (Ping timeout: 276 seconds).
03:41:48 <elliott> monqy: oh i found out why people like IDEA
03:42:01 <monqy> does it pay them money
03:42:09 <coppro> elliott: what is the prefix ??
03:42:15 <elliott> coppro: ?
03:42:19 <coppro> elliott: in ?monqy
03:42:22 <elliott> monqy: it might be slow and weird, but it works with maven without idiocy :D
03:42:25 <elliott> coppro: oerjan already told you
03:42:29 <coppro> oh did he
03:42:31 <coppro> i fogtor
03:42:40 <elliott> coppro: implicit parameter
03:42:40 <monqy> elliott: and why do people like maven
03:43:04 <elliott> monqy: it might be weird and verbose, but it does stupid java things for you without (much) idiocy
03:43:06 <coppro> elliott what does that do
03:43:15 <elliott> coppro: it does nothing, it's a language feature
03:44:33 <coppro> ah i see it now
03:44:38 -!- ruku56021 has joined.
03:45:17 <coppro> i am ambivalent about this extensions
03:45:48 -!- ruku56021 has left.
03:48:03 <oerjan> > let f = ?x in let ?x = 3 in f
03:48:04 <lambdabot> 3
03:48:22 <elliott> > ?y
03:48:23 <lambdabot> mueval-core: internal error: PAP object entered!
03:48:23 <lambdabot> (GHC version 6.12.3 f...
03:50:38 <coppro> elliott: there is no way to provide a default value for an implicit parameter?
03:50:56 <elliott> eh?
03:51:03 <elliott> you can say
03:51:06 <elliott> main :: IO ()
03:51:11 <elliott> main = let ?foo = default in realMain
03:51:12 <elliott> I guess
03:51:20 <elliott> or well
03:51:22 <elliott> main :: IO ()
03:51:23 <elliott> main = do
03:51:26 <elliott> let ?foo = default
03:51:29 <elliott> ...
03:51:32 <elliott> (does that work? oerjan?)
03:51:44 <oerjan> hm it probably should
03:52:07 <elliott> so you can do ?foo <- x? :D
03:52:07 <oerjan> > do let ?foo = 3; [?foo]
03:52:08 <lambdabot> <no location info>:
03:52:08 <lambdabot> The last statement in a 'do' construct must be an ...
03:52:13 <elliott> o_O
03:52:17 <oerjan> oh
03:52:26 <oerjan> > do let {?foo = 3}; [?foo]
03:52:27 <lambdabot> [3]
03:52:33 <elliott> wat
03:52:48 <oerjan> the let block wasn't ending
03:53:47 <oerjan> i don't think you can do ?foo <- x, since that's desugared into lambda
03:54:05 <oerjan> > do ?foo <- [3]; [?foo]
03:54:05 <lambdabot> <no location info>: Parse error in pattern
03:54:07 <coppro> elliott: I mean that if I have a function with an implicit parameter, I cannot give it a default right?
03:54:13 <coppro> the calling context must have it declared at some level?
03:54:25 <elliott> coppro: sure, but the question seems to imply some confusion to me
03:54:37 <coppro> elliott: I was just asking for clarification
03:54:43 <elliott> then, yes, that's true
03:55:01 <coppro> elliott: because the docs give an implicit-pameter version of sort and I wanted to make sure it wasn't drop-in replaceable
03:55:16 <coppro> > ?cmp = cmp
03:55:16 <lambdabot> <no location info>: parse error on input `='
03:55:25 <elliott> right
03:55:32 <elliott> I'm not sure why implicit parameters exist, tbh
03:55:33 <elliott> they're kind of ugly.
03:55:53 <coppro> I'm not really partial to them myself
03:56:00 <coppro> they would be nice as a sort of 'named argument' thing
03:57:10 <oerjan> they're supposed to be a way to pass configuration without making your code all monadic
03:57:37 <coppro> ah
03:58:01 <coppro> that smells of an excuse to retain technical purity
03:58:19 <coppro> while introducing all the issues of global state
03:58:48 <oerjan> it's not truly global, you can redefine implicit parameters in different calls
03:59:53 <coppro> yeah, and they only affect calls later in the stack
04:00:00 <coppro> I still wouldn't want to use it for that though
04:00:12 * elliott has never used them apart from to make lambdabot give nicer signatures for examples.
04:00:52 <elliott> Why didn't I use IntelliJ IDEA from the start, this is so much less painful.
04:01:46 <coppro> face magice
04:01:56 <elliott> coppro: wat
04:02:06 <coppro> elliott: it is magical ice of the face
04:02:09 <coppro> face magice
04:02:13 <elliott> ah.
04:02:43 <oerjan> oleg et al. made a different method to put configurations in typeclasses, which uses a horrible hack passing through the ffi to support inserting arbitrary runtime values. it's in the reflection package on hackage.
04:02:44 <coppro> you see, face magice is notable for its complete lack of zepto
04:03:09 <coppro> your problem, lack of zepto, was probably caused by it
04:04:00 <oerjan> @hoogle reify
04:04:01 <lambdabot> Language.Haskell.TH reify :: Name -> Q Info
04:04:01 <lambdabot> Language.Haskell.TH.Syntax reify :: Name -> Q Info
04:04:01 <lambdabot> Language.Haskell.TH.Syntax qReify :: Quasi m => Name -> m Info
04:04:06 <oerjan> bah
04:04:13 <elliott> http://hackage.haskell.org/packages/archive/reflection/0.4.0/doc/html/Data-Reflection.html
04:04:15 <oerjan> @hoogle Reified
04:04:15 <lambdabot> No results found
04:04:19 <elliott> yw
04:04:21 <oerjan> yes
04:04:28 <oerjan> um i know where it is
04:04:36 <monqy> reify :: a -> (forall s. Reifies s a => Proxy s -> w) -> w
04:05:30 <oerjan> that part is rather elegant, but the horrible hack to get around ghc's lack of any way to put runtime values directly into typeclasses, not so much.
04:06:21 <monqy> a Functional Pearl
04:08:16 <elliott> oerjan: :D
04:08:32 <elliott> oerjan: what does that actually mean, runtime values directly into typeclasses?
04:08:52 <elliott> Behold my ugly, heavy iron: http://i.imgur.com/PkWCv.png
04:09:18 <oerjan> in pure haskell there is no way to make a new class instance whose methods depend on a runtime value
04:09:34 <monqy> this abstract is funky
04:09:40 <elliott> oerjan: that's as easy as just unsafePerformIO (readIORef globalIORef) isn't it
04:09:48 <elliott> I mean, sure, /ugly/, but not _that_ ugly
04:09:51 <monqy> This
04:09:52 <monqy> problem is common in all software systems, but particularly acute
04:09:52 <monqy> in Haskell, where currently the most popular solution relies on un-
04:09:52 <monqy> safe operations and compiler pragmas.
04:09:52 <monqy> We solve the configurations problem in Haskell using only sta- ble and widely implemented language features like the type-class system.
04:10:16 <oerjan> elliott: well it's ridiculously inefficient if you want to many reifications :P
04:10:23 <oerjan> *to do
04:10:37 <monqy> this makes it sound so clean
04:10:40 <monqy> internally I mean
04:10:59 <oerjan> like if you want to do modulo arithmetic with many different moduli in the way the paper shows
04:11:51 <monqy> ok where does it do the horrible ugly ffi stuff
04:12:41 <oerjan> to handle an arbitrary value it makes an ffi pointer to the value, then converts that pointer into a string
04:12:56 <monqy> mind boggled
04:12:57 <oerjan> then encodes the string in the type system
04:13:05 <monqy> double boggle
04:13:41 <elliott> oerjan: amazing
04:13:49 <elliott> ffi in the type systme
04:13:50 <elliott> thanks oleg
04:14:25 <oerjan> which then gives a type which has the right Reifies instance to reconstruct the string, convert back to the pointer, and then extract the value :P
04:14:45 <oerjan> and of course the ffi part uses unsafePerformIO
04:15:43 -!- xxxx has joined.
04:16:14 <elliott> [Haskell-cafe] Type checking oddity -- maybe my own confusion oleg at okmij.org
04:16:14 <elliott> yeah _right_
04:16:48 <elliott> oh wait
04:16:51 <elliott> that was a reply :)
04:20:17 <oerjan> elliott: the thing is, afaict there is almost certainly a way to do this type wrapping _directly_ in ghc core. but iiuc ghc doesn't currently have a way to compile from core format...
04:20:21 -!- zzo38 has joined.
04:20:56 -!- xxxx has quit (Quit: Leaving.).
04:31:50 -!- elliott has quit (Remote host closed the connection).
04:33:25 <oerjan> xkcd :D
04:35:50 * Sgeo has actally held his laptop like that :/
04:35:59 -!- elliott has joined.
04:36:30 <elliott> I don't suppose there are any Maven experts that haven't answered previously just hanging around :)
04:39:27 <oerjan> only mavericks
04:40:38 -!- oerjan has quit (Quit: Good night).
04:42:22 <quintopia> so it seems it doesnt take randall long to go from saying "i want to make cancer jokes" to making things that aren't really jokes but are definitely about cancer...
04:43:30 -!- azaq23 has joined.
04:43:32 <elliott> when did he say that
04:44:41 <quintopia> this week i think
04:44:51 <quintopia> on the blog
04:45:46 <fizzie> He said "talk (and draw comics) about stuff", not "make jokes".
04:46:18 <elliott> fizzie: I bet you're a total Maven expert.
04:46:22 <elliott> Mexpert.
04:46:33 <fizzie> (There's a "new blog post" link on at least the m.xkcd.com comic page, otherwise I wouldn't have noticed.)
04:46:51 <fizzie> Mav-pert. Per-vert. No, I'm really not.
04:47:05 <elliott> Not even the LITTLEST bit????
04:47:19 <quintopia> fizzie: sorry i didn't mean to imply that a humor comic strip should be jokes
04:48:07 <fizzie> Not even the. I know about some projects that use Maven, but I've never even taken a look.
04:48:21 <elliott> fizzie: SOOOOOOOOOOOOO LAAAAAAAAAAME
04:50:20 <elliott> I can't believe this is non-trivial >_<
04:55:49 <Sgeo> I'm not sure which I like more, Homestuck music or some Doctor Who music
04:56:02 <Sgeo> http://www.youtube.com/watch?v=I80pc9jZ_t8 (The Pandorica Opens spoilers)
05:01:24 <elliott> "I use XML for complex config, and haven't gotten very many complaints from it. Nothing like the YML issues Permissions and GM cause."
05:01:33 <elliott> ah yes; XML is much simpler than YAML
05:09:37 -!- cheater_ has joined.
05:21:11 -!- cheater_ has quit (Ping timeout: 255 seconds).
05:24:22 -!- pingveno has quit (Read error: Operation timed out).
05:26:08 -!- olsner has quit (Ping timeout: 255 seconds).
05:27:02 -!- Lymee has quit (Ping timeout: 255 seconds).
05:28:36 -!- pingveno has joined.
05:31:59 <zzo38> I have checked what happens when sending a message from the UNIX mail account at FreeGeek to the internet (I used Mailinator service to test). What happens is the from address is specified as black@beryllium.shop.lan (which is not a valid internet email address)
05:32:13 <zzo38> I told them to use telephone, though, so it is OK.
05:33:39 <Sgeo> zzo38, not this FreeGeek? http://www.freegeek.org/
05:33:58 <zzo38> Correct, not that FreeGeek. It is this FreeGeek: http://www.freegeekvancouver.org/
05:34:37 <coppro> Sgeo: you're a bit late on linking that here
05:34:50 <coppro> Sgeo: I linked it a few days ago
05:35:07 <Sgeo> I'm only linking it because it made no sense as being something that zzo38 was talking about
05:35:15 <Sgeo> But zzo38's thing is the same sort of thing
05:35:19 <coppro> not that
05:35:21 <coppro> the doctor who
05:35:25 <Sgeo> Oh
05:35:50 <coppro> I love that they included the awesome speech
05:36:31 <Sgeo> The speech is kind of [spoiler] given the later context
05:36:52 <coppro> only a little
05:37:09 <coppro> it doesn't spoil any major twists
05:37:36 <Sgeo> No, I don't mean that it's a spoiler, just that later events in the episode kind of ...
05:37:57 <coppro> uh... pm?
05:38:04 <zzo38> I fixed some things for them at FreeGeek, including fixing the drive wiping script, and I use TeX to print out stuff they need.
05:39:18 -!- olsner has joined.
05:39:30 <Sgeo> Wow. Headphones in my ownership tend to die within days, apparently
05:43:15 <Sgeo> Is there such a thing as headphones that don't get damaged easily?
05:45:03 <elliott> yes, headphones you don't own
05:45:20 <Sgeo> lo
05:45:21 <Sgeo> lol
05:46:44 <fizzie> Perhaps you are just using them wrong?
05:47:08 <Sgeo> I need headphones that can take the abuse
05:47:31 <Sgeo> Hmm, now I'm wondering if I could replace my HD with solid-state
05:47:32 <elliott> dont abuse them
05:47:46 <fizzie> Or get a box that can take the abuse, and put them in that.
05:48:05 <monqy> put head in box
05:48:10 <monqy> quality audio
05:48:29 <fizzie> It also doubles as the canonical paper bag to hide your FACE in.
05:48:34 <fizzie> (Was that mean?)
05:48:40 <monqy> sgeo has an ugly face
05:48:45 <monqy> oh
05:48:51 <monqy> I misread
05:49:11 <monqy> I thought I was building off of a sort of joke I would make, not spoiling one of the sort someone else would make
05:49:14 <monqy> :'(
05:49:31 <elliott> :D
05:50:10 <fizzie> My personal problem with 'phones is that if I ever accidentally leave the cord visible, the cat's attacking it within ten minutes.
05:50:39 * pikhq_ did not realise just how absurd modem autonegotiation is...
05:50:58 <pikhq_> It goes down to 300 baud.
05:51:29 <pikhq_> In precisely the same format as the second model of modem.
05:51:46 <Sgeo> second model? What about the first?
05:51:47 <pikhq_> From 1962.
05:51:56 <pikhq_> Sgeo: 110 baud. Can't negotiate down to that.
05:52:33 <Sgeo> Hmm.
05:53:10 <pikhq_> Incidentally, it's a bit too slow to get TCP working.
05:53:18 <pikhq_> (though IP works just fine)
05:54:44 <pikhq_> And, of course, you could dial into a terminal server.
05:54:55 <pikhq_> One with a modern, off-the-shelf 56k modem.
05:55:01 <pikhq_> Using a 300 baud modem from 1962.
06:03:21 <fizzie> I wonder how well that works in practice with the specialized v.90/v.92 uplink hardware, which aren't off-the-shelf modems. (Two nominally "56k" modems can't get that speed when connecting to each other; you can only get 56k downlink when connecting to something that has an all-digital connection to the telephone service.)
06:03:38 <fizzie> There were all kinds of modem incompatibility issues in the dialup days already.
06:10:06 <pikhq_> fizzie: Actually, in order to work *at all* a modem has to support 300 baud.
06:10:31 <pikhq_> fizzie: The autonegotiation works by initiating a connection in 300 baud, and then communicating what rates they support.
06:11:21 <fizzie> Well, there is that. I don't envy modem-makers, what with all the different modulation schemes and all.
06:16:49 <Sgeo> Maybe I should use wireless headphones?
06:17:45 <fizzie> Wikipedia's view on the speed negotiation is a bit different, though.
06:18:06 <fizzie> http://en.wikipedia.org/wiki/Microcom_Networking_Protocol#MNP_6
06:18:09 <fizzie> "A less notable addition to MNP 6 was Universal Link Negotiation. With the introduction of additional modulation modes, notably v.32 and later additions, the modems on either end of the link had to spend an increasing amount of time negotiating a common standard. For instance, a v.32bis modem would first send tones into the line to try to get a 14.4 link; if that failed after a time, it would try 9600, 2400 and finally 1200 bit/s. Since each of these standards
06:18:09 <fizzie> defined a minimum period of time to "try" for a link, the delay grew over 10 seconds.
06:18:09 <fizzie> ULN avoided this delay by always negotiating the link at 2400 bit/s with no error-correction turned on. Although this eliminated compatibility with older 1200 bit/s modems, by this point in time they were extremely rare. Once the connection was made, which occurred quickly, both modems sent a small identification string to the remote modem. Both modems then examined the string and selected the fastest common mode. The caller then re-negotiated once at that high
06:18:13 <fizzie> er speed."
06:18:25 <fizzie> (I make no claims of having any knowledge about this.)
06:19:19 <fizzie> Maybe the later LAPM thing does autonegotiation like that.
06:32:05 -!- foocraft has quit (Quit: if you're going....to san. fran. cisco!!!).
06:39:41 -!- monqy has quit (Quit: hello).
06:43:21 <zzo38> The speakers in my computer is a bit broken
06:43:43 <quintopia> just a little bit?
06:44:42 <fizzie> It toggles a bit here and there, I suppose.
06:45:28 <zzo38> Now I put my own D&D character and also my brother's D&D character into the computer. I still don't have my brother's D&D character's name yet.
06:46:10 <zzo38> My character helped his character to escape from an island of slaves by going on a merchant ship.
06:47:15 <zzo38> Do you think it is a good story?
06:50:04 <zzo38> http://zzo38computer.cjb.net/dnd/recording/level20.tex
06:53:09 <elliott> fizzie: OK Java has just done something so mind-boggling to me that I absolutely must speak to someone with a basic knowledge of Java to confirm that this is the case do you know someone.
06:55:25 <fizzie> I've heard of Java, doesn't it have something to do with coffee?
06:55:31 <elliott> Yes.
06:55:48 <fizzie> (In that when you see some Java, you'll spit your coffee on the screen.)
06:55:54 <elliott> Is Map<Set<String>, String> seriously incompatible with HashMap<HashSet<String>, String> because Set<String> =/= HashSet<String>?
06:56:08 <elliott> And doesn't that completely defeat the point of using abstract interfaces?!
06:59:13 <fizzie> It is, yes, but HashMap<HashSet<String>, String> is compatible with Map<? extends Set<String>, String>.
07:00:20 <elliott> fizzie: Yeah, but I'm not typing "? extends Set<String>" into the type signature of a local variable that I instantiate to a concrete type on the same line.
07:00:23 <elliott> That's just too ridiculous.
07:01:18 <fizzie> I wouldn't necessarily bother using the abstract names on things that are instantiated on the same line, anyway. It's still one "place" to change, even if it's a bit bad.
07:01:43 <fizzie> Well, at least when they cause problems, anyway.
07:03:53 <elliott> I don't understand your second sentence there.
07:03:56 <elliott> One place to change what?
07:06:45 <fizzie> When you have a "HashMap<A,B> foo = new HashMap<A,B>();", it's still just one line to edit if you change from HashMaps to TreeMaps for some reason. Though on a second look I guess your case is a bit different, since it's the "inner" type you didn't want to fix in place.
07:07:45 <elliott> @SuppressWarnings("unchecked") List<String> commandAliases = (List<String>) command.get("aliases");
07:07:45 <elliott> I wonder what this even compiles down to.
07:07:52 <elliott> I mean, it has no concrete interface to go by.
07:09:12 <fizzie> Now that I look at it, why can't you just have "Map<Set<String>, String> foo = new HashMap<Set<String>, String>();" as your concrete-typed local variable? You can use HashSet<String>s as the keys of that map just fine then.
07:10:20 <zzo38> Someone in here (I think it was quintopia) asked me to write document of FurryScript in esolang wiki. Now I did it is User:Zzo38/FurryScript
07:12:33 <zzo38> (Document is currently incomplete)
07:13:11 <zzo38> If you have more script, type on User_talk:Zzo38/FurryScript and I might add the script into my collection
07:13:26 <elliott> fizzie: Oh, you can? Cool.
07:21:52 <zzo38> I have a idea of format of playing pokemon card. Both decks are made at random (with some constraints). Second time, swap decks. At beginning of game after picking up 7 cards, bet secretly who win, and separately bet method of winning (regardless of winner). When a side card is picked up, previous bet is revealed and both players bet secretly method of winning. Each correct bet +1 point, winner +3 points, overmate +2 each, tie +1 each player.
07:23:20 <zzo38> After 2 duels, make up random deck again but players have choice to retain some cards from the 120 pooled cards you can pick. First player 60 points wins a match.
07:29:04 <zzo38> If both players make or exceed 60 at the same time, whoever has more points wins the match. If both players make or exceed 60 at same time and also have the same number of points in total, the match ends in a tie. If no player makes at least 59 points in 20 duels, the match ends in a draw (if you make 59 you can play once more hopefully you can win)
07:29:43 <zzo38> Sorry, it should be 30 duels or 40 duels, not 20 duels
07:31:43 <zzo38> And you refrain from betting if one or both player has no more side cards remaining.
07:33:03 <zzo38> Bet who wins: * Self * Opponent * Tie
07:33:43 <zzo38> Bet method of win: * Zero side cards remain * No opponent's card in play * No opponent's card in deck * Simultaneous no side card and no card in opponent's play * Tie game
07:34:40 <elliott> no
07:35:23 <zzo38> elliott: Are you answering me? If so, which one? Nothing after your previous message, I type questions!
07:35:32 <zzo38> It is not questions.
07:39:42 -!- cheater_ has joined.
07:40:29 -!- cheater_ has quit (Client Quit).
07:40:34 -!- cheater_ has joined.
07:40:48 <zzo38> Method of overmate: If you take more side cards than you have, each side card you would take extra is worth one overmate. If you run out of side card and opponent no cards in play simultaneous, is worth one overmate. If winning by no side card or no opponent's card in play, you score one overmate for each player with zero cards in draw pile.
07:41:10 <zzo38> That makes you can have potentially a maximum of eight overmate.
07:42:04 <zzo38> These betting and overmate can affect the strategy and bluff and other aspects of the game!!
08:03:16 -!- Phantom_Hoover has joined.
08:04:40 -!- zzo38 has quit (Remote host closed the connection).
08:20:59 -!- Taneb has joined.
08:21:57 <Taneb> Hello
08:22:02 <elliott> hi
08:25:40 <Taneb> What's up?
08:27:09 <fizzie>
08:49:42 -!- elliott has quit (Remote host closed the connection).
08:50:20 -!- elliott has joined.
08:50:23 -!- elliott has quit (Changing host).
08:50:23 -!- elliott has joined.
09:01:29 -!- elliott has quit (Remote host closed the connection).
09:01:54 -!- elliott has joined.
09:11:21 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
09:11:35 -!- rodgort has joined.
09:23:44 -!- cheater_ has quit (Ping timeout: 255 seconds).
09:27:52 -!- cheater_ has joined.
09:30:49 -!- CakeProphet has joined.
09:31:04 <CakeProphet> :o
09:31:42 <CakeProphet> why on earth is TypeSynonymInstances not default for GHC...
09:32:01 <Taneb> Because life is not perfect
09:32:12 <CakeProphet> This is a good reason.
09:36:06 <CakeProphet> I wonder where my mind went.
09:40:13 <Taneb> I nicked it
09:41:16 <Taneb> That's an idea
09:41:27 <Taneb> An esolang with only the keyword "Nicked"
09:42:11 <CakeProphet> I believe that would imply that the set of valid programs is countable.
09:42:29 <Taneb> Nicked has two meanings
09:42:34 <Taneb> stolen and arrested
09:42:46 <CakeProphet> You can map each program to a natural number by counting the number of "Nicked" substrings.
09:43:52 <Taneb> I'm pretty sure most languages' set of valid programs are countable
09:44:19 <Taneb> Brainfuck, for example, each character can be converted into a base-8 digit
09:44:48 <CakeProphet> I don't know. It gets more complicated to map each program to a natural number with languages like C.
09:45:06 <CakeProphet> but... I have difficulties determining what is countable and what isn't...
09:45:12 <fizzie> No it doesn't, as long as you don't need each natural number to be a valid program.
09:45:38 <CakeProphet> but then you haven't found the set of valid programs...
09:45:55 <CakeProphet> yeah the number of valid strings in an alphabet is countable.
09:46:20 <CakeProphet> > (`replicateM` "abc") >>= [0..]
09:46:21 <lambdabot> Couldn't match expected type `[[GHC.Types.Char]]
09:46:21 <lambdabot> ...
09:46:30 <CakeProphet> > (`replicateM` "abc") =<< [0..]
09:46:31 <lambdabot> ["","a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","a...
09:46:38 <CakeProphet> there, I counted them.
09:46:42 <CakeProphet> :D
09:48:58 <Taneb> By definition, any Turing-Complete program can be translated into Brainfuck
09:49:15 <Taneb> Therefore, any Turing-Complete language has a countable number of prograns
09:49:20 <Taneb> *programs
09:49:22 <CakeProphet> but it's possible that each valid C program can be assigned a natural number. I'm just not really sure what kind of algorithm would apply the mapping...
09:49:37 <CakeProphet> it seems that for each subexpression there are infinitely many variations, so it can't be counted.
09:49:52 <Taneb> There are infinitely many integers
09:50:14 <elliott> <CakeProphet> but it's possible that each valid C program can be assigned a natural number. I'm just not really sure what kind of algorithm would apply the mapping...
09:50:15 <CakeProphet> Taneb: is that true? I don't think a C to brainfuck translator has ever been made.
09:50:22 <elliott> yes, it has
09:50:22 <elliott> twice
09:50:32 <elliott> argh, Bifro has been removed
09:50:48 <CakeProphet> so, is it true that you can translate every language to another?
09:50:54 <elliott> (I wrote a computable BF<->nat bijection once)
09:50:58 <Taneb> Every Turing-Complete part
09:51:01 <CakeProphet> right.
09:51:08 <elliott> CakeProphet: Dude, being able to run other Turing-complete languages is pretty much the DEFINITION of Turing-completeness.
09:51:21 <Taneb> Excluding file-manipulation and IO and stuff
09:51:25 <CakeProphet> that's not the same thing as being translatable.
09:51:42 <elliott> It is in all non-contrived examples.
09:51:53 <elliott> For contrived examples see http://esolangs.org/wiki/%E2%84%92.
09:52:19 <CakeProphet> anyways, I'm not claiming to know the answer. I'm just reasoning by intuition.
09:52:39 <Taneb> Intuition doesn't really work with countability
09:52:50 <CakeProphet> this is probably why I am terrible at that. :P
09:53:20 <Taneb> Right. Mapping brainfuck programs to integers is trivial
09:53:25 <CakeProphet> of course.
09:53:28 <elliott> Taneb: It's not quite trivial if you want a bijection
09:53:30 <elliott> (with the naturals)
09:53:38 <elliott> It's not _difficult_
09:53:48 <elliott> Although finding an encoding that doesn't blow up into massive numbers for anything with nested loops is
09:54:26 <Taneb> Just convert each character to a base-8 digit! Integer mapping! Unique number for each programming!
09:55:28 <Taneb> And, as, by definition, any turing-complete language can simulate any other, all turing-complete languages can be simulated by brainfuck
09:55:45 <elliott> Taneb: Nope
09:55:50 <elliott> [ is not a valid brainfuck program
09:55:52 <elliott> Nor is ]
09:55:56 <elliott> Nor is anything without balanced brackets
09:56:14 <elliott> Don't bother continuing the train of thought, I already spent a day doing so and thus was produced Bifro :-P
09:56:15 <CakeProphet> > filter (even . length . filter (`elem` "[]")) $ (`replicateM` "+-[]<>.,") =<< [0..]
09:56:17 <lambdabot> ["","+","-","<",">",".",",","++","+-","+<","+>","+.","+,","-+","--","-<","-...
09:56:28 <Deewiant> That's why you should use befunge instead, no such thing as an invalid program
09:56:32 <CakeProphet> no, that doesn't work...
09:56:32 <elliott> CakeProphet: [ is not a valid brainfuck program. ] is not a valid brainfuck program.
09:56:38 <elliott> CakeProphet: oerjan also already made a oneliner to do it
09:57:00 <elliott> It generates even larger naturals, however, and isn't constant-time to map prog->nat
09:57:08 <elliott> Well, not even the other way, but that's because of the choice of data structure
09:57:43 <Taneb> Just because it allows invalid programs doesn't make the system invalid
09:57:53 <elliott> Taneb: It makes it not a bijection
09:58:00 <CakeProphet> > filter (\x -> (length . filter (=='[') $ x) == (length . filter (==']') $ x)) $ (`replicateM` "+-[]<>.,") =<< [0..]
09:58:02 <lambdabot> ["","+","-","<",">",".",",","++","+-","+<","+>","+.","+,","-+","--","-<","-...
09:58:15 <elliott> Taneb: Because if the non-program [ maps to 9, then what program does 9 map to?
09:58:19 <fizzie> And as long as you don't need a bijection, the same thing in C is equally trivial, just with a larger alphabet.
09:58:20 <Taneb> But still countable
09:58:57 <CakeProphet> that's not including comments.
09:59:24 <Taneb> Comments do not affect the program.
09:59:43 <elliott> Neither does replacing quicksort with mergesort
09:59:48 <CakeProphet> elliott: but what you are saying is that I can make a Java to bf translator. It is completely theoretically possible?
09:59:52 <elliott> You think those should produce equal numbers too?
10:00:04 <elliott> CakeProphet: I am rather disturbed that you haven't realised this earlier.
10:00:08 <elliott> CakeProphet: Obviously this is ignoring I/O issues.
10:00:13 <elliott> CakeProphet: Ask ais about gcc-bf.
10:00:22 <Taneb> Any ASCII string can be converted into a base-128 number
10:00:52 <CakeProphet> Taneb: that doens't really prove anything about programming languages.
10:01:37 <Taneb> As the vast majority of programming languages use ASCII, there must be less valid programs for a particular language than there are valid ASCII strings
10:01:38 <CakeProphet> hmmm, well, okay yes it does.
10:01:56 <CakeProphet> because the valid programs of a language are a subset of this.
10:02:36 <CakeProphet> elliott: but isn't ignoring IO issues a huge problem in writing a complete translator?
10:02:44 <elliott> Hmm, I need Lymia here so I can get her to coerce the right people to expose something through the Bukkit API
10:02:53 <elliott> CakeProphet: IO is not part of the definition of computational classes.
10:03:18 <fizzie> elliott: "Besides, with PSOX..."
10:03:23 <elliott> CakeProphet: Nothing's stopping you giving brainfuck file capabilities, say, by feeding its input and output to a program ... yeah, what fizzie said.
10:03:31 <elliott> Honestly you should know this off by heart. :p
10:03:41 <CakeProphet> okay, but it's still impossible to write a Java to bf translator because of that.
10:03:51 <CakeProphet> because Java can read from multiple input and output sources.
10:03:54 <CakeProphet> while bf has only one
10:04:22 <elliott> Not necessarily
10:04:31 <elliott> You could have a Java implementation that errored out on every file operation.
10:04:33 <Taneb> That's as simple as mapping rational numbers to integers
10:04:47 <CakeProphet> elliott: ha...
10:04:47 <elliott> Anyway, you're confusing library and core language.
10:04:58 <elliott> Not "ha"; that's how Microsoft got Windows declared POSIX-compliant.
10:06:19 <CakeProphet> Actually, I think you're confusing "a Java to bf translator" with whatever you think I'm talking about.
10:07:01 <Taneb> I'm feeling bored, I may install Haiku
10:07:54 <fizzie> Taneb: Install Debian GNU/Hurd, they're going to give it an "official release" status in Debian wheezy, I hear.
10:10:18 <CakeProphet> so, I believe a translator is possible if the input string is known at translation.
10:10:39 <elliott> "Input string"?
10:10:54 <CakeProphet> ah, no, because Java can also write to multiple output sources.
10:11:40 <fizzie> Java's class library can also speak to the network and open windows on some screens, but all those are just boring practical details that you can ignore and/or work around.
10:11:58 <fizzie> If you say "theoretically possible", it's not very surprising people interpret you in a theoretical computer science context.
10:12:02 <elliott> Like I said, you can map all that to the byte input and output facilities BF has.
10:12:06 <elliott> It's all a matter of interpretation.
10:12:09 <CakeProphet> "boring practical details you can ignore" means that the kind of translator I'm talking about is impossible.
10:12:15 <elliott> Ooh, ooh, wait.
10:12:18 <elliott> * [PoppaVic] (~pops@unaffiliated/poppavic): It's all translators and context
10:12:24 <elliott> It's all translators and context, that's what it is.
10:12:42 <elliott> CakeProphet: It isn't; you just need to interpret the input and output streams unconventionally.
10:12:58 <elliott> Rather than a console, you just need to interpret it as an IO layer.
10:13:04 <elliott> It's nothing special/interesting/theoretically important.
10:13:08 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
10:13:11 <CakeProphet> elliott: yes, there needs to be a seperate program to map the input and output streams to locations.
10:13:24 -!- rodgort has joined.
10:13:36 <CakeProphet> because for bf, the inputs all have to be concatenated together, as do the outputs. There is a seperate program that has to sort out what goes where...
10:13:44 <CakeProphet> which means that bf cannot do everything Java can do.
10:13:50 <elliott> "Separate program"
10:13:54 <elliott> A console is a "separate program" in that sense too.
10:14:12 <CakeProphet> indeed.
10:14:15 <elliott> Sorry, but if you're going to use the word "theoretically", you can't jumble it up with vagueness related to the various minutiae of operating systems.
10:14:34 <elliott> Such a translator is perfectly possible, it would just require another program to implement /on Unix/.
10:14:39 <elliott> You said "theoretically", so Unix is irrelevant.
10:14:53 <elliott> It is possible to translate Java programs to brainfuck programs.
10:15:10 <CakeProphet> okay, but why is there no theoretical way to talk about input and output to multiple sources?
10:15:46 <elliott> When did I say there isn't? The question is completely irrelevant to the question of whether there exists such a translator.
10:15:52 <Taneb> For any Turing-equivalent machine m, it is possible to map any initialization for m to a unique integer.
10:16:49 <Taneb> Can we agree that true?
10:17:31 <CakeProphet> yes.
10:17:42 <CakeProphet> here is my question
10:17:45 -!- zzo38 has joined.
10:17:55 <CakeProphet> what is it that makes a Java program identical to a bf program for the purposes of translation?
10:18:02 <elliott> turing-completeness
10:18:08 <elliott> well
10:18:10 <elliott> turing-equivalence
10:18:19 <CakeProphet> which is?
10:18:35 <Taneb> Being computationally equivalent to a Turing machine
10:18:43 <CakeProphet> intuitively, at least, I would that they perform the same computations.
10:18:47 <elliott> Taneb: universal turing machine
10:18:50 <CakeProphet> *would think
10:18:51 <elliott> CakeProphet: do you know the definition of turing complete
10:19:06 <CakeProphet> Not formally, no.
10:19:08 <elliott> this article might help clear up any questions you have: http://esolangs.org/wiki/Turing-complete
10:19:14 <elliott> ugh wait
10:19:17 <elliott> the first paragraph is idiotic
10:19:24 <Taneb> http://en.wikipedia.org/wiki/Turing_completeness
10:19:27 <elliott> heh, i guessed right, it's cpressey's fault
10:19:48 <elliott> Taneb: that might be better, yes.
10:20:05 <CakeProphet> okay, so I certainly belive that bf and Java can compute anything a universal Turing Machine can.
10:20:24 <CakeProphet> but... I do not believe that can be translated perfectly. A complete mapping of valid Java programs to bf programs.
10:20:35 <elliott> then you are wrong. have a nice day.
10:21:02 <CakeProphet> because I cannot translate netbeans to bf.
10:21:07 <Taneb> You can't say that, you have to say why he is wrong
10:21:10 <Taneb> Elliott
10:21:45 <elliott> Taneb: I would, but he's expecting explanations like a teacher would give, while arguing like a peer, and I'm busy
10:22:00 <Taneb> Fair enough
10:22:15 <Taneb> I've got the time, but not the know-how
10:22:34 <elliott> We just need oerjan to out-grumpy everyone until they shut up and agree.
10:22:47 <Taneb> For any algorithm that can be defined in Java, that algorithm can be defined in brainfuck
10:23:08 <Taneb> And, indeed, Lazy K or Befunge-98
10:23:11 <CakeProphet> hmmm, okay, I think I understand actually.
10:23:11 <fizzie> CakeProphet: Seriously, if you talk about "translating in theory", then people are going to take the computational-complexity view on this. If you say something like "Java runtime has all kinds of IO-related features that Brainfuck implementations don't tend to have, and the Brainfuck language doesn't exactly define", then I don't think you'll get so many people disagreeing.
10:23:41 <fizzie> (Though the latter's a really inane statement to make.)
10:23:42 <CakeProphet> no, I was not originally talking about theory, it came up as part of the conversation. I am saying that you cannot translate to Jave to bf perfectly so that the same thing happens despite a change in language.
10:24:01 <CakeProphet> but, I understand, that for theoretical purposes, where the IO goes does not matter.
10:24:06 <CakeProphet> the only thing that is important is the computations.
10:24:27 <elliott> fizzie: thanks
10:24:39 <elliott> (for saying what i would have, but better)
10:24:53 <CakeProphet> and that Java programs themselves rely on other programs to put the input and output of programs into different locations..
10:25:12 <CakeProphet> yes, this is pretty vague..
10:25:24 <Taneb> Such as OpenGL
10:25:32 <elliott> CakeProphet: what you do not realise is that brainfuck's IO perfectly admits _interpretations_ that allow it to do just as much as Java.
10:25:43 <elliott> there is nothing saying that the input stream has to be hooked up directly to the user, or the output stream directly to the user.
10:25:59 <CakeProphet> I didn't suggest that.
10:26:12 <CakeProphet> but, if two programs in two different language compute the same thing, shouldn't they produce the same output?
10:26:12 <fizzie> Java-the-language doesn't really define any form of IO, anyway. There's Java-the-class-library (also called Java) which does, but the part that's called "Java language specification" doesn't.
10:26:15 <elliott> well, what you are saying is so completely vague that I have no idea how to respond to it apart from that.
10:26:36 <Taneb> Turing machines are the archetype of turing completeness, and yet have no IO
10:27:06 <Taneb> I is manipulating the data tape before runtime and O is looking at the data type after the program halts
10:27:13 <Taneb> *tape, not type
10:28:18 <CakeProphet> but I still feel that there should be some way to explain why Java programs cannot perfectly translate to bf and produce the same result...
10:28:27 <Phantom_Hoover> <CakeProphet> but, if two programs in two different language compute the same thing, shouldn't they produce the same output?
10:28:27 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
10:28:45 <Phantom_Hoover> I *think*, but don't quote me on this, that it can be phrased in terms of bijections.
10:29:16 <elliott> Phantom_Hoover: that is basically what i was trying to convey with my interpretation-of-IO talk.
10:29:23 <elliott> PSOX being a "real-world" example.
10:29:33 <elliott> CakeProphet: There is no way because they can.
10:30:08 <Taneb> PSOX? Phantasy Star Online for XBox?
10:30:09 <CakeProphet> I cannot be convinced until there is a bf program that is equivalent to netbeans.
10:30:28 <elliott> CakeProphet: Enjoy wallowing in your self-created ignorance then?
10:30:30 <Phantom_Hoover> Taneb, check the wiki; also years of logs because it turned into a Sgeo-meme.
10:30:48 <Taneb> CakeProphet:The framework or the IDE?
10:30:53 <CakeProphet> the IDe.
10:31:24 <Deewiant> What's a Sge​o-meme
10:31:38 <Phantom_Hoover> FFS, is the term for computational equivalence not 'computational equivalence'?
10:31:39 <fizzie> Deewiant: A rare South-American insect.
10:31:46 <Phantom_Hoover> Googling it only turns up Wolfram crap.
10:32:07 <CakeProphet> but I was never really talking about computational equivalence...
10:32:09 <zzo38> Deewiant: No cheating please.
10:32:10 <CakeProphet> not initially.
10:32:28 <elliott> Deewiant: Yeah, don't you cheat
10:32:30 <CakeProphet> I understand that all Java programs are computationally equivalent to some BF program.
10:32:31 <Deewiant> zzo38: What am I cheating
10:33:16 <CakeProphet> but I am specifically saying that the BF language, by itself, cannot be used to create an IDE, while Java can.
10:33:19 <zzo38> Or maybe I just have the wront fonts or encoding selected.
10:33:31 <CakeProphet> and that there is something that makes these languages non-equivalent for the purposes of translation.
10:33:32 <fizzie> Deewiant: Stop that incessant cheating!
10:33:43 <elliott> Deewiant: CHEATING IS FUCKING UNACCEPTABLE
10:34:09 <Deewiant> I think I'll just keep doing what I was doing
10:34:19 <Taneb> brb
10:34:23 -!- Taneb has changed nick to TanebAway.
10:34:24 <elliott> Deewiant: I have no idea what zzo is talking about, I just felt like accusing you
10:34:31 <fizzie> Deewiant: Same here.
10:34:37 <Deewiant> Yeah, I realized that
10:34:40 <fizzie> Deewiant: You're somehow so... well-accusable.
10:34:41 <Deewiant> I do know what he's talking about
10:34:43 <zzo38> It is also possible I am wrong
10:34:55 <zzo38> Due to wrong fonts or encoding
10:35:02 <CakeProphet> otherwise I could run a magical program that transforms every piece of Java software into a BF program that is exactly the same in every way. I run the BF program, and I can use it to edit text files on my file system.
10:36:13 <elliott> CakeProphet: Your repeated refusal to understand how IO streams can be viewed in different ways and this is the only thing that makes BF IO's normal interpretation different from the Java class library IO's normal interpretation will not make your statements any more relevant, or your objections any more true
10:36:31 <elliott> You should probably focus on trying to understand why you're wrong instead of convincing us we are
10:36:33 <Deewiant> elliott: His point is just that you need a wrapper written in non-BF
10:36:47 <CakeProphet> elliott: I am saying that no one has shown that I am wrong.
10:37:03 <elliott> Deewiant: That's an operating system detail; nothing says the BF streams have to be connected directly to a console
10:37:32 <elliott> Like I said, a Java program could output and take input in PSOX form directly with a console, just as much as a BF interpreter could have PSOX built right in
10:37:34 <CakeProphet> elliott: when have I mentioned a console? I am talking about input and output...
10:37:50 <elliott> CakeProphet: I give up.
10:38:03 -!- TanebAway has changed nick to Taneb.
10:38:06 <Taneb> Back
10:38:46 <fizzie> As far as I can make out, the point is the "Java runtime has features that Brainfuck implementations don't have, and the Brainfuck standard -- such as it is -- doesn't require" one, but I can't quite figure out why that's a point that would be necessary to make.
10:38:58 <elliott> because it's all he has left?
10:39:16 <CakeProphet> because that point makes a complete translation impossible.
10:39:21 <elliott> wrong.
10:39:28 <Taneb> As bf does not have a standard IO implementation, it could be assumed that the IO uses PSOX
10:39:29 <Deewiant> The point is just that you need to distribute something non-BF in the BF environment that implements the Java
10:39:40 <CakeProphet> without relying on a seperate program, yes.
10:39:42 <elliott> Deewiant: You need to distribute something non-BF in the BF environment
10:39:44 <elliott> i.e. a BF interpreter
10:39:56 <CakeProphet> elliott: and these interpreter will write to different files how?
10:39:56 <Deewiant> elliott: Right, just as you need a JVM in the Java
10:39:58 <Phantom_Hoover> CakeProphet, where does it say in the spec, for instance, that , and . read and write ASCII characters?
10:40:01 <elliott> Deewiant: Right
10:40:01 <CakeProphet> by.... creating a new language.
10:40:06 <elliott> Deewiant: So that's really not what he's saying
10:40:31 <CakeProphet> Phantom_Hoover: nowhere.
10:40:45 <CakeProphet> ..that isn't what I'm talking about. I haven't even mentioned ASCII.
10:41:00 <Deewiant> Phantom_Hoover:
10:41:00 <Deewiant> . Outputs ASCII code under pointer
10:41:01 <Deewiant> , Reads char and stores ASCII under ptr
10:41:37 <Phantom_Hoover> Deewiant, dammit.
10:42:00 <CakeProphet> It is impossible, in one bf program, to output "Hello" to stream A, and "World" to stream B, without fundamentally altering the language.
10:42:05 <elliott> Deewiant: If we go by Müller, BF is sub-Turing and this whole idiocy is irrelevant
10:42:15 <CakeProphet> it is very possible in Java to do this.
10:42:24 <Deewiant> elliott: I figure the difference is just that if you take a standard JVM that's all you need, but if you take a standard BF you need something on top
10:42:27 <elliott> Deewiant: Anyway, you could easily implement a conversion layer on , and . without violating the spec
10:42:34 <Deewiant> elliott: Müller's spec doesn't look sub-Turing
10:42:41 <elliott> Well, OK, but his impls were
10:42:42 <elliott> Deewiant: Sure, but "standard" is purely a cultural/conventional thing
10:42:45 <Phantom_Hoover> CakeProphet, hey, suppose I make an interpreter that writes every other character output to a different stream?
10:42:53 <CakeProphet> this has nothing to do with theoretics. I am saying no practical translator exists. Why is my assertion immediately interpretered as theoretical?
10:43:01 <elliott> Deewiant: CakeProphet cannot prove something mathematically impossible just because of cultural norms
10:43:35 <Phantom_Hoover> elliott, FFS, he has acknowledged that they're computationally equivalent.
10:44:15 <elliott> Phantom_Hoover: Yes, but he's still trying to make a separate point, and that point is wrong
10:44:32 <elliott> CakeProphet: Because you said "theoretically"?
10:44:37 <elliott> CakeProphet: Because you're using absolutes like "cannot"?
10:45:32 <CakeProphet> right, I asked "is it theoretically possible?"
10:45:39 <CakeProphet> and it is not..
10:45:41 <Taneb> I've completely lost focus on this debate, so I'm going to make a bf interpreter piping all IO through PSOX
10:45:43 <elliott> If your statement is "You can't expect a translated Java-to-BF program to have the same IO semantics when interpreted by an implementation that has different IO semantics in practice"... well, that's literally a direct tautology, and also not what you're saying.
10:45:45 <elliott> CakeProphet: Yes, it _is_.
10:45:53 <elliott> I am done with this.
10:46:06 <fizzie> CakeProphet: Also defining in which "streams" (whatever they are) the BF output goes is very much not "fundamentally altering the language", since the language doesn't say where it goes.
10:46:12 <fizzie> I think I'm done here too.
10:46:13 <elliott> You are wrong and until you accept you are wrong and try to understand why, you can continue believing whatever you want as far as I'm concerned.
10:46:27 <elliott> You'll still be wrong, though.
10:46:35 <CakeProphet> fizzie: but in Java, the language does say where the streams go.
10:46:40 <CakeProphet> there is some difference
10:46:52 <CakeProphet> in the language itself.
10:47:03 <fizzie> CakeProphet: The "Java Language Specification" does not even say how to make any output, so...
10:47:25 <fizzie> The "Java" system does, yes.
10:47:27 <Deewiant> CakeProphet: Those streams can work just as well in the BF, with a wrapper that handles it.
10:48:28 <CakeProphet> hmmm...
10:48:52 <Taneb> Huh
10:48:54 <fizzie> You can compare the Java Language Specification document, which -- I mean, just read the name -- defines the "language itself", with the rather less formal BF language specification.
10:49:12 <Taneb> A bf interpreter with PSOX is suggested right in the PSOX readme
10:49:14 <CakeProphet> okay, the output has to change in order to accomodate the wrapper.
10:49:36 <Taneb> "python PSOX.py bf somebf.bf"
10:49:49 <Deewiant> CakeProphet: Right, but that's internal to the translation process and doesn't matter.
10:49:53 <elliott> Taneb: Well, yeah, it /is/ Sgeo's pet vapourware
10:50:21 -!- elliott has quit (Remote host closed the connection).
10:50:22 <Phantom_Hoover> elliott, wait, PSOX was vapourware?
10:50:41 <Taneb> I think you just missed him
10:50:53 -!- elliott has joined.
10:51:09 <elliott> Sorry, X messing up again.
10:51:11 <elliott> 10:50:22: <Phantom_Hoover> elliott, wait, PSOX was vapourware?
10:51:11 <elliott> Yes.
10:51:19 <CakeProphet> but doesn't the program have to compute something that is non-equivalent to the source language in order to output data differently?
10:51:22 <Phantom_Hoover> I thought there was a kind of implementation.
10:51:31 <CakeProphet> *source program
10:51:31 <elliott> There is, but it was late, and woefully incomplete.
10:51:33 <Phantom_Hoover> Sgeo, FFS, fix your goddamn site.
10:52:37 * CakeProphet understands, to an extent, what is being said, but still thinks there is a discrepancy
10:52:38 <Deewiant> CakeProphet: Depends on how you define "compute something that is non-equivalent". If you think printing "please print 'x' to stdout" is computationally nonequivalent to printing "x", then yes.
10:53:54 <elliott> Deewiant: Oh man, that means that your libc introducing another layer of abstraction behind the scenes could cause your interpreter to become "computationally nonequivalent".
10:53:56 <elliott> Sweet
10:54:10 <Deewiant> elliott: Yep, exactly :-P
10:54:53 <CakeProphet> these differing abstractions require different computations in order to generate the write output.
10:55:04 <CakeProphet> ...heh, s/write/right/
10:55:07 <Deewiant> Quite true.
10:55:19 <Deewiant> Depending on the compiler and compiler flags used, you'll also get different computations.
10:55:22 <Deewiant> And the hardware, etc.
10:55:31 <fizzie> Deewiant: If those two things are not equivalent, I find it hard to believe a BF method of summing up two numbers in multiple distinct steps could ever be "equivalent" to the "computations" a JVM 'add' instruction does.
10:55:41 <elliott> Deewiant: Also the underlying fabric of the physical universe your computer is in.
10:55:54 <Deewiant> fizzie: Right.
10:55:55 <elliott> Deewiant: That's what REALLY drives the computations, after all.
10:56:03 <Deewiant> elliott: Well, the universe we can maybe assume to be constant. :-)
10:56:10 <fizzie> elliott: No, it's YOUR MIND that is IMAGINING the universe that drives it.
10:56:14 <elliott> Deewiant: DON'T BE SO SURE
10:56:24 <Taneb> It's actually my mind
10:56:25 <Deewiant> elliott: Maybe not in practice, but in theory.
10:56:39 <elliott> Deewiant: But I thought CakeProphet was talking about practice now >:)
10:56:52 <CakeProphet> I am trying to fit practice with theory.
10:56:55 <Taneb> You are all figments of my imagination
10:57:09 <Taneb> Hence the silly names
10:57:25 <CakeProphet> because the theory is inadequate if it can't describe what is happening in practice.
10:57:37 <elliott> Deewiant: Have fun
10:58:24 <Taneb> Gonna make another statement:
10:58:57 <elliott> <Taneb> Four score and seven years ago, ...
10:59:05 <Taneb> Any algorithm that can be encoded in brainfuck can also in executed by Java, and vice versa.
10:59:32 <Taneb> *encoded in, not exexuted by
10:59:53 <Deewiant> Right, they can both output the C code for the algorithm
11:00:15 <Phantom_Hoover> <elliott> Deewiant: DON'T BE SO SURE
11:00:20 <Taneb> And they can both run the algorith, if it encoded correctly
11:00:39 <Phantom_Hoover> Well, if it isn't constant, you can assume there are some rules for the inconstancy, which is just another kind of constant.
11:00:39 <zzo38> There is a program compiling brainfuck codes to LLVM. And it can use optimizations of LLVM.
11:01:22 <CakeProphet> hmmm okay...
11:02:29 <CakeProphet> I don't believe a translator can determine the output of a Java program that will match the output of a bf program running in the same IO layer...
11:02:38 <CakeProphet> this makes no sense.
11:02:48 <Taneb> It makes perfect sense
11:02:54 <Taneb> It's just tricky to implement
11:03:40 <fizzie> None of it makes sense! It's all baloney! Aaaaaah! *sets self on fire, runs to the forest*
11:04:02 <Taneb> See, that's why we can't have nice stuff
11:05:26 <CakeProphet> I don't believe the formation rules of the Java language provide enough information to determine the exact output of a Java program in a way such that a bf program can be constructed that produces the same output.
11:05:34 <Phantom_Hoover> Don't worry, the snow in the forest should put him out.
11:05:59 <elliott> CakeProphet: i'm afraid you've ceased to make any sense
11:06:02 <Phantom_Hoover> CakeProphet, *sigh*.
11:06:04 <zzo38> Phantom_Hoover: Oops that is too bad, because now you cannot see because there is no more fire
11:06:11 <zzo38> It is too dark
11:06:15 <CakeProphet> because the output of a Java program is dependent on its environment.
11:06:21 <Phantom_Hoover> Take every output function, translate it into Brainfuck.
11:06:38 <Phantom_Hoover> OK, you don't understand basic *programming* now.
11:07:00 <Phantom_Hoover> zzo38, ah, but it's light until like 1 o'clock in the morning in Finland.
11:07:18 <elliott> CakeProphet: indeed, a java program is a function from World to World
11:07:20 <elliott> /claps
11:07:36 <zzo38> Phantom_Hoover: O, then it is OK. I didn't know that at first.
11:07:57 <CakeProphet> so how can a language translator, which is given only the languages and source string, know which output to produce.
11:08:01 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
11:08:02 <Phantom_Hoover> And dawn is so early, it's actually before midnight.
11:08:07 <elliott> CakeProphet: ...
11:08:08 <Deewiant> CakeProphet: Compilers 101
11:08:17 <elliott> what Deewiant said
11:08:32 <Phantom_Hoover> CakeProphet, are you actually studying anything?
11:08:39 <zzo38> Is there programs that can convert a native binary into LLVM code?
11:09:03 <Taneb> He's probably studying more than me. I just read Wikipedia from time to time.
11:09:14 <Phantom_Hoover> "I'm a visual thinker which makes me a poor quantum physicist."
11:09:16 <fizzie> Phantom_Hoover: Helsinki at 01am, http://www.flickr.com/photos/ihmis-suski/4722433968/sizes/z/in/photostream/ (at least based on the name)
11:09:17 <Phantom_Hoover> Die in a fire.
11:09:34 <CakeProphet> Phantom_Hoover: I don't know. Are you actually holding a conversation with me, or just being condescending?
11:09:36 <Phantom_Hoover> fizzie, dear god, I was actually right?
11:09:39 <Deewiant> zzo38: libcpu
11:09:54 <Phantom_Hoover> CakeProphet, I'm curious, because I have absolutely no idea what you actually do.
11:10:18 <fizzie> Phantom_Hoover: To some degree, sure. Though only the northern part of the country's actually above the arctic circle and gets the whole "sun does not actually have time to set" thing.
11:10:25 <Phantom_Hoover> Most people here over 18 are doing some form of CS at university.
11:10:30 <CakeProphet> Nothing. I might as well be a ghost.
11:10:35 <fizzie> Phantom_Hoover: Or at least some form of BS.
11:10:57 <elliott> CakeProphet: let's be honest, you've been pretty condescending in assuming that you've proved everyone in here as well as pretty much everyone who has ever done CS fundamentally wrong
11:10:59 <Phantom_Hoover> CakeProphet, it's the best.
11:11:00 <zzo38> Deewiant: OK. Would instruction trace data help? Some instruction trace data (not necessarily all, except in the case of restricted harvard) can be figured out by static analysis.
11:11:14 <CakeProphet> elliott: I haven't proved anything.
11:11:26 <Phantom_Hoover> Back when I was just Hoover life was just full of walls and doors and things holding me back.
11:11:38 <CakeProphet> I am seeking to understand a discrepancy that I am seeing between theory and practice.
11:11:51 <Taneb> No your not!
11:11:56 <Deewiant> zzo38: I don't know, I know almost nothing about libcpu.
11:11:59 <Taneb> You're being overly pedantic!
11:12:16 <Taneb> And things seem wrong to you because you expect them to be wrong!
11:12:42 <elliott> Nothing wrong pedanticism, as long as it's correct
11:12:44 <elliott> [asterisk]wrong with
11:13:06 <elliott> Unfortunately the highest layer of pedanticism on this issue definitely states that Java is equivalent to BF :-P
11:16:26 <fizzie> !perl print "Java" eq "BF" ? "equivalent" : "not equivalent"
11:16:26 <EgoBot> not equivalent
11:16:30 <fizzie> Ha, proved you worng!
11:17:02 <Phantom_Hoover> <CakeProphet> I am seeking to understand a discrepancy that I am seeing between theory and practice.
11:17:09 <Phantom_Hoover> *There is no discrepancy*.
11:17:26 <Phantom_Hoover> You just don't understand what computational equivalence means.
11:17:38 <elliott> Phantom_Hoover: It isn't even about computational equivalence and it hasn't been for like an hour.
11:17:50 <Taneb> <Taneb> And things seem wrong to you because you expect them to be wrong!
11:17:55 <elliott> It's about CakeProphet not realising that the only thing distinguishing Java and BF's IO models is basically conventional implementation techniques.
11:18:00 <Taneb> Is that how quotes are done here?
11:18:01 <fizzie> It's about cookies now.
11:18:05 <elliott> Taneb: Yes. :p
11:18:12 <Taneb> Oh, good
11:19:12 <Phantom_Hoover> <Taneb> Is that how quotes are done here?
11:19:14 -!- Vorpal has joined.
11:19:23 <Phantom_Hoover> They're done differently elsewhere?
11:19:33 <Taneb> I dunno
11:19:39 <Taneb> I'm very rarely on IRC
11:19:57 <Taneb> In fact, this is pretty much the third channel I've ever been on
11:20:02 <Taneb> And the first on Freenode
11:20:35 <Taneb> The first two were pretty crazy and even less on-topic than here
11:20:47 <Phantom_Hoover> We have to beat them!
11:21:08 <Phantom_Hoover> The topic of discussion is now the historical merits of the Whig party.
11:21:22 <elliott> Taneb: Is that... possible?
11:21:36 <Taneb> Evidentally
11:21:46 <elliott> Evidentistry.
11:21:47 <Taneb> We occasionally discuss esoteric programming languages
11:22:01 <Taneb> Phantom_Hoover: Which Whig Party?
11:22:01 <Phantom_Hoover> Just like here!
11:22:07 <Phantom_Hoover> Taneb, you choose!
11:22:32 <Taneb> Let's do the first one on the Wikipedia redirect page
11:22:42 <Taneb> "A faction of the Scottish Covenanters during the 17th-century Wars of the Three Kingdoms, and the original Whigs. (See also Whigg and Whiggamore Raid)"
11:22:43 <fizzie> Did the two others in fact have a topic?
11:22:52 <Taneb> Yes
11:23:08 <Taneb> A small MSPAFA on the MS Paint Adventure forums, and TV Tropes
11:23:13 <Taneb> Respectively
11:23:20 <fizzie> TV Tropes does IRC?
11:23:25 <Taneb> Yeah
11:23:32 <Phantom_Hoover> Taneb, oh, you're an MSPA fan too.
11:23:38 <Taneb> Yep
11:23:43 <CakeProphet> main = readFile "a.txt"
11:23:46 <CakeProphet> translate to bf plz
11:23:57 <Taneb> fizzie: http://tvtropes.org/pmwiki/pmwiki.php/Main/TroperIRCChannel
11:24:22 * CakeProphet was told that IRC is a turing complete language.
11:24:40 <Phantom_Hoover> You're talking about IRP, aren't you?
11:24:42 <Taneb> You mean IRP, right
11:24:44 <Taneb> Ninja'd
11:24:49 <Taneb> Error 709: Ninja'd
11:24:59 <CakeProphet> er, yes, that.
11:25:30 <Taneb> CakeProphet: .[>.] where EOF=0
11:25:30 <Phantom_Hoover> #irp
11:25:46 <Phantom_Hoover> But seriously, it's just a joke.
11:26:36 <Taneb> Please write this exact line unless it has been written more than once before.
11:26:53 <CakeProphet> Done.
11:27:06 <CakeProphet> IRP is a bit nondeterministic.
11:27:11 <Deewiant> CakeProphet: ++++++++++[>++++++++++>+++++++++>++++++++++>+++++++++++>+++>++++++>+++>+++++++++++>++++++++++>+++++++++>++++++++++>+++++++>++++++++++>++++++++++>++++++++++>+++>+++>+++++++++>++++>+++++++++++>++++++++++++>+++++++++++>+++<<<<<<<<<<<<<<<<<<<<<<<-]>+++++++++.>+++++++.>+++++.>.>++.>+.>++.>++++.>+.>+++++++.>.>.>+++++.>++++++++.>+.>++.>++++.>+++++++.>++++++.>++++++.>.>++++++.>++++.
11:27:18 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/iq2nk/how_can_autistic_savants_like_kim_peek_completely/c25sdgc
11:27:31 <Phantom_Hoover> What is it with people believing this is how the brain works.
11:27:36 <Taneb> Could someone roll a standard D6 and tell me the number?
11:27:38 <CakeProphet> !bf ++++++++++[>++++++++++>+++++++++>++++++++++>+++++++++++>+++>++++++>+++>+++++++++++>++++++++++>+++++++++>++++++++++>+++++++>++++++++++>++++++++++>++++++++++>+++>+++>+++++++++>++++>+++++++++++>++++++++++++>+++++++++++>+++<<<<<<<<<<<<<<<<<<<<<<<-]>+++++++++.>+++++++.>+++++.>.>++.>+.>++.>++++.>+.>+++++++.>.>.>+++++.>++++++++.>+.>++.>++++.>+++++++.>++++++.>++++++.>.>++++++.>++++.
11:27:38 <elliott> Deewiant: Is that the PSOX version? :)
11:27:39 <EgoBot> main = readFile "a.txt"
11:27:49 <elliott> Aww, you should have made it the PSOX version.
11:27:50 <Deewiant> elliott: Nah, it needs a GHC wrapper
11:27:58 <elliott> Deewiant: That doesn't count, it's Turing-complete :-P
11:28:17 <CakeProphet> okay, so what you're saying
11:28:19 <Deewiant> Well, it can be done with a simpler wrapper too
11:28:43 <elliott> Deewiant: I dislike the use "wrapper" here as it implies the standard IO interpretation isn't a wrapper mapping it to standard C IO
11:28:48 <elliott> Which it is, just as much as any other wrapper
11:28:53 <elliott> It's not something additional
11:29:07 <CakeProphet> is that the bf program . is Turing-equivalent to main = readFile "a.txt", since there exists some wrapper that takes a null character and as a result outputs that string.
11:29:15 <Deewiant> It's an additional layer between it and the platform
11:29:45 <elliott> CakeProphet: I think everyone's lost interest in seriously "debating" this with you, so I'm just going to poke fun at the sidelines
11:29:51 <elliott> At the sidelines. On the sidelines? Along the sidelines?
11:29:52 <elliott> God knows.
11:30:01 <Taneb> Sidelines: Poke
11:30:03 <elliott> Deewiant: So is C stdio; you'd need read/write to be direct
11:30:05 <CakeProphet> until the sidelines
11:30:08 <elliott> (On Unix)
11:30:18 <Deewiant> elliott: Yes, it is
11:30:36 <CakeProphet> elliott: that's fine, I'm only looking for serious discussion on the matter.
11:31:04 <CakeProphet> any fun-poking just suggests that you have nothing to contribute.
11:31:26 <fizzie> That's fighting words!
11:31:30 <elliott> CakeProphet: Sure thing, Mr. Albert "Computer Science is Inadequate Because Java has GUI Widgets" Einstein.
11:31:34 <Phantom_Hoover> fizzie, *them
11:31:48 <fizzie> I tried to contribute a PSOX version, but it's so complicated. :/ :\
11:32:06 <elliott> Well, unwarranted arrogance is at least not an uncommon trait in CS, so maybe CakeProphet could capitalise on this somehow.
11:34:02 <CakeProphet> fizzie: what does the PSOX version output, out of curiosity
11:34:58 <elliott> The contents of a.txt.
11:35:10 <quintopia> awesome, thanks zzo
11:35:16 <CakeProphet> no, that's what PSOX outputs.
11:35:24 <elliott> Nope.
11:36:11 <Taneb> Hang on, wasn't this debate originally about countability?
11:36:37 <Phantom_Hoover> http://www.reddit.com/r/askscience/comments/ipsly/how_do_bananas_exist_why_dont_they_just_explode/
11:36:37 <Phantom_Hoover> Best question.
11:37:21 <CakeProphet> so then . instruction BF does not actually produce any output?
11:37:24 <CakeProphet> +of
11:38:02 <elliott> CakeProphet: Do you seriously still believe you're right about this? Honestly curious.
11:38:06 <CakeProphet> because I am pretty sure a BF program that was written over PSOX would output something different than the contents of a.txt
11:38:15 <Taneb> <CakeProphet> I believe that would imply that the set of valid programs is countable.
11:38:21 <Taneb> That's what started the debate
11:38:28 <elliott> "Debate"
11:38:44 <Deewiant> CakeProphet: fiz‍zie doesn't know what the BF would output because "it's so complicated" so he didn't do it.
11:38:48 <Taneb> debate := shouting match
11:38:52 <fizzie> The PSOX version would output the contents of a.txt, when you run it in a compatible BF system, yes. As for which strings are needed to make PSOX do that, I just said it's too complicated.
11:38:56 <Taneb> g2g, bye
11:39:04 -!- Taneb has changed nick to TanebBeLunching.
11:39:49 <CakeProphet> so then are the Java programs that output the PSOX string required to output a.txt, and the Java program that outputs a.txt, computationally equivalent?
11:39:51 <fizzie> Deewiant: At the very least, when run on a non-PSOX-compliant BF systems (assuming you can find any in this day and age of PSOX dominance), it'd just output the init string and wait for you to respond.
11:40:00 <CakeProphet> because it seems they would translate to the same bf program.
11:41:17 <fizzie> The PSOX version of a Java program that pretended to speak the PSOX protocol in the standard output would, when run in a PSOXy BF, output whatever the PSOX version of the a.txt-outputting Java program would output when ran in a non-PSOXy BF. Clearly.
11:42:13 <CakeProphet> ...lol
11:42:18 <CakeProphet> Clearly!
11:42:31 <CakeProphet> (but no really, that makes sense)
11:43:52 <fizzie> Anyway, in the PSOX version you'd need to use both the . and , instructions to cause output, or even to get past the PSOX init. It's still very much BF, nevertheless. The difference would be sort-of analogous to using either fwrite() or write() in a C program to write something out.
11:47:32 <CakeProphet> hmm, so let's say I had a bf to Java translator.
11:47:32 <CakeProphet> it's very simple. constructs a resizing array and then translate bf instructions to standard Java operations on the array, with stdout and stdin IO for . and ,
11:47:32 <CakeProphet> can I translate every Java program into this subset of Java?
11:47:32 <elliott> With a different IO interpretation to the interpretation the programs you're translating were written for, yes.
11:47:32 <CakeProphet> doesn't that imply that the IO is meaningless? There is always a suitable interpretation for the output.
11:47:32 -!- Gregor has quit (Ping timeout: 240 seconds).
11:47:32 <elliott> If you like things to imply ridiculous things that they don't actually imply: definitely.
11:47:32 -!- lambdabot has quit (Ping timeout: 240 seconds).
11:47:32 -!- glogbot has quit (Ping timeout: 276 seconds).
11:47:38 -!- esowiki has joined.
11:48:02 -!- esowiki has joined.
11:48:23 -!- esowiki has joined.
11:48:44 -!- esowiki has joined.
11:49:07 -!- esowiki has joined.
11:49:08 -!- glogbot has joined.
11:49:35 <fizzie> Translating Java to BF isn't really related to how your BF implementation is done, or even whether you have one. Though as a practical matter maybe you could consider a built-in PSOX support using the Java runtime's facilities.
11:49:51 -!- boily has joined.
11:49:54 <fizzie> That would let you stick an arbitrary amount of BF-based layers in Java programs, if they happened to run too fast.
11:50:00 <fizzie> (A common complaint about Java systems.)
11:50:40 <CakeProphet> it seems to me that changing the nature of the IO changes the computations required.
11:51:04 <CakeProphet> in order to make Java programs PSOX-compliant, you would first have to translate all Java programs into PSOX-compliant versions
11:51:10 <CakeProphet> then translate those to bf
11:51:26 -!- Gregor has joined.
11:51:49 <CakeProphet> in order for the bf code to be computationally equivalent to the original Java code, would means that the original Java code is computationally equivalent to the PSOX-compliant version
11:51:51 -!- Gregor has changed nick to Guest64652.
11:52:02 <elliott> CakeProphet: As Deewiant has painstakingly pointed out, if you take that view, then a change in the internals of your C library can cause a program to "compute something different".
11:52:06 <CakeProphet> even though they compute differently
11:52:35 <CakeProphet> elliott: no, because changing the C library changes the C program.
11:52:35 <elliott> In fact, you can't compile anything, unless it causes the universe to make the exact same state change.
11:53:00 <elliott> Deewiant: Ugh, please deal with this or pass the buck on to somebody else, I'm way too busy to restate the obvious.
11:53:30 <Deewiant> CakeProphet: If you include the dynamic libraries as part of the C program, you have to include the PSOX as part of the whatever-is-using-the-PSOX program etc
11:53:52 <fizzie> CakeProphet: The point in the computational equivalence is not the exact sequence of operations followed when executing; those are obviously going to be different for different languages. They're going to be different for the same language when using different compilers, too.
11:54:16 <CakeProphet> what is computational equivalence then?
11:55:15 <Deewiant> Read the Church-Turing thesis.
11:56:03 <elliott> Deewiant: What definition are you using there? Computational equivalence seems to me a much more formal notion than Church-Turing
11:56:41 <fizzie> A compiler from Java to BF is not going to be able to straight-forwardly map each separate Java "computation" (statement? expression?) into a distinct piece of BF code, anyway.
11:56:55 <Deewiant> elliott: Dunno, just blurting stuff
11:58:01 <fizzie> So translating file.write(42); into whatever sequence of BF that is required to output the byte 42 in a PSOXy system is not really changing the "computations", or what the program in general does.
11:58:06 -!- TanebBeLunching has changed nick to Taneb.
11:58:10 <Taneb> Hello again
11:58:18 <elliott> Taneb: hi, nothing has changed
11:58:21 <fizzie> Taneb: As you can see, we've been making lots of progress.
11:58:30 <fizzie> (Detect the optimist and the pessimist.)
11:59:04 <elliott> Mumble mumble "realist"
11:59:06 <CakeProphet> so for the purposes of computation, IO is effectively a no op?
11:59:14 <Taneb> Yes
12:00:05 <elliott> O is
12:00:09 <elliott> I isn't, since it's... well, input.
12:00:14 <elliott> And I can depend on O
12:00:24 <Taneb> But all input is available as a stack at the start of the program
12:00:56 <CakeProphet> isn't the order important?
12:01:03 <Taneb> Actually, for the purposes of computation, all I has already happened
12:02:17 <elliott> CakeProphet: Like I've said, every program is a function from RealWorld to RealWorld
12:02:32 <elliott> You can model IO of any type merely by implementing the type RealWorld
12:02:50 <elliott> So PSOX provides a stream-based RealWorld type for anything with byte-based IO that handles things like file IO, networking, etc.
12:03:14 <elliott> Compiling Java to BF is just picking a concrete RealWorld type, then compiling the resulting function appropriately.
12:04:26 <CakeProphet> and so that function is considered to not compute anything, or be part of the program.
12:04:43 <elliott> Eh?
12:04:45 <elliott> That function _is_ the program.
12:05:06 <Taneb> So, strictly speaking, the second part of that is true
12:05:31 <Taneb> The first part isn't, though
12:06:22 <CakeProphet> so a valid string in a programming language does not correspond to a program that can be translated.
12:06:44 <CakeProphet> until the source and target environments are known as well
12:06:56 <Taneb> What? No
12:07:07 <Taneb> The program doesn't need to know the source or target enviroments
12:07:23 <Taneb> It takes a string, and converts it into a different string
12:07:26 <elliott> CakeProphet: Do you really not understand how you can compile a function without knowing its input at compile-time?
12:07:39 <elliott> If you don't, I really question whether you have the slightest bit of programming knowledge at all.
12:08:10 -!- lambdabot has joined.
12:08:13 <CakeProphet> elliott: more like, without knowing how its output is supposed to be structured.
12:08:31 <elliott> I just talked about defining the structure of a RealWorld type, for christ's sake.
12:09:06 <Taneb> The program will know the input and output formats
12:09:15 <elliott> Right
12:09:19 <elliott> The compiler will know it's outputting for PSOX
12:09:20 <elliott> Or whatever
12:10:36 <CakeProphet> I feel like I haven't different defintiions of program and language than what you guys are talking about.
12:10:39 <CakeProphet> *have
12:10:59 <elliott> To be perfectly honest I doubt you have a clear definition of either
12:12:50 <CakeProphet> from my understanding of what you guys are talking about, the actual concrete layout of a program has nothing to do with the theoretical program itself.
12:13:11 <elliott> Define concrete layout
12:13:17 <CakeProphet> they do not correspond in any way.
12:13:37 <elliott> If you mean that the syntactic structure of a program and the abstract computation it represents are not necessarily similar, well duh
12:13:53 <elliott> CakeProphet: Do you consider gcc not a translator because it can change the logical structure of a program due to optimisation?
12:14:27 <CakeProphet> the string, or list of tokens, or whatever, that makes the source code. I have a bf program that consists of ".", and because it is hooked up to a certain environment, it is computationally equivalent to a Java quine.
12:15:04 <Taneb> How the hell would that work?
12:15:15 <elliott> Are you saying that you want a Java quine to compile into a BF quine that outputs the same as the Java program?
12:15:18 <elliott> Herp derp
12:15:19 <Taneb> It outputs "0"
12:15:33 <CakeProphet> I have the CakeProphetBF environment, a bf program that outputs a single null character is a quine.
12:15:36 <elliott> Taneb: You could have a FuckedUpPSOX where the way to output <a certain java program source> is by printing a nul byte
12:15:46 <elliott> But it's really irrelevant, CakeProphet is just confused
12:16:20 <Taneb> CakeProphet: You can therefore make a Java environment that does similar
12:16:36 <CakeProphet> elliott: I am saying that a Java quine is computationally equivalent to the bf program ".".
12:16:37 <Taneb> Except you're probably not that good at programming
12:16:44 <CakeProphet> because this environment exists.
12:16:50 <Taneb> No it's not
12:16:54 <elliott> CakeProphet: Like I said: you're confused.
12:17:00 <Taneb> A quine is a program that outputs itself
12:17:05 <elliott> I'm going to use my legendary buck-passing skills by pinging Deewiant and fizzie now, and go back to coding Java.
12:17:24 <Taneb> By translating it, unless it is a cheating quine, it outputs the untranslated version
12:19:32 <fizzie> I'm just going to hide here behind this convenient tree; I'm supposedly at work and all.
12:19:52 <elliott> fizzie: You can't pass the buck to a TREE!
12:19:54 <CakeProphet> but I have an environment that outputs a Java quine when given a null character from the BF program. Therefore "." is computatinally equivalent to both the Java quine that it outputs and the bf program that is hooked up to stdio that outputs the java quine.
12:20:42 <Taneb> Only if computatinally isn't a typo and it means something that I have no idea what
12:21:25 <CakeProphet> I am not going to be able to explain what is confusing me.
12:22:04 <elliott> it is computationally equivalent _in the context of your environment_.
12:22:24 <Taneb> In your environment, a computationally equivalent Java program would output "."
12:22:47 <elliott> Taneb: um, no
12:23:30 <CakeProphet> what if the environment of the target language is restricted and cannot do the same things that the source environment can do.
12:23:31 <Taneb> Okay, trust elliott, he's probably more right than I am
12:23:44 <CakeProphet> for example, Java runtime compared to the standard bf environment (stdio)
12:24:24 <CakeProphet> in the context of those two environments, there are Java programs that are not translatable to bf programs.
12:24:41 <Taneb> Example?
12:24:47 <elliott> Deewiant: Buck-passin' = bassin'
12:24:48 <Taneb> brbr
12:25:03 <CakeProphet> Java program that reads a.txt and outputs it.
12:25:10 <CakeProphet> to stdout
12:25:27 <CakeProphet> ah, no, that's not a good example. :P
12:26:18 <CakeProphet> anyways, it is pretty fucking early and I am tired of this... so... yeah
12:26:43 <CakeProphet> I think I have made some progress towards clarifying what I was confused about.
12:26:48 <elliott> Let me know when you realise you're wrong
12:28:38 <CakeProphet> I am still positing that you cannot translate netbeans source code to a bf program that will do the exact same thing.
12:28:44 <Deewiant> Well he's right in that the Java standard library does more than brainfuck's , and . do
12:29:09 <CakeProphet> standard bf, as it is specified.
12:30:05 <elliott> Deewiant: If hooked up to a console, yes
12:30:28 <elliott> CakeProphet: If you take "standard BF" to mandate the interpretation of IO, then sure. Now imagine this scenario:
12:30:33 <CakeProphet> "do the same thing" as in, windows will appear in your window manager, it is responsive to keyboard and mouse input, it will not work in the same systems that netbeans will not work in.
12:30:38 <elliott> CakeProphet: The program prints out "draw a box"; "draw a line inside box A"; etc.
12:30:48 <fizzie> Deewiant: Two hours ago: <fizzie> CakeProphet: Seriously, if you talk about "translating in theory", then people are going to take the computational-complexity view on this. If you say something like "Java runtime has all kinds of IO-related features that Brainfuck implementations don't tend to have, and the Brainfuck language doesn't exactly define", then I don't think you'll get so many people disagreeing.
12:30:51 <elliott> CakeProphet: If some underpaid worker read these instructions off a normal BF console output,
12:31:04 <elliott> CakeProphet: And manually constructed the UI objects on a screen,
12:31:15 <elliott> CakeProphet: Then they would have caused the implementation to stop being standard BF by your argument.
12:31:21 <Deewiant> fizzie: Yes, I recall that
12:31:28 <fizzie> Deewiant: O
12:31:54 <CakeProphet> elliott: and so, nothing has changed, it is still impossible.
12:31:57 <fizzie> Deewiant: I just had a sense of that dezza fu.
12:32:10 <fizzie> (And the "O" was a typo.)
12:32:51 <elliott> CakeProphet: You're straying really close to "stubborn idiot" territory. When the entirety of #esoteric is telling you you're wrong about a point of basic computer science, you should probably admit you're almost certainly wrong and try and understand why, rather than arguing back.
12:32:58 <elliott> (Sure, that's an appeal to authority, but then so is education of all sorts.)
12:33:58 <Phantom_Hoover> Oh god, you're still at this?
12:34:09 <elliott> Phantom_Hoover: CakeProphet is, yes.
12:34:32 <Taneb> Back
12:34:38 <elliott> Taneb: hi, nothing changed
12:34:44 <Taneb> Okay
12:37:00 <CakeProphet> the entire point of this conversation has been to understand why I might be wrong. So far you have explained how theoretical computer science handles the issue, but not why I am wrong. In any case, I'm done.
12:37:30 <elliott> fuk theoretics, we gangsta computa programmas on the street no the real computaional equivalence
12:37:43 <elliott> its a gun pointed 2 ur head//// and a bf implementation with only console io
12:37:47 <CakeProphet> no, not what I said.
12:38:17 <CakeProphet> I am not a "fuck theoretics I am a pragmatist" stereotype.
12:38:42 <CakeProphet> but I guess not fully understanding a subject = personal flaw
12:39:24 -!- Sgeo_ has joined.
12:39:29 -!- Sgeo has quit (Ping timeout: 255 seconds).
12:39:44 <elliott> CakeProphet: it wasn't anything related, i was just being silly
12:40:08 <CakeProphet> next time I talk about something on #esoteric I will make sure I know everything about it, otherwise I will be met with personal insults about how I haven't really been studying anything / can't program / etc
12:40:16 -!- CakeProphet has left.
12:41:15 <fizzie> It reminded me a bit of that Swordfish hacking scene, in fact.
12:42:01 <elliott> oh, i figured it was only a matter of time before he took being wrong personally
12:42:19 <elliott> kinda thought it would be sooner tbqh
12:43:29 <elliott> } else if (command.get("aliases") instanceof List<String>) {
12:43:29 <elliott> commandAliases = (List<String>) command.get("aliases");
12:43:37 <elliott> IntelliJ, you can't seriously be complaining about that cast on the second line.
12:43:46 <elliott> There's... no way that value is going to change.
12:43:50 <elliott> It is so not an unchecked cast.
12:43:54 <elliott> Why don't you love me.
12:43:56 <Deewiant> elliott: It could change concurrently
12:44:21 <elliott> Deewiant: It's part of the command description YAML for the Bukkit plugin
12:44:37 <elliott> I don't even think you're /allowed/ to change it, even theoretically
12:44:41 <Deewiant> IntelliJ can't know that
12:44:49 <Deewiant> Or maybe it can
12:44:53 <elliott> Yeah but you can't SuppressWarnings an assignment :-(
12:44:59 <Taneb> Bukkit? The Minecraft thing?
12:45:04 <elliott> Having said that IntelliJ knows way more than any computer should
12:45:06 <elliott> Taneb: Yes.
12:45:08 <Deewiant> elliott: Sure you can
12:45:12 <elliott> Deewiant: How
12:45:14 <Deewiant> Or maybe only a definition
12:45:17 <elliott> Yeah
12:45:28 <Deewiant> But that's a nasty double-lookup anyway :-P
12:45:41 <Deewiant> Just name it
12:45:47 <elliott> Deewiant: If it was d[k] instead of d.get(k) you wouldn't bat an eye at it :)
12:45:55 <Deewiant> Yes I would
12:46:08 <elliott> Deewiant: Would you bat an eye at array[0] being used twice?
12:46:10 <Deewiant> Just as if it was *p
12:46:11 <Deewiant> Yep
12:46:14 <elliott> Seriously?
12:46:16 <Deewiant> Yep
12:46:22 <elliott> if (*p =/= badValue)
12:46:23 <elliott> f(*p);
12:46:26 <Deewiant> I wouldn't necessarily care
12:46:31 <Deewiant> But I would bat an eye at it
12:46:38 <elliott> Do you name every subexpression? :-P
12:46:47 <Deewiant> If they have more than one use, I try to
12:46:56 <elliott> Java really needs a casting operator that converts nulls
12:47:06 <fizzie> elliott: Incidentally, what's the type of "command"?
12:47:33 <elliott> fizzie: Map<String,Object>, grossly enough
12:47:39 <elliott> Bukkit's API for this is kind of shitty
12:47:45 <elliott> It doesn't even expose it as the normal YAML API
12:47:49 <Deewiant> elliott: Right, so that can change concurrently and IntelliJ can't know
12:48:29 <Deewiant> Maybe if it were a HashMap or whatever's not synchronized it'd think it knows
12:48:30 <elliott> if (commandPermissionObject == null
12:48:30 <elliott> || !(sender instanceof Player)
12:48:30 <elliott> || permissionHandler.has((Player) sender, (String) commandPermissionObject)) {
12:48:32 <elliott> Deewiant: Bat an eye plz
12:48:38 <elliott> At this GROSSE MULTI-LINE CONDITIONAL
12:48:46 <elliott> RELYING ON SHORT-CIRCUITING FOR CORRECTNESS
12:48:50 <Deewiant> Nah
12:49:18 <fizzie> elliott: Well, you can cast it (List) without warnings, just avoid the generics there.
12:49:37 <elliott> Heh.
12:49:40 <Deewiant> That should get you a warning about not using generics :-P
12:50:03 <Deewiant> You do use -Xlint:all,-serial don't you
12:50:06 <elliott> Java is such a strange language, for what is essentially the most "standard" language out there
12:50:20 <fizzie> I think "instanceof List<String>" is equivalent to "instanceof List", anyway, since due to that type erasure thing the generics don't exist any more at runtime.
12:50:28 <elliott> Deewiant: I just use whatever IntelliJ uses by default, which I think is actually based on its own static analysis framework rather than javac
12:50:34 <elliott> It's certainly faster than javac :-P
12:50:47 <Taneb> <elliott>Java is such a strange language, for what is essentially the most "standard" language out there
12:50:55 <Taneb> I think that's a covert tautology
12:51:02 <elliott> Quite possibly
12:51:21 <elliott> But still, Java's the weirdest member of the mainstream OOP canon by far
12:51:31 <elliott> It's got as many quirks as Eiffel
12:52:45 <Taneb> I've had an idea
12:52:48 <Taneb> Take brainfuck
12:53:05 <Taneb> Add as many new features and syntax sugar as you can
12:53:15 <Taneb> In the hope of making a new language
12:53:25 <elliott> That's been done accidentally many a time :-P
12:53:31 <Taneb> That is sensible and usable enough to go mainstream
12:53:43 <Taneb> But still has brainfuck at its core
12:53:55 <elliott> Deewiant:
12:53:56 <elliott> } else if (aliasesObject instanceof List<String>) {
12:53:56 <elliott> aliases = (List<String>) aliasesObject;
12:53:59 <elliott> Deewiant: Still complains
12:54:05 <elliott> I wonder if there's technically a way to make that fail :-
12:54:06 <elliott> P
12:55:05 <elliott> Deewiant: fizzie: "Illegal generic type for instanceof"
12:55:06 <elliott> That's why
12:55:17 <Taneb> Different idea: functional brainfuck
12:55:18 <elliott> You can't instanceof a generics type
12:55:22 <elliott> <Deewiant> :(
12:55:24 <fizzie> Yes, I thought so.
12:55:38 <fizzie> But since you already pasted it, I thought it just did the same as instanceof List.
12:55:47 <elliott> Deewiant: fizzie: Which also means that the only way I can do a "checked" cast is with (List).
12:55:53 <Deewiant> I like that you only looked at the diagnostic now
12:55:53 <elliott> <Deewiant> IM GOING TO KILL MYSELF
12:56:04 <fizzie> The "checked" doesn't mean that you have checked it at runtime, I don't think.
12:56:10 <elliott> I've been trained to ignore squiggly red underlines by word processors
12:56:31 <elliott> fizzie: It's about scoping isn't it
12:56:37 <elliott> instanceof definitely lets you do a checked cast I thought
12:56:41 <fizzie> It'd be a permissible cast to (List) even if you didn't instanceof-test.
12:56:56 <elliott> It's not, because of the type of aliases being List<String>
12:57:07 <elliott> And "aliases = (List<String>) ((List) aliasesObject);" is also complained about :P
12:57:17 <fizzie> Yes, but that's because you try to cast to List<String>.
12:57:32 <fizzie> It's about the compile-time type-checking of generics, and casting to a genericized type goes around that.
12:57:35 <elliott> Right.
12:57:41 <Taneb> You know what would be fun?
12:57:46 <elliott> Can you make an if branch body @SuppressWarnings easily?
12:58:01 <Taneb> Porting Netbeans to brainfuck just to annoy CakeProphet
12:58:02 <fizzie> I'm not especially well-versed on the details. But you can always cast to plain (List), which is what the runtime type of the object is in reality.
12:58:13 <fizzie> Then you'll just need another cast to String when you get objects from it.
12:59:04 <fizzie> IIRC the point is that you shouldn't have a List<String> anywhere without the compiler being able to really check (not just trust your casts) that it in fact is a list of strings.
12:59:19 <elliott> fizzie: So basically Java wants to be Coq :)
12:59:59 <fizzie> I'm not sure if there were some any cleaner workarounds than just avoiding the use of generics for the cases where your API gives you just an Object that you happen to "know" is a List<String>.
13:00:18 <elliott> @SuppressWarnings("unchecked") List<String> tmp = (List<String>) aliasesObject;
13:00:18 <elliott> aliases = tmp;
13:00:27 <elliott> Now IntelliJ complains that tmp is a redundant variable :-D
13:00:29 <elliott> I CAN'T WIN
13:00:44 <elliott> fizzie: It could technically be a Map or anything else, it's just that that would be an invalid plugin YAML
13:00:49 <elliott> Dunno if it'd let you load that
13:01:01 <elliott> One field that's meant to be a list also accepts a string as the single element, sigh
13:01:05 <elliott> (This one, even)
13:01:37 <fizzie> If you want to have a generic there, it is permitted for you to cast it to List<?>.
13:01:49 <fizzie> Not that it's much of an improvement over List.
13:01:59 <elliott> Literally going to commit suicide
13:02:38 <fizzie> And I think you're allowed to cast to List<? extends Object> too if you like.
13:02:55 <fizzie> But not List<Object>, because that'd be a list of Objects only.
13:03:31 <fizzie> I vaguely recall there was some way of narrowing the types down without a warning, but I may be just misremembering that.
13:03:38 <Deewiant> elliott: Make an identity function and try id(tmp)
13:03:43 <fizzie> Probably ais could tell you, being a more Java guy.
13:04:11 <elliott> Deewiant: Hahaha
13:05:21 <elliott> Deewiant: I bet there's an IntelliJ SuppressWarnings annotation I can use :-D
13:06:04 <fizzie> Oh, right, I recall the reason for the "unchecked cast" warning more properly now.
13:06:09 <zzo38> I have just finished playing a game of pokemon card. This is probably the first time I have done, I have evolved for the sole purpose of increasing my own retreat cost! (And I did win. Both players 1 side card remain, opponent 0 cards in draw pile, me 7 cards in draw pile)
13:06:24 <elliott> fizzie: You do?
13:07:23 <fizzie> elliott: See, in "List tmp = (List)obj", the run-time checking is able to actually check the cast, and throw a ClassCastException if it fails. But in "List<String> tmp = (List<String>)obj", the run-time type of "obj" is "List", and the cast would succeed with no exceptions even if it were in fact List<Cock> instead. So that's why it's "unchecked".
13:07:53 <fizzie> And then you'd get a ClassCastException from Cock to String on some later tmp.get(42) where you'd least expect it.
13:07:58 <elliott> This is why languages shouldn't include cocks
13:08:02 <elliott> fizzie: Hey, wait, I could do case analysis
13:08:06 <elliott> If the list is empty, just construct a new empty one
13:08:14 <elliott> Otherwise, instanceof the first element...
13:08:19 <elliott> oh wait, it could be List<? extends Object>
13:08:20 <elliott> SIGH
13:08:28 <elliott> Java: The worst?
13:08:55 <fizzie> You could iterate the list, instanceof-test all the elements against String, and build your own List<String>.
13:09:12 <fizzie> You could even make a helper static List<String> stringifyMyRide(List<?> lst) method.
13:09:25 <elliott> Is there a more Javacally way to say assert(false);?
13:09:29 <elliott> if (aliasesObject instanceof String) {
13:09:29 <elliott> aliases = new ArrayList<String>();
13:09:29 <elliott> aliases.add((String) aliasesObject);
13:09:29 <elliott> } else if (aliasesObject instanceof List) {
13:09:29 <elliott> aliases = (List<String>) aliasesObject;
13:09:30 <elliott> } else {
13:09:31 <elliott> assert(false); // meh
13:09:34 <elliott> }
13:09:46 <fizzie> Some sort of a RuntimeException, maybe.
13:09:50 <oklofok> about CakeProphet's silly stuff about computational equivalence, we just had an international, rather well-known conference where one of the speakers whined about the exact same thing for half an hour
13:10:58 <elliott> haha
13:11:02 <fizzie> For example, javax.xml.bind.TypeConstraintException has a description that sort-of matches your case. :p
13:11:05 <elliott> did he storm off afterwards too
13:11:12 <elliott> oklofok: hey wait you told us about hat at the time :))))))))
13:11:34 <elliott> } else {
13:11:34 <elliott> throw RuntimeException("fuck this");
13:11:34 <elliott> }
13:11:34 <elliott> good
13:11:44 <oklofok> elliott: yes
13:11:48 <oklofok> i did tolded us.
13:11:49 <elliott> s/new/
13:12:22 -!- Guest64652 has changed nick to Gregor.
13:12:51 -!- Gregor has changed nick to Guest36411.
13:15:12 <Deewiant> elliott: You could put the assert in front of that :-P
13:15:16 <zzo38> I invented a notation of pokemon card deck list using ASCII.
13:15:32 -!- Guest36411 has changed nick to Gregor.
13:15:47 <elliott> Deewiant: Eh?
13:16:03 <Deewiant> I did too: <n> times <card name>
13:16:22 <fizzie> elliott: If you can manage somehow to get a Class<List<String>> object c (though I have no idea how, since only List.class is a valid class literal...), you can "List<String> l = c.cast(obj)" without any warnings about uncheckedity. But I suppose that may be impossible too.
13:16:27 <Deewiant> elliott: Before the throw
13:18:58 <fizzie> Deewiant: It took me quite a while to puzzle out how "<n> times <card name>" is putting the assert before a throw.
13:20:03 <zzo38> 4#92L17+2L17,L26+2L38 3#96L12+2L36 #124L23 #150L30 #21L13 #35L15+D33 #108L26 #249L55 22{@} {dc rc} ENERGYREMOVAL ENERGYRETRIEVAL ENERGYSEARCH 2POTION GAMBLER ITEMFINDER CHALLENGE GUSTOFWIND FULLHEAL SWITCH 2POKEMONTRADER BILL MASTERBALL
13:20:25 <zzo38> Is it good format OK?
13:26:43 <zzo38> Of course there is the more common long form, but I prefer short form deck listing.
13:40:01 -!- Tritonio has joined.
13:47:26 -!- Taneb has quit (Ping timeout: 240 seconds).
13:54:57 <cheater_> zzo38, what are you doing
13:55:06 <cheater_> ...
13:55:20 <zzo38> cheater_: I am reading your message about what am I doing.
13:55:51 <cheater_> i would like to see the syntax tree of that sentence.
13:57:23 <zzo38> [I] am [reading [your [[message] about [what am I doing]]]] (maybe I did this wrong I don't know for sure)
13:58:13 -!- Tritonio has quit (Quit: Leaving).
13:58:26 <zzo38> I also do other things too.
13:59:01 <zzo38> Such as, pokemon card, and writing the document of FurryScript, and writing the D&D character sheets both mine and my brother.
13:59:27 <oklofok> are you okay? i just dropped you people on the floor by accident
13:59:41 <oklofok> nah just kidding, i know you're not real
14:01:21 <zzo38> Yes it is OK, in case my bed broke, I should sleep on the floor instead.
14:08:59 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:12:46 <zzo38> Please tell me if this document is understandable to you: http://esolangs.org/wiki/User:Zzo38/FurryScript
14:14:05 -!- hagb4rd has quit (Quit: hagb4rd).
14:20:50 <cheater_> ǐ̷̭͙̭ͪ͒̅ͥṡ̶͔̼̒́ ̸͓͕̭̲̬̺ͩ͐ͮ̽͛ͪ́͡y̶͈̹̺̙̘̓ͦͥ͗̾̐̒ọ̤ͮu̪̭̦̺̼̪ͨ̌ͫ̎ͪ͗̎̋͛͞r̢͕̞̦̣̩ͤ̅ͩ̐͑̕ ̖̲̺̘͔͕̞̰̤ͯ̉m̝̗͓̺̳͙̬̜̮͗̔͋ͬ͆͂́ͦ̚ỏ̶͉͉̲̙̭͓̼̌̀n̼̮̱̳̼̮̣̹̈́ͩͩ̊͘͝i̗͂ͫ͗̿ͯ̚ţ̢̗͎̃ͭͣ͆̋̂͑͘ọ̸̐̓̑̌̇͗̎̒͟r̥͙͌͋͢͞ ̮̤͈͚̯ͬ̐̋ͫ͗͟͞b̴̨͈̭̄ͧr̸͎̃͌͑o̩̘̝̜̍ͪ̓͑͘͡ͅk̟̻̥ͧ̑ͥ͡e̶̪ͨ̏ͥ͟
14:20:55 <cheater_> ̩͎͇͈̹n̡̬̬ͣ̋̈̒̐͑̃͛́ͅ?̴͙͈͈ͥ̌
14:21:22 <cheater_> oklof̥̟̫̺̤ͮ̀̃͒̎ͪ̌ͩo̡̪͈̫ͮ́ͪ̋ͭk̛̻ͨͦ̉̉̕ͅ ̣̫̗̘͕̾ͧͅḓ̴̘͉̪̭̤̔ͤ͛̿ͤ̚͝i̗̜̯̤͇͐ͦ̋̌ͮ͒̈́̐̕d̋ͦ͏̞̲̦͖͇̪̤ͅ ̴͙̻̪̫̻̒ͥͬ͞͡y̝̪͙̰̖̼͖ͬͬ̍͂͐͊̎̚ͅǒ̘͍͔̫̤̻̠͗ͫ͘u̸͂̓͗ͫ͏̭̠͉̣̜̘̖̻ ̸̛̫͖̰̲͙̻͋̍̉̈d̪̤͎̗̟̪̩̦̗͗ͬͧͧͮ͆ͫ̑r̭̱̳̰̟̰ͭ͑ͥͤ͊o̶͇̪̖̒̑ͣͫͅp̺̩͛ ͕̦͈̲͎͖̐͛ͬ̈ͯy̺̹̫ͧ̈́̈́͌̍͝͝o̹͐͌͋͋̑͗͘
14:21:23 <cheater_> ̜ų̣̙̙̗̮̝̌̇ř̗̙̩͗̈ ̨̝̤̩̬̺̖̑ͩ̃̾̅̃̓̓͘͝l̴̔̒̃͋͂͆҉̧̬̗͇̫̬͇̦̱ȁ̴̽͜҉̖̙̫̠̙͔p̬͈̮̘͉̒ͯ̉̆̊͌ͧ͐ͅͅtop
14:21:35 <zzo38> What are you trying to type now?
14:21:45 <zzo38> It seems like mixed up.
14:22:42 <cheater_> it mus͔͓͕̄͊͋͘͞t̸̯̟̮͋̆̍͗̑ͫ̚͘ ̳̬̫̆ͣ̓̈́̂̀̚͞b̤͍̱̮̮͇̫́͒ͯ̽̀̓͆͑ę̹̗̉̅ͫ͋ͬ͌ͤ̂͟ ̆ͤͯ͏̘̯͠yͣ̓̊̊̾҉̤̰̦͕̯õ͌͆ͬ̓̽̂̚҉͓̟̱̬̰̻̯u̘̱̺̤̲͑r monitor
14:24:03 -!- Taneb has joined.
14:24:24 <zzo38> Now I can read it a bit. But, no it is not my monitor is broken. The monitor is working correctly. It is the speaker which is broke. But that doesn't cause the mixed up text on screen.
14:24:38 <Taneb> Hello
14:27:24 <zzo38> Hello Hello Hello Hello Hello
14:27:26 <oklofok> Taneb: 5
14:27:31 <oklofok> yw
14:30:35 -!- BeholdMyGlory has joined.
14:32:27 -!- copumpkin has joined.
14:32:28 -!- copumpkin has quit (Changing host).
14:32:28 -!- copumpkin has joined.
14:35:45 <zzo38> Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello
14:58:26 -!- lifthrasiir has quit (Ping timeout: 252 seconds).
15:28:04 -!- monqy has joined.
15:28:53 -!- foocraft has joined.
15:49:23 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
16:02:31 <Taneb> I still think Numberwang is too useable
16:11:49 <Taneb> How can I make it less useable?
16:12:01 <elliott> make it sub-tc
16:12:10 <Taneb> While still a) Turing complete and b) deterministic
16:13:01 <monqy> determinism is boring
16:13:37 <Taneb> Have you seen the Numberwang spec?
16:13:45 <monqy> I think so
16:13:50 <Taneb> I have no idea what the program 3! would do
16:14:19 <monqy> speaking of esolangs, what is it with people and replacing the list of ideas with magic the gathering card deck of brainfuck
16:15:15 <Taneb> Has that happened a lot?
16:15:20 <monqy> twice
16:15:22 <monqy> I'm gone now
16:15:30 -!- derrik has joined.
16:15:34 <Taneb> Bye
16:16:02 <Taneb> Man, that must seem pretty non-sequitur for you, derrik
16:16:42 <derrik> true
16:17:08 <Taneb> It almost made sense in context, though
16:17:33 <derrik> possible
16:17:46 <Taneb> What do you think is the best way to make a language less usable while keeping it a) Turing Complete and b) Deterministic?
16:18:22 <elliott> i am not so sure that numberwang is tc myself
16:18:27 <elliott> although that's more oerjan's forte >:D
16:18:29 <Taneb> Oerjan proved it
16:18:47 <elliott> oh hm it's close to the b-machine thing
16:18:50 <elliott> Taneb: ah, okay
16:18:59 <elliott> Taneb: i'd say it's as confusing as you're going to get
16:19:13 <Taneb> But it was so easy to prove Turing Complete!
16:19:17 <Taneb> And it's usable!
16:19:18 <elliott> Taneb: as of right now you can ignore command three, though
16:19:27 <elliott> integrate some vital operation into it
16:19:35 <elliott> (this maintains tcness only by power of hope)
16:19:36 <Taneb> Good idea
16:19:51 <Taneb> I'll also add IO in the same move!
16:20:19 <elliott> Taneb: just make 3 print "That's Numberwang!", and 0 print... something else
16:20:28 <elliott> that's all anyone could possibly need
16:20:37 <Taneb> 0 is flip and move left
16:20:51 <elliott> yeah, the point is that you have two instructions that print different things
16:20:57 <elliott> that should be enough, if the instructions are vital enough
16:21:16 <Taneb> Heck, I think that Unary program shows us that that isn't even necessary
16:21:45 <elliott> unary looks like it has normal output
16:22:05 <elliott> i'm just saying, you can do output by just making two of your commands print two different things as a side-effect
16:22:07 <elliott> input is for the weak
16:22:07 <Taneb> I mean, it shows meaning can be demonstrated with only one character
16:22:19 <elliott> um well yes but if your program doesn't halt that doesn't work
16:22:24 <elliott> because the value is encoded into the length
16:22:35 <Taneb> Hmm, yeah
16:25:24 <Taneb> Changed spec
16:25:47 <elliott> still doesn't require using three for turing-completeness :P
16:26:00 <Taneb> But it does for any output.
16:26:06 <elliott> true, but who needs that?
16:26:20 <Taneb> People making Hello World programs?
16:28:14 <elliott> i doubt that's possible, considering the program that three starts running
16:28:21 <elliott> i.e. I rather suspect it'll output other values beyond your control
16:28:39 <Taneb> With the right setup, it should be theoretically possible
16:29:41 <elliott> that's a proposition stated without proof :P
16:29:49 <elliott> it could very well be completely impossible to output hello world
16:29:51 <Taneb> Make that hypothetically
16:31:00 <Taneb> It's just considerably easier to get the entire population of the UK to agree on football teams
16:38:10 -!- elliott has quit (Ping timeout: 252 seconds).
16:47:05 <zzo38> I want to play pokemon card, please.
16:47:20 <Taneb> I want to play chess
16:47:32 <zzo38> Normal (FIDE) chess or some variant?
16:47:40 <Taneb> FIDE
16:47:47 <Taneb> Or maybe Threechess
16:51:23 <zzo38> Now invent pokemon card chess
16:51:45 <Taneb> But I have no pokemon cards
16:54:02 <zzo38> Use computer to make up cards
16:54:17 <Taneb> And I'm going out for dinner in 6.5 minutes
16:54:52 <zzo38> http://zzo38computer.cjb.net/img_14/pokemon_card_01.png Pokemon Card GB2
16:55:37 <zzo38> Do you know how to do this one?
16:55:45 <Taneb> No, and I have to go now
16:55:48 <Taneb> Goodbye
16:58:31 -!- lifthrasiir has joined.
17:00:11 -!- Taneb has quit (Ping timeout: 252 seconds).
17:11:28 -!- Phantom_Hoover has joined.
17:31:23 -!- DocHerrings has joined.
17:33:35 <DocHerrings> Boredom is a terrible thing - I am writing a series of Markov productions that calculate Keymaker's Clue language.
17:42:47 -!- Sgeo_ has quit (Ping timeout: 255 seconds).
17:52:18 -!- Sgeo has joined.
17:53:40 <Sgeo> Hey, PSOX was useful for something!
17:53:52 <Sgeo> (If arguing with CakeProphet is considered useful)
17:55:46 <fizzie> I am very much doubtful that the "conversation" today was anything that'd count as "useful".
17:57:43 <Sgeo> http://www.smbc-comics.com/?id=2208
17:59:40 -!- ais523 has joined.
18:00:30 <pikhq_> That's... Perverse.
18:00:39 <pikhq_> "Gtk Hello World in Qt C++".
18:00:50 <Sgeo> Hmm?
18:01:00 <Sgeo> Phantom_Hoover, my site is not up-to-date wrt PSOX
18:01:17 <Sgeo> The wiki's link to the assembla stuff is
18:01:51 <pikhq_> Sgeo: Well, Qt is both a UI toolkit and a library providing a fairly simple extension to C++'s standard semantics and some replacement standard library functions.
18:03:29 -!- cheater_ has quit (Ping timeout: 255 seconds).
18:04:59 <pikhq_> Anyways. Someone bound GObject into the Qt C++ type system.
18:08:02 <Sgeo> elliott, Phantom_Hoover, John/[SPOILER] panels are up
18:16:27 -!- cheater_ has joined.
18:19:06 -!- oklopol has joined.
18:20:51 -!- oklofok has quit (Ping timeout: 252 seconds).
18:24:18 <Phantom_Hoover> OMG an [S].
18:28:31 -!- zzo38 has quit (Remote host closed the connection).
18:28:32 -!- derrik has quit (Quit: nights).
18:39:31 <DocHerrings> Okay, Markov production rule finished (so now Clue has a Thue interpreter).
18:39:42 <DocHerrings> I suppose I'll add that.
18:42:14 <DocHerrings> Well, maybe later. Markov to Thue conversion is messy.
18:54:42 -!- MigoMipo has joined.
18:57:48 -!- foocraft has quit (Quit: So long, and thanks for all the fish!).
18:58:19 -!- foocraft has joined.
19:08:24 -!- DocHerrings has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]).
19:14:58 -!- oerjan has joined.
19:19:08 <oerjan> <Sgeo> Wow. Headphones in my ownership tend to die within days, apparently
19:19:35 <oerjan> it's because of the radiation from the brain implantat the aliens put in you. hth.
19:20:41 <oerjan> *implant
19:21:00 <oerjan> so now i too can learn to hate the new google top bar
19:21:06 -!- pikhq_ has quit (Read error: Operation timed out).
19:21:10 <ais523> in what way in particular is it irritating you?
19:21:15 <ais523> also, which Clue was DocHerrings talking about?
19:21:21 <oerjan> it does not disappear when i scroll
19:21:24 <ais523> (it'd be extra fun if it wasn't either of the ones I know of)
19:21:24 -!- pikhq has joined.
19:21:29 <ais523> oerjan: gah, I hate bars that do that
19:21:34 <ais523> (I hardly ever use Google, so I didn't notice)
19:21:51 <Phantom_Hoover> @tell elliott SUNDAY IS GREGOR'S BIRTHDAY TAKE NOTE. ALSO PRESENTS.
19:21:51 <lambdabot> Consider it noted.
19:24:12 <oerjan> <monqy> I thought I was building off of a sort of joke I would make, not spoiling one of the sort someone else would make
19:24:21 <oerjan> LEAVE THE BAD JOKES TO THE PROFESSIONALS
19:30:23 <oerjan> <Taneb> Any ASCII string can be converted into a base-128 number
19:30:26 -!- zzo38 has joined.
19:30:52 <oerjan> > readInt 128 ord "abcd"
19:30:53 <lambdabot> Couldn't match expected type `GHC.Bool.Bool'
19:30:53 <lambdabot> against inferred type ...
19:30:59 <oerjan> mph
19:31:05 <oerjan> :t readInt
19:31:06 <lambdabot> forall a. (Num a) => a -> (Char -> Bool) -> (Char -> Int) -> String -> [(a, String)]
19:31:36 <oerjan> > readInt 128 (<'\128') ord "abcd"
19:31:37 <lambdabot> [(205042148,"")]
19:32:16 <oerjan> > showIntAtBase 128 chr 205042148 ""
19:32:18 <lambdabot> "abcd"
19:32:39 <oerjan> actually it won't handle leading NULs
19:33:31 <ais523> shouldn't you delete all DELs?
19:33:45 <ais523> and all NULs, for that matter?
19:33:54 <Phantom_Hoover> v
19:33:55 <Phantom_Hoover> <ais523> also, which Clue was DocHerrings talking about?
19:33:58 <ais523> the purpose of those characters is that you can leave chunks of NULs that don't mean anything on your tape in case you need to correct things
19:33:59 <Phantom_Hoover> Keymaker's.
19:34:06 <oerjan> hm if you delete DELs, shouldn't you also delete the following character?
19:34:17 <ais523> and then add extra things in the NUL space if you need to add
19:34:26 <ais523> and to delete, just punch out every hole on the tape for that character and you get DEL
19:34:36 <oerjan> aha
19:34:38 <ais523> I think DEL originally was a placeholder for things that had already been deleted
19:34:40 <ais523> not a delete character
19:34:46 <oerjan> hm clever
19:34:57 <ais523> nowadays, we don't use paper tapes, so the whole trick is sort-of moot
19:35:50 <ais523> hmm, I should tell C-INTERCAL to ignore NUL and DEL
19:35:55 <Sgeo> Linky?
19:35:59 <oerjan> ais523: well there are still write-once media
19:36:13 <ais523> working well with write-once media is exactly the sort of feature that works well with it
19:36:22 <Sgeo> Oh, we're talking about ASCII?
19:36:40 <oerjan> but i don't know if they support changing single bytes after the fact
19:36:41 <ais523> oerjan: modern write-once media, like CD-Rs, unfortunately don't let you overprint 0s with 1s like tape did
19:36:49 <oerjan> ah.
19:37:11 <ais523> basically, because CD-Rs need a separate encoding layer because they can't represent two 1s in a row
19:37:29 <ais523> there's some sort of transformation done on bytes in order to change them to longer codewords with no consecutive 1s
19:37:52 <ais523> I'm not sure how many 0s they can have in a row; presumably there's some limit to avoid the read head losing count, as it needs to know where it is on the CD somehow
19:38:03 <ais523> and mechanical imperfections prevents you just using the timing, if the distance is too long
19:38:24 <Sgeo> Could said limit be larger than number of physical bits on the disc/
19:38:31 <ais523> in theory, yes
19:38:40 <ais523> in practice it's very unlikely
19:38:41 <oerjan> hm with such a scheme an ascii 0 would be a placeholder that could be replaced with an arbitrary digit
19:39:07 <oerjan> statical tape typing!
19:39:41 <ais523> oh, that reminds me, I've written an informal Anarchy spec
19:39:42 <oerjan> although i guess there are non-digits possible as well
19:40:00 <ais523> still unfinished, still not mentioning a lot of things that would have to be mentioned in order to get an actual language
19:40:07 <ais523> but enough there for people to get what's going on
19:40:22 <ais523> hopefully it won't turn into a second Feather; at least, there are no obvious inconsistencies or difficulties in the spec
19:40:51 <oerjan> interestingly the Wang B-machine which numberwang alludes to allowed only setting bits, not clearing. (although numberwang doesn't follow that, using flipping)
19:41:04 <zzo38> There is still possible such media such as print. And if it is scanned into the computer, or using a camera.
19:42:00 <ais523> hmm, like those optical scan forms used for multiple-choice tests?
19:42:14 <zzo38> Yes
19:42:29 <oerjan> <ais523> there's some sort of transformation done on bytes in order to change them to longer codewords with no consecutive 1s <-- well the "obvious" way is to use fibonacci base
19:42:45 <ais523> oerjan: hmm, I wonder if that is it?
19:43:01 <ais523> here we go: http://pastebin.com/raw.php?i=MDEebq26
19:43:40 <zzo38> In fact something I designed which is similar, is FORMCARD, which also uses delete characters similar to ASCII using them in that way, although FORMCARD is based on Hollerith instead of ASCII (although it can also use POSTNET for purely numeric data).
19:43:57 <oerjan> ais523: well fibonacci base doesn't support limiting the number of 0's, which i vaguely recall seeing before
19:45:01 <ais523> I have no idea if the limit is a small integer or of the order of hundreds
19:45:17 <ais523> in practice, they probably just make sure each word has at least one bit set
19:45:24 <ais523> or at least two or three, if more are needed
19:46:12 <oerjan> istr it was pretty small, so there was a fixed length encoding of some length of bits
19:49:03 <ais523> that seems about right
19:51:40 <oerjan> "The pits and lands themselves do not directly represent the zeros and ones of binary data. Instead, non-return-to-zero, inverted encoding is used: a change from pit to land or land to pit indicates a one, while no change indicates a series of zeros. There must be at least two and no more than ten zeros between each one, which is defined by the length of the pit."
19:52:35 <ais523> "no more than ten", that's god to know
19:53:15 <oerjan> "Under EFM rules, the data to be stored is first broken into 8-bit blocks (bytes). Each 8-bit block is translated into a corresponding 14-bit codeword using a lookup table.
19:53:28 <oerjan> The 14-bit words are chosen such that binary ones are always separated by a minimum of two and a maximum of ten binary zeroes."
19:53:57 <ais523> hmm, so I expect some byte transformations are possible on CDs
19:54:03 <ais523> as you can burn a land into a pit
19:54:04 <ais523> but not very many
19:55:51 <oerjan> "EFM requires three merging bits between adjacent 14-bit codewords to ensure that consecutive codewords can be cascaded without violating the specified minimum and maximum runlength constraint. The 3 merging bits are also used to shape the spectrum of the encoded sequence. Thus, in the final analysis, 17 bits of disc space are needed to encode 8 bits of data.
19:56:09 -!- Taneb has joined.
19:56:13 <oerjan> (http://en.wikipedia.org/wiki/Eight-to-fourteen_modulation)
19:56:18 <Taneb> Hello
19:56:21 <oerjan> hi
19:56:42 <ais523> heh, CDs read fast enough that they need to have a consistent spectrum?
19:57:00 <ais523> I was surprised at that, but suppose it was inevitable
19:57:04 <oerjan> > readInt 128 (<'\128') ord "abcd" -- repeat what i tested above based on a comment by Taneb
19:57:06 <lambdabot> [(205042148,"")]
19:57:11 <ais523> as if there's a simple trick to read faster, people are going to use it
19:57:37 <pikhq> And modern CD drives are at the physical limits on read speed.
19:57:43 <pikhq> (any faster and the disc would shatter)
19:57:57 <Taneb> They've got data transfer at 26 Terabits a second in some lab somewhere
19:58:01 <ais523> perhaps they don't need to make the spectrum that consistent after all, then
19:58:02 <Taneb> Not CDs, but it works
19:58:16 <Taneb> And the technology is comparatively simple
19:58:26 <pikhq> Taneb: Well, it's the physical limits of what can be done *with the CD spec*.
19:58:33 <oerjan> i hear CERN transfers some huge data amounts
19:58:35 <pikhq> Obviously you can get higher rates with differing media.
20:01:15 -!- copumpkin has quit (Remote host closed the connection).
20:01:40 -!- copumpkin has joined.
20:01:41 -!- copumpkin has quit (Changing host).
20:01:41 -!- copumpkin has joined.
20:03:34 -!- pumpkin has joined.
20:03:35 -!- pumpkin has quit (Changing host).
20:03:35 -!- pumpkin has joined.
20:06:17 -!- copumpkin has quit (Ping timeout: 264 seconds).
20:09:29 <Taneb> Man, I just got confused when Wikipedia didn't have an article on the Churing-Turch Thesis
20:10:17 <oerjan> shocking!
20:13:02 -!- pumpkin has quit (Remote host closed the connection).
20:13:38 -!- copumpkin has joined.
20:13:38 -!- copumpkin has quit (Changing host).
20:13:39 -!- copumpkin has joined.
20:14:16 * oerjan swats copumpkin -----###
20:14:39 <Taneb> Did he abbreviate something to ABCDEF?
20:16:13 <copumpkin> :)
20:16:15 <oerjan> no, he is quit-join spamming with a bad connection _and_ a broken cloak setup simultaneously
20:16:22 <copumpkin> sorry :P
20:16:35 <copumpkin> I've done it three times in the past 20 minutes haven't I?
20:16:37 <copumpkin> it isn't that bad
20:16:49 <oerjan> well it looks worse when no one else is talking
20:17:07 <Taneb> I got a tetanus jab last year, later that month I got over 1000 friends on Facebook
20:17:11 <Taneb> Connection?
20:17:44 <ais523> Taneb: probably coincidence
20:18:00 <oerjan> no, correlation implies causation, obviously
20:18:20 <ais523> oerjan: are correlation and causation correlated?
20:18:21 <ais523> yes?
20:18:26 <ais523> then correlation /causes/ causation!
20:18:31 <oerjan> yep
20:18:34 <Taneb> I think it's connected to the time I watched the director's commentary for Finding Nemo
20:18:48 -!- ais523 has set topic: correlation causes causation | Esoteric programming languages | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
20:19:00 <ais523> anyone looked at Anarchy yet, btw?
20:19:15 <Taneb> Anarchy?
20:19:31 <Taneb> You mean, this channel?
20:19:54 <oerjan> this is channel is anarchy? shocking! someone should fire the ops
20:19:58 <oerjan> *-is
20:20:38 <ais523> Taneb: no, my language
20:20:43 <ais523> http://pastebin.com/MDEebq26
20:20:46 <ais523> well, one of mine
20:21:02 <ais523> it's unusual for esolang design, as I invented it not because I thought it would be a fun basis for a language
20:21:06 <ais523> but because I needed it to write prorgams in
20:21:13 <ais523> unfortunately, it looks like a pain to implement
20:21:19 <ais523> not massively difficult, but timeconsuming
20:21:28 <ais523> also, I need to get a constraint solver from somewhere
20:21:32 <Taneb> So it's actually quite close to the actual meaning of esoteric?
20:21:36 <oerjan> i looked far enough to think you're going to have some trouble with the type inference there
20:22:14 <ais523> oerjan: quite probably
20:22:18 <oerjan> i mean if that was not unsolvable it would probably be supported by ML already...
20:22:49 <oerjan> mind you ocaml _does_ have something similar doesn't it
20:22:57 <Taneb> What's a good language for someone with no knowledge of programming?
20:23:05 <ais523> I'd be surprised if it were unsolvable
20:23:27 <ais523> Taneb: Prolog, because if you do have knowledge of programming, your mind will explode trying to learn it
20:23:32 <oerjan> well i did not think about it very deeply (my eyes started to glaze over)
20:23:47 <ais523> so learn it first, then you don't have to have an exploded mind trying to learn it later
20:23:49 <oerjan> haskell, for the same reason :P
20:23:52 <ais523> oerjan: right
20:24:13 <ais523> err, do you have to learn them simultaneously, then?
20:24:34 <oerjan> Taneb: um you don't have no knowledge of programming do you?
20:24:53 <oerjan> ais523: you could do Mercury for that
20:24:54 <Taneb> No, I'm trying to get a friend into computer sciency topics
20:25:07 <ais523> oerjan: someone mixed Haskell and Prolog?
20:25:19 <ais523> anyway, why did you think Anarchy's type system is uncomputable?
20:25:38 <oerjan> ais523: well not directly mixing but ideas from both prolog and ML/haskell sides
20:25:41 <ais523> it just seems like sugar around an existing type system
20:26:02 <oerjan> it's a statically typed, pure, logic language
20:26:13 <Taneb> I like duck typing
20:26:23 <Taneb> It helps prevent forest fires
20:27:01 <oerjan> ais523: well it was that thing about having constructors not associated with a single datatype. although i guess that ocaml thing _does_ that.
20:27:15 -!- MigoMipo has quit (Read error: Connection reset by peer).
20:27:27 <Taneb> Oh god, that was pretty much the stupidest thing I have ever said online
20:27:48 <ais523> it might help if you think of the type constructors being different type constructors on call and return
20:27:53 <ais523> that's how I'll probably implement it
20:28:03 <ais523> Taneb: in that case, you haven't been nearly as stupid online as most people
20:28:07 <oerjan> ais523: also, afaik most things grafted onto hindley-milner tend to make type inference undecidable
20:28:27 <ais523> well, I just do type inference via constraint solving
20:28:35 <ais523> I assume hindley-milner works like that too as it's the only sensible way
20:29:06 <oerjan> ais523: you might have trouble with having "principal types" (i.e. a unique inferred type for your terms which works in all contexts)
20:29:42 <ais523> oerjan: oh, I was just going to duplicate every use of a function
20:29:46 <oerjan> and yes, hindley-milner is mostly unification on the type level
20:30:01 <ais523> C++-style template specialisation
20:30:19 <ais523> in fact, I might have to inline every use of a function other than recursion, but even so, I think it still ends up decidable
20:30:22 <oerjan> ais523: hm iirc there is a sense in which hindley-milner is equivalent to doing that
20:30:25 <ais523> anarchic? I think so
20:30:49 <oerjan> well good luck anyway
20:31:29 <ais523> I'm just annoyed at having had to do the relevant desugaring by hand at my day job
20:31:41 <ais523> or else bodge it by using types more general than are actually needed
20:32:56 <oerjan> ais523: btw iirc there is also a (probably dead) logic language based on haskell
20:33:03 <oerjan> i think that was the one named curry
20:33:09 <ais523> hmm, perhaps
20:33:33 <ais523> Anarchy's constraint solving is uncomputable because you can express Diophantine equations in it
20:33:37 <Taneb> http://en.wikipedia.org/wiki/Curry_(programming_language)
20:33:41 <ais523> but interps are allowed to go into an infinite loop if you do that
20:36:44 <oerjan> the curry mailing list doesn't seem to be entirely dead
20:37:45 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
20:41:31 -!- rodgort has joined.
20:50:42 <Taneb> Teaching someone Lambda calculus
20:51:39 <Taneb> Someone who has very little programming background
21:01:36 <oerjan> Taneb: the same guy? in that case what about scheme, it may the simplest "real" language to do LC faithfully...
21:01:46 <oerjan> just don't mention call/cc :P
21:02:04 <Taneb> The same person.
21:02:10 <Taneb> Just doing it theoretically
21:03:01 <oerjan> *may be
21:03:18 <Taneb> I didn't actually realise there was a typo...
21:03:39 <oerjan> INSUFFICIENT OC(P)D DETECTED
21:04:09 <oerjan> geek license suspended pending review
21:04:42 <Taneb> I'm not a very good teacher...
21:04:52 <Taneb> Just said "So, when f is inputted, m replaces all the fs with fs and takes out the f in the input"
21:05:22 <oerjan> hard at work replacing fs by fs
21:06:16 <oerjan> i think of lambda calculus as the simplest possible mathematical model of naming things
21:07:12 <Phantom_Hoover> <oerjan> just don't mention call/cc :P
21:07:25 <Phantom_Hoover> Come on, call/cc is pretty simple once you get your head around it.
21:07:52 <monqy> always mention call/cc
21:08:02 <Phantom_Hoover> Like monads, really.
21:08:17 <oerjan> like algebraic topology
21:08:54 <oerjan> and category theory
21:09:27 <oerjan> and zygohistomorphic prepromorphisms
21:10:19 <Taneb> xenolinguistic polysyllablic neomorphemes?
21:10:35 <oerjan> *polysyllabic
21:11:04 <oerjan> but of course.
21:11:23 <oerjan> except for the neo- part
21:11:32 -!- boily has quit (Ping timeout: 276 seconds).
21:12:15 <oerjan> i didn't make up any of those words
21:13:05 <Phantom_Hoover> Although zygohistomorphic prepromorphisms are kind of only used as a joke, AFAIK.
21:13:06 <oerjan> the last one _is_ used as a joke on that though
21:13:24 <oerjan> yeah but it _does_ have a real meaning, if obscure
21:13:37 <oerjan> not that i can recall what it is
21:14:38 <Taneb> I suspect I'd be a better computer science teacher if I had actually ever taken a computer science class
21:17:03 <Taneb> But did Alan Turing ever take a computer science class?
21:17:08 <oerjan> :P
21:17:15 <Taneb> Did Alonzo Church ever take a computer science class?
21:17:32 <oerjan> did newton ever take a physics class
21:18:31 <Taneb> No! Isaac Newton (who was kind of a dick) learnt about physics on the internet!
21:18:34 <pikhq> Did Thog ever take a fire-building class?
21:18:37 <oerjan> they almost certainly did take math classes though
21:18:48 <oerjan> except thog
21:19:03 <Taneb> Meh, I've got a GCSE in stats.
21:19:06 <Taneb> That should be enough
21:19:36 -!- Nisstyre has quit (Ping timeout: 260 seconds).
21:19:51 <oerjan> anyway, as an amateur very-occasional programmer i didn't learn most computer science i know from classes either
21:20:33 <Phantom_Hoover> I have never been near a computer science class, which is why nobody listens to me.
21:20:48 <Phantom_Hoover> <Taneb> Meh, I've got a GCSE in stats.
21:20:49 <Phantom_Hoover> NO
21:21:20 <pikhq> oerjan: Well, *programming* is a practical skill best learned by just doing it, and *computer science* is a particular form of mathematics.
21:21:20 <Phantom_Hoover> STATS
21:21:23 <ais523> I have approximately 2.16 A levels in Maths
21:21:25 <Phantom_Hoover> IS AN ABOMINATION
21:21:29 <Taneb> STATS
21:21:32 <Phantom_Hoover> ais523, elaborate.
21:21:32 <Taneb> IS AN EXTRA GCSE
21:21:33 <ais523> some proportion of that is stats
21:21:55 <pikhq> oerjan: And seeing as you have a Ph.D. in math, well, it makes sense you'd find CS easy...
21:21:59 <Taneb> I find out if I've got a maths GCSE in August
21:22:09 <ais523> Phantom_Hoover: the way it worked when I did maths A level (and still works similarly nowadays, although some of the details have changed) is that you do "modules"
21:22:16 <oerjan> this is when we find out Phantom_Hoover has too passionate enemies in life: brainfuck derivatives and statistics
21:22:25 <ais523> and six modules, subject to some constraints, gives you an A level; your grade is the average grade of the modules
21:22:36 <oerjan> *two
21:22:41 <ais523> another (distinct) six gives you a second A level
21:22:44 <oerjan> although possibly too, too
21:22:57 <monqy> time for a brainfuck derivative based on statistics, or perhaps statistics about brainfuck and derivatives thereof
21:23:01 <monqy> a good time
21:23:02 <ais523> the actual names vary based on which modules; I did a balance mix and ended up with simply Maths and Further Maths
21:23:06 <pikhq> Stochastic Brainfuck, eh?
21:23:15 <Taneb> But, by the time I'm 23, I could have a Masters in Maths!
21:23:15 <ais523> and did thirteen modules, so I still have one left over (the one with the lowest mark that wasn't compulsory)
21:23:32 <Phantom_Hoover> oerjan, I'm not sure if I hate stats itself or not.
21:23:39 <ais523> presumably this would mean that if I did another five, I could get Even Further Maths
21:23:42 <ais523> or maybe there's a time limit on the things
21:23:45 <Phantom_Hoover> But the way it's taught is *unquestionably* abysmal.
21:23:47 <Taneb> To far you've past it maths?
21:24:23 <pikhq> Phantom_Hoover: Math generally is taught poorly.
21:24:30 <pikhq> And so *utterly* slowly, too.
21:24:37 <oerjan> wait is that what gcse means, i thought Taneb was older than that :P
21:24:39 <ais523> I was quite lucky, they sat me in a corner and gave me a bunch of textbooks
21:24:43 <ais523> and told me to go learn maths
21:24:44 <Taneb> I'm 16
21:24:47 <Phantom_Hoover> I have... 1.07 A levels.
21:25:03 <Phantom_Hoover> According to UCAS, at least.
21:25:07 <ais523> Phantom_Hoover: is that to do with the fractional adjustment between English and Scottish tariffs, or something else?
21:25:07 <Taneb> I have 0 A-Levels, and 1 GCSE
21:25:11 <Phantom_Hoover> ais523, yeah.
21:25:14 <ais523> ah, the UCAS reference cleared it up
21:25:15 <Taneb> I find out in August if that goes up to I think the equivalent of 12
21:25:22 <ais523> I agree with them that the Scottish qualifications are worth more
21:25:29 <pikhq> oerjan: It's one of the testing bits towards the end of secondary education in England, I think Scotland, and no idea about Northern Ireland or Wales.
21:25:34 <ais523> but Universities generally admit based on English scales
21:25:41 <Taneb> Wales is the same as england
21:25:59 <ais523> pikhq: the general rule is that England and Wales are the same, and Scotland and Northern Ireland are different from those and from each other
21:26:03 <Phantom_Hoover> ais523, although I only have 0.75 A*As on A levels with additional AS (9 units).
21:26:08 <Phantom_Hoover> Whatever that is.
21:26:16 <pikhq> ais523: Yeah, but I prefer to make no assumptions about the UK.
21:26:17 <ais523> Phantom_Hoover: an AS is the first half of an A level
21:26:27 <ais523> you do that first, then you do an A2 that upgrades the AS to a full A level
21:26:29 <ais523> by averaging marks
21:26:52 <Phantom_Hoover> <ais523> pikhq: the general rule is that England and Wales are the same, and Scotland and Northern Ireland are different from those and from each other
21:26:58 <ais523> you can stop after the first half if you like; for instance, I have an AS in Electronics (as well as a GCSE in Systems and Control, which is a euphemism for electronics, and a MEng in Electronic Engineering)
21:26:59 <Phantom_Hoover> NI uses the same names, though.
21:27:05 <Phantom_Hoover> So it might well be the same.
21:27:08 <ais523> perhaps
21:27:13 <pikhq> It's the easy solution for Americans who actually know that England, Wales, Scotland, and Northern Ireland have different systems for things.
21:27:25 <pikhq> (or, indeed, that they are *actually different*)
21:27:32 <ais523> very few things are different between England and Wales in terms of administration
21:27:42 <ais523> they're starting to diverge a bit more now Wales has its own government, but that's pretty recent
21:27:43 <Phantom_Hoover> And the lack of a separate table in the tariffs suggests that they do use the English system.
21:27:48 <Taneb> That's because England actually conquered Wales pretty early on
21:27:52 <ais523> (and Wales speaks a mix of English and Welsh)
21:27:53 <ais523> Taneb: yep
21:28:01 <Taneb> Rather than had a weird political union
21:28:11 <Taneb> Caused by ending up with the same guy in charge
21:28:14 <ais523> and Scotland was never successfuly conquered by the English; rather, intermarrying lead to England and Scotland having the same king at the same time
21:28:14 <pikhq> ais523: Still. England and Wales are *likely* to not diverge, but they do on some things.
21:28:18 <Phantom_Hoover> Taneb, they conquered Ireland as well, though.
21:28:42 <ais523> which lead to a mess, as the way inheritance works, you can't diverge from thatp oint
21:28:43 <ais523> *point
21:28:51 <pikhq> Phantom_Hoover: And then had a series of conflicts about it, bringing a big mess.
21:28:58 <Phantom_Hoover> <ais523> which lead to a mess, as the way inheritance works, you can't diverge from thatp oint
21:29:05 <Phantom_Hoover> It's... a bit more complex than that.
21:29:06 <pikhq> ais523: If they had differing laws for inheritance.
21:29:11 <ais523> Phantom_Hoover: I know it is
21:29:18 <ais523> I know it's more complex than I understand
21:29:25 <Taneb> There was a short period where England was at war with itself
21:29:28 <pikhq> There would be even more headaches, though.
21:29:31 <Taneb> Ended up with Christmas parties being banned
21:29:35 <ais523> Taneb: do you mean the Civil War?
21:29:42 <Taneb> Yeah
21:29:50 <Taneb> Scotland wasn't at war with itself, though
21:29:51 <ais523> that was pretty complicated too
21:30:06 <ais523> and England wasn't at war with itself, it was basically people loyal to the King versus people loyal to Parliament
21:30:26 <Taneb> Okay, a bit of England versus a different bit of England
21:30:52 <Taneb> But the end result was a very weird school and political system
21:31:00 <ais523> it's just like any other rebellion, really, except that a) both sides were technically in charge beforehand, and b) both sides were pretty large
21:31:04 <ais523> rebellions are normally rather asymmetrical
21:31:23 <Taneb> But Cromwell banned Christmas
21:31:25 <ais523> nowadays, incidentally, the Queen still has to ask for permission to enter Parliament, as a result of all that
21:31:27 <Taneb> parties
21:31:39 <ais523> and a guy with a sword stands inside the door of Parliament just in case it gets invaded again
21:31:41 <Taneb> The Queen is banned from the House of Commons
21:31:41 <pikhq> Taneb: You already had a weird school and political sstem.
21:31:49 <pikhq> Just got *further* weirdness.
21:31:59 <ais523> (rather awesomely, a couple of years ago a protestor broke into Parliament and the guy with a sword actually drew it and pointed it at him)
21:32:05 <pikhq> Such as the House of Commons, the whole ceremony with the Black Rod, etc.
21:32:10 <Taneb> The Serjeant at Arms
21:32:22 <oerjan> <Phantom_Hoover> It's... a bit more complex than that. <-- yeah i recall Hanover split from the UK when victoria became queen because they did _not_ have the same succession rules
21:32:24 <Taneb> Is the name of the guy with the sword
21:32:27 <pikhq> Erm, the House of Commons'
21:32:38 <ais523> Taneb: yep, compleat with old-fashioned spelling
21:32:39 <Phantom_Hoover> oerjan, no, I mean more how James ended up being I and VI.
21:33:02 <Taneb> That's because Scotland and England didn't officially become the same country until Anne
21:33:09 <Taneb> We use the lowest possible number now
21:33:16 <Taneb> I think
21:33:20 <Taneb> Or is it the highest?
21:33:24 <ais523> I think it just follows English numbering
21:33:32 <ais523> presumably there are Scots annoyed at that
21:33:49 <Phantom_Hoover> Taneb, it was a roundabout way of indicating the whole situation that led to unification.
21:33:49 <pikhq> Probably also annoyed at the English Parliament becoming the UK Parliament.
21:34:04 <Phantom_Hoover> pikhq, nah, we got a pretty sweet deal out of that.
21:34:08 <Phantom_Hoover> Free tuition, anyone?
21:34:31 <pikhq> Phantom_Hoover: Actually, yeah, that's probably more annoying for people in England.
21:34:37 <Taneb> If I lived TWENTY MILES WEST, I would get free University tuition
21:34:39 <ais523> indeed, Scotland got the best end of that deal
21:34:47 <Taneb> TWENTY MILES
21:34:50 <Phantom_Hoover> Taneb, ...what?
21:34:56 <Taneb> I'm a Northumbrian
21:35:01 <ais523> presumably Taneb lives near the English/Scottish border
21:35:03 <pikhq> Not being able to have any legislative process that applies to them exclusively is probably a bitch.
21:35:09 <Phantom_Hoover> Sure, but the shortest distance would be normal to the border.
21:35:17 <Phantom_Hoover> So NW.
21:35:22 <ais523> this also implies that he's a Northener, and thus anyone from London is contractually required to hate him
21:35:29 <oerjan> Phantom_Hoover: well yeah i hear some scots insist on calling the current queen Elizabeth I ...
21:35:39 <Phantom_Hoover> oerjan, I haven't met any.
21:35:42 <ais523> (I'm from Birmingham, which means that nobody has a regional requirement to hate me, but many people have a regional requirement to laugh at me)
21:36:05 <Taneb> Goodnight
21:36:06 <pikhq> oerjan: If only the Commonwealth Realms did that.
21:36:07 <Phantom_Hoover> Taneb, oh, huh, the border is more vertical on the east than I thought.
21:36:19 <pikhq> As technically Her Majesty *is* their first Queen by the name of Elizabeth... :P
21:37:21 <ais523> Phantom_Hoover: indeed, I was thinking "why west? oh right, the border isn't straight"
21:37:32 <ais523> hmm, has Scotland /ever/ been successfully invaded?
21:37:42 <ais523> I know the Romans tried and failed
21:37:49 <ais523> and so did the English, multiple times
21:38:17 <ais523> oh, I think it was successfully invaded by people from modern-day Ireland once (which is where the name Scotland comes from)
21:38:27 -!- azaq23 has quit (Quit: Leaving.).
21:39:06 <oerjan> <Taneb> I'm a Northumbrian <-- and you say that after i was joking the other they that you were coincidentally Elliott's next door neighboor
21:39:10 <pikhq> Apparently some parts of it were actually occupied by Rome.
21:39:15 <pikhq> ... For 40 years.
21:39:19 <Phantom_Hoover> ais523, I don't think they got all that much of it, though.
21:39:53 <ais523> Phantom_Hoover: probably not
21:40:02 <ais523> I imagine invading Scotland gets really difficult after a while
21:40:08 <ais523> past a certain latitude, even the A-roads are single track
21:40:16 <pikhq> Up there with invading Russia, it seems.
21:40:23 -!- Taneb has quit (Ping timeout: 255 seconds).
21:40:47 <pikhq> Best way to do it is just to luck out in having the same monarch as Scotland.
21:42:08 <ais523> one amusing thing to do is to look at a map of Scotland colored by which way people vote
21:42:32 <ais523> because basically the whole country votes for Labour, sometimes the Liberal Democrats (although probably not next time round...), or the SNP
21:42:42 <ais523> and there's one constituency which is staunchly Conservative, looking out of place
21:43:34 <ais523> I think it's a lowland place full of richish farmers, whereas most of Scotland is hilly or mountainous
21:43:48 <oerjan> *day
21:44:01 <oerjan> also, *neighbor
21:44:06 <ais523> *neighbour
21:44:14 <ais523> we're discussing the UK here, you should use British spellings!
21:44:19 <oerjan> argh
21:44:39 * Phantom_Hoover notes that the only places that voted Lib Dem were Orkney and the Shetlands.
21:45:00 <ais523> Phantom_Hoover: oh right, Scotland has had a full election since the Lib Dem collapse
21:45:13 <Phantom_Hoover> `quote Scotland
21:45:19 <HackEgo> 399) <Phantom_Hoover> Scotland turns from red and yellow to A DIFFERENT SHADE OF YELLOW
21:45:37 <ais523> (for people who don't know: the Lib Dems were the third party for ages, and due to a near-tie in the UK general election, actually ended up in power, much to everyone's surprise)
21:46:02 <oerjan> "were"? did they collapse that much?
21:46:07 <ais523> (and then when they didn't keep every promise they'd ever made, especially with having to negotiate with the Conservatives, everyone abandoned them in disgust)
21:46:16 <Phantom_Hoover> oerjan, well, they're in power now.
21:46:16 <ais523> oerjan: they've been coming fourth or fifth or sixth in by-elections
21:46:24 <Phantom_Hoover> That too.
21:46:30 <ais523> they're still in power with the Conservatives, ubt only because there hasn't been an election since
21:46:31 <ais523> *but
21:46:36 <ais523> which is a pity, because I rather like them
21:46:48 <oerjan> ais523: basically british voters don't understand the concept of coalitions, i guess
21:46:49 <ais523> and think that most of the reasons people are hating them are stupid
21:46:53 <ais523> oerjan: yep
21:47:11 <ais523> also, there's the whole tuition fees thing (which Phantom_Hoover won't have noticed, being Scottish)
21:47:26 <ais523> basically, after the election, all three parties did a U-turn on what to do about university funding
21:47:41 <Phantom_Hoover> ais523, hey, some of us go to university in England.
21:47:43 <ais523> and the Lib Dems had the most popular viewpoint beforehand, so people got most annoyed about them changing their mind
21:48:02 <ais523> the funny thing is, all three parties are actually proposing the same thing, just with language that makes it seem different
21:48:35 <oerjan> ais523: with the two party systems of the UK and the US, it's a wonder that the two top parties have ever changed
21:48:38 <ais523> the difference is between people going to university "for free" and paying a percentage of their income afterwards for a while (popular opinion)
21:48:50 <oerjan> i guess it took some _major_ societal change
21:49:06 <Phantom_Hoover> <oerjan> ais523: with the two party systems of the UK and the US, it's a wonder that the two top parties have ever changed
21:49:15 <ais523> and people going to university and paying a lot of money, but then getting a loan for the same amount of money, and paying off the loan with a percentage of their income afterwards for a while (unpopular opinion)
21:49:32 <Phantom_Hoover> Well, in the UK the 2-party system is *far* less pronounced than that in the US.
21:49:33 <ais523> I can't figure out why one opinion is popular and the other is unpopular, given that with a bit of number-tweaking they come to the exact same thing
21:49:50 <ais523> and yes, the US has a very strong 2-party system, the UK doesn't
21:50:03 <pikhq> "Hard-coded" more like.
21:50:50 <pikhq> The last time we had a vaguely viable third party was when Theodore Roosevelt started the Progressive Party. In 1912. For 4 years.
21:51:08 <ais523> basically, think of it this way: if both the top 2 parties were simultaneously embroiled in a major scandal in the UK, it would be enough to tip a third party ahead of them across a wide spread of the country
21:51:12 <ais523> in the US, it wouldn't
21:51:17 <pikhq> Even then, he didn't *win*. Just got second place.
21:51:31 <ais523> probably a third party wouldn't win anywhere, or even come second
21:51:45 <ais523> also, you get occasional oddball wins in the UK as well
21:51:51 <ais523> like the Green Party winning a seat last election
21:52:08 <ais523> the evidence is very clear that they'd decided that it was the seat they had the best chance of winning, and focused all their efforts on it
21:52:09 <pikhq> It's a freak occurance for a third-party candidate to win a state or local seat.
21:52:29 <pikhq> Even less likely to win in the House.
21:52:32 <ais523> the general election before last, the Save Kidderminster Hospital Party won a seat
21:52:35 <pikhq> Nearly impossible to win in the Senate.
21:52:36 <ais523> or was it two seats? I can't remember
21:52:47 <ais523> (presumably more than one constituency lives within range of Kidderminster Hospital)
21:52:56 <pikhq> And for President, it takes the third party *replacing* a party.
21:53:28 <ais523> and as a result, the BBC ended up having to come up with a color for them on their maps (I think it was a dark greyish reddish-purple)
21:54:19 <ais523> oh, here we go: http://en.wikipedia.org/wiki/Independent_Kidderminster_Hospital_and_Health_Concern
21:54:23 <ais523> looks like they only got one seat
21:55:09 <ais523> and have been trying to expand their manifesto to not be specific to the one hospital (which obviously doesn't come up in debate in Parliament all that often)
21:55:20 <ais523> (although I bet they tried to change the subject to it whenever they could)
21:55:24 <ais523> (so as to have a reason for existing)
21:56:08 <oerjan> it doesn't say whether they managed to save the hospital unit
21:56:37 <ais523> I know, that's the reason I went there in the first place :(
21:58:12 <oerjan> it doesn't seem to say in the Kidderminster article either
21:58:40 <ais523> I checked there too
21:58:45 <Phantom_Hoover> http://www.reddit.com/r/philosophy/comments/ih7qd/how_can_some_people_be_so_sure_that_we_cant_know/c23rb67
21:59:04 <ais523> so, I tried to go to their website, http://healthconcern.org.uk/
21:59:14 <ais523> and wow, website design from 199x (I forget which x, can someone remind me?)
21:59:57 <ais523> ah, the website implies that they downgraded the hospital in 2000, before the party won its seat
22:00:06 <ais523> and they've been fighting to have it restored to its former state
22:11:39 -!- Nisstyre has joined.
22:11:52 -!- olsner has quit (Ping timeout: 252 seconds).
22:12:18 -!- Vorpal has quit (Ping timeout: 264 seconds).
22:13:01 -!- Vorpal has joined.
22:13:20 -!- olsner has joined.
22:29:30 <Sgeo> Phantom_Hoover, what? Is it wrong to correct someone who's mistaken?
22:29:43 <Phantom_Hoover> Sgeo, it's how mistaken he is that is amusing.
22:38:51 -!- Sgeo_ has joined.
22:40:15 -!- Sgeo has quit (Ping timeout: 255 seconds).
22:45:35 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:48:12 <Sgeo_> "Our most common question these last few days has been, "The email address 'submit at machineofdeath dot net' doesn't work! My email program says 'Invalid address!' How do I send in my story??"
22:48:12 <Sgeo_> In response we must gently explain that it is actually "submit@machineofdeath.net". "
22:48:37 <Sgeo_> Hmm, crud, wonder if spambots read these logs
22:52:40 <oerjan> well google rarely finds them
22:58:27 <oerjan> > 0.6*49.8 + 0.4*2
22:58:28 <lambdabot> 30.679999999999996
23:18:25 -!- quintopia has quit (Ping timeout: 260 seconds).
23:19:32 <Sgeo_> "Many natural dog food supplements boast garlic as a natural flea preventative.
23:19:32 <Sgeo_> "?
23:19:34 <Sgeo_> WTF?
23:20:26 <ais523> presumably fleas don't like the smell of garlic
23:20:33 <oerjan> secretly, it's really to ward against vampire dogs
23:20:42 -!- quintopia has joined.
23:23:19 <Sgeo_> But garlic in dog food just...
23:23:29 -!- NihilistDandy has joined.
23:23:38 <Sgeo_> Or is it just large amounts that are bad?
23:25:13 <oerjan> i only know about chocolate and dogs...
23:33:25 -!- CakeProphet has joined.
23:33:25 -!- CakeProphet has quit (Changing host).
23:33:25 -!- CakeProphet has joined.
23:46:30 <pikhq> And the whole thing with chocolate and dogs thing is overblown.
23:46:45 <pikhq> It's actually pretty hard to give a dog a lethal dose of chocolate.
23:47:04 <pikhq> Too little, and it doesn't matter much. Too much and the dog vomits it right away.
23:47:05 <ais523> even so, mildly poisoning a pet is a bad thing to do, right?
23:47:12 <pikhq> ais523: Yes, I wouldn't *recommend* it.
23:47:24 <pikhq> Cause you'll either have diarrhea or vomit to clean up after.
23:52:06 -!- CakeProphet has quit (Ping timeout: 276 seconds).
23:52:27 -!- CakeProphet has joined.
23:52:28 -!- CakeProphet has quit (Changing host).
23:52:28 -!- CakeProphet has joined.
←2011-07-14 2011-07-15 2011-07-16→ ↑2011 ↑all