←2011-07-07 2011-07-08 2011-07-09→ ↑2011 ↑all
00:00:08 <elliott> you realise that "HURT HIS FEELINGS WITH CLOSED-MINDEDNESS" was capitalised for deliberate theatricality right
00:00:17 <elliott> it's good to know that it's so easy to upset you, though :)
00:00:20 <elliott> even easier than with me apparently
00:00:30 <elliott> how to anger elliott: accuse him of child molestation w/ surname
00:00:37 <elliott> how to anger BeedaWeeda: tell him he's a gullible idiot for believing in UFOs
00:00:54 <elliott> damn, you must be REALLY upset actually, to stay in the channel for so many days trolling us :(
00:00:58 <elliott> BeedaWeeda: do you need some emotional support?
00:04:46 -!- pumpkin has changed nick to copumpkin.
00:13:52 -!- FireFly has quit (Quit: swatted to death).
00:14:05 <BeedaWeeda> lol
00:14:31 <BeedaWeeda> you probably believe everything the media tells you
00:14:37 <monqy> you already said that
00:14:40 <monqy> a few days ago was it
00:14:50 <elliott> yeah
00:14:52 <elliott> lol
00:15:19 <BeedaWeeda> so...
00:15:26 <elliott> BeedaWeeda, on the other hand, is in charge of the Daily Mail's Paedophile Division
00:15:37 <elliott> sure dreading the paper tomorrow
00:16:31 <monqy> the daily mail has a paedophile division?
00:16:32 <monqy> fancy that
00:17:27 <elliott> monqy: where else do you think they get all their accusations
00:42:00 -!- Lymia has joined.
00:45:15 -!- Lymee has quit (Ping timeout: 276 seconds).
00:45:39 -!- Patashu has joined.
01:26:34 <elliott> Vorpal: would it be weird to call a vector of bits in a VHDL-type environment "Word"
01:26:39 <elliott> i.e. Word 9 being bit[9]
01:26:45 <elliott> i forget the long VHDL name :P
01:26:48 <elliott> for bit, I mean
01:31:35 <Sgeo_> Why does "autodidact" have a Wikipedia entry, and why is there a list of "notable autodidacts". Is it rare?
01:31:37 * Sgeo_ mindboggles
01:31:50 <Vorpal> <elliott> Vorpal: would it be weird to call a vector of bits in a VHDL-type environment "Word" <-- yeeeeeees
01:32:01 <Vorpal> kind of
01:32:13 <Vorpal> I would call it an array of std_logic :P, I don't use bits
01:34:16 <Sgeo_> Please tell me that most people try to learn things on their own at least on occasion
01:35:55 <Patashu> Are you a notable audodidact?
01:36:41 <Sgeo_> Not notable...
01:36:59 <Sgeo_> And if "autodidact" means what Wikipedia says it means, then why isn't everyone an autodidact
01:37:00 <Patashu> Now you know what the list is for
01:37:02 <monqy> im totally a notable autodidact
01:37:11 <elliott> <Vorpal> <elliott> Vorpal: would it be weird to call a vector of bits in a VHDL-type environment "Word" <-- yeeeeeees
01:37:12 <elliott> why :(
01:37:17 <elliott> it's basically a word
01:37:21 <elliott> <Patashu> Are you a notable audodidact?
01:37:25 <elliott> no but he's a famous bisexual
01:37:41 <Patashu> std_logic isn't a bit so an array of std_logic isn't a word
01:37:43 <Sgeo_> elliott, hmm? Someone with my name is a famous gay DJ, but...
01:38:00 <elliott> Sgeo_: I understand that it may be hard to come to terms with your famous bisexuality.
01:38:03 <elliott> Patashu: Yeah, but my bits are bits.
01:43:10 <elliott> Vorpal: OK so I guess "vector" is a better choice than "word"?
01:43:21 <elliott> Bearing in mind that they're actual bits.
01:43:52 <Patashu> does it really matter though?
01:44:32 <Vorpal> elliott, yes
01:44:43 <elliott> Patashu: what does?
01:44:47 <elliott> Vorpal: :<
01:45:01 <Vorpal> elliott, unless you use it to implement a vector CPU, in which case it will be confusing
01:45:02 <Vorpal> ;)
01:45:39 <elliott> Har har :P
01:45:46 <elliott> But seriously, Word is a nicer name than Vec :(
01:45:55 <Vorpal> elliott, but do that in redstone logic and I will laugh in scorn (but also be really amazed)
01:46:48 <elliott> Vorpal: Dude, ideally this will make redstone engineering as "simple" as using VHDL :P
01:46:55 <elliott> Maybe simpler, it's all bits and no stupid syntax :P
01:47:08 <Vorpal> elliott, wait a second
01:47:11 <Vorpal> vhdl? simple?
01:47:21 <Vorpal> elliott, I don't quite understand what you are talking about
01:47:32 <elliott> simpler than redstone :D
01:47:33 <Vorpal> elliott, vhdl is simpler than wiring up by hand...
01:47:35 <Vorpal> that is about it
01:47:42 <elliott> precisely, which is what we're talking about here
01:47:53 <elliott> but really, it's not hard to implement a simple cpu :P i base this on a single york lava example
01:48:00 <Vorpal> elliott, writing something that would be like 5 lines in C would take some 30 lines of *non-boilerplate* vhdl quite often
01:48:03 <Patashu> it'd be quicker to make an integrated circuits mods for minecraft
01:48:03 <Patashu> again
01:48:10 <Vorpal> elliott, add another 20 lines of boilerplate to that
01:48:20 <elliott> poly :: Poly -> Recipe
01:48:21 <elliott> poly s =
01:48:21 <elliott> let instr = s!code!top in
01:48:21 <elliott> Seq [ Tick
01:48:21 <elliott> , While (instr!isHALT!inv) $
01:48:21 <elliott> Seq [ isLIT instr |> s!rtop <== getLIT instr
01:48:23 <elliott> , isDUP instr |> s!stack!push (s!rtop!val)
01:48:25 <elliott> , isREV instr |>
01:48:27 <elliott> Seq [ s!rtop <== s!stack!top
01:48:29 <elliott> , s!stack!pop
01:48:32 <elliott> , s!stack!push (s!rtop!val)
01:48:34 <elliott> ]
01:48:38 <elliott> , isADD instr |>
01:48:39 <elliott> Seq [ s!rtop <== s!rtop!val + s!stack!top
01:48:42 <elliott> , s!stack!pop
01:48:44 <elliott> ]
01:48:45 <elliott> , isMUL instr |>
01:48:48 <elliott> Seq [ s!mult!multiply (s!rtop!val) (s!stack!top)
01:48:49 <elliott> , s!rtop <== s!mult!result!val
01:48:52 <elliott> , s!stack!pop
01:48:53 <elliott> ]
01:48:55 <elliott> , s!code!pop
01:48:57 <elliott> , Tick
01:49:00 <elliott> ]
01:49:01 <elliott> ]
01:49:03 <elliott> see, easy
01:49:07 <elliott> also long, whoops
01:49:16 <BeedaWeeda> spammer
01:49:23 <elliott> child molester _and_ a spammer?
01:49:26 <elliott> these accusations.
01:49:30 <BeedaWeeda> reporting to server ops
01:49:35 <BeedaWeeda> ban
01:49:49 <elliott> im sure
01:50:41 <CakeProphet> > fmap (const 4) ((,) 3)
01:50:42 <lambdabot> Overlapping instances for GHC.Show.Show (b -> t)
01:50:42 <lambdabot> arising from a use of `...
01:51:08 <CakeProphet> :t fmap
01:51:09 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
01:51:09 <elliott> Vorpal: can you construct RAM in VHDL? it seems that everyone just uses the provided memory interface
01:51:11 <elliott> whcih is SOOO BORING
01:51:15 <elliott> well
01:51:18 <elliott> i suppose you obviously can
01:51:23 <Patashu> isn't RAM just a shitload of latches
01:51:30 <Patashu> and a big multiplexer/demultiplexer
01:51:34 <elliott> im gonna have to ask pikhq about his repeater ram :P
01:51:43 <CakeProphet> fmap fst (1,2)
01:51:53 <CakeProphet> > fmap (+1) (1,2)
01:51:54 <Patashu> > fmap fst (1,2)
01:51:54 <lambdabot> (1,3)
01:51:55 <lambdabot> (1,2)
01:52:01 <elliott> wtf
01:52:02 <elliott> :t fmap fst
01:52:03 <lambdabot> forall a b (f :: * -> *). (Functor f) => f (a, b) -> f a
01:52:04 <Patashu> lol
01:52:13 <elliott> :t fmap fst (?x,?y)
01:52:14 <lambdabot> forall a b t. (?x::t, ?y::(a, b)) => (t, a)
01:52:21 <Vorpal> <elliott> Vorpal: can you construct RAM in VHDL? it seems that everyone just uses the provided memory interface <-- you can do random access memory
01:52:22 <elliott> > let ?x = 0; y = 9 in fmap fst (?x,?y)
01:52:23 <lambdabot> <no location info>: parse error on input `y'
01:52:25 <Vorpal> probably only SRAM
01:52:25 <CakeProphet> elliott: I'm guessing f is a different instance in this case.
01:52:27 <elliott> > let ?x = 0; ?y = 9 in fmap fst (?x,?y)
01:52:28 <lambdabot> (0,9)
01:52:32 <Vorpal> elliott, DRAM I don't think would be feasible
01:52:35 <elliott> > let ?x = 0; ?y = 9 :: Int in fmap fst (?x,?y)
01:52:36 <lambdabot> Couldn't match expected type `GHC.Types.Int'
01:52:36 <lambdabot> against inferred type ...
01:52:38 <Vorpal> at least not on usual FPGAs
01:52:39 <elliott> grr
01:52:46 <elliott> Vorpal: whats the difference :)
01:52:55 <Vorpal> elliott, actually what you create will be pretty much a register file
01:52:56 <CakeProphet> > fmap show (1,2)
01:52:57 <lambdabot> (1,"2")
01:53:03 <Vorpal> not proper SRAM
01:53:07 <elliott> Vorpal: well sure registers are the same thing as ram
01:53:08 <elliott> obviously
01:53:18 <Vorpal> elliott, nope, probably based on d-latches
01:53:25 <elliott> Vorpal: ram is a thing not an implementation
01:53:30 <elliott> its random access and its memory ergo its ram
01:53:38 <Vorpal> rather than capacitance as in DRAM (definitely unfeasible on a FPGA)
01:53:43 <Vorpal> or whatever it is SRAM uses
01:53:51 <Vorpal> (I forgot how SRAM works exactly)
01:54:02 <Vorpal> elliott, just pointing out memory density will be rather bad
01:54:17 <Vorpal> elliott, same reason your "ram" in your computer isn't all register file type ram
01:54:45 <pikhq> Vorpal: I don't think he cares that much — he's generating *redstone logic* here.
01:54:46 <elliott> yes but this is minecraft
01:54:52 <elliott> register style ram is all you can do
01:54:53 <elliott> :P
01:55:00 <Vorpal> pikhq, oh right
01:55:09 <Vorpal> elliott, there is delay line in mc too
01:55:12 <Vorpal> that is pretty compact
01:55:21 <Vorpal> elliott, basically repeaters chained up
01:55:28 <Vorpal> of course that is not *random* access
01:55:30 <pikhq> elliott: I'm willing to bet driving the delay line would be a PITA.
01:55:31 <elliott> pikhq made that
01:55:34 <elliott> apparently his is actually usable though
01:55:39 <elliott> rather than the one on the wiki
01:55:41 <Vorpal> heh
01:55:48 <Vorpal> pikhq, how does your differ
01:55:52 <elliott> Vorpal: well you can just construct a bunch of delay lines duh
01:55:53 <pikhq> It's clocked!
01:56:00 <Vorpal> pikhq, how?
01:56:53 <pikhq> Signals coming into the delay line are anded with a clock. :P
01:57:01 <CakeProphet> is minecraft a hamster?
01:57:32 <Patashu> what is a 'delay line'? time multiplexing?
01:57:46 <CakeProphet> it is a line that is delayed...
01:57:48 <pikhq> I also set up some other and gates to make it have a set and reset line.
01:59:45 <Patashu> what a baffling youtube account http://www.youtube.com/user/freetroutfish?email=comment_received (look at recent activity)
02:00:09 <pikhq> elliott: If you're feeling awesome, you could set up a tape with pistons.
02:00:26 <elliott> Patashu: MWAHAHA NOW I KNOW YOU RECEIVED A COMMENT
02:00:29 <elliott> LOOK AT MY URL POWER
02:00:30 <pikhq> (reading = easy, writing = motherfucking PAIN)
02:00:35 <elliott> pikhq: An infinite tape? :P
02:00:38 <Patashu> lol OH NO
02:00:54 <pikhq> elliott: Not with Minecraft limits, sadly.
02:01:11 <elliott> pikhq: I mean, infinite as far as Minecraft goes
02:03:23 <pikhq> So, within the surrounding 16 chunks? :P
02:03:32 <pikhq> Erm, less than that. Anyways.
02:04:07 <Patashu> if it's in multiplayer
02:04:11 <Patashu> you can have more people load in every chunk
02:10:34 <elliott> More spam time:
02:10:35 <elliott> add4
02:10:35 <elliott> :: (Fun2 Bit (t3 -> t4 -> t1),
02:10:35 <elliott> Fun2 Bit (t7 -> t8 -> t6),
02:10:35 <elliott> Fun2 Bit (t14 -> t15 -> Bit -> Gen ()),
02:10:37 <elliott> Fun2 Bit (t13 -> (Bit -> Gen ()) -> t12 -> Gen ()),
02:10:39 <elliott> Fun2 Bit (t10 -> t11 -> Bit -> Gen ()),
02:10:41 <elliott> Fun2 Bit (Bit -> t5 -> t2),
02:10:43 <elliott> Fun2 Bit (Bit -> t5 -> t -> Gen ()),
02:10:44 <elliott> Fun2 Bit (t1 -> t2 -> Bit -> Gen ()),
02:10:46 <elliott> Fun2 Bit (t6 -> (Bit -> Gen ()) -> Bit -> Gen ()),
02:10:48 <elliott> Fun2 Bit (t10 -> t11 -> t9),
02:10:50 <elliott> Fun2 Bit (t14 -> t15 -> t13),
02:10:53 <elliott> Fun2 Bit (t9 -> (Bit -> Gen ()) -> Bit -> Gen ()),
02:10:55 <elliott> Fun2 Bit (t7 -> t8 -> Bit -> Gen ()),
02:10:56 <elliott> Fun2 Bit (t3 -> t4 -> Bit -> Gen ())) =>
02:10:58 <elliott> (t3, t7, t10, t14)
02:11:00 <elliott> -> (t4, t8, t11, t15)
02:11:02 <elliott> -> t5
02:11:04 <elliott> -> ((t, Bit, Bit, Bit), t12)
02:11:09 <elliott> -> Gen ()
02:11:11 <elliott> good type for an adder
02:11:12 <elliott> I like how it's inexplicably specialised some types to Bit and not others
02:12:20 <elliott> wtf, it's actually decreased in size by adding declarations :D
02:12:23 <elliott> as in
02:12:24 <elliott> umm
02:12:25 <elliott> generalisations
02:13:17 <elliott> fizzie: not-here-lament: not-here-oerjan:
02:13:18 <elliott> <Ttech> Choms, Channels that don't follow it are sometimes moved to their proper namespace
02:13:18 <elliott> <gm152> Expect the # channels that do not have approved group registrations to be moved when the GMS is in place.
02:13:26 <elliott> fizzie: You guys should, uh, really get on that.
02:13:38 <elliott> Or we'll end up forced into ##esoteric.
02:13:44 <elliott> Which exists, heh.
02:32:13 <elliott> :t showIntAtBase
02:32:13 <lambdabot> forall a. (Integral a) => a -> (Int -> Char) -> a -> String -> String
02:32:36 <elliott> > showIntAtBase 2 ("OI"!!) 99 ""
02:32:37 <lambdabot> "IIOOOII"
02:32:54 <elliott> > foldr (\x r -> x ++ " (" ++ r ++ ")") "" (showIntAtBase 2 ("OI"!!) 99 "")
02:32:55 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
02:32:55 <lambdabot> against inferred ty...
02:33:10 <elliott> > foldr (\x r -> x : " (" ++ r ++ ")") "" (showIntAtBase 2 ("OI"!!) 99 "")
02:33:12 <lambdabot> "I (I (O (O (O (I (I ()))))))"
02:33:16 <elliott> > foldr (\x r -> x : " (" ++ r ++ ")") "Z" (showIntAtBase 2 ("OI"!!) 99 "")
02:33:18 <lambdabot> "I (I (O (O (O (I (I (Z)))))))"
02:33:44 <elliott> > let n = 99 in "type N" ++ show n ++ " = " ++ foldr (\x r -> x : " (" ++ r ++ ")") "Z" (showIntAtBase 2 ("OI"!!) n "")
02:33:46 <lambdabot> "type N99 = I (I (O (O (O (I (I (Z)))))))"
02:33:51 <CakeProphet> elliott: line noise.
02:33:52 <CakeProphet> :P
02:33:59 <elliott> what part of it?
02:34:01 <elliott> that whole function is trivial to read
02:34:11 <CakeProphet> oh it's trivial to read.
02:34:21 <CakeProphet> I'm just saying it looks like line noise.
02:34:34 <elliott> no it doesn't :)
02:35:13 <CakeProphet> line noise with some words thrown in. 4 of them to be exact.
02:35:20 <CakeProphet> er, 5...
02:35:40 <elliott> let, type, show, fold(right), int, at, base
02:35:50 <elliott> that's six to eight words
02:36:00 <CakeProphet> I was counting showIntAtBase as one.
02:36:07 <elliott> cheater :)
02:36:12 <CakeProphet> but sure, whatever makes it less like line noise. :P
02:36:30 <CakeProphet> MIGHT AS WELL WRITE IT IN PERL OOOOH SNAPPP
02:38:43 <CakeProphet> elliott: oh hey, I forgot in
02:38:49 <elliott> *Redsynth.Vec Data.List Numeric> n128
02:38:49 <elliott> N1
02:38:49 <elliott> no...
02:39:17 <elliott> huh, it is broken
02:39:17 <CakeProphet> that is 6 words by the CakeProphetian anti-line-noise quantification metric.
02:39:33 <elliott> what the fuck...
02:39:42 <CakeProphet> are you writing a synthesizer?
02:39:48 <pikhq> We've already estabilished that the CakeProphetian metrics have negative value.
02:40:05 <elliott> CakeProphet: Yes.
02:40:18 <CakeProphet> pikhq: nonsense, they are intuitive and beautiful.
02:40:27 <CakeProphet> elliott: are you using a filter by chance?
02:40:45 <CakeProphet> filters = good synthesis.
02:40:49 <elliott> CakeProphet: Why would I use a filter for synthesising?
02:41:01 <CakeProphet> because they produce rich timbres.
02:41:20 <CakeProphet> whereas additive synthesis is tedious, time-consuming trial-and-erorr
02:41:26 <CakeProphet> lol *error
02:41:47 <elliott> CakeProphet: I'm probably doing it with a hill-climb or genetic algorithm of some sort following a random layout.
02:41:52 <elliott> Do you know a better way?
02:42:44 <elliott> CakeProphet: ?
02:44:09 <CakeProphet> nope. but filters are good. That is all.
02:44:24 <CakeProphet> but I will eat my newly acquired Cap'n Crunch and ponder this.
02:44:41 <elliott> CakeProphet: Ponder what?
02:45:04 <CakeProphet> different synthesis techniques.
02:45:22 <CakeProphet> a hill-climb does sound interesting though.
02:45:55 <CakeProphet> any idea what exactly you're synthesizing?
02:46:07 <elliott> CakeProphet: I'd be interested in knowing the basic filtering synthesis algorithm. ais said that all the major shops basically use what I said, but it sounds really crappy and a pain to code to boot.
02:46:14 <elliott> Oh, redstone. Why?
02:46:27 <CakeProphet> ...wat
02:46:38 <elliott> I don't believe I said anything about /sound/ synthesis.
02:46:47 <CakeProphet> ... -_-
02:46:49 <Patashu> LOL
02:46:54 * Patashu rimshot
02:47:20 <CakeProphet> assholes.
02:48:13 <elliott> that was great
02:49:07 <CakeProphet> elliott: nope, I will never teach you how to filter good-sounding redstone.
02:49:24 <elliott> OH NOES
02:49:44 <CakeProphet> you will be left in the dark forever, as I am the only source of information on this subject.
02:50:49 <elliott> :D
02:51:15 * CakeProphet impatiently waits for PayPal to confirm his bank account so he can begin a spree of compulsive online spending.
02:51:50 <elliott> How do you not already have a PayPal account I am fifteen and even I have one.
02:51:55 <CakeProphet> this is an important rite of passage in the US.
02:51:58 <elliott> Actually I've had one for years but.
02:52:04 <CakeProphet> elliott: I have one, but I didn't have a bank account until now.
02:52:32 <elliott> Weeeeell, I believe mine is technically called a savings account, but I put money in, get interest, can take it out, and have a Visa debit card, so "what's the difference" :P
02:52:40 <elliott> Not savings account.
02:52:42 <elliott> What is it called.
02:52:43 <elliott> Argh.
02:52:46 <elliott> Well it's something other than "bank".
02:52:57 <elliott> But they transmogrify it into a banque account once you become SUFFICIENTLY OLD TO BEAR THE RESPONSIBILITY :p
02:53:13 <CakeProphet> elliott: must savings accounts have a limit on how many withdrawals you can make in a month.
02:53:25 <CakeProphet> ...oh god, that was horrible.
02:53:25 <elliott> Hmm, I might have such a limit, but I dunno what it is
02:53:26 <BeedaWeeda> they terminated elliotts PayPal account after discovering several large orders of male child pornography
02:53:37 <elliott> I'm not sure it applies to debit cards.
02:53:51 <elliott> BeedaWeeda: I realise I hurt your precious little feelings by saying that UFOs aren't real, but seriously, fuck off.
02:54:00 <BeedaWeeda> which he ordered to his moms house
02:55:21 * BeedaWeeda chuckles
02:55:25 <elliott> begin
02:55:26 <elliott> w1_0 <= '1';
02:55:26 <elliott> w3_0 <= '0';
02:55:26 <elliott> c2 : fd generic map (INIT => '0') port map (w2_0,clock,w0_0);
02:55:26 <elliott> c0 : fd generic map (INIT => '1') port map (w0_0,clock,w2_0);
02:55:26 <elliott> x <= w0_0;
02:55:28 <elliott> end structural;
02:55:30 <elliott> 23,1 Bot
02:55:32 <elliott> Vorpal: What does this even mean.
02:55:42 <CakeProphet> what language is that
02:55:46 <Vorpal> elliott, that looks generated
02:55:55 <elliott> Vorpal: Yes, it is.
02:55:56 <elliott> CakeProphet: VHDL.
02:56:02 <elliott> Vorpal: I did
02:56:02 <elliott> Prelude Lava> writeVHDL "Yeah" (let x = delayBit high (delayBit low x) in x) (name "x")
02:56:05 <elliott> not expecting it to work.
02:56:12 <BeedaWeeda> UFO's have feelings too y'know
02:56:36 <Vorpal> elliott, but it maps inputs and outputs from some component to inputs and outputs (or signals) in the own module
02:56:53 <elliott> Vorpal: It's all that's generated; there is no more.
02:56:53 <Vorpal> the c2 and c0 lines I mean
02:56:54 <CakeProphet> oh hey, I don't have to wait for my bank account to be linked, I can go ahead and make transfers manually.
02:56:59 <Vorpal> elliott, okay...
02:57:01 <elliott> CakeProphet: Durr
02:57:12 <elliott> Vorpal: You already know that everything Lava generates is structural
02:57:13 <CakeProphet> elliott: look I've never used PayPal I didn't have a bank account until now.
02:57:17 <CakeProphet> this is all new to me.
02:57:19 <elliott> [[
02:57:20 <elliott> entity Yeah is port (
02:57:20 <elliott> x : out std_logic;
02:57:20 <elliott> clock : in std_logic
02:57:20 <elliott> );
02:57:20 <elliott> end entity Yeah;
02:57:21 <elliott> architecture structural of Yeah is
02:57:23 <Vorpal> elliott, right. Well I can't explain what it *does*
02:57:24 <elliott> signal w1_0,
02:57:25 <elliott> w3_0,
02:57:27 <elliott> w2_0,
02:57:29 <elliott> w0_0 : std_logic;
02:57:31 <elliott> attribute INIT: string;
02:57:33 <Vorpal> elliott, anyway it generates using primitives
02:57:33 <elliott> attribute INIT of c2: label is "0";
02:57:37 <elliott> attribute INIT of c0: label is "1";
02:57:39 <elliott> ]]
02:57:40 <Vorpal> from some vendor specific library iirc
02:57:41 <elliott> Spam, but eh
02:57:43 <elliott> That's what's above that
02:57:45 <elliott> Vorpal: It's meant to generate low and then high forever :P
02:57:47 <elliott> CakeProphet: Why not, surely you had a debit card or something before
02:57:49 <elliott> Vorpal: Xilinx, yeah
02:57:54 <Vorpal> elliott, what is c2 and c0?
02:58:04 <CakeProphet> elliott: ...no. I had no bank account so why would I have a debit card?
02:58:04 <Vorpal> you gave attributes for them
02:58:07 <Vorpal> but nothing else
02:58:13 <elliott> http://hackage.haskell.org/packages/archive/york-lava/0.2/doc/html/src/Lava-Vhdl.html wow, this is short
02:58:24 <elliott> CakeProphet: Uhh, do people in the US not get any sort of account before a bank account?
02:58:30 <elliott> CakeProphet: PayPal accepts cheques I think actually
02:59:04 <CakeProphet> elliott: not as like... a law or anything. o_o if you have fiscally responsible parents, then possibly.
02:59:13 <Vorpal> elliott, err.. what would you get before a bank account?
02:59:24 <elliott> Vorpal: A I-can't-bloody-remember-the-name account
02:59:43 <elliott> I keep wanting to say savings account but I don't think it is a savings account, but anyway it's functionally identical to a bank account :P
02:59:49 <Vorpal> I got a bank account when I was like 10 I think, maybe somewhat earlier. Saved money on it from the start
02:59:50 <elliott> Maybe it has a limited number of withdrawals per month like CakeProphet said, dunno
02:59:56 <Vorpal> hm
03:00:02 <Vorpal> oh yeah I had a savings account
03:00:03 <Vorpal> right
03:00:13 <elliott> Well you can't get bank accounts when you're ten here or presumably in the US
03:00:17 <elliott> I don't think
03:00:23 <CakeProphet> yeah see... my parents didn't give me any kind of savings account.
03:00:38 <elliott> But I have a debit card and it works online, so, woo, good enough for irrational online spending binges that I don't have
03:00:42 <CakeProphet> I've been using cash for the past 5 years or so.
03:01:25 <CakeProphet> well, all I'm really going to buy is a hookah. I was joking about the compulsive spending part.
03:01:51 <elliott> That's just a really tiny compulsive spending spree.
03:03:12 <CakeProphet> yes, it's pretty much negligible.
03:08:39 * CakeProphet is actually pretty good about saving money.
03:14:10 <elliott> Vorpal: I take it it's inaccurate to refer to low and high as "false" and "true"? :p
03:14:14 <elliott> (True bits, as always.)
03:14:18 <elliott> (As in: not std_logic.)
03:14:34 <Vorpal> elliott, I haven't ever used plain bits. Always std_logic
03:14:40 <Vorpal> but true is what you decide it is
03:14:45 <Vorpal> for your application
03:14:49 <Vorpal> now, night →
03:15:18 <elliott> Vorpal: >:(
03:15:24 <elliott> Vorpal: Zero or one, then :P
03:15:37 <elliott> "inv low" is just so much less nice than "not false" :(
03:15:47 <Vorpal> okay I hasn't turned off the monitor yet
03:15:53 <Vorpal> elliott, inv low makes more sense
03:16:02 <elliott> Vorpal: Why >:(
03:16:14 <Vorpal> elliott, you can save gates sometimes by inverting the meanings of true and false in part of a circuit
03:16:15 <elliott> (Hmm, how is "inv" less accurate than "not"? It's called a NOT gate, after all.)
03:16:23 <Vorpal> not low works too
03:16:45 <elliott> Vorpal: Blargh, fine :P
03:16:48 <Vorpal> elliott, but representing high as 1 is common
03:16:49 <elliott> What about "zero" and "one"?
03:16:53 <elliott> Are those ok?
03:16:57 <Vorpal> elliott, look at an std_logic array in vhdl
03:17:06 <quintopia> elliott: use -0.5 and 0.5
03:17:10 <Vorpal> "10001" as std_logic
03:17:14 <Vorpal> what do you think THAT is?
03:17:20 <elliott> Vorpal: OK so what you are saying is zero and one are OK.
03:17:23 <Vorpal> (note "as std_logic" was not code)
03:17:29 <Vorpal> elliott, I'm saying zero is low
03:17:35 <Vorpal> I'm not saying zero is false
03:17:39 <elliott> Yes, I understand.
03:17:58 <Vorpal>
03:17:58 <elliott> Vorpal: Ha, but wait, my simulation returns [Bool] :P
03:18:00 <elliott> And so does Lava's.
03:18:20 <elliott> instance Show Bit where
03:18:20 <elliott> show b = if bitToBool b then "high" else "low"
03:18:26 <elliott> Vorpal: OH SNAP LOOKS LIKE SOMEONE'S ALREADY TAKEN AN OPINION
03:36:31 <elliott> hmm, to use Data.Bits or to roll my own
03:37:03 -!- azaq23 has quit (Ping timeout: 255 seconds).
03:47:40 <elliott> CakeProphet: BURNING IN HELLFIRE IS A BAD EXPERIENCE
03:50:58 -!- DocHerrings has joined.
03:51:04 <CakeProphet> elliott: oh really?
03:51:20 <CakeProphet> I will remember that?
03:51:49 <DocHerrings> Quick question - is it possible to reduce an arbitrary BF loop into any two smaller BF loops?
03:52:53 <elliott> DocHerrings: No. [+] and [] cannot be reduced into two smaller BF loops.
03:52:56 <elliott> For instance.
03:53:37 -!- azaq23 has joined.
03:54:11 <DocHerrings> elliott: Makes sense, but more specifically, I am writing an esolang where loops have a max number of commands, and I wanted to know if that would affect turing-completeness.
03:55:05 <elliott> Well... you only need two nested loops to implement BF in BF, and they're of finite, short length, but this is the ℒ debacle all over again.
03:55:41 <elliott> Basically: There's a very good chance you'll be TC by one definition, because an interpreter of a TC language will exist; on the other hand, it may affect your Turing-completeness by the better standard. (Or it may not; I honestly have no idea.)
03:55:46 <elliott> (It depends on your language.)
03:55:49 <elliott> (See http://esolangs.org/wiki/%E2%84%92.)
03:56:45 <DocHerrings> Man that's a pretty interesting article. This is why I love esolang.
03:57:40 <DocHerrings> Well, I suppose I will ask the general public for ideas - what is the most creative looping or conditional construct you can think of?
03:58:09 <elliott> Not requiring looping or conditionals at all? I mean, they'll be there at some level, but you can make them implicit.
03:58:42 <elliott> For instance ///, one of my favourite languages (http://esoteric.voxelperfect.net/wiki/Slashes) doesn't have a conditional, it just has string replacement -- which is implemented as a loop with a bunch of conditionals, but they're hidden from the actual semantics.
03:58:59 <DocHerrings> Hold on, I'll just put the rough specs on pastebin. And I love /// too.
03:59:29 <monqy> lambda/combinator calculi do no-loop/conditionals, as another example
03:59:37 <monqy> self-modifying/extending languages are nifty too
04:00:13 <elliott> Right, the lambda calculus is a good example, of course
04:00:16 <elliott> Why didn't I think of that
04:00:48 <elliott> And with that, the interpretation as a loop of substitutions feels way more unnatural than the obvious semantics, whereas with /// the semantics are pretty loop-esque
04:01:50 <DocHerrings> http://pastebin.com/hL2tUw7S link. Anyways, there are two data structures - a track and a drum. The drum consists of 8 tumblers, which all hold 8 binary cells. The track is essentially 8 tapes side-by-side.
04:02:17 <elliott> I'm afraid I'm too tired to understand that spec :)
04:02:36 <elliott> You did misspell "accessor", though. Aren't I useful!
04:02:48 <DocHerrings> Mostly because it was whipped up in a hour.
04:02:57 <elliott> :)
04:03:27 <DocHerrings> There are 256 viable commands - it takes a lot out of ya.
04:03:39 <DocHerrings> All for the sake of being able to read data as code.
04:04:38 <elliott> Where's Vorpal and/or ais when you need one of them
04:04:43 <monqy> I don't see how data as code implies 256 commands
04:04:48 <elliott> DocHerrings: That's easy, just use a binary alphabet
04:04:57 <elliott> http://esolangs.org/wiki/Bitwise_Cyclic_Tag#Self_BCT
04:05:13 <DocHerrings> I am - everything is in terms of 8 bits.
04:05:27 <elliott> Right
04:05:28 <elliott> .
04:05:34 <elliott> But that could just be two commands.
04:06:26 -!- kwertii has joined.
04:06:55 <DocHerrings> All the commands have three parts - (OPERATOR TYPE) (FUNCTION) (DATA) - Which boils down to... 00000000 for instance, which would rotate tumbler no 1 to the right.
04:08:11 <DocHerrings> Blah. I need to rethink this.
04:08:44 <DocHerrings> Just desperately trying to avoid something resembling BF, as usual.
04:09:42 <monqy> a noble goal
04:12:34 <elliott> hmm, this is a pain
04:12:37 <elliott> deep thoughts w/ elliott
04:12:42 <monqy> I'm having a bit of trouble understanding this spec :(
04:13:39 <DocHerrings> Sorry. If it helps, MSP => Most Significant Bit, whereas LSP => Least Significant Bit.
04:15:00 <elliott> "VHDL has file input and output capabilities, and can be used as a general-purpose language for text processing"
04:15:05 <elliott> DocHerrings: p = bit?
04:15:23 <DocHerrings> elliott: Oh lord I need to sleep.
04:15:38 <elliott> :)
04:15:44 -!- Slereah has quit (Ping timeout: 258 seconds).
04:15:50 <elliott> whenever you enter here i am tired and you are tired
04:15:52 <elliott> i blame you
04:16:24 <monqy> sometimes im tired but then i sleep and everything is better
04:16:31 <DocHerrings> I plead the 5th.
04:18:04 <elliott> monqy: its hard to sleep
04:18:10 <elliott> you have to lie down and wait a long time
04:18:15 <elliott> and then a lot of hours pass
04:18:16 <elliott> :(
04:18:24 <monqy> but theres a chance of nifty dream
04:18:35 <DocHerrings> Certainly when you have an esolang idea in your head.
04:18:46 <elliott> i have not remembered dreams in a very long time, i dreamt yesterday but it was not a very exciting dream
04:18:54 <monqy> sometimes i have esolang dreams
04:19:04 <monqy> last night included
04:19:12 <elliott> oh tell us tell us
04:19:18 <monqy> i cant remember anything :(
04:19:43 <DocHerrings> I once had a dream where /// was the only programming language.
04:19:48 <DocHerrings> It was beautiful
04:19:54 <monqy> the most recent dream I remember was one where everything was dark and I had to go to a restaurant and there was just a big dark room with a big table with a shark on it
04:20:04 <DocHerrings> Although you needed a crap-ton of libraries.
04:20:10 <monqy> and people tore parts off of the shark (and optionally cooked them) and ate them
04:20:16 <elliott> DocHerrings: oh that sounds nice /// is a good basis for everything
04:20:30 <elliott> monqy: then how do you know it was an esolang dream :OOOO
04:20:33 <CakeProphet> I had a dream where your mom was /// in bed.
04:20:44 <monqy> sometimes i remember things about dreams without remembering the details
04:21:14 <elliott> monqy: do you ever remember like
04:21:21 <elliott> "that was the best dream ever and no dream will ever hold a candle to it"
04:21:24 <elliott> but nothing about the dream itself
04:21:25 <elliott> and cry
04:21:51 <monqy> no i actually remembered that dream
04:21:53 <monqy> it was a wonderful dream
04:21:57 <elliott> what was it
04:22:00 <elliott> was it about death
04:22:02 <monqy> yes
04:22:07 <monqy> i died in it
04:22:07 <elliott> all the good dreams are
04:22:09 <monqy> that's how it started
04:22:20 <elliott> `addquote <monqy> it was a wonderful dream <monqy> i died in it <monqy> that's how it started
04:22:21 <HackEgo> 489) <monqy> it was a wonderful dream <monqy> i died in it <monqy> that's how it started
04:22:25 <DocHerrings> One day after reading a book about the discovery of the structure of benzene (the chemist saw it in his dream) I tried to dream up the perfect sorting algorithm. When I woke up, I was only extremely confused.
04:22:39 <elliott> DocHerrings: that's the warning signal from your brain
04:24:12 <DocHerrings> Then I designed the 2nd worst sorting algorithm I could (what could be worse than quantum sort?))
04:25:19 <DocHerrings> It was picking a pivot, splitting the list into pairs, sorting each pair, sorting ala quicksort using the smallest element in each pair, and rinse and repeat.
04:27:10 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
04:28:00 -!- DocHerrings has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]).
04:31:26 <elliott> how does an works?????????????????
04:31:30 <elliott> theses are questions
04:32:30 <CakeProphet> an umber
04:33:13 -!- Slereah has joined.
04:40:46 <elliott> ?hoogle index
04:40:47 <lambdabot> Data.ByteString index :: ByteString -> Int -> Word8
04:40:47 <lambdabot> Data.Ix index :: Ix a => (a, a) -> a -> Int
04:40:47 <lambdabot> Data.Sequence index :: Seq a -> Int -> a
04:40:49 <elliott> ?hoogle indexOf
04:40:49 <lambdabot> No results found
04:40:54 <elliott> ?hoogle [a] -> a -> Int
04:40:55 <lambdabot> Data.List elemIndex :: Eq a => a -> [a] -> Maybe Int
04:40:55 <lambdabot> Data.List elemIndices :: Eq a => a -> [a] -> [Int]
04:40:55 <lambdabot> Network.BufferType buf_concat :: BufferOp a -> [a] -> a
04:57:42 <elliott> Lava> (13 :: Word N4) `vat` n2
04:57:42 <elliott> low
04:57:44 <elliott> HAHA VORPAL
04:57:45 <elliott> IT DOES IT
04:57:46 <elliott> IT DOES
04:57:48 <elliott> HAAHAHAHAHAHAHAHAHAH
04:57:49 <elliott> WELL SORT OF
04:57:51 <elliott> HAHAHAJHJAOHIJAIHOJIOFJDIOJGOIFDJGIOFDJGOIDFJGOIFDJGOFDG
04:57:53 <elliott> OIJHSEFIODHGIDSJFIGREGJREG
04:57:54 <elliott> EGRJRGOJGREOIJGREOIJGERIOJEGORJI
05:01:30 <BeedaWeeda> elliott had an orgasm whacking off to some computer software and complex algorithms
05:02:37 <elliott> yeah, and they were underage too
05:05:58 <monqy> what a creep, that elliott
05:06:48 <elliott> oh no my REp;TUATION
05:14:04 -!- Lymia has changed nick to Lymee.
05:34:08 <CakeProphet> so I wonder what >λ= does.
05:35:01 <quintopia> лол
05:35:02 <monqy> what does >λ= do?
05:35:41 <CakeProphet> it's the Haskell logo, I was just wondering what it would do as a function. :)
05:36:57 <monqy> well for one it's a syntax error
05:37:20 <monqy> unless it doesn't work like that
05:37:29 <monqy> in which case it does whatever you want it to
05:37:44 <CakeProphet> I'm surprised Haskell doesn't have unicode support..
05:38:07 <CakeProphet> or is it that lambda isn't an operator character?
05:40:31 <fizzie> GHC has that UnicodeSyntax extension, but presumably λ counts as a regular letter maybe.
05:40:53 -!- kwertii has quit (Quit: bye).
05:46:18 <CakeProphet> fizzie: do modules that import Unicode modules have to have that extension enabled?
05:46:55 <CakeProphet> probably not. It probably just makes the unicode names unavailable.
05:48:41 <fizzie> I think the extension just enables Unicode alternatives for some ASCII syntax (::, =>, forall, ->, <-, -<, >-, -<<, >>- and *); it seems completely separate from things like that base-unicode-symbols package which provides modules like Prelude.Unicode containing things like ≠ for /= and so on.
05:49:11 <fizzie> I also think the topic has been discussed on-channel before too.
05:52:00 <fizzie> So to put it differently, the extension is just to get those Unicode variants for those built-in syntax bits; you don't need anything special to use Unicode in general for your own names.
05:52:08 <CakeProphet> :t (/)
05:52:08 <lambdabot> forall a. (Fractional a) => a -> a -> a
05:52:57 <CakeProphet> (Fractional a, Num b) => b -> b -> a
05:53:00 <CakeProphet> would be swanky.
05:53:43 <fizzie> The Haskell 98 lexical bits seem to say so too. symbol -> ascSymbol | uniSymbol, uniSymbol -> "any Unicode symbol or punctuation".
05:54:00 <fizzie> But of course λ is not a symbol or punctuation but a letter.
05:54:06 <CakeProphet> right,
05:54:12 <CakeProphet> > 3 / 3
05:54:13 <lambdabot> 1.0
05:54:47 <CakeProphet> I guess with numeric literals being overloaded to Num, everything is fine...
06:19:22 <elliott> hmm, my Gen thing is actually stupid...
06:19:28 <elliott> almost as stupid as my life :((((((((((((99999999999999999999999999999
06:19:45 <elliott> oh, doubly stupid actually
06:19:50 <elliott> livin' the stupid life
06:20:21 <CakeProphet> > > > > > > > > > >
06:20:22 <lambdabot> <no location info>: parse error on input `>'
06:20:53 <CakeProphet> > 3 > 4 < 4 > 3
06:20:54 <lambdabot> Precedence parsing error
06:20:54 <lambdabot> cannot mix `GHC.Classes.>' [infix 4] and `GHC...
06:20:55 <elliott> wait, what...................
06:21:37 <elliott> argh, this is a stoopid
06:22:41 <CakeProphet> no u.
06:22:48 <CakeProphet> u stoopuid
06:27:46 <elliott> CakeProphet: ur terible
06:28:28 <elliott> NONE OF THIS MAKES ANY SENSE MAYBE ILL KILL MYSELF TO DEATH ...............
06:28:55 -!- CakeProphet has quit (Ping timeout: 264 seconds).
06:32:30 <quintopia> i wouldn't recommend that elliott
06:32:45 <quintopia> think of all those chinese babies that died so you could have a high standard of living
06:32:52 <quintopia> are you really going to waste that sacrifice?
06:33:17 -!- oerjan has joined.
06:33:32 <Sgeo_> Is it just me, or does everyone hate FF13?
06:34:24 <Patashu> We polled 6 billion people and all of them said 'yes'
06:36:51 <fizzie> 83/100 like it, says metacritic, so...
06:37:49 <Sgeo_> Oh, huh
06:38:05 <Sgeo_> I keep getting the impression that people consider it to me more of a movie than a game
06:38:35 <fizzie> Pretty much everyone seems to dislike the linearity of it, but apparently it's not enough to completely ruin it.
06:46:17 <pikhq> fizzie: On the other hand, 7/10 is given out for games that aren't even *playable*.
06:46:40 <oerjan> fizzie:
06:46:41 <oerjan> 19:10:43 <elliott> <Ttech> Choms, Channels that don't follow it are sometimes moved to their proper namespace
06:46:44 <oerjan> 19:10:44 <elliott> <gm152> Expect the # channels that do not have approved group registrations to be moved when the GMS is in place.
06:46:48 <pikhq> Indeed, the range seems to be 7-10.
06:46:52 <oerjan> 19:10:43 <elliott> fizzie: not-here-lament: not-here-oerjan:
06:47:23 <fizzie> I saw those lines, but I do not know what they mean.
06:47:43 <quintopia> they mean that #esoteric might get an # prepended soon?
06:47:47 <oerjan> i _assume_ it means ... right
06:47:53 <elliott> Yeah.
06:47:59 <elliott> Unless you do the group registration thing.
06:48:05 <elliott> lament looked into it but stopped because it was a pain, apparently.
06:48:13 <elliott> BUT THAT WAS BEFORE THE THREAT TO OUR GREAT NAME.
06:48:29 <elliott> (FSVO great)
06:48:37 <fizzie> pikhq: On the third hand, they had sold 5.5 million copies a ~year ago, so that's a lot of disappointed people if *everyone* hates it.
06:48:47 <quintopia> i vote: who gives a shit. anyone else?
06:48:56 <pikhq> fizzie: Shit sells.
06:49:22 <pikhq> This is one of the most depressing facts of life.
06:49:43 <coppro> I'm more annoyed by the fact that they're super-slow at group registrations
06:49:43 <elliott> quintopia: On the #? But this is a _national institution_ exclamation mark
06:49:47 <elliott> And ##esoteric already exists, anyway
06:49:55 <elliott> ...also we could get esoteric cloaks?
06:49:56 <oerjan> wait what
06:49:59 <coppro> elliott: yes
06:50:00 <elliott> The point is we must protect this glorious nation.
06:50:03 <coppro> if we had group registration
06:50:12 <elliott> http://freenode.net/group_registration.shtml Oh, this doesn't look hard at all.
06:50:19 <coppro> elliott: The problem is we don't have a claim to the name
06:50:31 <elliott> coppro: cpressey has argued that we do.
06:50:42 <elliott> And he's one of the popularisers of the term "esoteric" as it relates to programming languages.
06:50:51 <Deewiant> Something like "esolangs" I could see happening
06:51:07 <quintopia> but Deewiant!
06:51:19 <monqy> but then we won't get confused people who think it's about religion or hip hop
06:51:23 <quintopia> then we wouldn't get the entertaining randoms looking for magick-lovers all the time!
06:51:25 <monqy> :'(
06:51:27 <quintopia> how depressing!
06:51:30 <monqy> i'd cry
06:51:31 <elliott> I'm pretty sure we could get #esoteric
06:51:36 <pikhq> coppro: You must remember we're also associated with esolangs.org.
06:51:39 <elliott> (And I would rather just try and stay under the radar if we couldn't)
06:51:46 <elliott> pikhq: that's "esolangs" though
06:51:49 <coppro> pikhq: so we could get #esolang probably
06:51:59 <pikhq> elliott: esoteric.voxelperfect.net
06:52:01 <pikhq> Too.
06:52:13 <elliott> i can set up justinbieber.domainname.com
06:52:15 <Deewiant> #esoteric-voxelperfect
06:52:15 <elliott> doesnt mean im justin bieber
06:52:16 <elliott> (yes it does)
06:52:23 <quintopia> and it is called esoteric wiki
06:52:28 <elliott> no, it's called Esolang
06:52:38 <quintopia> well you know what
06:52:47 <quintopia> i'd be okay with #esolang
06:52:55 * quintopia shrugs
06:53:14 <olsner> #esolang? that's ugly
06:53:23 <pikhq> If nothing else, our having been here for ages would be an argument in favor.
06:53:24 <elliott> But anyway, we've had this name for almost a decade, the term "esoteric" as it relates to programming languages is exclusively used to refer to our topic, we are the only active IRC channel for this topic, and we are associated with the main wiki for it; we've also had at least one populariser of the term "esoteric" as it relates to programming languages here. And it's hard to come up with another meaning of "esoteric" such that #esoteric would be
06:53:24 <elliott> pic for freenode.
06:53:37 <elliott> And lament /did/ talk to people about getting a group registration.
06:53:48 <elliott> So obviously it wasn't dismissed immediately, although I dunno if he told them the channel name.
06:54:50 <elliott> Creative Commons has cc, it looks like
06:54:58 <elliott> That's pretty generic :P
06:55:25 <elliott> http://freenode.net/primary_groups.shtml It seems that having a software project named that is completely sufficient, and I think we have a stronger tie to our name than some random software project
06:57:40 <fizzie> Yes, but software projects are what they prioritize. ("-- giving priority to trademark owners and peer-directed project groups --")
06:58:34 <fizzie> I don't really have an onion of the number of #s in front of the channel name. Though perhaps to be contrary we should try to get ###esoteric?
06:58:50 <pikhq> And register as a group.
06:58:51 <elliott> Well, we're a peer-directed project group. Sort of. :p
06:59:13 <elliott> But really, the group registration Might As Well Be Tried; what are they going to do, kick us out SLIGHTLY SOONER if they decide against it?
06:59:13 <pikhq> "Yes, we call ourselves ##esoteric. Therefore we should get ###esoteric."
07:00:03 <elliott> OH HM how do temporary variables work i WONDER...
07:00:14 <Patashu> Let's go for #, ## and ###
07:00:14 <elliott> oh god have i just lead myself into a world of CSE
07:00:28 <Sgeo_> ..?
07:00:36 <monqy> Creation Science Evangelism
07:00:45 <Patashu> # has 32 people in it
07:00:45 <pikhq> *wince*
07:00:48 <elliott> common subexpression elimination
07:01:01 <Sgeo_> 33
07:01:09 <elliott> what
07:01:10 <Patashu> ### unable to join channel (invite only)
07:01:11 <Patashu> NOOOOOOO
07:01:14 <monqy> :'(
07:01:15 <elliott> heh
07:01:35 <elliott> OH GODDAMMIT YORK LAVA ILL EAT YOUR SOUL AND TEAR OUT YOUR ENTRAIL
07:01:37 <elliott> s
07:01:53 <monqy> what did york lava ever do to you
07:01:58 <pikhq> Ah, ##esoteric exists, is registered by ihope, is a redirect here, *and* is invite only.
07:02:00 <fizzie> Have they said whether they want everyone (who want to keep a non-grouped "#foo" channel) to apply for group thingies now or immediately after they've got that new system in place? (I think I've seen them complain about how horrible their current system is.)
07:02:16 <fizzie> "Due to the current backlog, priority is given to groups requiring approval in order to re-gain access/control of their group namespace."
07:02:29 <elliott> They were talking about that new GMS thing
07:02:30 <fizzie> Don't know what that means.
07:02:38 <elliott> So I guess we should try that when it happens.
07:02:51 <pikhq> fizzie: Groups wanting to steal a channel name.
07:02:55 <elliott> It was in the context of some idiot demanding that they reassign eir foundership even though eir request was backlogged
07:03:10 <elliott> And generally being a jerk about it
07:05:24 <elliott> -- For observable sharing. (Pass "outSigs" to prevent full-laziness.)
07:05:25 <elliott> {-# NOINLINE ref #-}
07:05:25 <elliott> ref = newRef outSigs Nothing
07:05:29 <elliott> NO YORK LAVA WHY
07:05:33 <elliott> -- Use of unsafePerformIO to implement Observable Sharing
07:05:33 <elliott> {-# NOINLINE newRef #-}
07:05:33 <elliott> newRef :: a -> Maybe InstanceId -> IORef (Maybe InstanceId)
07:05:34 <elliott> newRef s x = unsafePerformIO (newIORef x)
07:05:36 <elliott> NOooooOOOOOOooooooOOOOOooooOOOooooOoooOoooOOooOOoooOooOOoooooooo
07:05:40 <elliott> I HATE YOU
07:06:15 <pikhq> ... What the *fuck*.
07:06:23 <elliott> what
07:06:40 <pikhq> unsafePerformIO . newIORef
07:06:43 <pikhq> The fuck.
07:06:46 <elliott> uhh
07:06:51 <elliott> you realise thats a common idiom
07:06:58 <pikhq> I don't want it to be.
07:07:08 -!- CakeProphet has joined.
07:07:08 -!- CakeProphet has quit (Changing host).
07:07:08 -!- CakeProphet has joined.
07:07:12 <elliott> in this case its implementing something ghc cant do sOoooOOOOOOOooooOOOoooOOooooo
07:09:23 <oerjan> <CakeProphet> or is it that lambda isn't an operator character?
07:09:37 <oerjan> yeah they don't want to make greeks unable to use their language
07:10:56 <oerjan> they _could_ make it a reserved word, i guess, but that would still make λx->x not work (because λx is one word, not a keyword + a word)
07:12:03 <pikhq> Clearly, Unicode should distinguish between alphabetic and mathematic lambda. :P
07:12:24 <elliott> fullAdd :: Bit -> Bit -> Bit -> (Bit, Bit)
07:12:24 <elliott> fullAdd cin a b = (sum, cout)
07:12:24 <elliott> where sum' = a <#> b
07:12:24 <elliott> sum = xorcy (sum', cin)
07:12:24 <elliott> cout = muxcy sum' (a, cin)
07:12:29 <elliott> noooooooooooOOOOOooooooooOOooooOOooooooooooOOoooooooooOOOOOoooooooOOOOOOOOooooooooOOOOOOOOOOooooooooOOOOOOOOOoooooOOOOOOOOOooooOOOOOoooOOO
07:12:40 <monqy> who what
07:12:44 <Patashu> what am I looking at
07:13:38 <elliott> nooo its using
07:13:39 <elliott> sharing
07:13:40 <elliott> thing
07:13:40 <elliott> so
07:13:43 <elliott> its
07:13:44 <elliott> like
07:13:48 <elliott> if ghc inlines sum'
07:13:50 <elliott> it will break i think
07:13:51 <elliott> :(
07:13:52 <elliott> i mean
07:13:57 <elliott> yeah i could like
07:13:59 <elliott> cse mylesf
07:13:59 <elliott> but like
07:14:00 <elliott> ffffff
07:14:03 <elliott> why internet is like wtf
07:14:08 <Patashu> calm down
07:14:12 <monqy> haha cse
07:14:22 <elliott> Patashu: why hdl is like wtf :(
07:15:05 <oerjan> `wtf hdl
07:15:07 <HackEgo> why hdl is like wtf
07:15:19 <pikhq> ... Waitwaitwait, it's relying on GHC's *precise* inlining semantics to work right?
07:15:26 <pikhq> :(
07:15:40 <elliott> well hmm...............................................
07:15:46 <elliott> oerjan: yes good
07:15:55 <elliott> `quote like wtf
07:15:57 <HackEgo> 131) <fungot> alise: why internet is like wtf
07:15:59 <elliott> still best thing ever said
07:16:41 <pikhq> ♥ fungot
07:17:18 <oerjan> fizzie: WE'LL BAN YOU IF YOU DON'T FIX FUNGOT SOON. Oh wait, darn...
07:17:42 <elliott> 17:14:42: <AnMaster> anyway, I still need ais, for a VHDL question
07:17:43 <elliott> synchronicity
07:17:51 <elliott> same day as why internet is like wtf
07:18:15 <oerjan> elliott: maybe it was part of why fungot though it was wtf
07:18:25 <elliott> no that was after
07:19:49 -!- BeedaWeeda has quit (Ping timeout: 255 seconds).
07:19:56 <Sgeo_> fungot is a future psychic
07:20:38 <oerjan> fungot was clearly too good for this wretched mortal world
07:21:40 -!- monqy has quit (Quit: hello).
07:22:51 <olsner> I'll just go right ahead and link to some swedish humor: http://www.youtube.com/watch?v=VOfPnKkS4PM#t=2m03s
07:24:09 <elliott> why percy tarar is like wtf
07:24:54 <olsner> (one of the funny things is that this show (from 1996) is constantly making fun of christer fuglesang never getting sent into space - but it took another 10 years for him to actually get up there)
07:26:12 <oerjan> astrowaiting
07:27:55 <olsner> oerjan: why is åke sick? http://www.youtube.com/watch?v=xltu4RW8Whw
07:28:03 <elliott> IM CARBON DIOXIDE MASTER
07:28:39 <oerjan> um i rarely click youtube links
07:28:54 <olsner> probably a good strategy in general
07:29:20 -!- Phantom_Hoover has joined.
07:29:21 <oerjan> and at the moment my laptop is thrashing due to something probably insisting on upgrading (i suspect avg)
07:30:33 <Patashu> check task manager then
07:30:43 <elliott> carbon bioxide
07:30:48 <elliott> oerjan: lol who uses avg
07:30:59 <oerjan> elliott: it came with the laptop
07:31:04 <elliott> lol who uses laptops
07:31:06 <Phantom_Hoover> 23:41:28: <elliott> You realise what kind of shit that would put a person in if (a) everyone in here didn't already know you were a piece of shit and (b) I wasn't a minor?
07:31:16 <oerjan> elliott: people who get them as presents
07:31:23 -!- azaq23 has quit (Quit: Leaving.).
07:31:27 <Phantom_Hoover> And c) it's clearly false?
07:31:59 <elliott> Phantom_Hoover: OK, that list of conditions was bullshit, but the point is that making child molestation allegations is... never OK.
07:32:08 <elliott> (Well, unless they're true.)
07:32:12 <Phantom_Hoover> elliott, sure, but it's easy to refute.
07:32:42 <quintopia> indeed
07:32:53 <pikhq> Phantom_Hoover: Doesn't change that it's a dick move.
07:33:08 <quintopia> one way to refute it is by beating up the slanderer in a round of fisticuffs
07:42:39 <elliott> observable sharing scares me
07:43:33 -!- ChanServ has set channel mode: +o oerjan.
07:43:56 <elliott> unaffiliated/beedaweeda cloak might be useful
07:44:12 <elliott> BeedaWeeda!~port72.c@50.8.174.68 is full uncloaked address though
07:44:20 -!- oerjan has set channel mode: -b *!*@*.
07:44:23 <oerjan> argh
07:44:27 <elliott> xD
07:44:30 <elliott> A+ opping
07:45:08 -!- oerjan has set channel mode: -b *!unaffiliat@*.
07:45:12 <oerjan> wtf
07:45:34 <oerjan> hm something wrong
07:45:37 <olsner> haha, wtf
07:45:46 <Deewiant> /mode #esoteric +b foo!bar@baz
07:45:49 <oerjan> ah
07:46:04 -!- oerjan has set channel mode: +b *!*@unaffiliated/beedaweeda.
07:46:13 <oerjan> STUPEED SYNTACS
07:46:37 <CakeProphet> lol
07:46:49 <CakeProphet> we have very well-trained ops here at #esoteric
07:46:59 <elliott> well oerjan wouldn't know, he never uses the thing
07:46:59 <elliott> EVER
07:47:49 -!- oerjan has set channel mode: +b BeedaWeeda!~port72.c@50.8.174.*.
07:48:02 <oerjan> something like that
07:48:08 -!- oerjan has set channel mode: -o oerjan.
07:48:29 <elliott> oerjan: methinks the point of a bigger ban is to get _around_ him using another name...
07:51:18 <oerjan> hm...
07:51:19 -!- ChanServ has set channel mode: +o oerjan.
07:51:33 -!- oerjan has set channel mode: -b BeedaWeeda!~port72.c@50.8.174.*.
07:51:51 -!- oerjan has set channel mode: +b *!*port72.c@50.8.174.*.
07:52:09 <Patashu> we have ops here?
07:52:16 <elliott> :D
07:52:18 <elliott> you wouldn't know it
07:52:21 <oerjan> should i remove the port72.c part as well?
07:52:39 <elliott> oerjan: should be safe; there won't be many people with that IP
07:52:46 <elliott> and anyway it can be removed after a week or so, presumably even he gets bored
07:52:57 <elliott> [asterisk]that prefix
07:53:03 -!- oerjan has set channel mode: -b *!*port72.c@50.8.174.*.
07:53:11 -!- oerjan has set channel mode: +b *!*@50.8.174.*.
07:53:32 -!- oerjan has set channel mode: -o oerjan.
07:53:34 <Deewiant> Blocking plain IP ranges is a bit rude
07:53:56 <oerjan> dammit
07:54:03 -!- ChanServ has set channel mode: +o oerjan.
07:54:15 -!- oerjan has set channel mode: -b *!*@50.8.174.*.
07:54:25 -!- oerjan has set channel mode: +b *!*port72.c@50.8.174.*.
07:54:34 -!- oerjan has set channel mode: -o oerjan.
07:54:47 <elliott> Deewiant: It's a pretty specific range, and it's only for ~a week
07:54:54 <elliott> "Rude" doesn't seem to be a very good argument against
07:55:09 <Deewiant> It's still up to 254 completely unrelated people getting blocked
07:55:13 <oerjan> let's just assume until further notice he's not smart enough to get around that (and if he is, he can probably get another IP if he wants)
07:55:43 <elliott> Deewiant: Out of millions upon millions upon millions
07:55:50 <Deewiant> I'd ban the most specific thing possible at first and go wider only if he circumvents it :-P
07:56:00 <pikhq> Deewiant: Now you see why NAT and DHCP suck.
07:56:01 <pikhq> :)
07:56:10 <elliott> Deewiant: He's clearly dedicated enough to keep "trolling" us for days solely because we told him UFOs aren't real
07:56:27 <pikhq> elliott: Rather, that UFOs most probably aren't aliens.
07:56:35 <elliott> Yeah yeah, shut up
07:56:39 <elliott> Host Name:50-8-174-68.sfo.clearwire-wmx.net
07:56:39 <elliott> IP Address:50.8.174.68
07:56:39 <elliott> Country:
07:56:45 <elliott> Hmm, why's GeoIP failing
07:56:49 <pikhq> The distinction matters.
07:56:58 <elliott> No it doesn't, UFO means alien ship and you know it
07:56:59 <Deewiant> pikhq: TBH I don't see how they matter here
07:57:15 <pikhq> elliott: I dislike terms defined by derp.
07:57:19 <elliott> Deewiant: because pikhq is a pedant
07:57:26 <Deewiant> $ geoiplookup 50.8.174.68
07:57:26 <Deewiant> GeoIP Country Edition: US, United States
07:57:28 <elliott> pikhq: hi prescriptivist
07:57:35 <elliott> Deewiant: NOT NEARLY SPECIFIC ENOUGH
07:57:35 <oerjan> <CakeProphet> we have very well-trained ops here at #esoteric <-- it's just so much easier when they are present and the client can mangle the ban automatically from the nick
07:57:39 <elliott> It seems to be some mobile internet thing
07:57:41 <pikhq> I have a pedant license and everything. :)
07:58:16 <Sgeo_> pikhq, you own the universe now?
07:58:34 <pikhq> Sgeo_: Yes. Yes I do.
07:58:50 <pikhq> Which is why everyone is getting a free unicorn.
08:00:13 <oerjan> pikhq: i wish to complain, my free unicorn appears to be invisible. as well an awful shade of pink.
08:00:17 <oerjan> *as an
08:00:34 <CakeProphet> ©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©
08:00:50 <pikhq> oerjan: Dem's the breaks.
08:00:56 <oerjan> CakeProphet: why this spamming of evil symbols?
08:01:00 <coppro> pikhq: Can I have a tardis?
08:01:15 <pikhq> coppro: Time lords only, sorry!
08:01:22 <coppro> pikhq: damn
08:01:26 <coppro> Can I get a pet time lord then
08:01:27 <pikhq> However, you can be made a time lord.
08:01:28 <CakeProphet> oerjan: no reason
08:01:29 <oerjan> pikhq: you mean coppro isn't retarded enough?
08:02:09 <pikhq> I'm afraid I'm contractually obligated to let the Daleks know of your whereabouts after doing so, though.
08:03:09 <oerjan> pikhq: just trick them into ex-terminating the contract
08:03:32 <coppro> pikhq: hrm
08:03:48 <coppro> pikhq: solution: make the daleks into time lords and give me a pet one
08:04:10 <pikhq> coppro: ... Do you know what havoc this would cause?
08:04:10 <oerjan> coppro: i foresee no problems with that solution
08:04:24 <elliott> coppro: you should write doctor who
08:04:34 <Phantom_Hoover> <elliott> Hmm, why's GeoIP failing
08:04:35 <Sgeo_> pikhq, while you're at it, run rm -rf / on the universe. Seems gentler than coppro's solution
08:04:43 <Phantom_Hoover> BeedaWeeda is on a UFO.
08:04:50 <pikhq> Sgeo_: Meh.
08:05:22 <elliott> Phantom_Hoover: :D
08:05:38 <pikhq> Sgeo_: dd if=/dev/urandom | tee /dev/* >/dev/null
08:06:54 <pikhq> Especially nasty, /dev/mem.
08:07:20 <Sgeo_> How is that that nasty? If it were only /dev/mem, wouldn't a reboot fix it?
08:07:29 <Sgeo_> Um, probably need a physical reboot
08:07:36 <elliott> see "tee"
08:07:45 <pikhq> Uh, that would be writing to every device.
08:08:04 <Sgeo_> Oh, especially nasty since it includes /dev/mem
08:08:08 <pikhq> Yes.
08:08:11 <elliott> oh hey
08:08:13 <elliott> netlists are blimps
08:08:13 <elliott> :D
08:08:14 <Patashu> What does the >/dev/null part do
08:08:30 <pikhq> Patashu: Stops it from spamming your TTY. Uselessly, because your TTY is in /dev. :)
08:08:40 <Patashu> Aaah
08:08:50 <pikhq> ... Also your framebuffer.
08:09:02 <elliott> pikhq: BTW, the observable sharing thing is actually "safe" ish
08:09:09 <elliott> pikhq: Because the functions that observe it are all in IO
08:09:11 <elliott> and IO functions can do anything
08:09:18 <elliott> including giving different results for identical values
08:09:20 <elliott> Well
08:09:26 <elliott> IO functions must be referentially transparent
08:09:28 <elliott> IO /actions/ can do anything
08:09:54 <elliott> (i.e. getLineButFirstPrintThisPrompt s == getLineButFirstPrintThisPrompt t if s == t, but the actions they represent can give wildly different results.)
08:13:57 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
08:14:09 <coppro> elliott: I haven't got the accent to write for Doctor Who, sadly/
08:14:45 <elliott> David Tennant, Hugh Laurie, you could be the next in a long line of successful acecnt-fakers
08:14:47 <elliott> accent-fakers
08:15:26 <coppro> elliott: it doesn't work that way for writers
08:15:39 <elliott> OH MY GOD KANSAS LAVA: GO AWAY: JESUS
08:15:41 <coppro> because you can't slip up
08:15:43 <elliott> STOP INVENTING: NEW LAVA: VARIANTS
08:15:49 <elliott> THERE ARE: ENOUGH
08:15:50 <coppro> actors can just redo the take
08:15:57 <elliott> coppro: just redo ur life
08:15:58 <coppro> writers get no such leeway
08:16:06 <coppro> elliott: are you talking about minecraft or something?
08:16:07 <elliott> every time i make a mistake i reset
08:16:14 <elliott> coppro: lol yes and no
08:16:18 <elliott> coppro: im talking about circuit synthesis
08:16:30 <elliott> i happen to be writing a circuit Haskell HDL DSL and synthesiser for Minecraft redstone
08:16:38 <coppro> ... ah
08:16:40 <elliott> but everything im reading is about hardware design software
08:16:54 <elliott> lava is what FUCKING EVERYONE calls their Haskell HDL DSLs
08:17:03 <elliott> YOU CANT JUST TOTALLY REDESIGN IT AND THEN KEEP THE NAME YOU FUCKS
08:17:05 <elliott> ITS NOT EVEN A FORK
08:17:13 -!- CakeProphet has quit (Ping timeout: 276 seconds).
08:17:18 <elliott> theres Lava, Chalmers Lava, York Lava, fucking KANSAS LAVA
08:17:36 <elliott> NEXT THERE'LL BE ALASKA LAVA AND THERE ISN'T EVEN ANY LAVA IN ALASKA!!!!!!
08:18:30 <elliott> The definition is wrong. Declarative programming is about data flow, not about declarations. For example, Yahoo Pipes is declarative programming. --TehZ 08:12, 8 July 2011 (UTC)
08:18:32 <elliott> oerjan: i really want to kill tehz
08:18:36 <elliott> can i plz
08:19:14 <oerjan> <elliott> STOP INVENTING: NEW LAVA: VARIANTS <-- NEXT: BAKLAVA AND BALACLAVA
08:20:04 <Deewiant> elliott: Is there lava in Chalmers/York/Kansas?
08:20:22 <elliott> Deewiant: yes its a hardware description language
08:20:30 * elliott graduates from school of logic
08:20:44 <Deewiant> .... fine
08:21:12 <elliott> First known instance of Deewiant backing down when faced with nonsense.
08:25:18 <pikhq> elliott: ... Yahoo Pipes, *declarative*?
08:25:25 <pikhq> That's graphical programming.
08:25:50 <pikhq> ... And somewhat imperative, actually.
08:27:48 <elliott> um its dataflow isnt it
08:27:56 <elliott> http://upload.wikimedia.org/wikipedia/en/3/3c/Yahoo_Pipes_screenshot.png
08:27:56 <elliott> yeah
08:27:58 <elliott> so not imperative
08:28:07 <pikhq> Sorry, that was a misthink.
08:28:08 <elliott> but its not the only kind of declarative obviously
08:28:11 <pikhq> It's late and I should sleep.
08:28:47 <pikhq> Claiming that declarative programming is not about declarations is very confusing, though.
08:29:16 <elliott> Well it's hard to define declarative programming and maybe the definition is bad, but not for the reason TehZ says at all :P
08:29:29 <elliott> I just wish he wouldn't act so authoritative while being such an idiot.
08:29:46 <elliott> In order to observe sharing on nodes of types that are Typeable,
08:29:47 <elliott> and share a graph representation type, we refine the type of
08:29:47 <elliott> mapDeRef. The refined MuRef class has the following definition.
08:29:47 <elliott> class MuRef a where
08:29:47 <elliott> type DeRef a :: * -> *
08:29:47 <elliott> mapDeRef :: (Applicative f)
08:29:49 <elliott> => (forall b .
08:29:51 <elliott> ( MuRef b
08:29:53 <elliott> , Typeable b
08:29:55 <elliott> , DeRef a ~ DeRef b
08:29:57 <elliott> ) => b -> f u)
08:29:59 <elliott> -> a
08:30:01 <elliott> -> f (DeRef a u
08:30:03 <elliott> )
08:30:07 <elliott> WHY ARE YOU DOING THIS TO ME
08:30:25 <elliott> hey this stuff will actually let me produce a circuit graph, cool
08:30:45 <pikhq> elliott: You should call this Minecraft Lava.
08:30:47 <pikhq> >:D
08:31:39 <Patashu> How are you going to deal with connections being unable to be longer than 15 tiles without needing a repeater thus making that connection take one extra tick
08:35:14 <oerjan> "painfully."
08:35:25 <Patashu> I suspect so
08:35:31 <oerjan> (what do you _mean_ i'm just guessing?)
08:35:47 <pikhq> Patashu: He'll run the whole thing on a 300-clock to avoid sync issues!
08:35:48 <fizzie> You just make your master clock for the actual circuit slow enough so that signal propagation delays like that aren't a problem, right?
08:35:54 <Patashu> So 30 seconds per tick?
08:35:55 <Patashu> Sounds good to me
08:36:00 <elliott> <pikhq> elliott: You should call this Minecraft Lava.
08:36:01 <elliott> :D
08:36:03 <elliott> <Patashu> How are you going to deal with connections being unable to be longer than 15 tiles without needing a repeater thus making that connection take one extra tick
08:36:06 <elliott> Don't repeaters work?
08:36:12 <elliott> Yeah
08:36:19 <elliott> Well, I just have to account for that during synthesis
08:36:21 <Patashu> yeah but
08:36:26 <elliott> It's no harder than the physical problems real-world synthesisers take :)
08:36:27 <pikhq> elliott: It's just that they're a hell of a lot of propogation delay in most contexts is all.
08:37:05 <elliott> Yeah, but human-built shit suffers this too
08:37:14 <elliott> And human-built shit generally doesn't use the vertical dimension much
08:37:18 <fizzie> pikhq: Perhaps he can then do the clock-setting time-speedup thing to actually run the universe at higher speed.
08:37:21 <elliott> I have the advantage there, i.e. building pain isn't an issue :P
08:37:52 <fizzie> (Does that still work?)
08:38:25 <elliott> Heh.
08:38:27 <elliott> I dunno.
08:38:49 <Patashu> It's kind of surprising that redstone only runs at 10 fps to begin with
08:38:53 <Patashu> Is it really so computationally intensive?
08:38:56 <elliott> A traditional way of observing functions is to apply a function to a
08:38:56 <elliott> dummy argument, and observe where this dummy argument occurs
08:38:56 <elliott> inside the result expression. At first, it seems that an exception can
08:38:56 <elliott> be used for this, but there is a critical shortcoming. It is impossible
08:38:56 <elliott> to distinguish between the use of a dummy argument in a sound
08:38:57 <elliott> way and examining the argument. For example
08:38:59 <elliott> \ x -> (1,[1..x])
08:39:01 <elliott> gives the same result as
08:39:03 <elliott> \ x -> (1,x)
08:39:07 <elliott> when x is bound to an exception-raising thunk.
08:39:09 <elliott> haha WOW
08:39:11 <elliott> someone else had that idea????
08:40:07 <pikhq> Patashu: Actually, Notch is t3h lazy.
08:40:21 <elliott> instance ( MuRef a, Typeable a, NewVar a,
08:40:21 <elliott> MuRef b, Typeable b,
08:40:21 <elliott> DeRef a ~ DeRef (a -> b),
08:40:21 <elliott> DeRef b ~ DeRef (a -> b) )
08:40:21 <elliott> => MuRef (a -> b) where
08:40:22 <elliott> type DeRef (a -> b) = Node
08:40:24 <elliott> mapDeRef f fn = let v = mkVar $ toDyn fn
08:40:26 <elliott> in Lambda <$> f v <*> f (fn v)
08:40:33 <pikhq> Same reason for the 16 block limit.
08:41:52 <elliott> um no that's for performance reasons IIRC
08:41:59 <elliott> and memory-hogging reasons
08:42:03 <Patashu> How performance intensive is it to do some boolean arithmetic
08:42:26 <pikhq> Patashu: Well, you must remember, this is Java.
08:42:34 <Patashu> aaah
08:43:01 <pikhq> Where people love that their JVM is uberfast, so they can put 10 trillion poorly done abstraction layers in place so it's sufficiently slow.
08:43:11 <Patashu> Mmm, abstraction
08:43:14 <Patashu> I still love the xkcd comic about that
08:43:33 <Patashu> Flash movie on flash on web browser on kernel on CPU on hardware or something
08:43:56 <Patashu> I think the best kind of abstraction is simulating a CPU on circuitry on your computer on your CPU on your circuitry
08:44:39 <Patashu> Like that dwarf fortress computer one guy made
08:44:46 <Patashu> Then you inevitably get someone saying to emulate dwarf fortress on that computer
08:44:51 <Patashu> Strangely no one ever goes that far
08:47:10 <coppro> ok, I go to bed after this
08:50:37 <elliott> http://www.ittc.ku.edu/csdl/fpg/sites/default/files/Gill-09-TypeSafeReification.pdf god this is sdojfisdf
08:50:53 <elliott> Patashu: you might like the eigenvalues blog :p
09:25:19 -!- cheater_ has joined.
09:26:29 -!- cheater_ has quit (Client Quit).
09:27:21 -!- cheater_ has joined.
09:29:40 -!- ais523 has joined.
09:30:35 <elliott> hi ais523
09:30:47 <ais523> hi elliott
09:30:50 -!- cheater_ has quit (Client Quit).
09:30:58 <ais523> my sleep pattern atm is unusually sane, I'm worried
09:31:04 <ais523> I'm going to sleep about 9pm and waking up about 5am
09:31:12 <ais523> consistently
09:31:15 -!- cheater_ has joined.
09:31:16 <elliott> ais523: can you use your industry connections to tell everyone not to name every single Haskell HDL library Lava just because they originally based it on something called Lava and then totally rewrote it and changed the API
09:31:17 <elliott> thx
09:31:30 <ais523> elliott: heh
09:31:38 <ais523> I can mention it to them if necessary
09:31:59 <elliott> i read a paper about observable sharing using Kansas Lava as an example, got to the end, looked at the type signature, and used the hackage library instead of rewriting it
09:32:04 <elliott> i never use libraries, something is WRONGGG
09:32:23 <elliott> class MuRef a where
09:32:23 <elliott> mapDeRef ::
09:32:23 <elliott> Applicative f =>
09:32:23 <elliott> (forall b. (MuRef b, DeRef a ~ DeRef b) => b -> f u)
09:32:23 <elliott> -> a
09:32:24 <elliott> -> f (DeRef a u)
09:32:27 <elliott> seriously. that signature.
09:33:45 <elliott> anyway,
09:33:47 <elliott> add :: (Bit,Bit,Bit,Bit) -> (Bit,Bit,Bit,Bit) -> ((Bit,Bit,Bit,Bit),Bit)
09:33:47 <elliott> add (a,b,c,d) (e,f,g,h) = ((oa,ob,oc,od),cd)
09:33:47 <elliott> where (oa,ca) = halfadd a e
09:33:48 <elliott> (ob,cb) = fulladd b f ca
09:33:48 <elliott> (oc,cc) = fulladd c g cb
09:33:48 <elliott> (od,cd) = fulladd d h cc
09:33:51 <elliott> woop woop
09:34:13 <elliott> but now I just need to make that _generic_
09:34:16 -!- cheater_ has quit (Client Quit).
09:34:27 -!- cheater_ has joined.
09:34:50 <elliott> ais523: and before you ask, yes, yes i am just reimplementing york lava wholesale
09:34:54 <ais523> heh
09:35:00 <ais523> what are you going to call it?
09:35:09 <elliott> hexham lava
09:35:21 <ais523> :)
09:35:29 <elliott> (not really, but it's tempting)
09:35:33 <elliott> maybe i'll just call the actual DSL hexham lava
09:36:07 <elliott> so yeah, when i was surprised by "let x = delay low (delay high x) in x" working in York Lava
09:36:09 <elliott> i shouldn't have been
09:36:11 <ais523> do you still live in an insignificant village vaguely near Hexham?
09:36:15 <elliott> oh god the horrors that go into making that work
09:36:28 <elliott> ais523: no, I've been in Hexham proper since late last year
09:36:35 <ais523> ah, OK
09:36:38 <elliott> and I'm putting you down in my book as an exceptionally bad stalker
09:36:42 <ais523> heh
09:36:50 <ais523> don't worry, I'm sufficiently bad at stalking that you have nothing to fear from me
09:36:54 <elliott> hmm, was it even late, or was it just mid
09:37:07 <elliott> ais523: that's exactly what a master stalker would say
09:37:18 * elliott EYES SUSPICIOUSLY......
09:37:45 <ais523> wow, the News of the World is actually going to shut down as a result of the phone hacking scandal
09:37:52 <elliott> yeah
09:38:04 <elliott> so just to scare ais523, I would now like to state the fact that my code can tell
09:38:05 <elliott> fulladd :: Bit -> Bit -> Bit -> (Bit,Bit)
09:38:05 <elliott> fulladd a b cin = (n `xor` cin, (a `and` b) `or` (n `and` cin))
09:38:07 <elliott> where n = a `xor` b
09:38:09 <elliott> from
09:38:17 <elliott> fulladd :: Bit -> Bit -> Bit -> (Bit,Bit)
09:38:17 <elliott> fulladd a b cin = ((a `xor` b) `xor` cin, (a `and` b) `or` ((a `xor` b) `and` cin))
09:38:46 <ais523> that sort-of defeats the point of Haskell, I fear
09:38:47 <ais523> well done
09:39:09 <elliott> ais523: not really; the only change is that the outputted redstone will be /slower/ if you do that
09:39:21 <elliott> and it's hardly unHaskelly for shuffling equivalent code to result in a /speed/ change
09:39:27 <elliott> otherwise optimising Haskell code would be impossible
09:39:34 <ais523> I suppose so
09:39:40 <elliott> ais523: and you can only tell them apart in IO, which can do anything
09:39:48 <elliott> ais523: anyway, York Lava does it too
09:39:55 <elliott> and so does Kansas Lava, but in a nicer way that I copied :)
09:39:59 <ais523> hmm, I fear that there's far too much magic in IO
09:40:00 <elliott> ((by using their library))
09:40:05 <elliott> nobody likes IO
09:40:17 <elliott> it is literally State RealWorld :P
09:40:25 <elliott> it's a big ol' heap
09:41:27 <ais523> hmm, based on wiki discussion, I'm vaguely tempted to try to write a language where it's far from obvious (preferably undecidable) whether it's computable or not
09:41:29 <ais523> but I have no idea how
09:45:30 <Deewiant> elliott: State#, a rather different beast
09:45:40 <oerjan> <ais523> do you still live in an insignificant village vaguely near Hexham? <-- wait, hexham isn't an insignificant village?
09:46:01 <ais523> oerjan: it's major enough for me to have heard of it before elliott claimed to live nearby
09:46:08 <ais523> although not major enough for me to know why I'd heard of it
09:46:18 <elliott> Deewiant: By "literally", I meant "figuratively".
09:46:38 <elliott> Deewiant: And it's not State# RealWorld, it's State# RealWorld -> (# State# RealWorld, a #).
09:46:39 <Deewiant> Don't do that.
09:46:41 <elliott> TO BE PRECISE.
09:47:03 <elliott> Deewiant: Have you got any other prescriptivist-pedant requests to make? (would you like fries with that?)
09:47:38 <Deewiant> Not right now.
09:47:46 <elliott> Duly noted.
09:48:49 -!- oerjan has quit (Quit: Later).
09:50:25 <elliott> ais523: Is Vorpal right in saying that calling a vector of n HDL-bits a word wrong? :'(
09:50:34 <elliott> As opposed to "array of bits" which is just SILLY.
09:50:54 <ais523> elliott: calling it a word is correct iff it corresponds to some sort of native wordlength in what you're producing
09:51:03 <ais523> I think it'd be wrong to have, say, both 9-bit words and 11-bit words in the same program
09:51:07 <ais523> but either is plausible in the abstract
09:51:18 <elliott> ais523: But x86 words aren't even the native wordlength!
09:51:20 <ais523> std_logic_vector, the "official" VHDL name, is incidentally also just SILLY
09:51:27 <ais523> elliott: because x86 is wrong
09:51:32 <elliott> ais523: Anyway, you're just a meanie, York Lava does it.
09:51:53 <elliott> type Word n = Vec n BitSource
09:51:54 <elliott> Notably, an instance of the Num class.
09:51:59 <elliott> :p
09:52:09 <elliott> York Lava: literally god?
09:52:10 <ais523> that's dangerous, as you run into signed/unsigned arithmetic problems
09:52:17 <elliott> ais523: It has a separate Signed type
09:52:19 <ais523> aha
09:52:33 <elliott> "one-hot" <-- I love this terminology
09:52:43 <ais523> I know for my compiler, I decided to use signed/unsigned operators rather than signed/unsigned data types, I think that's a much more mature and sensible way to handle the issue
09:52:59 <elliott> ais523: By "much more mature and sensible", do you mean "less effort"?
09:52:59 <ais523> elliott: the inefficient small-integer encoding that is nevertheless sometimes useful?
09:53:08 <ais523> elliott: no, it's about the same amount of effort
09:53:12 <elliott> How's it inefficient
09:53:15 <ais523> but it removes classes of subtle bugs
09:53:20 <elliott> ais523: It's just the OCaml solution, i.e. not a solution
09:53:32 <ais523> elliott: well, if you're encoding 1,2,3,4,5 as 10000 01000 00100 00010 00001
09:53:45 <ais523> you'd probably be better off using 001 010 011 100 101 if you wanted to save memory
09:53:53 <ais523> one-hot just makes for a useful intermediate sometimes
09:54:00 <elliott> Oh, is that what one-hot means?
09:54:08 <elliott> I assumed it just meant one = one binary
09:54:11 <elliott> Rather than inverting them
09:54:27 <elliott> Which cheap plastic imitation of ais523 (Vorpal) tells me is sometimes a good idea
09:54:46 <ais523> the thing about modern semiconductor design is, 0s are more powerful as 1s
09:54:55 <ais523> *than 1s
09:54:55 <elliott> `addquote <ais523> the thing about modern semiconductor design is, 0s are more powerful as 1s
09:54:57 <HackEgo> 490) <ais523> the thing about modern semiconductor design is, 0s are more powerful as 1s
09:55:02 <elliott> Oh, I mentally corrected that
09:55:05 <ais523> as in, you can sink more current from a 0 than you can source from a 1
09:55:07 <elliott> But hey, it makes the quote more confusing, let's go with that
09:55:16 <ais523> the difference is almost an order of magnitude, it's quite large
09:55:20 <elliott> Heh
09:55:33 <ais523> often you have to use 0=true as a result, say if you're powering LEDs
09:55:40 <elliott> ais523: Doesn't apply in redstone, mind you :)
09:55:48 <elliott> I have to keep reminding myself I'm not writing an /actual/ synthesiser.
09:58:24 <ais523> it's not a real problem in practice, as you can just add an inverter at the end
09:58:31 <ais523> except when you're designing the internals of an IC
10:01:51 <elliott> hmm, at least I can say I've improved on this particular module of York LAva
10:01:51 <elliott> Lava
10:02:00 <elliott> I've made the type-level nats binary to avoid context stack overflows
10:03:32 -!- FireFly has joined.
10:08:48 <elliott> wow, how does less-than work on binary numbers again
10:11:46 <Deewiant> Same way it works on decimal numbers
10:12:01 <elliott> badly?
10:12:12 <Deewiant> 0 < 1
10:14:05 <elliott> Deewiant: no that s wrong
10:15:07 <Deewiant> If the bits're equal, recurse, otherwise 0 < 1, if no more bits are left then the numbers are equal
10:16:24 <elliott> you are an scholars...
10:17:30 <elliott> god dammit ghc
10:17:34 <elliott> i turned on scoped type variables
10:17:36 <elliott> scope'em
10:17:52 <Deewiant> Your question provided no context to assume rhetoricalness so I answered it
10:18:42 <elliott> it wasnt rhetorical
10:18:47 <elliott> that was sincere thanks, i cant handle binary right now
10:18:49 <elliott> too many numbers
10:19:12 <Deewiant> heh
10:31:26 <elliott> ?ty foldl
10:31:27 <lambdabot> forall a b. (a -> b -> a) -> a -> [b] -> a
10:31:30 <elliott> good
10:33:26 <cheater_> why don't you want to work with squid 2, google instant?
10:33:37 <cheater_> why?
11:03:06 -!- GreaseMonkey has quit (Quit: The Other Game).
11:05:35 <elliott> Man, are there really no decent fixed-length vector libraries on Hackage that encode the vector as a natural in the type rather than making the type grow in the number of conses or whatever?
11:08:12 <elliott> NOT A RHETORICAL QUESTION, PEOPLE
11:09:17 <Patashu> hah
11:09:22 <Patashu> high level o2jam charts are the perl of rhythm gaming
11:09:26 <Patashu> http://www.youtube.com/watch?v=8l7XLN7tFRI&feature=related
11:09:34 <elliott> rhythm gaming is the perl of rhythm gaming
11:10:21 <Patashu> column noise :D
11:27:07 <elliott> qwer
11:31:18 <oklopol> xD
11:31:49 <elliott> oklopol how does a flower
11:32:21 <oklopol> well obviously it could just
11:42:36 -!- copumpkin has joined.
11:42:37 -!- copumpkin has quit (Changing host).
11:42:37 -!- copumpkin has joined.
11:45:36 -!- boily has joined.
12:34:18 <elliott> Tim Bednar 8 years ago
12:34:18 <elliott> Will Google be around? I think it will be more interesting to see if Google will be around in five years? Or better yet will we still be searching for information using search engines and keywords?
12:40:13 <elliott> “Large Hadron Collider will destroy Earth.” DETAILED TERMS »
12:40:14 <elliott> PREDICTOR
12:40:14 <elliott> Joe Keane
12:40:14 <elliott> CHALLENGER
12:40:14 <elliott> Nick Damiano
12:40:14 <elliott> STAKES $1,000
12:40:16 <elliott> will go to National Rifle Association if Keane wins,
12:40:18 <elliott> or Save the Children if Damiano wins.
12:40:20 <elliott> oh i wonder what political affiliation mr. keane has
12:40:41 <elliott> "Prediction is correct if Earth is, as a result of operation of the collider, annihilated, reduced to much smaller volume than previously, vaporized, broken into large pieces, converted into photons, neutrinos, or other radiation, converted into exotic matter, or just unable to support life. For the purpose of the bet, Earth should be considered "destroyed" if, at the end of the term of this bet in 2018, zero human beings reside on the surface of t
12:40:41 <elliott> anet. Damage caused by attack of hostile beings is included if it is a causal result of operation of the collider. Teleporting Earth to another location or alternate universe where it is still able to support life is specifically excluded. Bet is won if whatever scientific community remains at this time, whether human, machine, or extraterrestrial, acknowledges that the "destruction" of Earth most likely resulted from the Large Hadron Collider or a
12:40:42 <elliott> uct thereof (e.g. strangelet, micro black hole, etc)."
12:41:16 <Deewiant> heh
12:41:28 <Deewiant> At least they're thorough
12:41:48 <elliott> Deewiant: I like how Keane thinks we're going to colonise other planets before the LHC blows everything up
12:41:57 <elliott> Or maybe the "international scientific community" will consist of the people on the ISS
12:42:08 <elliott> "That Earth look blown up to you?" "Yep." "LHC?" "Prob'ly."
12:42:28 <elliott> "Teleporting Earth to another location or alternate universe where it is still able to support life is specifically excluded." <-- this is the best part though, i hope the lhc does this
12:43:04 <Deewiant> Well, it did specify "human, machine, or extraterrestrial"
12:43:37 <Deewiant> And "whatever scientific community remains at this time"
12:43:48 <elliott> "Secondly, the concept of "unitlessness" was invented (AFAIK) by some academic to scare students a long time ago and is not taken seriously by modern scientists. I first heard of it in an early lecture in my college physics class and decided to drop it (the lecturer's accent was also really bad). Even more strange, I logged onto OpenCourseWare and Walter Lewin talked about it as well! I had heard that MIT was a good school, but I am now teaching my
12:43:48 <elliott> physics from better books such as the Emperor's New Mind."
12:44:00 <elliott> This is the best web page + comment section I have ever read.
12:45:33 -!- foocraft has joined.
12:45:47 <ais523> elliott: if the LHC destroyed the world, collecting on the bet would be a little difficult
12:46:07 <elliott> ais523: :slowpoke:
12:46:28 <ais523> elliott: you can't slowpoke me if I haven't been looking at the chat for ten minutes and that's my reaction upon catching up
12:46:33 <ais523> well, you can, but it isn't very effective
12:46:54 <elliott> I can slowpoke ANYONE.
12:47:04 <ais523> besides, Dream World slowpoke is actually very good
12:47:19 <ais523> well, better after evolving
12:47:22 <elliott> Yes but it's still slow and a poke.
12:52:03 -!- BeholdMyGlory has joined.
13:00:06 -!- CakeProphet has joined.
13:00:06 -!- CakeProphet has quit (Client Quit).
13:00:26 -!- CakeProphet has joined.
13:13:17 -!- boily has quit (Quit: WeeChat 0.3.5).
13:24:22 <elliott> *Redsynth.Test> add (one,zero,zero,one) (zero,zero,zero,one)
13:24:22 <elliott> ((one,zero,zero,zero),one)
13:24:23 <elliott> no
13:24:46 -!- copumpkin has quit (Remote host closed the connection).
13:25:15 -!- copumpkin has joined.
13:25:16 -!- copumpkin has quit (Changing host).
13:25:16 -!- copumpkin has joined.
13:30:24 <elliott> *Redsynth.Test> add (one,zero,zero,one) (one,zero,zero,zero)
13:30:24 <elliott> ((zero,one,zero,one),zero)
13:30:25 <elliott> oh right
13:30:27 <elliott> its little-endian
13:31:12 <Deewiant> Gross
13:34:54 <elliott> Deewiant: what
13:35:02 <elliott> Deewiant: little endian is the best
13:35:33 <Deewiant> Why
13:35:56 <elliott> Deewiant: downcasting is nop
13:36:14 <elliott> also, it's the obvious ADT expression of binary :)
13:36:56 <Deewiant> Fair enough
13:37:11 <Deewiant> I'd still make I/O big-endian :-P
13:37:15 <elliott> Conversely, why's it gross?
13:37:32 <elliott> And that's hardly I/O, that's simulating a ripple adder by literally giving it bits :P
13:37:49 <Deewiant> Just from the I/O perspective in that it's unlike (almost?) all natural languages
13:38:11 <elliott> Deewiant: You realise this is a circuit that would be used internally in a CPU?
13:38:12 <Deewiant> I guess with Read and Show you have to have it like that, meh
13:38:16 <elliott> It's not "I/O" :P
13:38:28 <elliott> Deewiant: When I'm simulating something that looks like
13:38:32 <elliott> add :: (Bit,Bit,Bit,Bit) -> (Bit,Bit,Bit,Bit) -> ((Bit,Bit,Bit,Bit),Bit)
13:38:33 <elliott> add (a,b,c,d) (e,f,g,h) = ((oa,ob,oc,od),cd)
13:38:33 <elliott> where (oa,ca) = halfadd a e
13:38:33 <elliott> (ob,cb) = fulladd b f ca
13:38:33 <elliott> (oc,cc) = fulladd c g cb
13:38:33 <elliott> (od,cd) = fulladd d h cc
13:38:35 <Deewiant> It's I/O in the sense that you I (one,zero,zero,one) and it Os (zero,one,zero,one)
13:38:37 <elliott> I don't want it to print in opposite order.
13:38:55 <elliott> Deewiant: How many times do I have to say that I'm simulating an adder circuit directly :P
13:39:46 -!- Patashu has quit (Ping timeout: 252 seconds).
13:40:18 <Deewiant> To preserve my sanity I'd write a String -> (Bit,Bit,Bit,Bit) that turns "1000" into (zero,zero,zero,one) or (zero,one,zero,zero) or whatever it should be
13:40:35 <Deewiant> Or Int -> if you prefer
13:40:55 <elliott> Deewiant: It's going to be Vec N4 Bit, or maybe even Unsigned N4
13:40:58 <elliott> And that'll have a Num instance
13:41:16 <elliott> Not that Haskell has binary literals, but
13:41:29 <Deewiant> You found a Vec library? :-P
13:41:57 <elliott> Deewiant: I've already written my own, it's just crap :P
13:42:09 <elliott> Deewiant: I tried to use binary type-level nats to avoid context stack overflows
13:42:22 <elliott> But it turns out that it's way harder to "prove" stuff about them to get your functions to type, woo
13:42:31 <elliott> So fuck that, I'm going back to unary and forcing ugly compiler flags on everyone
13:42:42 <elliott> Deewiant: I suppose I could depend on York Lava and just "import Lava.Vec" :P
13:43:30 <Deewiant> Ugly compiler flags?
13:43:43 <Vorpal> elliott, on a development board I used, that had a row of buttons and leds, for buttons 0 = pressed, and for the leds 0 = emitting light.
13:43:49 <Vorpal> (wrt that discussion above)
13:44:22 <elliott> Deewiant: -fcontext-stack=9999
13:44:23 <elliott> Or whatever it was
13:44:34 <Deewiant> Ah, heh
13:44:52 <elliott> It's set at twenty-one by default, which means that if you have a twenty-four bit word, the compiler will refuse to admit it's a member of any typeclasses where your instance recurses
13:45:06 <elliott> A really stupidly low value; what harm would there be in setting it to e.g. five hundred twelve
13:45:16 <elliott> Vorpal: Nice :P
13:45:32 <Vorpal> elliott, one-hot coding can be used on a port on a SOC for example if you connect one LED or button to each pin on that port
13:45:42 <Vorpal> I mean, it has it's uses
13:46:57 <elliott> SOC?
13:47:11 <Vorpal> elliott, System On a Chip
13:47:53 <elliott> Bah, who needs chips, lay it on the rough grass, this is Minecraft!
13:48:06 <Vorpal> elliott, well it was just an example
13:48:09 <Deewiant> Fish is all you need, the chips are just extra
13:48:36 <elliott> Like you guys have chips in Finland.
13:49:00 <Deewiant> Hence only fish
13:49:20 <elliott> You probably don't even know what "fish" means
13:49:43 <Deewiant> http://www.kalakerho.net/tiedostot/ahven24.jpg
13:52:31 <Vorpal> Deewiant, what sort of fish is it?
13:52:57 <Deewiant> Perch
13:53:08 <Deewiant> (fi:ahven)
13:53:27 <Vorpal> oh sv:abborre
13:53:32 <Vorpal> right
14:25:55 <ais523> the funny thing is, that although most Brits know a perch is a sort of fish, they have no idea what specifically it is
14:25:59 <ais523> I know I don't
14:26:09 <ais523> I wouldn't be able to tell one from another random species of fish I didn't know
14:26:47 <elliott> GOD DAMMIT HASKELL
14:27:04 <elliott> IF A PARAMETER OF A GADT HAS AN INSTANCE FOR A GIVEN TYPECLASS FOR EACH CONSTRUCTOR
14:27:07 <elliott> THEN IT DOES NOT NEED TO BE STATED
14:27:08 <elliott> IN EVERY
14:27:09 <elliott> SINGLE
14:27:10 <elliott> FUCKING
14:27:11 <elliott> FUNCTION
14:27:15 <elliott> IM GOING TO RIP YOUR SOUL APART
14:32:57 <ais523> hmm, this makes me want to work more (as in, at all) on Anarchy
14:33:02 <ais523> even if it probably wouldn't solve that problem
14:33:23 <elliott> "Property is theft! Uh, also, GADT typeclass contexts."
14:34:16 <ais523> it's, umm, an esolang
14:34:23 <ais523> intended for writing compilers
14:34:38 <elliott> <ais523> it's, umm, an esolang
14:34:40 <elliott> never a good line to hear
14:34:50 <ais523> well, it's not as eso as most esolangs
14:34:59 <ais523> it's just that I can't consider anything I write a real language :)
14:35:03 <elliott> :D
14:35:27 <elliott> one day ais523 will release the Common Practicality-Oriented Boring Language, and talk about HOW ESOTERIC it is; you guys, it organises statements into blocks and has mutable variables!!
14:35:39 <elliott> and we'll all believe you cuz we're gullible hero-worshipping idiots
14:35:56 <ais523> heh
14:36:01 <elliott> and it will become world famous
14:36:05 <elliott> and we will declare mission successful
14:36:19 -!- foocraft has quit (Ping timeout: 255 seconds).
14:36:20 <ais523> Anarchy effectively has mutable types, does that count?
14:36:31 <ais523> as in, the types themselves, not variables of that type
14:36:40 <ais523> except it's done statically at compile time
14:37:10 <elliott> heh
14:37:25 * elliott realises he should have more of an aversion to the phrase "statically at compile time" than he does
14:38:16 <ais523> it's also one of those languages where I have to reign it back a bit to stop it becoming uncomputable
14:38:25 <elliott> that's all your languages
14:38:28 <elliott> except sometimes you don't even bother
14:38:31 <elliott> well, apart from the sub-TC ones
14:38:45 <ais523> nah, Underload hit exactly TC pretty much without trying
14:38:54 <ais523> although it turned out to have quite a few redundant commands for that purpose
14:39:03 <elliott> After Overload collapsed under its own weight
14:39:12 <ais523> yep
14:39:14 <ais523> it had goto
14:39:25 <elliott> What I'm saying is, Underload is the reigning-in of Overload :P
14:39:29 <ais523> and you could jump into bits of program that were still on the stack, etc
14:39:36 <ais523> I don't believe Overload was super-TC, though
14:39:40 <ais523> just really hard to get your head around
14:39:48 <ais523> and, fwiw, to implement
14:39:50 <elliott> I wonder what happens if you take something like Overload, and just don't stop adding to it
14:39:59 <elliott> Can languages collapse into a black hole?
14:40:08 <ais523> do you know of MAGENTA?
14:40:13 <elliott> Will adding ONE MORE FEATURE suddenly make your language uncomputable in conjunction with the others?
14:40:27 <elliott> ais523: Yeah, but that's more "a really silly imperative-ish language" than "EVERY PARADIGM POSSIBLE SMUSHED TOGETHER".
14:40:31 <ais523> yep
14:40:34 <ais523> and even so, it's cursed
14:40:45 <ais523> smushing every paradigm possible together would be worse
14:40:52 <ais523> admittedly, Overload was getting that way
14:41:22 <elliott> "Perfection is achieved, not when there is nothing left to take away, but when there is nothing more to add."--Saint-Exupery de Antoine
14:41:29 <elliott> s/"-/" -/
14:41:33 <ais523> is that a genuine attribution?
14:41:46 <elliott> (quote from foreword of The Kind-of-Algorithmic Language Overload)
14:41:51 <elliott> ais523: No :P
14:41:55 <ais523> actually, if you think about it, it's correct that way round
14:41:58 <elliott> It's "Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." --Antoine de Saint-Exupery
14:42:13 <ais523> if there's nothing more to add, it means that you don't need anything else for it to be perfect, along the lines of BF
14:42:18 <elliott> ais523: Argh, I swapped too much.
14:42:35 <elliott> "Perfection is achieved, not when there is nothing more to take away, but when there is nothing left to add." --Saint-Exupery de Antoine
14:42:39 <ais523> if there's nothing more to take away, it means you have a horrific mess where you can't take out anything and leave it still viable
14:42:45 <elliott> see, I fixed it
14:42:56 <ais523> yes, that's worse
14:43:05 <elliott> you misspelled better
14:43:14 <ais523> I mean, it's meant to be a bad quote, right?
14:43:16 <ais523> so being worse is better
14:44:18 <elliott> that was intentional, right
14:45:04 <elliott> ais523: what should i call... a bit vector... if not a word... :(
14:45:09 <elliott> i need something to call the module :P
14:45:13 <elliott> im thinking of just using Unsigned/Signed for the actual types
14:45:18 <ais523> semi-intentional, I caught it as soon as I wrote the sentence, and left it in
14:45:19 <elliott> then there can be NO ARGUMENT
14:45:39 -!- foocraft has joined.
14:46:16 <ais523> what about SomeBitsOfThisAreSignedAndSomeAreUnsignedBecauseVHDLDoesntHaveVarargsButItDoesHaveArraysWithLengthSpecifiedByATemplateParameterSoIFakedThemWithAnArrayAfterAllEverythingIsJustBitsRight
14:46:34 <ais523> I've actually done that on two different projects...
14:46:43 <elliott> ais523: that exact name?
14:46:54 <ais523> err, I didn't actually name them that
14:47:01 <elliott> GO RECTIFY THAT
14:47:02 <ais523> the type was called std_logic_vector, as always
14:47:16 <elliott> ais523: amusingly, Haskell doesn't have varargs either
14:47:18 <elliott> but it has [], which is the same thing
14:47:22 <ais523> but I mean, it's a use for a std_logic_vector that isn't interpreted either as a signed or an unsigned variable
14:48:01 <elliott> UNLIKE YORK LAVA, I'm planning to keep the numbery types separate from the vectors by newtypes
14:48:16 <elliott> York Lava just keeps signed separate (for typeclasses); vectors of bits are identical to unsigned numbers
14:48:20 <elliott> Which seems Wrong
14:48:25 <elliott> Especially as it stops you making a nice Show instance
14:48:37 <elliott> Unless you want all your vectors to show like that I suppose
14:49:11 <ais523> VHDL's method of doing things is really amusing
14:49:29 <ais523> by default, + on vectors is an error, you have to import an arithmetic library
14:49:38 <elliott> heh
14:49:44 <ais523> and signed and unsigned arithmetic are in two separate libraries, so originally you just imported one or the other
14:50:00 <ais523> after a while, they decided that was stupid, so imported a third which had signed() and unsigned() casts you could put around the vectors
14:50:03 <elliott> I kind of feel bad about writing a Num instance, because dammit, you should have to write your own ripple carry adder
14:50:25 <ais523> ripple carry? so slow
14:50:31 <ais523> although at least it's easy
14:50:33 <elliott> ais523: So small
14:50:53 <elliott> ais523: Remember, my electronics have very limited size :P
14:50:57 <ais523> yep
14:51:04 <elliott> And the bigger they get the smaller they get (= repeater)
14:51:06 <ais523> ideally, you'd let the user select their own implementation of addition
14:51:13 <elliott> They can do that by using another function :P
14:51:20 <elliott> Or making their own instance and not importing mine
14:51:38 <elliott> ais523: Almost any adder will require being assembled as a separate circuit and hooked up to the rest of the system, anyway
14:51:50 <elliott> Because, like I said, my circuits are tiny
14:51:54 <elliott> Can't afford to duplicate anything :P
14:52:27 <elliott> ais523: So in RL circuits, do OR gates flow the result back to their input too?
14:52:38 <ais523> depends on the architecture
14:52:39 <elliott> i.e. (A or B) where A is low and B is high flow... highness to A.
14:52:43 <elliott> (I'm good at terminology.)
14:52:56 <ais523> a "wired-OR" does, that's when you connect two outputs together, using logic levels that make that possible
14:52:58 <elliott> This is kind of a problem in Minecraft since it saves space and time most of the time but fucks up some circuits :P
14:53:01 <ais523> but it has all sorts of undesirable characteristics
14:53:11 <ais523> so people nearly always use gates which have explicit inputs and outputs
14:53:26 <elliott> ais523: In redstone, OR is literally just connecting two wires together, yeah
14:53:27 <ais523> note that if you flow a signal to an output in real life, you either get nothing happening, very high power drain, or a fire
14:53:29 <ais523> depending on various things
14:53:35 <elliott> And it's the most common type of OR because... repeaters take up a block and a tick
14:53:49 <ais523> alternatively, you could use diodes, but that has problems of its own
14:53:50 <elliott> (You need to put a repeater on one input to stop it flowing backwards)
14:57:38 <elliott> ais523: BITVECTOR IS SUCH AN UGLY NAME DO YOU HAVE ANY IDEA
14:58:16 <ais523> just call it Std_logic_vector
14:58:50 * ais523 runs
15:07:05 <elliott> ais523: :D
15:07:09 <elliott> ais523: but it isn't even std_logics
15:07:16 <elliott> I deal in finest pure bits
15:07:32 <ais523> also, VHDL's array declaration syntax is really really weird
15:07:39 <ais523> first, you have to define an array type
15:07:50 <ais523> and the definition looks something like this (/me looks it up because it's so crazy):
15:08:23 <ais523> ugh, seems I don't use it in any of my programs
15:08:33 * ais523 looks it up in the stdlib
15:08:56 <elliott> ais523: LITTLE OR BIG ENDIAN
15:09:08 <ais523> depends on whether you declare the indexes as 0 to 7 or 7 downto 0
15:09:15 <elliott> ais523: no i mean which do you do
15:09:26 <ais523> lsb is 0
15:09:35 <elliott> ais523: so little
15:09:40 <elliott> orw ait no
15:09:51 <ais523> type std_logic_vector is array (natural range <>) of std_logic
15:09:59 <ais523> *type std_logic_vector is array (natural range <>) of std_logic;
15:10:16 <elliott> as opposed to real or complex range
15:10:18 <ais523> yep
15:10:21 <elliott> wait
15:10:22 <elliott> srsly?
15:10:33 <ais523> I'm not sure what happens if you put something other than an integral type there
15:10:46 <ais523> I suppose I should try string range <> sometime to see how the compiler reacts
15:10:52 <ais523> also, I still don't know what the <> is for
15:11:06 <elliott> its the hole that the indices go into
15:11:13 <elliott> where else would they fit
15:12:16 <ais523> VHDL is really finicky about semicolons, btw
15:12:29 <elliott> hmm, I should parameterise my integer types on little/big endian
15:12:31 <elliott> good idea y/n
15:12:34 <ais523> and the rules for where they go are vaguely consistent but unintuitive
15:12:46 <ais523> elliott: well, VHDL effectively does
15:12:53 <elliott> yes but i'm not vhdl :)
15:13:06 <ais523> if you go down that route, you should parameterise signed integers on whether they're two's complement, one's complement, or signed-magnitude
15:13:10 <ais523> and have a thousand different sorts of floats
15:13:13 <elliott> hahaha no
15:13:23 <elliott> floats in minecraft LMAO i want to make an fpu now
15:13:25 <elliott> the most useless fpu.
15:14:04 <ais523> someone wrote one in INTERCAL
15:14:39 <ais523> admittedly, I don't think anyone wrote one in Malbolge
15:14:44 <ais523> and redstone is somewhere in between
15:20:48 <elliott> ais523: but seriously
15:20:57 <elliott> LITTLE OR BIG ENDIAN i need to know what opinion you have so i can correct it
15:21:05 <ais523> heh
15:21:06 <Deewiant> Middle endian
15:21:10 <ais523> I'm not sure which term refers to what
15:21:16 <ais523> middle endian is unmistakably wrong, though :)
15:21:25 <elliott> ais523: little endian = numbers done get bigger as you go right
15:21:27 <elliott> big endian = not that
15:21:31 <elliott> xeightsix is little
15:21:34 <elliott> sparc is big
15:21:37 <ais523> which end's left, and which end's right?
15:21:45 <ais523> anyway, it depends on what you're doing
15:21:46 <elliott> wait, sparc is bi-endian
15:21:47 <elliott> lol
15:21:56 <elliott> ais523: oh come on, you know what end's left
15:22:00 <ais523> gcc-bf uses least significant byte has lowest address
15:22:05 <elliott> little: lowest address = least significant
15:22:08 <Deewiant> X endian = the most X significant bit is at the start
15:22:09 <ais523> because that way, casting int to short or short to char is a no-op
15:22:10 <elliott> big: lowest address = most significant
15:22:21 <elliott> ais523: right, that's the sole reason for little-endian being good
15:22:26 <elliott> as opposed to the zero reasons for big
15:22:52 <Deewiant> Big endian discourages casting, thus is good
15:24:10 <elliott> Deewiant: What does that even mean
15:25:41 <Deewiant> Because downcasting big endian integers isn't a no-op, you're less likely to cast with big endian, and because blindly casting is generally bad, this is a good thing, thus big endian encourages good practices, thus it is good
15:27:02 <elliott> Deewiant: You... are joking, right?
15:27:06 <Deewiant> Yes
15:27:09 <elliott> Thank god
15:29:52 <Gregor> The space shuttle countdown clock on nasa.gov is counting up :P
15:30:04 <ais523> elliott: big-endian works better for fixedpoint, for much the same reason little-endian works better for integers
15:30:18 <ais523> because you can truncate it as a no-op
15:30:25 <elliott> Gregor: Heh
15:30:26 <elliott> ...
15:30:27 <elliott> ais523: Heh
15:30:30 <elliott> But you can have a heh too
15:33:20 <lifthrasiir> http://codepad.org/9txI7dcT recent project: code golfing a text-to-number program.f
15:33:37 <lifthrasiir> s/f$//
15:34:56 <elliott> as in "one hundred" => ...?
15:35:12 <Deewiant> Yep
15:35:39 <lifthrasiir> yes
15:36:45 <Deewiant> Now make it reject invalid input
15:37:37 <lifthrasiir> Deewiant: the first approach i tested indeed did so, using a perfect hash. too huge for golfing however.
15:38:30 <lifthrasiir> it nevertheless handles "thousands" vs. "thousand" correctly, and also correctly ignores "and".
15:38:51 <lifthrasiir> one bug is that it treats "a" as like "zero"... :p
15:40:23 <elliott> hmm, type families and typeclasses, tricky
15:49:10 <quintopia> qntm: SPAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE
15:53:13 -!- monqy has joined.
16:01:39 <elliott> monqy: how do type families
16:02:47 <monqy> when a boy type loves a girl type very much
16:03:46 <Gregor> https://github.com/mozilla/narcissus/blob/master/lib/jslex.js#L538 BEHOLD
16:04:03 <Gregor> My BRILLIANT metacircular code is now a part of Narcissus.
16:04:05 <Gregor> <-- winner
16:04:37 <monqy> how did that happen
16:09:53 <elliott> <monqy> when a boy type loves a girl type very much
16:09:54 <elliott> but my types arent class
16:10:02 <elliott> the POVERTY types are having CHILDREN......
16:11:16 <quintopia> eh theyve gotta do something when they arent watching tv or collecting their check... :P
16:12:13 -!- Phantom_Hoover has joined.
16:14:31 -!- aloril has quit (Ping timeout: 252 seconds).
16:26:55 -!- aloril has joined.
16:31:52 -!- MigoMipo has joined.
16:50:16 -!- aloril has quit (Ping timeout: 240 seconds).
16:54:01 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
16:58:52 -!- Phantom_Hoover has joined.
16:59:19 <Phantom_Hoover> OK guys come on I need a really long, 'boring', academic YouTube video.
16:59:19 <lambdabot> Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them.
16:59:35 <Phantom_Hoover> Where 'boring' == boring for normal people but not actually boring for me.
17:03:17 -!- aloril has joined.
17:09:13 -!- foocraft has quit (Ping timeout: 258 seconds).
17:52:45 <elliott> http://www.haskell.org/pipermail/haskell/2005-May/015815.html
17:52:49 <elliott> this is cool exclamation mark
17:52:50 <elliott> s
17:55:19 <copumpkin> "Note that we can't type "vfoldr Cons Nil", because the result type of
17:55:19 <copumpkin> Cons does not match the second argument."
17:55:28 <elliott> well the cool part
17:55:32 <elliott> is the NatCase thing
17:55:33 <copumpkin> that can be done, with some minor pain
17:55:36 <elliott> which I inexplicably haven't seen before
17:55:48 <copumpkin> elliott: I like http://www.haskell.org/pipermail/haskell-cafe/2009-June/062690.html
17:55:49 * elliott is running into stupid errors like
17:55:52 <elliott> vat :: (i `LT` n) => Vec n a -> Nat i -> a
17:55:52 <elliott> vat (x :+> _) Z = x
17:55:52 <elliott> vat (_ :+> xs) (S n) = xs `vat` n
17:55:53 <elliott> -->
17:55:58 <elliott> Redsynth/Vec.hs:39:27:
17:55:58 <elliott> Could not deduce (LT n2 n1) arising from a use of `vat'
17:55:58 <elliott> from the context (LT i n)
17:55:58 <elliott> bound by the type signature for
17:55:59 <elliott> vat :: LT i n => Vec n a -> Nat i -> a
17:56:01 <elliott> at Redsynth/Vec.hs:(38,1)-(39,33)
17:56:03 <elliott> blah blah blah
17:56:20 <copumpkin> http://hpaste.org/41453/foldl_on_vec?pid=41453&lang_41453=haskell
17:56:28 <elliott> > class Nat n where
17:56:28 <elliott> > caseNat :: forall r. n -> (n ~ Z => r) -> (forall p. (n ~ S p, Nat p) => p -> r) -> r
17:56:29 <lambdabot> <no location info>: parse error on input `class'
17:56:29 <lambdabot> Not in scope: type variable `n'Not in scope: type constructor or class `Z'N...
17:56:30 <elliott> coq flashback
17:56:50 <copumpkin> that paste of mine shows more useful foldr and foldl on Vec
17:56:50 <elliott> copumpkin: also coq flashback
17:58:26 <copumpkin> in coq or agda you wouldn't have to do some of the acrobatics I do there
17:59:17 <elliott> coppro: I note that the "n ->" parameter to caseNat is not _technically_ necessary :)
17:59:35 <elliott> copumpkin:
18:00:12 <elliott> copumpkin: The problem, I think, with natCase is that it basically forces you to write your case statements in an ugly manner :)
18:00:18 <elliott> Is there a way to make it spit out an equivalent GADT?
18:00:36 <copumpkin> spit out? nope :/
18:00:42 <copumpkin> you can probably do it all with SHE
18:00:51 <copumpkin> I had a module that did that somewhere
18:01:19 <elliott> copumpkin: I just mean "spit out" as a return value
18:01:42 <copumpkin> oh, sure
18:02:13 <elliott> data NatCase where IsZero :: Z -> NatCase; IsSucc :: (n ~ S p, Nat p) => n -> p -> NatCase
18:02:14 <elliott> Or something
18:02:18 <elliott> Hmm
18:02:34 <elliott> Oh wait, it's simpler than that even
18:02:36 <copumpkin> data Nat n where Zero :: Nat Z; Suc :: Nat n -> Nat (S n)
18:02:39 <copumpkin> :P
18:02:51 <copumpkin> then use induction
18:03:03 <elliott> coppro: Yeah yeah, but that's just the GADT solution all over again
18:03:09 <elliott> Although I suppose
18:03:10 <elliott> data NatCase n where
18:03:10 <elliott> IsZ :: (n ~ Z) => NatCase n
18:03:10 <elliott> IsS :: (n ~ S p, Nat p) => p -> NatCase n
18:03:12 <elliott> is too, just in disguise
18:03:16 <elliott> Although it's not
18:03:20 <elliott> Because the p isn't GADT's
18:03:31 <elliott> point is, with "natCase :: n -> NatCase n", you can use a case statement
18:03:33 <elliott> rather than two ugly functions
18:04:10 <elliott> value :: (Nat n) => n -> Int
18:04:11 <elliott> value n =
18:04:11 <elliott> case natCase n of
18:04:11 <elliott> IsZ -> 0
18:04:11 <elliott> IsS n -> value n + 1
18:04:46 <Phantom_Hoover> <elliott> IsZ :: (n ~ Z) => NatCase n
18:04:58 <Phantom_Hoover> Onto another project already?
18:05:04 <elliott> What?
18:05:30 <Phantom_Hoover> Is that for the synthesiser or...?
18:05:44 <elliott> Yes.
18:06:26 <copumpkin> elliott: now you need finite sets
18:06:35 <elliott> copumpkin: Why?
18:06:45 <copumpkin> you have vectors, but you can't index into them!
18:07:00 <elliott> Oh right, the entire problem I was trying to solve
18:07:05 <elliott> I guess a typeclass just won't work for that, SIGH
18:07:25 <copumpkin> a Fin type gives you safe indexing into Vec
18:07:41 <elliott> Yes, but so does a nat with an LT constraint
18:07:44 <elliott> If it works
18:07:58 <copumpkin> LT on type nats is a horrible hack that relies on weird behavior
18:08:10 <elliott> It's... just a typeclass
18:08:16 <copumpkin> you have it?
18:08:29 <elliott> class (N m, N n) => m `LT` n
18:08:29 <elliott> instance (N n) => Z `LT` S n
18:08:30 <elliott> instance (N m, N n, LT m n) => S m `LT` S n
18:08:37 <elliott> Modulo I'm-really-tired errors.
18:08:54 <copumpkin> how do you write 0 < 5 with that?
18:09:14 <Deewiant> Z `LT` S$S$S$S$S Z
18:09:22 <elliott> Thanks Deewi
18:09:22 <copumpkin> I mean, prove
18:09:31 <elliott> You don't prove anything, this isn't Agda
18:09:37 <elliott> I'm not looking to prove anything :P
18:09:37 <copumpkin> instances are proofs
18:09:38 <copumpkin> my point
18:09:44 <copumpkin> is that those instances don't cover 0 < 5
18:09:58 <elliott> Yes... yes it does.
18:10:02 <elliott> <elliott> instance (N n) => Z `LT` S n
18:10:09 <copumpkin> oh, okay
18:10:21 <copumpkin> fair enough then :)
18:10:23 <elliott> I'm not sure why this typeclass is meant to be difficult and hacky :P
18:10:33 <copumpkin> there's a couple of ways of doing it
18:11:03 <copumpkin> either way, a Fin is a more "natural" way of indexing into a vec :P
18:11:27 <Phantom_Hoover> elliott, so wait, how did you end up down this route?
18:11:30 <elliott> But less convenient to use, since now you have two problems caret doubleyou type-level number-ish types
18:11:41 <elliott> Phantom_Hoover: I want static-length vectors to represent integers.
18:12:05 <Phantom_Hoover> How do you define N?
18:12:26 <elliott> ...
18:12:31 <elliott> Do you want me to pastebin all my code?
18:12:33 <copumpkin> elliott: you're going to have to do the same amount of work
18:12:36 <elliott> Because none of it currently works, y'see.
18:12:39 <Phantom_Hoover> That'd be nice.
18:12:50 <Phantom_Hoover> None of it at all?
18:13:02 <copumpkin> elliott: convincing the compiler you have an instance for an arbitrary natural is just as hard as using Fin for indices :P
18:13:19 <elliott> Phantom_Hoover: Very little of this part.
18:13:23 <elliott> copumpkin: Yeah yeah :)
18:13:34 <copumpkin> I warn you
18:13:36 <elliott> copumpkin: I just feel this little twinge in my heart every time I deviate from York Lava
18:13:39 <copumpkin> this way lie many proofs
18:13:53 <copumpkin> I've done a fair amount of fooling around like this in haskell
18:14:06 <copumpkin> and convincing the compiler of things that should be "obvious" is a real pain
18:14:16 <copumpkin> you can do it, but haskell is a pretty shitty proof language
18:15:01 <elliott> O'course
18:15:06 <elliott> And all I'm tryina' do is generalise tuples :(
18:15:10 <copumpkin> aw
18:15:12 <elliott> Doubt GHC likes thirty-two element tuples
18:15:26 <copumpkin> oh, homogeneous?
18:15:46 <copumpkin> otherwise you can bury yourself deeper and go for heterogeneous vector-like things
18:15:52 <copumpkin> indexing into those is fun
18:16:11 <elliott> Homogeneous, yes
18:16:16 <elliott> I'm writing an HDL
18:16:22 <copumpkin> HDL?
18:16:27 <elliott> Hardware description language
18:16:42 <elliott> Think VHDL, Verilog, and also the damned interminable series of Haskell DSLs named "<location> Lava".
18:18:58 <copumpkin> ah
18:19:08 <copumpkin> I've wanted to do something like that in agda
18:19:49 <elliott> copumpkin: ...mine's for Minecraft redstone though :)
18:20:09 <elliott> I'm basically ripping off various Lavas...Lavae... wholesale, because dem people be smarter than me.
18:20:15 <elliott> I've yet to actually write a line of synthesis code. I'm scared.
18:20:44 <copumpkin> :O
18:22:35 <ais523> elliott: in my hardware compiler, the type inference code is much much longer than the actual synthesis code
18:22:53 <elliott> ais523: Yeah, but that's done for me :P
18:23:00 <elliott> ais523: And anyway, doesn't yours spit out VHDL?
18:23:01 <ais523> also, slower to run, but I think that's because there are quadratic algos in it
18:23:02 <elliott> That does not count
18:23:13 <ais523> actually, it spits out connections
18:23:18 <ais523> which happen to be in VHDL, but that's irrelevant
18:23:26 <ais523> it's doing nothing but connecting together premade units from libraries
18:24:02 <ais523> see, the problem with what I'm doing is that once I infer the type, I might discover it's wrong
18:24:07 <ais523> and have to fix the program to comply
18:24:28 <elliott> noot :: Nat n -> (forall p. (n ~ p, N p) => Nat p -> r) -> r
18:24:28 <elliott> noot n f = foo n (f Z) (\p -> noot p (\q -> noxs q f))
18:24:33 <elliott> copumpkin: proofs.jpg
18:24:37 <elliott> actually here is my whole proof
18:24:40 <elliott> foo :: Nat n -> ((n ~ Z) => r) -> (forall p. (n ~ S p) => Nat p -> r) -> r
18:24:40 <elliott> foo Z z _ = z
18:24:40 <elliott> foo (S n) _ f = f n
18:24:40 <elliott> noxs :: (N n) => Nat n -> (forall p. (p ~ S n, N p) => Nat p -> r) -> r
18:24:40 <elliott> noxs n f = f (S n)
18:24:41 <elliott> noot :: Nat n -> (forall p. (n ~ p, N p) => Nat p -> r) -> r
18:24:42 <elliott> noot n f = foo n (f Z) (\p -> noot p (\q -> noxs q f))
18:24:54 <elliott> this is me saying "fuck you world, every value of (Nat n) has (N n) and i'm going to prove it"
18:25:19 <copumpkin> :)
18:25:22 <elliott> woot, can be simplified to
18:25:24 <elliott> noot :: Nat n -> ((N n) => Nat n -> r) -> r
18:25:43 <elliott> nooot :: Nat n -> ((N n) => Nat n)
18:25:44 <elliott> Woot
18:25:46 <elliott> Nooot
18:25:54 <copumpkin> that isn't the same though
18:26:18 <copumpkin> oh, you're reusing variables
18:27:19 <elliott> no im just expanding their names with more os
18:27:34 <elliott> *Redsynth.Nat> :t nooot
18:27:34 <elliott> nooot :: N n => Nat n -> Nat n
18:27:35 <elliott> heh oops
18:27:37 <elliott> copumpkin: ur rite
18:28:08 <elliott> nooot :: Nat n -> (forall p. (p ~ n, N p) => Nat p)
18:28:09 <elliott> there
18:28:17 <elliott> ugh what
18:28:22 <elliott> it got turned into
18:28:24 <elliott> nooot :: N n => Nat n -> Nat n
18:28:25 <elliott> again
18:28:37 <elliott> monomorphism restrction??
18:28:46 <elliott> nope
18:29:23 <elliott> copumpkin: now the question is, how do I make GHC automatically apply this everywhere :P
18:31:37 <elliott> copumpkin: btw... the reason I'd rather use nats rather than fin is that I can use "n99" as a type-nat literal and it'll cause a type error immediately if it's too large; either I define a whole other set for fins which is really ugly, or I rely on fromInteger, which only fails at runtime...
18:34:38 <copumpkin> ah
18:34:43 <copumpkin> just use a real language
18:34:45 <copumpkin> like agda!
18:35:18 <elliott> copumpkin: yes definitely
18:35:23 <elliott> copumpkin: how slow is 9 + 9 in Agda again
18:35:31 <elliott> copumpkin: Anyway I can't use Agda, I use observable sharing :-)
18:35:57 <copumpkin> boo
18:36:10 <elliott> copumpkin: Hey, I use the _type-safe_ in-IO observable sharing.
18:36:11 <copumpkin> 9 + 9 isn't noticeably slow, even when normalizing
18:36:17 <elliott> I'm not a bad person!
18:36:20 <copumpkin> when compiled, it's just using Integer
18:36:36 <elliott> The topic is now me rationalising my use of observable sharing.
18:37:32 -!- ais523 has set topic: elliott rationalising his use of observable sharing | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
18:38:15 <elliott> Yes.
18:43:28 -!- oerjan has joined.
18:44:55 <elliott> copumpkin: Heh, and any such fin literal type thing would have to use LT/GT
18:45:05 <copumpkin> not really
18:45:12 <elliott> What type would f9 have then
18:45:15 <copumpkin> zero :: Fin (S n)
18:45:19 <elliott> Oh, Fin (S (S (S (S (S (S (S N)))))))))))))))))))000000000000000
18:45:20 <copumpkin> one :: Fin (S (S n))
18:45:20 <elliott> right
18:45:24 <copumpkin> :)
18:45:30 <elliott> Hmm, I could have a typeclass
18:45:38 <elliott> instance Lit Fin n where ...
18:45:41 <elliott> instance Lit Nat Z where ...
18:52:53 <oerjan> > 2 `2` 2
18:52:54 <lambdabot> <no location info>: parse error on input `2'
18:53:02 <ais523> boring
18:53:13 <ais523> > 2 `(+)` 2
18:53:14 <lambdabot> <no location info>: parse error on input `('
18:53:15 <ais523> also boring
18:53:21 <oerjan> oh wait that wasn't what elliott meant with binary literals
18:53:31 <elliott> oerjan: ?
18:53:39 <elliott> copumpkin: You're insufficiently horrified :(
18:53:42 <oerjan> <elliott> Not that Haskell has binary literals, but
18:53:43 <ais523> C++11 lets you define your own literal syntaxes
18:56:38 <copumpkin> elliott: oh sorry, doing work
18:56:47 <copumpkin> elliott: not sure how that would work, but I'll be interested to see it
18:56:51 <elliott> Work is no excuse for horrorslacking
18:56:55 <cheater_> could you make a literal which is actually a language?
18:57:04 <cheater_> and define code with it
18:57:11 <elliott> could you make a horse that's the sky
18:57:17 <cheater_> and embed something in C++
18:57:33 <cheater_> elliott, yes
19:04:04 <quintopia> elliott: pancreas
19:08:17 -!- KingOfKarlsruhe has joined.
19:12:12 -!- oerjan has set topic: elliott using his observation of shareable rationality | Logs: http://codu.org/logs/_esoteric/ and http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
19:17:52 -!- calamari has joined.
19:38:25 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]).
19:45:18 <elliott> oerjan changing his topic of shareable elliott
19:46:00 -!- foocraft has joined.
20:28:33 -!- zzo38 has joined.
20:29:43 <zzo38> I made program in TeX for PBM picture to output. http://sprunge.us/VGgZ
20:47:07 -!- oerjan has quit (Quit: Good night).
20:49:25 -!- azaq23 has joined.
20:53:34 -!- Phantom_Hoover has quit (Remote host closed the connection).
20:56:46 -!- Phantom_Hoover has joined.
21:06:06 -!- calamari has quit (Quit: Leaving).
21:09:37 -!- FireFly has quit (Read error: Connection reset by peer).
21:11:51 -!- FireFly has joined.
21:48:01 -!- hagb4rd has joined.
21:51:56 -!- cheater_ has quit (Ping timeout: 255 seconds).
21:54:18 -!- pumpkin has joined.
21:54:18 -!- pumpkin has quit (Changing host).
21:54:18 -!- pumpkin has joined.
21:55:16 -!- elliott has quit (Ping timeout: 240 seconds).
21:56:37 -!- copumpkin has quit (Ping timeout: 240 seconds).
22:03:20 -!- cheater_ has joined.
22:10:43 <zzo38> Why does MiKTeX include so much junk?
22:37:21 -!- MigoMipo has quit (Read error: Connection reset by peer).
22:41:28 -!- pumpkin has changed nick to copumpkin.
22:54:11 <Sgeo_> <3 "Frost"
22:59:51 <Phantom_Hoover> The Homestuck track?
22:59:53 -!- hagb4rd has quit (Ping timeout: 255 seconds).
23:01:33 <Phantom_Hoover> OK so basically I now have to spend two days hanging around museums.
23:01:36 <Phantom_Hoover> Yaaaaaaay.
23:02:36 <zzo38> Why do you have to hang around museums?
23:11:59 <Sgeo_> Phantom_Hoover, yes
23:12:58 <Sgeo_> My ear is bubbling
23:13:28 <Sgeo_> Ok, that's not as amusig as i thought
23:13:57 <Phantom_Hoover> You should probably do something about that.
23:14:18 <Sgeo_> I think it
23:14:23 <Sgeo_> 's fine
23:14:55 <olsner> hmm, I wonder what this bag from burger king is doing on my desk and what it might contain
23:16:45 <olsner> should I ... open it?
23:17:07 <zzo38> Yes open it carefully in case it smell too bad or something
23:17:41 <Sgeo_> itchy tickly
23:18:21 <olsner> itckly tichy
23:19:41 <Phantom_Hoover> Sgeo_ is going mad from an ear infection which spread.
23:19:46 <Phantom_Hoover> Soon he will die.
23:20:36 <Sgeo_> It's just H2O2
23:21:08 <Phantom_Hoover> Sgeo_
23:21:15 <cheater_> Sgeo_, do you have a perforated ear drum
23:21:16 <Phantom_Hoover> Why are you pouring peroxide in your ear
23:21:31 <ais523> hmm, on the subject of unlikely flamewars that I've got into not on the Internet: I'm currently in a Takeshi's Castle vs. Ninja Warrior flamewar
23:21:46 <Sgeo_> cheater_, not that I know of, dad says I'd be in pain if I did'
23:22:08 <cheater_> Sgeo_, that is wrong, a perforated ear drum does not hurt
23:22:22 <Sgeo_> ...
23:22:37 <ais523> why would you pour hydrogen peroxide in your ear anyway?
23:22:42 <cheater_> well take it from someone who's had that and it didn't hurt
23:23:33 <cheater_> Sgeo_, did you pour peroxide in your ear and it sounds like the water is flowing into a hole of some sort - like it's going further than usually when you have water in your ear?
23:23:54 <cheater_> either way if it's itchy it's probably just a lot of ear wax :p
23:24:03 <Sgeo_> ais523, try to clean it out because I can barely hear from it
23:24:22 <Sgeo_> cheater_, would it be noticable? I notice no such thing
23:25:18 <cheater_> would what be noticable - the perforation, or the earwax?
23:25:41 <Sgeo_> Sound of H2O2 flowing into perforation
23:25:53 <ais523> hmm, elliott's lucky he isn't here, he'd have facepalmed to death
23:25:56 <cheater_> yeah it sounds very different than usual
23:25:58 <ais523> I should possibly email him a warning not to logread
23:26:00 <cheater_> try with the other ear
23:26:02 <cheater_> for comparison
23:26:30 <ais523> cheater_: we've had enough of trying to get Sgeo to kill his girlfriend (/me waits for NOT ACTUALLY GIRLFRIEND rant)
23:26:35 <ais523> stop trying to get him to kill himself too
23:26:39 <Phantom_Hoover> Medical advice from cheater vs. medical advice from Sgeo's dad.
23:26:52 <Phantom_Hoover> I'm really not sure which side of the fence I'm on here,
23:26:57 <ais523> Phantom_Hoover: well, I'd probably phone the NHS if in doubt
23:27:11 <ais523> but the US doesn't have a national health service
23:27:44 <cheater_> ais523, what?
23:28:01 <ais523> cheater_: what are you whating at?
23:31:16 <Sgeo_> I did survive doing the same thing yesterday
23:31:28 <Sgeo_> But I just told my dad that I want to see a doctor, and I don't mean him
23:31:53 <ais523> was your ear having hearing problems before you did it the first time?
23:32:00 <Sgeo_> Yes
23:32:19 <Sgeo_> It's been having problems for a while now
23:32:26 <Sgeo_> Cleared up some time ago, but then came back
23:32:33 <Phantom_Hoover> TbH, I suspect pouring peroxide into a perforated eardrum would hurt like hell, but IANAD.
23:33:15 <ais523> hydrogen peroxide can explode on contact with all sorts of things, and the most potent is quite common in the human body
23:33:26 <ais523> because H2O2 badly messes up a range of reactions and it gets rid of it by any means possible as a result
23:35:15 * Sgeo_ vaguely hopes that Phantom_Hoover is right
23:36:26 <Phantom_Hoover> ais523, you refer, I assume, to the catalytic breakdown of peroxide into water and oxygen.
23:36:35 <ais523> yep
23:36:40 <ais523> in a confined space, it's an explosion
23:36:49 <Phantom_Hoover> Which is not particularly dangerous, what with peroxide having been used in the past as a topical antiseptic on wounds.
23:36:51 <ais523> I've done it in the lab
23:37:06 <ais523> and yep, not generally in the human body, it's so dangerous that the body is good at dealing with it
23:37:14 -!- cheater_ has quit (Ping timeout: 255 seconds).
23:37:30 <Sgeo_> Phantom_Hoover, in the past?
23:37:37 <Sgeo_> People don't do that anymore?
23:37:59 <pikhq> TIL: #! is not POSIX.
23:38:14 <olsner> pikhq: omg!!
23:38:18 <Phantom_Hoover> Sgeo_, it releases oxygen, so if it gets into the bloodstream there's a risk of an air embolism.
23:38:27 <ais523> pikhq: I learnt that recently, looking it up
23:38:33 <pikhq> WHY
23:38:37 <Sgeo_> Phantom_Hoover, um, that's scary
23:38:38 <ais523> however, POSIX does mention it as a common convention in a footnote somewhere
23:38:45 <ais523> Sgeo_: also very noticeable
23:38:49 <Phantom_Hoover> Sgeo_, why, do you have any open blood vessels in your ear?
23:38:50 <olsner> so posix basically says nothing at all about executable formats?
23:38:55 <ais523> so it probably didn't happen
23:38:57 <olsner> makes a lot of sense though, really
23:39:08 <pikhq> There *is* a portable way to do shell scripts, though.
23:39:09 <Sgeo_> Phantom_Hoover, no, not in my situation particularly, just in general
23:39:15 <olsner> pikhq: orly?
23:39:22 <ais523> pikhq: load them from inside the appropriate shell?
23:39:24 <pikhq> execvp passes invalid executables to the shell.
23:39:42 <ais523> but what if your portable shell script is also a valid executable on the system in question?
23:40:28 <pikhq> Have fun. :)
23:41:06 <ais523> perhaps I should write a shellscript/.COM format Windows executable polyglot
23:41:17 <pikhq> In practice, adding #!/bin/sh should fix that.
23:41:20 <ais523> it's reasonably easy to make an entirely printable one of those, although it has to be selfmodifying because the flow control commands are unprintable
23:41:35 <pikhq> (it's very unlikely that #!/bin/sh is the magic for an executable format)
23:41:56 <ais523> and I think it's invalid x86 machine code, too
23:42:01 <ais523> IIRC the lowercase letters are all invalid commands
23:42:26 <olsner> "invalid" x86 machine code, as if there are any byte values left to treat as invalid :P
23:42:43 <ais523> there were quite a lot back on the 8086
23:43:09 <olsner> that was... more than a life time ago, I believe
23:43:21 <pikhq> Oh, *right*, .COM didn't even have header magic.
23:43:33 <ais523> well, I was working from the developer's manual for DOS 3 back when I did the printable machine code stuff
23:43:37 <ais523> pikhq: indeed
23:43:49 <ais523> because I found it in the library
23:50:18 -!- cheater_ has joined.
23:53:31 * Phantom_Hoover → sleep
23:53:33 -!- Phantom_Hoover has quit (Quit: Leaving).
←2011-07-07 2011-07-08 2011-07-09→ ↑2011 ↑all