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