00:07:54 -!- Sorella has joined. 00:10:43 -!- Sellyme has quit (Excess Flood). 00:12:45 -!- Sellyme has joined. 00:37:39 -!- Patashu[Zzz] has changed nick to Patashu. 00:39:19 -!- zzo38 has joined. 00:41:31 -!- conehead has quit (Quit: Computer has gone to sleep). 00:42:36 -!- conehead has joined. 00:42:36 -!- conehead has quit (Client Quit). 00:55:24 -!- Sgeo has joined. 00:59:39 Maybe telling a charity telemarketer that I feel like I have too much money is not a good idea... 00:59:44 Was asked for $365 01:00:23 lol 01:00:25 sgeo 01:00:36 did you pony up 01:00:49 I made no promises 01:02:52 -!- tertu has quit (Disconnected by services). 01:02:52 -!- ter2 has joined. 01:04:17 Sgeo: Do what I do, and purchase a $1000 monitor. 01:04:44 I have no place to put it 01:04:54 Pshaw 01:07:10 do what I did, and purchase a $1000 monitor and two $250 monitors 01:07:37 seriously though, Sgeo, do you know of http://www.givewell.org/ 01:07:39 I'm pretty sure I don't have cause for another monitor. This thing is huge. 01:07:52 kmc: I do 01:08:27 I've donated to them a few times. I did mention that to the telemarketer, who was all 'we have 4 stars on Charity Navigator' 01:08:34 (They do. It's UNICEF) 01:09:03 Have you considered... having less money? 01:09:44 cool 01:10:50 Sgeo: if you find a way for donating large amounts of money to produce more than a slight and transient easing of guilt, let me know 01:11:05 I think I probably need to do one thing to be objectively helpful, and another thing to feel good about myself 01:12:14 Donating large amounts of money on a regular basis automatically? I plan on trying... well, not sufficiently large amounts, but something like that 01:12:38 Although I'm sure there would be some guilt with any amount <100% 01:21:38 -!- ter2 has quit (Ping timeout: 240 seconds). 01:24:28 https://gist.github.com/kmcallister/9986166 speeding up an ASCII whitespace scan by a factor of 5 using SSE 4.2 01:24:31 -!- TodPunk has joined. 01:27:46 How does it compare against http://git.musl-libc.org/cgit/musl/tree/src/string/memchr.c ? 01:27:57 don't know 01:28:11 that only looks for a single byte though 01:28:14 this can do a set of up to 16 01:28:51 this is pretty gnarly code 01:35:05 Ah, so it's more like strspn. 01:35:31 kmc: apparently I forgot that Rust has macros :/ 01:35:38 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 01:35:58 http://www.reddit.com/r/rust/comments/224gc0/rust_010_released/cgjpkwh?context=1 01:37:00 420 smoke macros every day 01:38:14 RUST IS NOT A GAME WHERE NAKED MEN MURDER EACH OTHER WITH HATCHETS 01:39:55 what 01:41:17 there is a video game entitled "rust" in which player avatars are naked and murder each other with hatchets 01:41:42 then Sgeo is lying 01:45:52 maybe the name of the game is case-sensitive 01:46:42 http://playrust.com/wp-content/uploads/2013/12/RustLogo-Normal-Transparent.png it's usually stylized "RUST" though 01:46:59 wow i don't know why it looks like that 01:50:24 -!- Slereah_ has quit (Ping timeout: 268 seconds). 02:14:47 https://github.com/mozilla/rust/issues/12723 02:19:18 -!- nisstyre has quit (Quit: WeeChat 0.4.3). 02:26:30 not bad, metajack 02:27:03 -!- madbr has joined. 02:27:06 sup 02:27:38 coughing 02:28:00 here's a question 02:28:20 What kind of question? 02:28:22 how efficient is llvm's alias analysis? 02:28:31 zzo38 : a hard one 02:28:40 efficient as in how well does it work, or efficient as in how fast does the analysis itself run 02:28:44 actually I'm not expecting an answer 02:28:51 how well 02:29:56 mostly up to what kind of inner loops can it figure out that none of the writes alias any of the reads 02:31:07 essentially trying to figure if my architecture concept is never gonna work :D 02:32:09 mostly interested in the kind of number crunching loops you get in video games 02:32:40 video rendering, sound rendering, physics simulations, floating point stuff 02:33:09 So would you then have instructions dedicated to video, audio, and physics? 02:33:29 don't care about the kind of code that's all function calls, hashes, graph parsing, linked lists... that kind of code is generally impossible to accelerate anyways 02:33:45 zzo: no 02:34:15 zzo: just an architecture that can run ~8 instances of a loop at the same time 02:34:35 Yes, you should need some parallel instructions. 02:34:36 without multithreading 02:35:10 right, it's similar to autovectorization but a little more general 02:35:27 essentially it adds possibility for feedback loops 02:36:06 wait, feedback? how? 02:36:23 In esolang wiki, there is a article called "Checkout" it describes a code for parallel looping, and some other things 02:36:23 each slice runs 1~2~etc slices after the previous one 02:36:25 oh jeez, "jmp 3" and "jmp 3f" are not the same instruction at all 02:36:27 jumping to 0x0000000000000003 considered harmful 02:37:08 so if the longest feedback loop takes 1 cycle to propagate (ie some kind of accumulator), then slice 2 runs 1 instruction later than slice 1 02:38:25 if you're doing something like a filter and it takes, say, 10 cycles due to having a couple multiplies in the loop, then slice 2 runs 10 cycles later, slice 3 runs 20 cycles later, slice 4 runs 30 cycles later etc 02:39:55 it's probably mostly for math heavy DSP kind of code since you can still only do 1 memory read per cycle across all slices 02:40:29 except for really simple cases like an SSE-style aligned block of values 02:41:38 so essentially you need 7 math ops to do for every 1 memory read 02:42:04 if you make it dual-issue then you need 15 math ops for every 1 memory read :D 02:43:20 You should then use a "load program" instruction, to load the program into internal memory, and then other instruction set up each execution unit, and then you can make it slice like that to don't interfere with memory access. 02:44:21 but then you have to operate on really small data loads 02:44:34 like, cache-size data loads 02:44:48 kinda like the ps3's cell processor actually 02:45:09 What is the cache size? 02:45:58 it depends on how the chip is made 02:46:13 but it's definitively under 1 meg 02:46:34 probably in the 32k~256k range 02:47:13 essentially it becomes a cell processor like on the ps3 02:49:04 kmc: Oh jeeze. 02:49:39 which kinda became moot when they figured out how to turn x86 into 8 cores (which is a pretty scary concept tbh) 02:52:32 anyhow, if llvm can figure out that none of the memory reads can alias any of the writes inside a loop, you can autovectorize anything that has predictable flow 02:53:58 if it doesn't have something like "half the operations are memory operations" or "feedback loop is as long as the loop itself so the loop is essentially 100% serial", you can probably come out ahead in terms of speed 02:57:29 kindof an anti-pentium2 02:58:59 which seems to be based around the idea that most programs are horrible unoptimizable crudge made out of jumps and memory accesses 02:59:46 So... programs. 02:59:51 http://www.beepboopbitcoin.com/ Finally. 03:00:07 (the fastest cpus are still ultimately based on that design which I guess says something about software... or maybe about how people benchmark them) 03:05:38 -!- ter2 has joined. 03:07:53 is it like controversial that most programs are made of jumps and memory accesses? 03:08:21 well 03:08:34 -!- fcrawl has quit (Ping timeout: 240 seconds). 03:08:49 no but it's essentially the unoptimizable part of programs 03:09:04 since it has lots of stuff like short dependencies 03:09:22 Some things in the program could be manually optimized though 03:09:55 scanned 100 MB of data for ASCII space characters in about 8 ms 03:09:59 12 GB/s ain't bad 03:10:06 it's within a factor of 2 of the theoretical max memory bandwidth 03:26:29 <^v> 47 is one of my favorite numbers now 03:26:46 I agree. It's a pretty good number 03:28:00 <^v> it (47*x)%256 can be anywhere from 0-255 03:28:19 what causes that, 256 and 47 being coprime probably? 03:29:10 aren't all odd numbers coprime to 256? 03:29:11 <^v> i recently found this out by making a text to Barely converter 03:29:30 <^v> copumpkin, yes actually, fuck 03:29:42 * ^v stabs 4 7 03:46:25 -!- ter2 has quit (Ping timeout: 240 seconds). 03:49:37 rsa-8 :D 03:52:00 -!- ter2 has joined. 04:07:39 -!- ter2 has quit (Ping timeout: 252 seconds). 04:13:04 -!- ter2 has joined. 04:14:45 -!- nisstyre has joined. 04:14:50 -!- nisstyre has quit (Changing host). 04:14:50 -!- nisstyre has joined. 04:22:49 -!- Sorella has quit (Quit: It is tiem!). 04:25:46 -!- conehead has joined. 04:27:02 <^v> so 04:27:18 <^v> i made hello world in barely 04:27:19 <^v> xoooooooooooooohjjjjjjjjjjjjjjjhhhxooooooooxooooooxjjjxjjjjjjjjjjjjjjjjjjjjjjjjxjjjjjjjjhxooooooooooooxooohjjjjhhhxjjjxxjjjjjjjxjjjjjjjhhjhhhhoooooxhoooooooooooooooooooooohjhhhoooooooooooo~ 04:30:08 <^v> and holy shit i made it smaller 04:30:09 <^v> xjhhhhxooooooooxooooooxjjjxhhoohhhhxjjjjjjjjhxooooooooooooxjhhhhxjjjxxjjjjjjjxjjjhhhhhhxjjjjjjjjjjjjjjhhhh~ 04:30:58 it looks like a cat is walking on your keyboard 04:31:46 <^v> i am the kind of asshole who makes hello worlds in languages that dont have them yet 04:31:50 <^v> and doesnt post them to the wiki 04:32:23 <^v> what i have so far: fishstacks and barely 04:32:26 <^v> need to make more 04:32:29 <^v> just to piss people off 04:32:49 I would want the instruction set, where, implicit vectorization/out-of-order/pipelining/caching/etc is not allowed. 04:33:40 <^v> and mind you, these are all pregenerated tables which i can use to convert text to that lang instantly 04:33:54 <^v> which i am not giving to you, because i am an asshole 04:35:57 zzo38 : I'm not sure sure that's possible 04:36:10 zzo38 : though you can make it really hard :D 04:37:04 <^v> a compiler that disagrees with you if you do something too complicated 04:38:29 madbr: What do you mean by that? 04:38:37 well 04:38:52 without self modifying code you can simply cache the code 04:38:59 and cache the data 04:39:48 the running core cannot figure out that it got hella cached 04:40:02 or even out-of-ordered 04:40:04 I mean, that cache is only accessed by instructions which explicitly access the cache in the certain way. 04:40:44 And then, the instructions in cache are VLIW which is different from instructions from external memory, is another possibility. 04:41:29 explicit cache I think doesn't gain anything AFAIK 04:42:23 <^v> well 04:42:40 <^v> because i dont feel like being an asshole today, here is the conversion table: https://gist.github.com/infinikiller64/9987604 04:42:53 It gains not complicating the execution with not knowing the cache and having to just guess instead, making also the speed confusing... 04:42:53 <^v> warning: your browser will probably crash 04:43:42 ^v: Then put "view-source:" at front, or download using curl, and then the browser might not crash as much. 04:43:54 <^v> fine 04:43:54 <^v> https://gist.githubusercontent.com/infinikiller64/9987604/raw/07db8ab7a7e64a58e4f2fb3bb957296b5a54f2cf/gistfile1.lua 04:44:14 OK, that one better 04:44:18 <^v> 891.06KB 04:44:55 <^v> 256^2 values 04:46:42 zzo38 : it simplifies the design I guess yeah 04:46:45 madbr: I think simplicity of the implementation is better than simplicity of the interface, and simplicity is better than completeness, robustness, correctness, sanity, etc. 04:47:13 but to get the kind of RISC speed there's more or less no way around a data and instruction cache 04:47:21 Yes, I always want to simplify the design. 04:47:26 otherwise your speed is going to be on the order of the 386 04:47:39 I did not say to eliminate the cache entirely, but to make it explicit-only. 04:47:44 unless you use pseudo-static ram or some other similar exotic part 04:48:23 zzo38 : then you're still going to need 2 RAM banks probably 04:48:37 one for data, one for instructions 04:49:46 the problem is that DRAM has pages :( 04:49:59 There would still be an internal cache, which is also used for microcodes, so in instruction cache it would be VLIW codes 04:50:55 opening a new page and reading a value is something like 3 times slower than reading a value from an already open page 04:51:05 more if you're using more recent DRAM 04:52:10 pages are something like 512bytes/1k/2k/4k/8k etc depending on DRAM generation/size 04:52:27 It could use 8-bits external memory interface, and 128-bits for internal memory interface for cache, so you can deal with arrays of whatever bit size of data, you loaded, and is also for use with VLIW, which has longer instructions than the external one. 04:53:06 I'm not sure you can guzzle picture data from RAM fast enough if your external memory is only 8 bits 04:53:08 madbr: It would be OK, as long as, the number of clock cycles is based on a fixed DRAM size/speeds 04:55:39 if your part is a cpu, it's going to mix up accesses to data with accesses to instructions 04:55:51 so you're going to have the page-change-penalty every cycle 04:56:04 well, every time you access data actually 04:56:10 http://web.archive.org/web/19990128210124/http://people.netscape.com/brendan/ this is real right? tell me it is 04:56:34 <^v> function SwapBack() { document.knob.src = Image1.src; return true; } 04:56:57 <^v> all i see 04:56:58 madbr: You could have a separate GPU as well, as CPU, so it is possible to write the program in the way to act in parallel; you can also store the data in the cache which you would use mostly often, to increase the speed; and, depending on the way the program is written to use/unuse cache, use self-modifying codes, too. 04:57:01 <^v> page still loading 04:57:14 (Possibly even the program in cache is allowed to modify itself) 04:58:16 Self-modifying codes should be allowed, as it is very useful. 04:58:31 I'm not convinced it's worth the complexity 04:58:58 If you store the value of a variable in an immediate operand, then you can avoid a page penalty. 04:59:01 Bike: not enough jquery 04:59:13 (It also avoid a memory access, too.) 04:59:24 except it's still a memory access 04:59:50 and later on when you're pipelining your architecture, you're in deep trouble 05:00:42 Some instruction sets don't have pipeline stalls, so it avoids that problem; you then need to program them yourself. 05:01:23 You can also, tell it to copy it to the cache and then tell it to read/write cache and execute instruction in a cache, is another way speeding it up a bit. 05:01:24 it's really hard to avoid pipeline stalls 05:01:36 if you have cache you have pipeline stalls 05:01:55 if you have branch prediction you have pipeline flushes 05:01:56 That is why, it has to be explicit-only cache. 05:02:26 if you have something like load reg, [reg + 5] 05:02:33 you have pipeline stalls 05:02:36 If you use it wrong, you are subject to the consequences by yourself. 05:02:57 because if the reg in [reg + 5] changes the cycle before, you have to catch that 05:04:01 madbr: The program would be written to avoid that if you want it to use the register that changes in the cycle before. 05:04:40 then your program has extra nops every time some other useful instruction can't be swapped in 05:05:14 the extra nops take up extra code cache which makes the thing slower 05:05:15 Yes, it does, but if you don't have another useful instruction to put in, then be careful maybe you wrote your program badly and there might be a way to fix it. 05:05:25 -!- oklopol has joined. 05:05:32 depends on the kind of algo 05:05:49 if it's number crunching stuff then usually there's something you can stuff in yes 05:06:07 if it's like, zip decompression or something nasty like that... god have mercy on you 05:06:14 Anyways, my suggestion was that, the instruction cache would be VLIW, so different than the instruction set used for executing external memory anyways 05:06:45 (It would execute microcode ROM if the instruction cache is not being executed.) 05:07:30 I guess vliw would be ok if you had a way to switch to some less efficient instruction set 05:07:46 for like non-number-crunching code 05:08:08 where you're going to do lots of memory accesses anyways so there's no point to having 6 ALUs 05:08:37 and then for that one hand-optimized crunching loop, use the VLIW mode 05:08:49 <^v> Bike, the page finnaly loaded and xD 05:08:58 yeah 05:09:33 If the program isn't in cache, it would use a less efficieint instruction set. Otherwise, if it is in the cache, you would need to implement your own instruction set that the program in microcode RAM runs from the rest of the cache. 05:10:20 essentially this is what the ARM does with the THUMB vs ARM 05:11:09 thumb is 16 bits which limits the number of ram cycles you lose to loading in the stuff 05:12:40 though you could probably just have a VLIW that has a choice between 1 big VLIW instruction word, or an instruction word that encodes multiple one-cycle instructions 05:14:09 Sure, that is another possibility 05:15:46 it's hard to find a good balance in this kinda thing :D 05:17:08 optimal instruction is somewhere between 16 and 32 bits AFAIK 05:17:42 less than 16 and it's too small, not enough bits for the register selection 05:18:08 plus you need too much granularity in your instruction word shifter 05:19:56 more than 32 and you're probably wasting too much instruction cache space, unless it's VLIW and you're packing more than one instruction per word... 05:20:05 AFAIK this was a major problem on itanium 05:20:57 also if your cpu is dual issue that is kinda equivalent-ish to making your instructions 64bits 05:22:39 What does "dual issue" mean? 05:22:47 two instructions per cycle 05:23:23 see: intel pentium, ARM A8 (used on lots of older iphones), one MIPS generation (can't remember which) 05:23:35 I think there was also one of the 68k that was designed like that 05:23:54 afaik it's one of the cpu design "sweet spots" 05:24:26 less than 2 and you're running 1 instruction per cycle... and essentially twice as slow 05:24:45 -!- chaiomanot has quit (Quit: Leaving). 05:25:05 more than 2 and chances are you're going to need crazy stuff like out of order execution to make it any faster than 2 instructions per cycle 05:25:19 (though I guess the IBM POWER6 did it) 05:25:20 -!- tromp has quit (Remote host closed the connection). 05:25:55 -!- tromp has joined. 05:25:59 (and it really depends on the type of program, I'm sure you can do a lot more in-order if your programs are number crunching or floating point) 05:28:07 I guess it all comes down to "what kind of game is going to run on it" :D 05:30:09 -!- tromp has quit (Ping timeout: 252 seconds). 05:31:03 the general problem with a VLIW is to make it faster than a well designed RISC 05:31:56 ie "pay for" your large instructions by figuring out stuff for your CPU to do in the leftover slots 05:33:16 if this fails, the RISC is faster than you because it needs less code cache 05:35:37 generally the stuff that reduces your gains are stuff like 05:35:52 - ram/cache read ports 05:36:07 - register file read/write ports 05:37:39 - absolute latencies in instruction processing, which can also be described as "lack of number crunching to do while working on the critical-latency-path" 05:41:37 that being said, gfx and sound rendering are more or less the ideal case for finding stuff that won't fall into these limits and will actually benefit from VLIW or similar stuff like SIMD 05:42:15 <^v> anyone still have barely.asm? 05:42:21 <^v> link b bork 05:46:25 -!- zzo38 has quit (Ping timeout: 255 seconds). 05:49:56 > fix (sequence [(!! 1), 2 + 2]) 05:49:56 When elaborating an application of constructor __infer: 05:49:57 No such variable fix 05:49:58 No instance for (GHC.Show.Show a0) 05:49:58 arising from a use of `M688017572578786861922522.show_M6880175725787868619... 05:49:58 The type variable `a0' is ambiguous 05:49:58 Possible fix: add a type signature that fixes these type variable(s) 05:49:58 Note: there are several potential instances: 05:50:22 <^v> ._. 05:50:24 <^v> dat spam 05:50:26 @run fix (sequence [(!! 1), 2 + 2]) :: [Int] 05:50:27 No instance for (GHC.Num.Num ([GHC.Types.Int] -> GHC.Types.Int)) 05:50:27 arising from a use of `GHC.Num.+' 05:50:27 Possible fix: 05:50:27 add an instance declaration for 05:50:27 (GHC.Num.Num ([GHC.Types.Int] -> GHC.Types.Int)) 05:50:34 <^v> wow 05:50:53 What 05:50:56 -!- Patashu[Zzz] has joined. 05:50:56 -!- Patashu has quit (Disconnected by services). 05:51:06 @run fix (sequence [(!! 1), (2 +)]) 05:51:07 Occurs check: cannot construct the infinite type: a0 = [a0] 05:51:08 Expected type: [a0] -> a0 05:51:08 Actual type: [a0] -> [a0] 05:51:09 Trying to recreate something similar to the loeb example 05:51:28 With just reader monad + fix 05:54:35 :t sequence [(!! 1), const (2 + 2)] 05:54:36 Num a => [a] -> [a] 05:54:44 @run fix $ sequence [(!! 1), const (2 + 2)] 05:54:45 [4,4] 05:54:56 @run fix $ sequence [ (!!5), const 3, liftM2 (+) (!!0) (!!1), (*2) . (!!2), length, const 17 ] 05:54:57 [17,3,20,40,6,17] 05:55:35 @let loeb :: [[a] -> a] -> [a]; loeb = fix . sequence 05:55:37 Defined. 05:56:06 Actually 05:56:12 That's not the standard defintion of loeb, is it? 05:56:12 :t fix . sequence 05:56:13 [[a] -> a] -> [a] 05:56:34 The type looked more general than that, but sequence is constraining it 05:57:09 :t let loeb x = ($ loeb x) <$> x in loeb 05:57:10 Functor f => f (f b -> b) -> f b 05:57:46 :t fix . sequenceA 05:57:47 Not in scope: `sequenceA' 05:57:47 Perhaps you meant one of these: 05:57:47 `T.sequenceA' (imported from Data.Traversable), 05:57:52 :t fix . T.sequenceA 05:57:53 Traversable t => t (t a -> a) -> t a 05:58:49 @pl loeb x = ($ loeb x) <$> x -- trivial fix 05:58:49 loeb = fix ((<$>) . flip id =<<) 06:00:12 @fundefine 06:00:13 Undefined. 06:00:27 @let loeb = fix (fmap.flip id =<<) 06:00:28 .L.hs:142:13: 06:00:29 No instance for (Functor f0) arising from a use of `fmap' 06:00:29 The type variable `f0' is ambiguous 06:00:29 Possible fix: add a type signature that fixes these type variable(s) 06:00:29 Note: there are several potential instances: 06:01:18 @let loeb :: Functor f => f (f b -> b) -> f b; loeb = fix (fmap.flip id =<<) 06:01:19 Defined. 06:04:15 -!- madbr has quit (Quit: Rouringu de hajikunda!). 06:15:22 -!- ^v has quit (Quit: http://i.imgur.com/DrFFzea.png). 06:25:58 -!- ter2 has quit (Ping timeout: 240 seconds). 06:28:13 :t loeb 06:28:14 Functor f => f (f b -> b) -> f b 06:28:58 > loeb Just (\Just x -> x) 06:28:58 When elaborating an application of constructor __infer: 06:28:59 No such variable loeb 06:28:59 Constructor `Data.Maybe.Just' should have 1 argument, but has been given none 06:29:18 > loeb Just (\(Just x) -> x) 06:29:19 When elaborating an application of constructor __infer: 06:29:19 No such variable loeb 06:29:20 Couldn't match type `Data.Maybe.Maybe (Data.Maybe.Maybe t0 -> t0)' 06:29:20 with `((Data.Maybe.Maybe t0 -> t0) -> b0) -> b0' 06:29:20 Expected type: (Data.Maybe.Maybe t0 -> t0) 06:29:20 -> ((Data.Maybe.Maybe t0 -> t0) -> b0) -> b0 06:29:20 Actual type: (Data.Maybe.Maybe t0 -> t0) 06:34:11 @run loeb $ Just fromJust 06:34:14 mueval-core: Time limit exceeded 06:34:44 > let fun :: (Functor f, Functor g) => f -> g -> (f b -> b) -> f b -> g b; fun f g x = f ( g x) in fun Just Just (\(Just x) -> x) 9 06:34:44 (input):1:9: error: expected: "=" 06:34:44 let fun :: (Functor f, Functor g) => f -> g -> (f b -> b) -> f b -> g b; fun > 06:34:44 ^ 06:34:45 Expecting one more argument to `f' 06:34:52 ^- what's wrong with that? 06:35:14 Everything 06:36:03 > let bar :: Functor f => f -> a -> f a; bar f x = f x in (bar Just) 9 06:36:03 (input):1:9: error: expected: "=" 06:36:03 let bar :: Functor f => f -> a -> f a; bar f x = f x in (bar Just) 9 06:36:03 ^ 06:36:04 Expecting one more argument to `f' 06:36:16 I see. 06:36:35 @run let fun :: (Functor f, Functor g) => (a -> f a) -> (a -> g a) -> (f a -> a) -> f a -> g a; fun f g x = f (g x) in fun Just (:[]) (\(Just x) -> x) (Just 9) 06:36:36 Could not deduce (a ~ g a) 06:36:36 from the context (GHC.Base.Functor f, GHC.Base.Functor g) 06:36:36 bound by the type signature for 06:36:36 fun :: (GHC.Base.Functor f, GHC.Base.Functor g) => 06:36:36 (a -> f a) -> (a -> g a) -> (f a -> a) -> f a -> g a 06:37:00 > let bar :: Functor f => (a -> f a) -> a -> f a; bar f x = f x in (bar Just) 9 06:37:01 (input):1:9: error: expected: "=" 06:37:01 let bar :: Functor f => (a -> f a) -> a -> f a; bar f x = f x in (bar Just) 9<> 06:37:01 ^ 06:37:02 Just 9 06:37:11 ah. I see the problem. 06:37:15 thx 06:37:53 @run id Just 9 06:37:54 -!- ter2 has joined. 06:37:54 Just 9 06:39:37 @run return 9 :: Maybe Int 06:39:39 Just 9 06:43:16 @run id (Just 9) == (id Just) 9 06:43:17 True 06:48:31 -!- ter2 has quit (Ping timeout: 255 seconds). 07:04:35 -!- MoALTz has quit (Quit: bbl). 07:54:49 -!- trolly has joined. 08:02:36 -!- trolly has quit (Remote host closed the connection). 08:14:29 -!- sgelios has joined. 08:17:35 -!- Slereah_ has joined. 08:25:08 -!- sgelios has quit (Ping timeout: 240 seconds). 08:37:10 Huh, is Brainfuck/Ook commonly used in goecaching circles? This geocaching tool I stumbled upon while looking for something else -- http://gcc.eisbehr.de/features.html -- lists conversions between text, Brainfuck and Ook among its features. 08:38:06 -!- oerjan has joined. 08:38:07 (Also an absolutely ludicrous list of non-eso things.) 08:39:41 Yogscast is getting pretty huge 08:56:16 @run length . nub . take 128 . flip iterate 1 $ \x -> (x*47) `mod` 256 08:56:17 16 08:56:33 hm 08:57:51 @run nub [length . nub . take 256 . flip iterate 1 $ \x -> (x*n) `mod` 256) | n <- [0..255]] 08:57:52 :1:70: parse error on input `)' 08:58:02 @run nub [length . nub . take 256 . flip iterate 1 $ \x -> (x*n) `mod` 256 | n <- [0..255]] 08:58:03 [2,1,9,64,5,32,4,16,3,8] 08:58:42 none 128, so not cyclic 08:59:27 > 355/3 08:59:27 118.33333333333333 : Float 08:59:28 118.33333333333333 08:59:34 @run 255/3 08:59:35 85.0 09:01:03 hm why is there no 7 i there 09:01:08 or 7 09:01:12 *or 6 09:01:23 oh hm right 09:02:28 @run nubBy ((==) `on` snd) [(n, length . nub . take 256 . flip iterate 1 $ \x -> (x*n) `mod` 256) | n <- [0..255]] 09:02:29 [(0,2),(1,1),(2,9),(3,64),(4,5),(7,32),(8,4),(15,16),(16,3),(31,8)] 09:03:40 @run nubBy ((==) `on` snd) [(n, length . nub . take 256 . flip iterate 1 $ \x -> (x*n) `mod` 256) | n <- [1, 3..255]] 09:03:41 [(1,1),(3,64),(7,32),(15,16),(31,8),(63,4),(127,2)] 09:04:57 Nub nub nub. 09:05:43 -!- zzo38 has joined. 09:06:43 @run last . sort . nub . take 256 . flip iterate 1 $ \x -> (x*3) `mod` 256) 09:06:45 :1:70: parse error on input `)' 09:06:49 @run last . sort . nub . take 256 . flip iterate 1 $ \x -> (x*3) `mod` 256 09:06:50 251 09:07:22 ok so 3 and 255 are summand generators 09:08:39 @run sort . nub . take 256 . flip iterate 1 $ \x -> (x*3) `mod` 256 09:08:39 [1,3,9,11,17,19,25,27,33,35,41,43,49,51,57,59,65,67,73,75,81,83,89,91,97,99,... 09:10:26 I keep wanting you to write \x -> (x*n) `mod` 256 as flip mod 256 . (n*) instead, because it has less pokey bits. 09:12:02 i pretty clearly decided against making that pointfree at one point. 09:14:04 @run nubBy ((==) `on` snd) [(n, length . nub . take 256 $ iterate (n*) 1 ) | n <- [0..255 :: Word8]] -- another option 09:14:05 [(0,2),(1,1),(2,9),(3,64),(4,5),(7,32),(8,4),(15,16),(16,3),(31,8)] 09:30:07 sort . nub -> head . group . sort 09:30:18 grr 09:30:20 map had 09:30:30 I give up. 09:31:42 that's like, longer 09:32:10 -!- ski has quit (Quit: Lost terminal). 09:32:23 and it wasn't in the inner loop 09:32:34 oh wait 09:43:20 -!- yorick has joined. 09:43:49 oerjan: I do that habitually; I usually get it right the first time, too, when actually coding. 09:44:11 * int-e should have an nubOrd helper instead. 09:48:30 @run id * 3 `mod` 256 $ 123 -- I forgot whether this is still in lambdabot. 09:48:31 No instance for (GHC.Show.Show a0) 09:48:31 arising from a use of `M826470610663680039923602.show_M8264706106636800399... 09:48:31 The type variable `a0' is ambiguous 09:48:31 Possible fix: add a type signature that fixes these type variable(s) 09:48:31 Note: there are several potential instances: 09:48:55 @run 0 0 :: Integer 09:48:56 No instance for (GHC.Num.Num a0) arising from the literal `0' 09:48:56 The type variable `a0' is ambiguous 09:48:56 Possible fix: add a type signature that fixes these type variable(s) 09:48:56 Note: there are several potential instances: 09:48:56 instance GHC.Num.Num GHC.Types.Double 09:49:09 @run (0 :: Integer -> Integer) 0 09:49:10 No instance for (GHC.Num.Num 09:49:10 (GHC.Integer.Type.Integer -> GHC.Integer.Type.Integer)) 09:49:10 arising from the literal `0' 09:49:10 Possible fix: 09:49:10 add an instance declaration for 09:49:15 (when Cale ran it, there used to be a Num a => Num (r -> a) instance, acting pointwise 09:49:18 ) 09:49:44 @instances Num 09:49:45 Double, Float, Int, Integer 09:49:55 @instances-importing Num 09:49:55 Double, Float, Int, Integer 09:49:57 i remember that, also when it was removed 09:50:19 which is really irritating if you make a mistake in numeric code somewhere, but id * const k `mod` 256 would be kind of cool. 09:50:23 @help instances-importing 09:50:23 instances-importing [ [ [. Fetch the instances of a typeclass, importing specified modules first. 09:50:41 Jafet: i think that requires the module list to do anything different 09:51:25 (ironically it's longer than \x -> x * k `mod` 256) 09:51:50 yeah function instances confuse matters, which is why i was surprised they added the monadic ones by default to ghci lately 09:56:27 -!- MindlessDrone has joined. 09:58:24 @run (ap, ap.ap, ap.ap.ap, ap.ap.ap.ap) 09:58:25 No instance for (Data.Typeable.Internal.Typeable1 m0) 09:58:25 arising from a use of `M431492159472810415423670.show_M4314921594728104154... 09:58:25 The type variable `m0' is ambiguous 09:58:25 Possible fix: add a type signature that fixes these type variable(s) 09:58:25 Note: there are several potential instances: 09:58:30 :t (ap, ap.ap, ap.ap.ap, ap.ap.ap.ap) 09:58:31 Monad m => (m (a -> b) -> m a -> m b, (a1 -> a2 -> b1) -> ((a1 -> a2) -> a1) -> (a1 -> a2) -> b1, (a3 -> a4 -> b2) -> (((a3 -> a4) -> a3) -> a3 -> a4) -> ((a3 -> a4) -> a3) -> b2, (a5 -> a6 -> b3) -> ((((a5 -> a6) -> a5) -> a5 -> a6) -> (a5 -> a6) -> a5) -> (((a5 -> a6) -> a5) -> a5 -> a6) -> b3) 10:01:22 :t ap`fmap`ap`fmap`ap`fmap`ap 10:01:23 (a -> a1 -> b) -> ((((a -> a1) -> a) -> a -> a1) -> (a -> a1) -> a) -> (((a -> a1) -> a) -> a -> a1) -> b 10:05:05 @run length.show.typeOf $ ap.ap.ap.ap.ap.ap.ap.ap.ap $ (undefined :: ()->()->()) 10:05:06 1044 10:05:10 @run length.show.typeOf $ ap.ap.ap.ap.ap.ap.ap.ap.ap.ap $ (undefined :: ()->()->()) 10:05:11 1688 10:05:30 @run 1688/1044 - (1+sqrt 5)/2 10:05:32 -1.1757512020020844e-3 10:07:48 ic 10:08:28 does that mean you can get the type of the next one with a fibonacci substitution on the previous? 10:09:02 :t \f -> ap . f 10:09:03 Monad m => (a -> m (a1 -> b)) -> a -> m a1 -> m b 10:09:06 @where phi 10:09:06 I know nothing about phi. 10:09:24 Good way of deriving the golden ration IMO 10:10:13 hm the b only occurs once above 10:10:24 -!- olsner has joined. 10:10:44 :t \f -> ap . ($) . f 10:10:44 (a -> a2 -> a1 -> b) -> a -> (a2 -> a1) -> a2 -> b 10:12:20 indeed that's a fibonacci substitution 10:14:51 a2 becomes a2 -> a1, a1 becomes a2 10:17:59 :t ap.($) 10:18:00 (a1 -> a -> b) -> (a1 -> a) -> a1 -> b 10:18:15 :t ($) 10:18:16 (a -> b) -> a -> b 10:18:51 :t (ap .) 10:18:52 Monad m => (a -> m (a1 -> b)) -> a -> m a1 -> m b 10:19:31 olsner: i added the ($) to force the function instance 10:19:53 indeed 10:20:01 @run (\(a,b,c,d) -> printf "%s -> %s -> %s -> %s" a b c d) <$> unfoldr (\e@(a,b,c,d) -> Just (e, (a, printf "(%s -> %s)" b c, b, d))) ("(a -> b -> c)", "(a -> b)", "a", "c") :: [String] 10:20:03 ["(a -> b -> c) -> (a -> b) -> a -> c","(a -> b -> c) -> ((a -> b) -> a) -> ... 10:20:55 :t \x y z -> x y z 10:20:57 (t1 -> t2 -> t) -> t1 -> t2 -> t 10:21:04 that's the base case, sort of 10:21:37 which is of course a refinement of ($)'s type 10:21:41 (and id) 10:22:23 @run (12+) . sum <$> unfoldr (\e@[a,b,c,d] -> Just (e, [a, 6+b+c, b, d])) $ length <$> ["(a -> b -> c)", "(a -> b)", "a", "c"] 10:22:25 No instance for (GHC.Num.Num [GHC.Types.Int]) 10:22:25 arising from a use of `GHC.Num.+' 10:22:25 Possible fix: 10:22:25 add an instance declaration for (GHC.Num.Num [GHC.Types.Int]) 10:22:50 @run unfoldr (\e@[a,b,c,d] -> Just (12 + sum e, [a, 6+b+c, b, d])) $ length <$> ["(a -> b -> c)", "(a -> b)", "a", "c"] 10:22:51 [35,49,70,105,161,252,399,637,1022,1645,2653,4284,6923,11193,18102,29281,473... 10:24:06 @run typeOf (undefined:()->()->()) 10:24:07 Pattern syntax in expression context: undefined : () -> () -> () 10:24:13 @run typeOf (undefined::()->()->()) 10:24:15 () -> () -> () 10:24:26 @run typeOf ap.(undefined::()->()->()) 10:24:27 Couldn't match expected type `(() -> ()) -> c0' 10:24:27 with actual type `Data.Typeable.Internal.TypeRep' 10:24:35 @run typeOf $ ap.(undefined::()->()->()) 10:24:36 Couldn't match type `()' with `a0 -> b0' 10:24:37 Expected type: () -> () -> a0 -> b0 10:24:37 Actual type: () -> () -> () 10:24:43 sheesh 10:24:56 @run typeOf $ ap$(undefined::()->()->()) 10:24:57 (() -> ()) -> () -> () 10:25:03 Function instances. 10:26:51 ap f x y = f y (x y), which shows you get a fibonacci on the term level too 10:27:56 ? 10:27:57 @run (ap.ap.ap) (f::Expr->Expr->Expr) a b 10:27:59 Couldn't match expected type `((Debug.SimpleReflect.Expr.Expr 10:27:59 -> Debug.SimpleReflect.Expr.Expr) 10:27:59 -> Debug.SimpleReflect.Expr.Expr) 10:27:59 -> Debug.SimpleReflect.Expr.Expr -> Debug.Simp... 10:27:59 with actual type `Debug.SimpleReflect.Expr.Expr'Couldn't match t... 10:28:02 oops 10:28:07 @run (ap.ap.ap) (f::Expr->Expr->Expr) g h 10:28:08 No instance for (Data.Typeable.Internal.Typeable 10:28:08 Debug.SimpleReflect.Expr.Expr) 10:28:08 arising from a use of `Debug.SimpleReflect.Vars.g' 10:28:08 Possible fix: 10:28:09 add an instance declaration for 10:28:19 @run (ap.ap.ap) (f::Expr->Expr->Expr) g h :: Expr 10:28:20 No instance for (Data.Typeable.Internal.Typeable 10:28:21 Debug.SimpleReflect.Expr.Expr) 10:28:21 arising from a use of `Debug.SimpleReflect.Vars.g' 10:28:21 Possible fix: 10:28:21 add an instance declaration for 10:28:28 :t (g,h) 10:28:29 (FromExpr t, FromExpr t1) => (t, t1) 10:28:55 :t ap.ap.ap 10:28:56 (a -> a1 -> b) -> (((a -> a1) -> a) -> a -> a1) -> ((a -> a1) -> a) -> b 10:29:41 @run (ap.ap.ap) (f::Expr->Expr->Expr) 10:29:43 No instance for (Data.Typeable.Internal.Typeable 10:29:45 oops 10:29:45 Debug.SimpleReflect.Expr.Expr) 10:29:47 arising from a use of `M723199156154611174123930.show_M7231991561546111741... 10:29:49 Possible fix: 10:29:51 add an instance declaration for 10:29:53 :t (ap.ap.ap) (f::Expr->Expr->Expr) 10:29:54 (((Expr -> Expr) -> Expr) -> Expr -> Expr) -> ((Expr -> Expr) -> Expr) -> Expr 10:30:17 @run g :: Expr 10:30:18 g 10:30:29 @run g (h :: Expr) :: Expr 10:30:32 g h 10:31:09 @run (ap.ap) (f::Expr->Expr->Expr) g h :: Expr 10:31:12 No instance for (Data.Typeable.Internal.Typeable 10:31:12 Debug.SimpleReflect.Expr.Expr) 10:31:12 arising from a use of `Debug.SimpleReflect.Vars.g' 10:31:12 Possible fix: 10:31:12 add an instance declaration for 10:31:18 @run ap (f::Expr->Expr->Expr) g h :: Expr 10:31:19 f h (g h) 10:31:28 ok that works... 10:31:54 :t (ap.ap) (f::Expr->Expr->Expr) g h :: Expr 10:31:54 No instance for (Typeable Expr) arising from a use of `g' 10:31:55 Possible fix: add an instance declaration for (Typeable Expr) 10:31:55 In the second argument of `ap . ap', namely `g' 10:32:12 something is going horribly wrong in the typechecking 10:32:25 :t f.($) 10:32:26 (Typeable a, Typeable b, FromExpr c) => (a -> b) -> c 10:33:07 :t f.($)$g.($) 10:33:08 Could not deduce (Typeable b0) arising from a use of `f' 10:33:08 from the context (FromExpr c) 10:33:08 bound by the inferred type of it :: FromExpr c => c at Top level 10:34:06 :t f.id 10:34:07 (Show b, FromExpr c) => b -> c 10:34:27 oh hm right 10:35:00 you cannot actually show FromExpr values that aren't fully applied 10:35:11 which some of the subexpressions will be 10:35:59 so the Expr trick doesn't work with higher-order functions 10:42:25 hmm. a challenge? :) 10:43:59 calamari 10:44:03 oops 10:44:17 * oerjan somehow pressed return instead of tab 10:45:24 *Main> f.id :: Expr -> Expr ---> \x -> f x 10:46:05 unfortunately, f :: Expr -> Expr -> Expr becomes \x -> \x -> f x x ;-) 10:46:06 :t (ap.ap.ap) ?f ?g ?h 10:46:06 (?f::a -> a1 -> b, ?g::((a -> a1) -> a) -> a -> a1, ?h::(a -> a1) -> a) => b 10:46:28 int-e: it's (Expr -> Expr) -> Expr which becomes the problem 10:46:51 (but perhaps showsPrec can be abused to make instance Show a => Show (Expr -> a) where show f = "\\x -> " ++ show (f x) use different variables) 10:47:00 oerjan: sure, there are limits. 10:47:47 I'm not going to pursue this seriously 10:47:48 int-e: also, my examples don't actually give lambdas. 10:49:31 show f = show (['x':show n|n<-[0..]], f); instance Show a => Show ([String], Expr -> a) where show (v:vs, f) = "\\" ++ v ++ " -> " ++ show (vs, f $ var v) 10:51:10 Possibly one would end up with horrible things like instance (Witness a, Show b) => Show (a -> b) where show f = let w = witness in "\\" ++ show w ++ " -> " ++ show (f witness), plus some hackery to get identifiers. 10:54:07 instance Witness (a -> b) => Show (a -> b) where show = witness 0 10:54:50 hm 10:55:11 -!- conehead has quit (Quit: Computer has gone to sleep). 10:56:03 mroman: shall i ban you for not noticing that everyone else is using @run twh 10:57:24 > "no" 10:57:24 "no" : String 10:57:24 "no" 10:58:35 i am thinking about making "indecision" a disadvantage for my rogue, but i'm not really sure if i want to 10:58:57 `addquote i am thinking about making "indecision" a disadvantage for my rogue, but i'm not really sure if i want to 10:58:59 1182) i am thinking about making "indecision" a disadvantage for my rogue, but i'm not really sure if i want to 10:59:06 i'm pretty sure i was baited. 10:59:33 not that much 11:00:11 that situation actually stands 11:00:39 Right ... "I used to be indecisive but now I'm not so sure." 11:00:48 (I wonder who came up with this.) 11:00:49 :D 11:01:32 does anybody has good ideas for quirks which donkt hurt that much? 11:01:39 don't 11:02:00 It *is* a good weakness. "There is a cop. Should I run or hide? In the meantime I can just stand here and look suspicious." 11:02:07 i go with the typo and say "were-donkey" 11:05:24 -!- yorick has quit (Remote host closed the connection). 11:05:44 int-e: well, it may be *too* good 11:06:17 only if you want to survive 11:06:23 but how can you be sure about that? 11:07:14 as a player i'd like my character to be alive most of the time 11:08:10 but such a character could be lots of fun ... as long as it lasts. 11:08:30 But I do understand your concerns. 11:16:49 -!- Patashu[Zzz] has quit (Quit: Soundcloud (Famitracker Chiptunes): http://www.soundcloud.com/patashu MSN: Patashu@hotmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 11:16:58 -!- Patashu has joined. 11:21:42 *Main Control.Monad> (ap.ap.ap) (f::Expr->Expr->Expr) 11:21:43 \abb -> \aa -> f aa abb 11:23:02 oerjan: http://sprunge.us/iMUg?haskell (not perfect, but now it stops being fun) 11:25:44 (actually I have no clue what I did there, semantically) 11:27:36 best I can tell the witnesses are now Skolem functions with all their arguments implicit. Hah. 11:27:54 Clearly that's very useful. 11:28:14 (Especially because their names clash, too.) 11:30:16 -!- olsner has quit (Quit: Leaving). 11:37:31 -!- fcrawl has joined. 11:38:13 -!- boily has joined. 11:39:04 good international boardgaming day morning! 11:41:40 Hey 11:47:32 Tanelle! 11:48:22 I need to move my computer 11:48:29 Having it here is giving me a sore back 11:54:42 -!- Sorella has joined. 11:56:49 3SUM purportedly in o(n^2): http://arxiv.org/abs/1404.0799 12:05:47 int-e: wtf 12:11:32 Jafet: interesting. 12:13:25 -!- Phantom_Hoover has joined. 12:48:38 -!- Patashu has quit (Ping timeout: 240 seconds). 12:56:40 https://www.youtube.com/watch?v=D2xYjiL8yyE 12:56:43 -!- ter2 has joined. 12:56:46 fuck's sake hart, get your shit together 13:02:13 -!- ter2 has quit (Read error: Connection reset by peer). 13:02:28 -!- ter2 has joined. 13:05:11 that video was introductionarily interesting, lightly brushing against the Uncountability of the Reals. 13:05:29 no, it's just wrong 13:06:07 sam hughes wrote a better explanation: http://qntm.org/trollpi 13:06:45 IT'S NOT WROOOOONG! 13:06:48 but all it comes down to is that when you take the limit of a sequence of curves that limit doesn't have to share any properties with the curves in the sequence 13:08:54 Phantom_Hoover, Vi Hart is pop maths. It's for viewerships, not correctness 13:09:25 Right but it's not incorrect in a 'lies-to-children' sense, it's incorrect in the sense that it just leads viewers down the garden path. 13:10:44 and to the barn fell of doom 13:12:20 What really annoys me about Vi Hart is her video about Flexagons came out a day after I decided to make some 13:13:35 :( 13:13:54 the bastard! 13:14:18 * oerjan now imagines gingerbread flexagons. and probably should eat. 13:14:24 Now I want to make a flexagon 13:15:15 Probably not out of gingerbread 13:17:04 reminds me of https://en.wikipedia.org/wiki/Rubik%27s_Magic hmm 13:18:01 oerjan: can one make flexible gingerbread? 13:19:07 hoily! 13:19:25 quinthellopia! 13:19:46 oerjan: i c wut you did thar 13:20:05 *munch* what? 13:20:24 Taneb: what annoys me about vihart is that my friends got a private concert from her on joco cruise crazy 1 and i couldn't go :( 13:20:28 quintopia: oh the barn fell? 13:21:51 boily: i dunno do i look like a baker 13:22:59 oerjan: you are oerjan. maybe you are a baker. maybe not. hth. 13:24:38 okay 13:33:36 you like like a charlie to me 13:33:41 charlie fox 13:33:45 trot 13:40:36 .-- - ..-. ..--.. 13:41:12 nooooooooooo not the morse code .-. 13:42:54 the Morse Code is the Future! 13:43:07 .--.-..--..-.--.-..-.--..--.-..- 13:43:10 the future is the past 13:43:29 is morse code prefix-free? 13:43:53 or whatever the word is 13:43:58 no. 13:44:21 well thats dumb 13:44:35 it uses separating pauses 13:44:50 because, it's like designed to be decoded by humans. 13:44:54 so three symbols 13:45:13 humans could decipher a pauseless stream with practice! 13:45:16 and transmit it too! 13:45:29 OKAY 13:48:10 without humans in the way, communication would be much easier. 13:48:25 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 13:55:36 -!- copumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…). 14:01:32 -!- Phantom_Hoover has joined. 14:04:49 -!- boily has quit (Quit: BOARDGAMING CHICKEN!). 14:11:28 -!- shikhin has joined. 14:15:17 -!- shikhin has changed nick to shikhi. 14:19:02 Is it normal for a Haskell question to go unanswered on SO this long? http://stackoverflow.com/questions/22851565/getting-input-into-netwire-programs 14:20:12 -!- shikhi has changed nick to shikhin. 14:26:00 well it's not about a very widely used library afaik 14:28:10 -!- Lola has joined. 14:29:12 -!- applybot has quit (Quit: sorry!). 14:30:02 Hoooola 14:30:38 `bienvenido Lola 14:30:39 Lola: ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.net.) 14:32:38 -!- ter2 has quit (Ping timeout: 240 seconds). 14:33:39 -!- ter2 has joined. 14:36:28 -!- ter2 has changed nick to tertu. 14:36:39 -!- tertu has changed nick to ter2. 14:36:55 -!- Lola has left. 14:41:25 oerjan: don't bother welcoming ~canaima 14:41:38 all the spanish people of the past N months are just one person. 14:41:44 e does seem familiar 14:41:48 in fact we should just set a ban or something. it's silly. 14:42:25 Ban all the users 14:49:17 -!- conehead has joined. 14:49:52 -!- oerjan has quit (Quit: Omelette du fromage). 15:03:32 -!- applybot has joined. 15:04:39 -!- yorick has joined. 15:11:44 idris-ircslave: let x = 1 :: x in x 15:11:45 (input):1:14:When elaborating argument val to constructor Delay: 15:11:45 No such variable x 15:17:24 -!- tromp has joined. 15:25:57 -!- int-e has changed nick to notregistered. 15:26:10 -!- notregistered has changed nick to int-e. 15:28:00 -!- tertu3 has joined. 15:28:13 -!- ter2 has quit (Read error: Connection reset by peer). 15:31:37 -!- ^v has joined. 15:31:46 `pastelogs test 15:31:48 ​/hackenv/bin/pastelogs: line 2: cd: /var/irclogs/_esoteric: No such file or directory \ grep: ????-??-??.txt: No such file or directory \ http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22298 15:31:55 how'd this break!! 15:32:33 No such file or directory 15:32:36 obviously 15:33:13 HackEgo just doesn't keep have logs anymore? 15:33:15 afaik, hackego moved and the logs are now stored elsewhere 15:33:39 While previously they were on the same machine. But I don't know for sure. 15:43:48 -!- shikhin has quit (Quit: Leaving). 16:12:20 -!- fcrawl has quit (Read error: Connection reset by peer). 16:16:00 That is my impression, too. 16:16:07 Oh, I'm a bit late. 16:17:01 kmc: Just so you know, I have made the opcode generator into an opcode quiz, as per your suggestion. (Just need to collect data for a couple more architectures before making it public.) 16:18:40 -!- copumpkin has joined. 16:23:41 Call it the Label Ersatz Generator; name the quiz "ARM or LEG?" Add some Thumb to throw people off. 16:25:59 (People who pass are True Opcode Experts.) 16:26:04 -!- nooodl has joined. 16:27:55 -!- Phantom_Hoover has quit (Ping timeout: 268 seconds). 16:34:13 "incorrect; opcode HW_LD/PAWQVL is real" man, Alpha is hard. 16:35:21 link? 16:35:43 It's not in the web yet. I only have x86 and Alpha in it. 16:36:34 Also it's missing "share your score in Facebook/Google+/Twitter" buttons, which were something I was thinking of "ironically" adding. 16:36:38 (I'm trying to figure out where the ARM opcodes are in this GNU binutils GDB checkout.) 16:39:23 They seem to be somewhat complicatedly in it, due to having some structure programmatically constructed. 16:46:05 -!- Phantom_Hoover has joined. 17:05:24 Program a quiz using Internet Quiz Engine. It work better, and is faster, too. 17:06:32 And simpler. 17:07:09 Yet, it includes a few extra commands for feature such as arithmetics and a few others. 17:07:37 fizzie: did I ever show you http://ugcs.net/~keegan/complexity.html 17:11:25 I don't think I saw that. 17:11:44 And the Internet Quiz Engine will probably not be able to generate fake opcodes from n-gram models, will it? 17:13:08 fizzie: That feature is not included yet, although you can pregenerate the data. Currently, there is not the program to allow manipulation of Internet Quiz Engine files using SQL, sorry. 17:14:21 (But, it is currently possible to manipulate them using AWK, so you can use that.) 17:18:31 Well, I've already written this thing. 17:19:59 Currently IQE has no features for any kind of string manipulation at all, actually; only arithmetics and conditions are supported (although, there is timer support, multiple selection support, percentages, and some other things like that). There are no kinds of backward flow control at all, so loops are impossible. 17:23:09 -!- ^v has quit (Ping timeout: 252 seconds). 17:35:43 kmc: Here, you can have a preliminary-ish look at http://zem.fi/2014-04-05-opquiz -- though I'm going to have to go to do some sauna things real soon. 17:37:49 (Wonder if I should really add those score-share buttons.) 17:45:59 -!- bekirov has joined. 18:02:12 It is not working OK. 18:09:12 -!- variable has changed nick to trout. 18:09:35 hmm, github. why don't forks have their own issue trackers, and why can't I merge an upstream pull request to my own fork using their frontend? 18:11:19 I have looked at (but not used) the Fossil system, which is said to be simpler than Git. Fossil is a SQL-based system, implemented as a single C program. I do not know if it can solve those problem or not. 18:14:53 -!- ^v has joined. 18:15:53 No, because I have no issues with git itself. 18:17:39 -!- conehead has quit (Quit: Computer has gone to sleep). 18:18:39 You could move it to a system other than Github, even if it is still git-based system, though. 18:22:47 -!- S1 has joined. 18:27:38 -!- olsner has joined. 18:34:42 -!- MindlessDrone has quit (Quit: MindlessDrone). 18:43:21 -!- bekirov has quit (Remote host closed the connection). 19:23:32 kmc: Re the complexity class game, I would've wanted to have similar short descriptions of the (real) instructions, but those would've been less simple to extract. (And I guess also the entire list would be much larger.) 19:26:29 -!- nooodl_ has joined. 19:27:36 -!- nooodl has quit (Ping timeout: 252 seconds). 19:30:38 -!- ^v has quit (Quit: http://i.imgur.com/DrFFzea.png). 19:30:55 -!- ^v has joined. 19:34:12 -!- tertu3 has quit (Ping timeout: 252 seconds). 19:54:04 -!- lambdabot has quit (Quit: requested). 19:54:15 oops. 19:56:26 -!- fungot has quit (Quit: requested). 19:56:32 oops. 19:57:19 "j/k lol" 19:57:26 -!- fungot has joined. 19:58:22 -!- lambdabot has joined. 19:58:57 The request was supposed to go to my test instance of the bot :-/ Oh well. It took its time (as usual) but it made it back. 20:05:26 `danddreclist 50 20:05:26 danddreclist 50: shachaf nooodl boily \ http://zzo38computer.org/dnd/recording/level20.tex 20:10:43 How can I tell gdb which module to debug by default? I have two modules loaded, and the one I want to debug isn't the main program. 20:18:43 -!- evalj has joined. 20:19:21 -!- olsner has quit (Quit: Leaving). 20:20:31 -!- nooodl_ has changed nick to nooodl. 20:50:42 http://cybermap.kaspersky.com/ that looks ridiculously like in a movie 21:01:11 * Sgeo goes to listen to all the music here: http://jessicadickinsongoodman.com/2008/01/18/pachebels-rant-dissected/ 21:02:14 -!- oerjan has joined. 21:06:42 And some of those videos don't exist :( 21:09:35 -!- nisstyre has quit (Quit: WeeChat 0.4.3). 21:16:23 -!- evalj has quit (Remote host closed the connection). 21:31:33 -!- augur has quit (Remote host closed the connection). 21:37:01 -!- Patashu has joined. 21:56:05 -!- Koen_ has joined. 21:59:35 -!- Patashu[Zzz] has joined. 21:59:35 -!- Patashu has quit (Disconnected by services). 22:10:41 -!- ejls has joined. 22:20:05 <^v> sooo 22:20:12 <^v> i made bottles of beer in fishstacks 22:21:15 <^v> its 142K chars 22:21:40 <^v> who wants it? 22:21:50 me 22:22:19 <^v> k 22:23:17 <^v> https://dl.dropboxusercontent.com/u/55181333/bottles.fishstacks 22:26:57 Why are haddocks not built for this? https://hackage.haskell.org/package/python-pickle-0.2.0 22:28:01 <^v> D: me no likey python 22:29:21 -!- ^v has changed nick to PixelTerst. 22:31:13 I am still not quite sure what Object-Oriented programming actually is 22:31:52 i dunno, if memory addresses are objects, arent all programs object oriented 22:32:44 no. that's really dumb. 22:32:53 ^ 22:35:03 -!- PixelTerst has changed nick to ^v. 22:39:37 On the other hand, I have biscuits 22:40:22 k I'm outa here 22:40:24 -!- S1 has left. 22:40:43 -!- Phantom__Hoover has joined. 22:42:10 On the first hand, do you have cheese? 22:42:29 No 22:42:45 I am one of those weird people who isolates biscuit and cracker consumption 22:44:03 <^v> i am one of those weird people who makes programs in languages without an official interpreter 22:44:07 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds). 22:44:18 <^v> i made my own fishstacks inturpreter 22:44:28 <^v> but im not giving it to you, because lazyness 22:44:51 did you know that if you don't put things on the wiki, they don't exist hth 22:44:57 ^v, have you seen Eodermdrome? 22:45:18 <^v> oerjan, ohey you are the person who edited fishstacks after me 22:45:23 <^v> please dont slap me 22:45:26 <^v> my first edit 22:45:34 that's ok 22:46:01 <^v> Taneb, i remember it now ;-; 22:46:34 i'm one of those weird people who makes programs in Eodermdrome. 22:47:09 still waiting for someone to implement it so i can test the program. 22:47:24 (too lazy to code up actual graph algorithms) 22:47:43 BUT I PUT THE PROGRAM ON THE WIKI HTH 22:48:15 <^v> :P 22:53:25 -!- conehead has joined. 22:55:50 -!- Zom-B has quit. 23:09:00 -!- tertu3 has joined. 23:41:58 <^v> Well then 23:42:07 <^v> the barely page is full of shit 23:42:25 <^v> h adds 71 not 47 23:45:29 -!- oerjan has quit (Quit: Nite). 23:49:31 <^v> proof: http://puu.sh/7XtPL.png 23:49:41 <^v> ]xjjjjjhhhhxjhhhhhhhhjjjhh~ 23:49:44 <^v> is what i entered 23:50:35 <^v> OH 23:50:45 <^v> its because some dumbass misread the assembly source 23:50:50 <^v> 0x47 is 71 23:50:57 <^v> fucking.. dumbass 23:52:20 stop throwing insults 23:52:50 <^v> ok 23:52:53 <^v> i am just mad 23:54:53 that's no reason to take it out on the intelligence of someone you don't even know who made a simple mistake 23:55:04 after all, it was not that long ago you misread how Deadfish works... 23:55:37 <^v> D: 23:57:06 -!- yorick has quit (Remote host closed the connection).