00:00:25 -!- Sgeo has joined. 00:07:41 elliott_: 'Cause typeclasses are more expected and thus more optimized by compilers 00:08:08 but it seems to me like it would be almost entirely the same thing. 00:08:46 Deewiant: This was an insane typeclass 00:08:49 Multiple type families 00:09:05 And AFAICT everything should be erased at runtime 00:09:16 Hmm, maybe I need to make the fields strict? 00:09:46 If you want things to be erased at runtime then they need to be strict, yes :-P 00:11:08 Deewiant: That isn't what I meant by erased at runtime, I mean I use unsafeCoerce 00:11:19 >_< 00:11:37 Deewiant: It's a safe use of unsafeCoerce! 00:15:06 safeCoerceIPromiseReally 00:15:35 elliott_, hmm, where and how? 00:16:38 !haskell import Unsafe.Coerce; main = print (unsafeCoerce 2 :: IO Int) 00:16:59 oh rite 00:17:03 Sgeo: ? 00:17:15 !haskell import Unsafe.Coerce; main = print =<< (unsafeCoerce 2 :: IO Int) 00:17:20 0 00:17:34 elliott_, what are you using unsafeCoerce for? 00:18:10 Sgeo: dependent map 00:18:32 19:09:50: err? *thinks* O(n/2) == O(n)?? 00:18:33 19:09:57: yep 00:18:33 19:10:04: then O maths are strange 00:18:42 19:10:05: O(constant * n) == O(n) 00:18:42 19:10:08: :-P 00:18:42 19:10:18: if you know the definition it makes sense 00:18:42 19:10:21: Deewiant, that would only be true if n is treated as infinite 00:18:47 Vorpal: you used to be really smart 00:18:49 coercion from Integer to IO Int, which iirc is a function underneath - definitely _not_ a recommended use 00:19:06 oerjan: I'm surprised that even worked 00:23:36 elliott_: wow 00:24:22 !haskell import Unsafe.Coerce; main = print ((unsafeCoerce 2 :: String -> Int ) "hi") 00:24:27 5836665117072162816 00:24:53 !haskell import Unsafe.Coerce; main = print ((unsafeCoerce 2 :: String -> Int ) "hi") 00:24:58 5188146770730811392 00:25:06 marvelous 00:25:11 awww not referentially transparent. 00:25:20 well duh 00:26:08 I'm really surprised that works 00:26:22 !haskell import Unsafe.Coerce; main = print ((unsafeCoerce 2 :: String -> Int ) undefined) 00:26:27 ​-2810246167479189504 00:26:44 !haskell import Unsafe.Coerce; main = print (map (unsafeCoerce 2 :: Int -> String ) [0..]) 00:26:49 ​[" 00:26:56 weeeee segfault 00:27:39 !haskell import Unsafe.Coerce; main = print ((unsafeCoerce (2 :: Int) :: String -> Int ) undefined) 00:27:44 ​-2810246167479189504 00:27:50 oerjan: ok, _now_ i'm confused. 00:27:57 there we go, perfectly safe. 00:27:58 result independent of defaulting??? 00:28:06 !haskell import Unsafe.Coerce; main = print ((unsafeCoerce 2 :: String -> Int ) undefined) 00:28:12 ​-2810246167479189504 00:28:37 itt: fun with Haskell abuse. 00:28:55 !haskell import Unsafe.Coerce; main = print ((unsafeCoerce (2::Integer) :: String -> Int ) undefined) 00:29:00 ​-5116089176692883456 00:29:07 the strangest thing is that it implies it actually _looks_ at the argument 00:29:10 oerjan: huh so EgoBot follows different defaulting rules? 00:29:14 huh 00:29:24 oerjan: huh so EgoBot follows different defaulting rules? 00:29:26 !haskell import Unsafe.Coerce; main = print ((unsafeCoerce (2::Integer) :: String -> Int ) undefined) 00:29:31 504403158265495552 00:34:05 !haskell import Data.Typeable; main = print $ typeOf 2 00:34:24 gah 00:34:56 the Typeable ruins the defaulting :( 00:35:14 hm... 00:35:38 !haskell main = print (2^100) 00:35:44 1267650600228229401496703205376 00:35:55 nope, still Integer 00:36:00 -!- zzo38 has joined. 00:37:20 What's the use of undefined here? 00:37:47 i just wanted to see if the coerced-to-function thing actually used its argument 00:38:08 I added "case guards" to "proposal for more-notation" 00:38:13 it _appears_ to, since undefined gives a consistent result, different from the others 00:38:44 but whether that's what actually happens, i don't want to bet :P 00:38:48 hm... 00:39:18 Are you no good at betting? 00:39:31 !haskell import Unsafe.Coerce; main = let f = unsafeCoerce 2 :: String -> Int; print [f "hi", f undefined] 00:39:46 oops 00:39:51 !haskell import Unsafe.Coerce; main = let f = unsafeCoerce 2 :: String -> Int in print [f "hi", f undefined] 00:39:56 ​[6989586621679009792,6989586621679009792] 00:40:04 wonderful :P 00:41:53 Can unsafeCoerce work with unboxed types? That seems the only use where such thing would be useful 00:41:53 oh CakeProphet tried something similar, but i guess printing a fake String has a higher chance of segfaulting than a fake Int 00:42:17 zzo38: no, it is intended only for boxed types 00:42:51 Boxed types have a representation that you do not know so how can it ever help with anything? Is it useful for FFI? 00:43:19 Is it useful to use with newtype? 00:43:35 zzo38: it is useful for when you know a value is of a type but haskell's type system cannot prove it. 00:45:08 It doesn't seem best way to me, unless using with FFI. Maybe it would be better to be able to type in your own proof so that the entire program is provable 00:45:14 -!- azaq23 has joined. 00:45:21 say if you have a Map where you want to put values of different types, and you are using them in a way that you know is safe but since it's a Map haskell can only put one type in it. then you can use Any as the type of elements, and unsafeCoerce to convert to the real type (Any is specifically defined to let this be safe) 00:45:48 well yes but ghc does not have a dependent type system, so you cannot give a proof 00:46:07 but unsafeCoerce allows you to promise that you know it's OK 00:46:12 oh oerjan explained for me? 00:46:12 neato 00:46:15 OK, I suppose that seems one use of it. 00:47:13 But it does not seem that is the way of doing in Haskell. In C programming you would do that stuff in a list or whatever, it does not seem in Haskell to do that. 00:47:30 e.g. Dynamic is implemented using unsafeCoerce under the hood. you probably want to use that instead unless you need optimal efficiency (Dynamic requires comparing Typeable representations) 00:49:27 zzo38: it is the way of doing it in haskell 00:49:52 Of course in C you just use pointer cast not unsafeCoerce. 00:51:50 you would just use a file-scope variable in C for what I'm doing :) 00:52:03 in spirit unsafeCoerce _is_ just a pointer cast i think, although since the types are both boxed they probably are the same underlying C pointer type when compiled via C. 00:52:45 Is there the way to write optimizable types so that you can compile with checking in one way, and do the other compile with changing it optimizing to use unsafeCoerce and removing other unnecessary checks? 00:53:21 zzo38: you can probably use rules for that 00:54:29 Do you mean the RULES pragma? Yes I suppose that can do some things like that 00:56:23 But I don't think that can tell it to avoid some checks that it would ordinarily do anyways; there should be another pragma for that purpose. 00:56:42 well rules are done after typechecking of course 00:57:56 you can implement unsafeCoerce with a rule? 00:58:00 or does it typecheck again 00:59:03 I mean something like, some functions have nonexhaustive patterns, you have tested it and can prove that the patterns you have are good enough, put in a pragma that tells it to remove that check when optimization is enabled 00:59:56 btw, with existentials you can do what i want as a list 00:59:59 but then lookup is O(slow) 01:00:03 as opposed to maps which aren't O(slow) 01:02:44 elliott_: rules have to typecheck, but you could presumably have a rule to introduce a use of unsafeCoerce 01:05:03 can I have a rule that introduces a rule that introduces TH? 01:05:18 oerjan: right 01:08:26 CakeProphet: Not as far as I know, but if something could do that it ought to be some command added to TH allowing that, instead of a rule pragma. 01:10:44 i vaguely thought TH was applied before the core stage and rules during it 01:12:32 can I have recursive rules 01:12:38 with conditionals? 01:14:47 I am a warrior bbl lawl 01:15:00 I think it might be useful to have TH commands to allow you to do all of that stuff, but it would become difficult to implement due to translation to/from Core and doing TH stuff in Core and back again it makes difficult, I think. 01:15:02 `quote machine 01:15:05 100) I can do everything a Turing machine can do, except love \ 142) [...] i'm a law student so i am loving my bread machine \ 155) how does a "DNA computer" work. von neumann machines? CakeProphet, that's boring in the context of DNA. It's just 01:15:22 `quote machine elliott 01:15:23 No output. 01:15:29 I am sad safe. 01:15:43 *fase 01:16:04 Is that the correct syntax for the `quote command? 01:16:13 *faes 01:16:25 i think it takes either a number or a rexex 01:16:28 *regex 01:16:49 `quote (??{2+@}) 01:16:51 No output. 01:17:09 `quote elliott.*?machine 01:17:11 633) elliott_: it's a machine that looks like you! 01:17:54 `quote ^x 01:17:56 No output. 01:17:59 `quote ^q 01:18:01 No output. 01:18:17 `quote ^<.*?> q 01:18:19 No output. 01:18:21 also the check for a number sometimes blew up but i think elliott fixed that 01:18:22 :( 01:18:25 Can there be kinds for classes? For example if [] represent kind for classes, then [* -> *] is the kind of the Monad class, and then, if you have something named Z of kind * -> [* -> *] then you can have a function of type (Z b) a => a Bool -> b 01:18:39 But maybe it is impossible and nonsense 01:18:54 nonpossiblesense 01:19:05 oh by the way I'm not here anymore. 01:19:14 zzo38: there are certainly kinds for the class _arguments_ 01:20:14 oerjan: But that is not what I meant 01:21:37 well i don't know. someone probably has thought about it. 01:22:49 What I describe might not be mathematically possible though (but I am unsure) 01:23:15 -!- CakeProphet has quit (Ping timeout: 240 seconds). 01:25:23 Actually I think it is in fact wrong and impossible, at least the way I described. 01:25:48 But maybe not. 01:25:54 I am confused a bit. 01:26:06 I keep changed my mind now I got confusing 01:29:24 -!- azaq23 has quit (Ping timeout: 276 seconds). 01:30:08 happens to me too 01:32:38 Do you know? 01:32:45 no 01:33:37 -!- azaq23 has joined. 01:53:23 -!- zzo38 has quit (Remote host closed the connection). 01:57:14 -!- GuestIceKovu has joined. 01:58:39 -!- Slereah has quit (Ping timeout: 276 seconds). 02:05:31 oerjan: i think i figured out why fingerprints are slower this way??? yay??? 02:06:08 -!- elliott_ has quit (Remote host closed the connection). 02:06:42 good, good 02:07:39 -!- elliott has joined. 02:10:14 oerjan: it didn't help :( 02:10:50 bad, bad 02:13:21 maybe my FPState thing is bad 02:13:24 bad, bad 02:14:02 food, food --> 02:16:42 My web database class will involve PHP 02:17:19 Can someone please give me a gun to shoot my foot off with? 02:17:46 the gun is called not transferring 02:17:50 it gets deadlier by the second 02:18:24 Would it be terrible for me to just graduate from here then make up classes at Stony Brook while working towards a more advanced degree in CS? 02:29:22 Deewiant: Actually you're soooooo wrong I don't see how this could possibly be slower at all, my previous use of a typeclass was used exclusively through an existential. 02:29:30 SO HA 02:34:37 -!- Lymee has quit (Ping timeout: 245 seconds). 02:34:46 I should attempt to grasp existentials 02:36:12 data Worker x y = forall b. Buffer b => Worker {buffer :: b, input :: x, output :: y} 02:36:19 Oh come on, is that all they're used for? 02:37:07 > fail "test" :: Either String Bool 02:37:08 Overlapping instances for GHC.Base.Monad 02:37:08 (Data... 02:37:17 O_o 02:37:43 lambdabot's instances are _really_ messed up. 02:38:07 > fail "test" 02:38:08 No instance for (GHC.Show.Show (m a)) 02:38:08 arising from a use of `M7990887826... 02:38:23 > fail "test" :: IO () 02:38:24 02:38:59 For some reason, when oerjan first said it, I was thinking error instead of fail 02:39:13 > fail "Discarded" :: Maybe Bool 02:39:13 Nothing 02:39:40 > fail "test" :: Either String a 02:39:41 Overlapping instances for GHC.Base.Monad 02:39:41 (Data... 02:39:51 :t Just Right 02:39:52 forall b a. Maybe (b -> Either a b) 02:41:37 Oh come on, is that all they're used for? 02:41:39 what 02:41:57 "A TUTORIAL USED ONE EXAMPLE LET ME JUMP TO A CONCLUSION AND ACT WEIRDLY ABOUT IT" 02:42:05 I thought the first motivating example in http://www.haskell.org/haskellwiki/Existential_type was the only motivating example 02:42:13 elliott, yes, that's what I did :/ 02:42:28 ONLY ONE MOTIVATING EXAMPLE 02:42:29 OH NOES 02:42:33 what's wrong with only one motivating example 02:42:52 well it's not really very motivating. 02:43:03 02:53:58 What does Python have to do with anything? 02:54:05 Oh, wrong Python 03:08:09 -!- elliott has quit (Remote host closed the connection). 03:08:21 -!- elliott has joined. 03:09:53 -!- azaq231 has joined. 03:11:42 -!- azaq23 has quit (Ping timeout: 258 seconds). 03:30:45 -!- Lymee has joined. 03:40:17 -!- Lymia has joined. 03:40:19 -!- Lymee has quit (Disconnected by services). 03:40:21 -!- Lymia has changed nick to Lymee. 03:53:56 -!- augur has quit (Remote host closed the connection). 04:10:34 -!- MDude has changed nick to MSleep. 04:48:15 -!- CakeProphet has joined. 05:11:35 -!- derrik has joined. 05:27:36 -!- elliott has quit (Ping timeout: 240 seconds). 05:32:13 -!- derrik has quit (Ping timeout: 264 seconds). 05:33:20 -!- derrik has joined. 05:42:04 -!- derrik_ has joined. 05:42:25 -!- derrik_ has quit (Client Quit). 05:44:49 -!- derrik has quit (Ping timeout: 264 seconds). 06:05:43 -!- CakeProphet has quit (Ping timeout: 250 seconds). 06:06:10 -!- GreaseMonkey has quit (Quit: The Other Game). 06:29:31 -!- CakeProphet has joined. 06:29:31 -!- CakeProphet has quit (Changing host). 06:29:31 -!- CakeProphet has joined. 06:36:01 -!- cheater has quit (Ping timeout: 258 seconds). 06:36:15 -!- oerjan has quit (Quit: Good night). 06:38:30 -!- cheater has joined. 06:47:34 -!- GreaseMonkey has joined. 07:11:33 -!- GreaseMonkey has quit (Quit: The Other Game). 07:12:51 -!- GreaseMonkey has joined. 07:12:51 -!- GreaseMonkey has quit (Changing host). 07:12:51 -!- GreaseMonkey has joined. 09:02:10 -!- Taneb||Kindle has joined. 09:02:27 Hello 09:02:50 I have TWO lines today 09:03:22 Because I am piping the output of Taneb into a Kindle 09:03:38 Or is it the other wa round? 09:04:28 Lurker with an interesiting name yiyus tell me 09:05:39 Oh goodbye 09:05:46 -!- Taneb||Kindle has quit (Client Quit). 09:06:07 bye 09:32:16 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 10:49:17 -!- GreaseMonkey has quit (Quit: The Other Game). 10:52:00 -!- monqy has quit (Quit: hello). 11:59:18 -!- smoking has joined. 12:01:15 hi to all 12:05:48 -!- smoking has left. 12:05:51 -!- sebbu has quit (Ping timeout: 258 seconds). 12:10:55 -!- boily has joined. 12:11:05 -!- cheater has quit (Quit: Ex-Chat). 12:11:46 -!- cheater has joined. 12:22:28 -!- derrik has joined. 12:30:53 -!- Sgeo has quit (Ping timeout: 245 seconds). 12:45:11 -!- sebbu has joined. 13:18:54 -!- derrik has left. 13:46:02 -!- BeholdMyGlory has joined. 14:04:03 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:14:47 -!- FireFly has joined. 14:15:01 -!- azaq231 has quit (Quit: Leaving.). 14:27:16 -!- Phantom_Hoover has joined. 14:31:59 -!- copumpkin has joined. 14:41:51 -!- BeholdMyGlory has changed nick to Behold. 14:48:19 -!- MSleep has changed nick to MDude. 14:48:41 -!- Behold has changed nick to BeholdMyGlory. 14:48:46 -!- BeholdMyGlory has quit (Remote host closed the connection). 14:49:17 -!- BeholdMyGlory has joined. 14:50:00 -!- augur has joined. 14:53:18 -!- BeholdMyGlory has left. 14:54:28 -!- BeholdMyGlory has joined. 15:13:08 -!- Taneb has joined. 15:13:20 Hello 15:14:36 When I get home I will commence in a project that as far as I am aware no one has yet attempted 15:15:16 A program that outputs "Helllo, World!"... 15:15:29 Via One Hundred Esoteric Progra.. 15:15:49 MMInG LANGUaGES 15:16:20 The lack of caps lock on akindle is both a blessing and a curse 15:17:16 The placement of the backspace buttone is undoubtedly a curse, though 15:17:47 This will be a long and arduous(?) quest 15:18:10 I will venture into the savage land of brainfuck 15:18:30 Through the dreaded Malbolge swamps 15:19:15 Into the high mountains of Lazy K 15:20:03 Explore the variable-dimension funge space 15:20:38 And probably end with HQ9+ 15:21:07 LEVEL 1: HQ9+ 15:21:07 h 15:21:54 LEVEL 2: deadfish 15:22:44 Err... what's the ASCII code for "h"? 15:23:01 > ord 'h' 15:23:02 104 15:23:11 Merci 15:23:15 brb 15:23:17 > map ord "Helllo, World!" 15:23:18 [72,101,108,108,108,111,44,32,87,111,114,108,100,33] 15:27:37 -!- Taneb has quit (Ping timeout: 252 seconds). 16:01:25 -!- augur has quit (Ping timeout: 252 seconds). 16:10:08 -!- augur has joined. 16:35:22 Taneb: You're not here. 16:35:37 Taneb: It would take you centuries to make a Malbolge program that actually writes "Hello, world!" 16:36:21 Gregor: You are here. 16:36:48 olsner: You too are here! 16:36:58 Am not! 16:37:40 Taneb: Also make sure that ShaFuck is included. 16:39:08 OK, /me is shocked to learn that apparently Malbolge has been cracked quite a bit more than it was last I checked. 16:39:24 I seem to recall that the closest to a Hello, world! that there was output something like HeLLo 17:10:00 -!- nisstyre has quit (Read error: Connection reset by peer). 17:12:58 -!- CakeProphet has quit (Read error: Operation timed out). 17:33:15 -!- boily has quit (Ping timeout: 260 seconds). 17:50:58 -!- hagb4rd has joined. 18:06:26 -!- elliott has joined. 18:27:27 16:35:37: Taneb: It would take you centuries to make a Malbolge program that actually writes "Hello, world!" 18:27:28 elliott: You have 3 new messages. '/msg lambdabot @messages' to read them. 18:27:30 Gregor: What? It's been done. 18:28:35 -!- Wamanuz2 has quit (Remote host closed the connection). 18:28:51 16:39:08: OK, /me is shocked to learn that apparently Malbolge has been cracked quite a bit more than it was last I checked. 18:28:51 16:39:24: I seem to recall that the closest to a Hello, world! that there was output something like HeLLo 18:29:09 Gregor: The first program was "hello world" with random-ish capitalisation which was generated. 18:29:18 Gregor: But only a few years after -- like, two thousand and five -- people hand-wrote programs for it. 18:29:24 (Well, modulo the "encryption" step and the like.) 18:29:38 Malbolge is really susceptible to simple cryptanalysis. 18:32:20 -!- Wamanuz has joined. 18:42:33 safe cryptography is hard to build into a language if you intend to distribute the interpreter 18:47:16 olsner: only as hard as cryptography in general 18:47:32 Pff 18:47:36 ShaFuck is better :P 18:48:03 what I meant was that if you distribute the interpreter people will be able to write programs in it regardless of how clever you make the built-in encryption 18:48:39 olsner: um, no? 18:49:00 olsner: what you're saying is "if you have the source code to a cryptographic program you can break its cryptography" 18:49:04 to which i respond "lol" 18:49:28 meh, nm 18:49:42 olsner: If the routine is just "check signature, then run" then sure you can stub it out or whatever 18:49:47 But then you're not writing in the same language 18:49:56 And with things like ShaFuck it's much more entwined in the semantics 18:50:36 -!- kmc has joined. 18:51:07 an esolang parody of Rails would be pretty good 18:51:46 "Functions are declared using English names but must be called through the French equivalent. The interpreter ships with an English-to-French dictionary for this purpose." 18:53:46 elliott: malbolge is not like "check signature, then run" 18:54:04 sure 18:54:26 Malbolge's flaw is that it's a crappy crypto system 18:54:27 :P 19:07:35 -!- pumpkin has joined. 19:07:36 -!- Nisstyre has joined. 19:10:37 -!- copumpkin has quit (Ping timeout: 252 seconds). 19:11:37 -!- Zuu_ has joined. 19:12:27 -!- copumpkin has joined. 19:12:42 -!- Zuu_ has changed nick to Zuu. 19:15:09 -!- pumpkin has quit (Ping timeout: 240 seconds). 19:33:14 -!- oerjan has joined. 19:33:37 -!- copumpkin has changed nick to richardwagner. 19:34:26 kmc, what bit of Rails is that parodying? 19:34:37 Also, parody esolangs are unloved; go for it. 19:35:00 Phantom_Hoover, if you have a class named "Child" it will look for a database table named "children" 19:35:12 to this end it contains a long list of irregular English plurals 19:35:32 -!- richardwagner has changed nick to copumpkin. 19:35:41 omg a copumpkin 19:35:41 kmc, ...really? 19:35:46 omg yes 19:35:49 Like, this is a thing that happens in the real world? 19:35:52 is this place just Super #haskell 19:35:53 `quote copumpkin 19:35:58 461) The wickedest man of all. Surpassed only in wickedness by the wicked witches of the west and east. you talking about me again? Yes. k 19:36:05 kmc, BE WARNED 19:36:20 Also I am not in #haskell which is why this place is superior. 19:36:23 kmc: well i think we went over quota about when you arrived 19:36:31 kmc: I've been in here for millennia! 19:36:35 me neither, these days 19:36:38 I was in here way before it was even starting to be cool 19:36:52 Phantom_Hoover, http://stackoverflow.com/questions/3378316/change-plural-form-of-generated-model-in-rails 19:37:23 kmc: it's not our fault you people keep coming here when it's mentioned in #haskell 19:37:29 oh and "The Rails core team has stated patches for the inflections library will not be accepted in order to avoid breaking legacy applications which may be relying on errant inflections." 19:37:37 that's a sign of a great API design guys 19:37:53 "Let's make the language second-guess the programmer!" "OH SHIT we have to keep all the bad guesses forever" 19:38:02 is this place just Super #haskell <-- mind you there are people going in both directions. 19:38:20 we probably sent zzo38 to you *MWAHAHAHA* 19:38:26 yeah that was our fault, sorry guys 19:38:36 haha 19:38:41 kmc: it's not our fault you people keep coming here when it's mentioned in #haskell 19:38:50 Haskell: The Gathering 19:39:14 Well, except for the Great Haskell To Esoteric To Ooc-lang Trek. 19:39:22 technically i was in #esoteric before #haskell, _but_ i had already learned haskell when i got to #esoteric 19:39:30 Phantom_Hoover: That was a beautiful diaspora. Am I using the word diaspora right. 19:39:48 elliott, probably not, but WHO CARES. 19:39:53 oerjan: well that's what happens when you single-handedly write over half of the haskell 98 report. 19:40:00 (do not listen to oerjan's objections, people, he is far too modest.) 19:40:17 kmc, also, wow. 19:42:10 elliott: dammit i was considering making an "inb4 elliott says ..." comment 19:42:56 "Haskell is an esoteric language anyway" 19:43:09 !languages 19:43:12 erm 19:43:13 kmc, from a certain point of view, it is. 19:43:15 !help languages 19:43:15 ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh. 19:43:24 proof: see above categorization 19:43:24 That point of view is that of an imperative-only idiot, of course. 19:43:30 OH THAT WACKY GREGOR 19:43:34 why is c++ not under "esoteric" 19:43:44 Phantom_Hoover: ais regularly refers to haskell as esoteric :P 19:43:53 kmc: that would be too much of a compliment 19:44:06 and why add a joke languages category if it'd only have one entry? 19:44:10 elliott, a category that includes NetFuck but not C++? 19:46:03 !forth 2 2 + . 19:46:05 4 19:46:17 The real question is, why isn't Forth under esoteric :P 19:46:52 !fyb :[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*; 19:46:53 ​Use: !fyb . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/fyb/ 19:47:00 !fyb does-this-still-work :[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*; 19:47:11 It probably doesn't X-D 19:47:20 !underload (:*)(:*)((:)~(*)**)~^^S 19:47:21 ​:::*** 19:47:30 ​Score for Lymee_does-this-still-work: 0.6 19:47:47 Lymee: Impressive. 19:47:52 i think many people well-versed in FP would consider Haskell to be esoteric 19:47:57 it's not a typical functional language 19:48:19 but almost none of the other functional languages are properly functional 19:48:39 how so? 19:49:09 !fyb does-this-still-work :@++[.....................................................................]*;:[........]@@[[+]++++++++++++!>];:[........]@@[[+]++++++++++++!>];:[........]@@[[+]++++++++++++!>]; 19:50:12 ​Score for Lymee_does-this-still-work: 0.0 19:50:36 I guess the defect thing is now gone? =p 20:02:13 it defected 20:15:30 DuckDuckGo doesn't give any easily-visible way to deactivate their spelling correction on searches. 20:15:31 -what- 20:16:00 It doesn't correct unless you click the link. 20:16:09 That's a Google thing. 20:16:15 No. 20:16:28 http://duckduckgo.com/?q=headshoots 20:16:40 Note distinct lack of any results even vaguely related to what I'm looking for. 20:17:12 Note also lack of any way to get to said results. 20:17:34 I suspect that's merely because all matching is fuzzy, whether it precorrects the query or not. BUt hmm, it is a bit difficult to get it to work. "headshoots dwarf fortress" works. 20:17:44 Phantom_Hoover: But hey, click the feedback icon in the lower-right and tell 'em; I got a reply within a day. 20:18:09 Personally that's the first I've seen of it. 20:41:26 What's a headshoot? 20:42:19 's when a dorf got shoot in t'head, ye ken 20:43:54 Gregor: I don't know, but a bunch of them make a fortress. 20:44:59 -!- monqy has joined. 20:45:01 > ord 'h' 20:45:02 104 20:45:28 helo oerjan 20:45:28 * oerjan thinks he detects an off-by-one error 20:45:31 heloerjan 20:45:52 iiisisiiio 20:45:57 eieio 20:45:59 outputs 103 doesn't it 20:46:04 Thoerjan. 20:46:07 it doesnt even work because deadfish outputs in decimal 20:46:25 well yeah but it's not like he can get any closer :P 20:46:36 Phantom_Hoover: wat 20:47:27 oerjan, u 20:47:29 um 20:47:30 you 20:47:31 no 20:47:32 you 20:47:46 oerjan, http://www.youtube.com/watch?v=Pj2NOTanzWI 20:47:48 watch this 20:47:52 watch all the suggestions 20:48:01 NOOOOOOOOOO not the youtube 20:48:02 Well 20:48:14 Except the Japanese McDonald's ad one. 20:48:19 I have no idea where that one came from. 20:48:26 also the stoner on the price is right one? 20:48:59 Phantom_Hoover: I'm surprised oerjan got his Ph.D. without studying that. 20:49:45 I know, it's ridiculous. 20:51:03 How would he know what the largest number is? 20:51:17 didn't oerjan quote about the same figure for when arithmetic might break down once 20:51:18 I THINK HE DID 20:58:46 i guess it's what we mathematicians call, er, what was it again 20:59:01 ah yes, "a folklore result" 20:59:20 (or theorem, but a number is not a theorem) 21:00:33 also, i now need to work out a plan to steal elizabeth 5's dress. preferably before it's toast. 21:02:51 what do you have against toast :( 21:04:07 -!- zzo38 has joined. 21:04:13 nothing, but the dress would be no use if it cannot change shape. 21:06:41 I have a difficult situation in pokemon card. If the opponent's hand (five cards) consists entirely of trainer cards, I have an exactly one in three chance of winning (assuming I assume he does have), but I cannot see his cards and have no way of knowing that. Alternatively I may try to confuse/sleep, but then I have to survive for seven turns or do it enough times in a row to knock them out. 21:07:41 oerjan, will you wear dresses beyond the dreams of avarice? 21:08:13 beyond _any_ dreams, Phantom_Hoover 21:08:27 oerjan, don't tell Lymee! 21:08:34 O KAY 21:09:13 A mod for DF has Nordic gold in it. 21:09:14 Uuu? 21:09:22 This is funny for a number of reasons. 21:09:32 Lymee: no, not unununium, nordic gold 21:09:56 Uuuuuu... >:c 21:10:01 * Lymee puts oerjan into a poofy pink dress 21:10:03 what's so funny about nordic gold 21:10:04 Firstly, Nordic gold is a very recent invention and is only used for Euro coins. 21:10:20 wat 21:10:31 tempus googlit 21:10:43 Secondly, it's 5% aluminium, and aluminium is as rare as platinum in DF. 21:11:34 um google says it is (was?) used in swedish 10-krona 21:12:35 Hmm. 21:13:21 OK, it was developed 10 years before the Euro. 21:13:40 That's still stupidly recent. 21:14:42 -!- ais523 has joined. 21:15:58 happy australian mailman mailing list reminders day! 21:16:02 I selected NIGHTMARE since that has a better chance than the opponent's hand consisting entire of trainer cards (which is very unlikely, although he now has six cards) 21:19:00 oh no, is it a bad thing if I see a statement by zzo38 and actually know the context? 21:20:12 Now he is confused and I only need to do 1 point of damage to knock him out. If I select NIGHTMARE, I have 2/3 chance to win this turn (he has DARK CLEFABLE [Lv33]). If I select POLTERGEIST, then I have a 2/3 chance if he has two trainer cards, 1/3 if he has one, 0 if he has none, and guaranteed if he has at least three. 21:21:17 He did not play any cards last turn so he probably has some trainer cards (he has 6 cards remaining in his draw pile and is unlikely to use BILL or PROFESSOR OAK at this time). If he had energy cards he probably would have used them (his bench pokemons have not enough energy to attack at this time), or basic pokemon cards. 21:21:23 But I don't know. What do you suggest? 21:22:04 ais523: resistance is futile 21:22:21 what about reactance 21:22:37 well, reactance = imaginary resistance 21:22:49 that's probably going to be futile too if real resistance is futile 21:22:49 He has thirteen energy cards in his trash, if that would help. 21:23:19 on the other hand, imagining it may be more productive if doing it for real doesn't work 21:23:31 but it's going to depend a lot on the frequency 21:24:37 His two bench pokemons are resistance to me, but they don't have enough energy to attack and they can still be sleep or confuse. They have not enough energy to retreat a second time (unless he has an energy card in his hand, which he probably does not). 21:25:34 Which attack should I play? 21:25:56 psyduck 21:26:46 -!- FireFly has quit (Quit: FireFly). 21:26:59 wouldn't a perfect inductor have futile resistance and non-futile reactance? 21:27:12 i'm with cheater on this one 21:28:17 Inductor? 21:28:23 kmc: do you /have/ a perfect inductor? 21:28:33 a whole load of engineers would be interested in it 21:28:33 yep 21:29:03 Phantom_Hoover: the dual of a capacitor; unlike the duals of some components, it's possible to manufacture one in real life, although they're generally avoided because they can't easily be placed on microchips 21:29:05 Perfect generally just means modulo energy losses, right? 21:29:17 ais523, I know, we did them in AH physics. 21:29:31 i heard talking about agda can induce coma perfectly 21:29:38 how is that for a perfect inductor 21:29:53 did you use them for anything other than demonstrating they obeyed the right formulas? 21:30:16 it's amusing watching physicists do electronics, the circuits they use are always physically massive 21:30:26 wires tens of centimetres long, etc 21:30:33 So a perfect inductor would be one where E = -L(dI/dt) exactly all the time, surely? 21:30:52 are you sure you mean E there? 21:31:01 yes E is voltage 21:31:12 voltage is more commonly V 21:31:19 E is common for voltage 21:31:32 no, it's common for energy 21:31:32 ais523, I couldn't work out what the LaTeX for the curly one is. 21:31:49 maxwell's equations canonically use D B E H 21:31:58 kmc, irrelevant. 21:32:03 no u 21:32:13 None of those is emf. 21:32:22 21:31:19: E is common for voltage 21:32:27 This is so wrong I don't even. 21:32:47 It's bad enough that E is used for energy and electric field; using it for voltage too would be far, far too insane. 21:32:52 inductors aren't "generally avoided", they're everywhere 21:33:00 Phantom_Hoover: I suspect cheater is just trolling again 21:33:04 but yeah, cheaper alternatives are used when possible (as with anything else) 21:33:17 kmc: avoided in the sense that people don't use them unless they have to 21:33:19 but often they do 21:33:25 ais523, sure, but it's more fun to pretend that he's that stupid. 21:33:26 that's the same as any part though 21:33:44 kmc: I've even seen circuits that use VDNRs just so they don't have to use inductors 21:33:59 Phantom_Hoover: advanced stupidity can be a kind of trolling 21:34:13 elliott, I'm imagining courses in advanced stupidity. 21:34:24 elliott: I think the difference between stupidity and trolling is the same as that between ignorance and malice 21:34:38 I do not have PSYDUCK. I have HAUNTER [Lv26]. 21:35:00 ais523: exactly, so intentional stupidity is a kind of trolling 21:35:07 admittedly, not a very common one 21:35:10 elliott: yes 21:35:18 not very common? 21:35:26 monqy: intentional /feigned/ stupidity is common 21:35:33 intentionally applying real stupidity is something else entirely 21:35:35 elliott: at least Usenet trolls commonly make typos or grammar errors 21:35:44 in the hope of causing more confusion when someone (often another troll) points them out 21:36:05 elliott: would you call "refusing to learn" real or feigned stupidity? 21:36:13 kmc, the problem is that they are not that easy to make 21:36:21 ais523: sounds like intentional real 21:36:30 monqy: I think I think so too, but am not sure 21:36:36 ais523: depends what their motivation is, I suppose 21:36:49 ais523: but it's disruptive whether intentional or not 21:37:03 one thing i'm learning about this channel is that whenever cheater speaks there ensues a long-winded discussion of trolling 21:37:15 regardless of whatever cheater said 21:37:15 that's only happened like three times 21:37:22 Which attack do you think has a greater probability of winning? 21:37:27 which i think makes him the master troll 21:37:27 kmc: if you're known as a troll, even not trolling is trolling, because people look for the trollish aspects 21:37:29 zzo38, psyduck 21:37:37 kmc: psyduck isn't an attack... 21:37:48 I told you, I do not have PSYDUCK. I have HAUNTER [Lv26]. 21:38:12 zzo38, out of the possibilities you list i would take HAUNTER 21:38:16 zzo38: which expansion is that Haunter from? (what are its attacks, if you don't know expansions?) 21:38:25 It is Lv26. 21:38:26 but that is only because you have just mentioned one possibility 21:38:48 kmc: I'm not sure provoking a vaguely interesting discussion about trolling counts as good trolling 21:38:49 zzo38: I can't look up TCG cards based on their levels on the usual sites 21:38:52 Attacks are POLTERGEIST (damage according to number of opponent's trainer cards in hand), and NIGHTMARE (2 damage + either sleep or confusing) 21:39:10 so although the level might be a unique description, it's useless in solving the puzzle 21:39:20 hmm... how many HP is the opponent from being KOed? 21:39:21 well if he has a lot of trainer cards then go for poltergeist 21:39:46 nightmare's going to give you more than a 50% chance of surviving the turn, so it seems like a good use 21:39:48 But he also has a bench card DARK CLEFABLE [Lv33] (reduces damage to DARK cards by 0, 1, or 2, at random). (His active pokemon card is also DARK) 21:39:53 unless one of the trainer cards is a full-heal equivalent 21:40:26 (Magic: the Gathering makes a better esolang than Pokémon TCG, incidentally; there's more state to maintain) 21:40:33 He is already confused, he played nothing last turn, he has 7 cards remaining in his draw pile, 13 energy cards in his trash, and none of his bench pokemons have enough energy cards to attack (even if he picks one up next turn) 21:40:47 I have not seem his hand! 21:41:07 and how many prizes are each player from losing? and do you have benched Pokémon? 21:41:23 I just know that it consists of six cards. It *probably* has no energy cards or basic pokemon cards but I am unsure. 21:41:49 also, do you have any trainer cards in hand yourself? 21:41:51 Both of us need to knock out one opponent's pokemon to win. I have bench pokemons, both DROWZEE [Lv12] neither of which will help. 21:41:55 I have no trainer cards myself. 21:42:02 I have only energy cards. 21:42:20 hmm, should I fix shiro's massive performance regression or fail to implement scapegoat again... 21:42:32 He need 1 damage to be knocked out, I need 2 damage to be knocked out. 21:43:00 zzo38: go with Nightmare, the probabilities are much better that way 21:43:02 Actually I do have SWITCH, but that won't help now. 21:43:05 ais523: OK. 21:43:07 elliott: Fix shiro, I await your superior funge-space 21:43:22 Yes I win 21:43:48 I suppose the problem about using that attack is that now we never will know whether the other attack would have worked too 21:43:53 Deewiant: There's a lot to do with shiro before I write that (fix the performance regression + fix the fingerprints I have + fix the weird text-mode bug I have to get a full Mycology pass + clean a lto of things up + put it into git). 21:44:14 zzo38: glad to have helped 21:44:23 elliott: I know; all the more reason to get to it 21:44:26 elliott: what's your superior fungespace like 21:44:32 Of course he might have had evolution cards that could be why he played no cards, but if it was not a computer game, maybe he would have tried to trick me, too 21:44:45 ais523: Like Deewiant's, but N-dimensional, and maybe fanceir 21:44:46 fancier 21:44:53 Possibly based on mcmap's experience 21:45:10 ais523: I'll be happy if I can beat ccbi on Fungicide :-) 21:45:14 elliott: I'm wondering what I should use to store space for Elliottcraft 21:45:35 ais523: in-memory, or on-disk? the former should just be as close to the latter as possible, and the latter is more relevant 21:45:45 ais523, octree! 21:45:47 I wanted to do something hashlife-style, but it's enough not-a-CA that I don't think that it'll work 21:45:52 Phantom_Hoover: won't work 21:45:54 ais523: For my Elliottcraft, I've ended up just picking something similar to McRegion 21:46:08 because it doesn't have a speed-of-light 21:46:10 (will now describe:) 21:46:20 (it has a 1/tick speed that's very basic, but it can be exceeded) 21:46:50 ais523: That is: Each file contains a certain region of space, which is NxN chunks (mcregion assumes finite height that's small enough to stuff into every chunk but it can be generalised); each chunk is MxMxH blocks for constant H (height). 21:47:09 ais523: You basically just have a lookup table at the start that points to the starting offset of that chunk in the file, and the actual chunk is just gzip-compressed data. 21:47:13 ais523: Then you use the filesystem to do the actual region lookup. 21:47:32 It's not amazingly elegant, but it exploits HD properties and the like and has good space usage. 21:47:40 that's kind-of neat 21:47:47 the problem with my version is that it has an infinite speed of sound 21:47:57 sort-of like Rubicon 21:47:58 ais523: You might just want to work with a finite world :P 21:48:09 which means that speed-of-light-based calculations are problematic 21:48:11 (as in, small enough to fit in memory at once) 21:48:14 elliott: perhaps, but that introduces boundary issues 21:48:18 ais523: Torus? 21:48:23 perhaps I'll put black holes at the boundaries that destroy everything 21:48:25 torus would be even worse 21:48:37 oh, you could get, like, infinite acceleration with a torus, right? 21:48:57 ais523: But yeah, mcregion is basically based on the fact that every chunk is tiny when compressed 21:49:09 So you can fit a bunch of them into one sector 21:49:16 oh, you could get, like, infinite acceleration with a torus, right? 21:49:17 and rarely have to rearrange the file 21:49:21 This is a bad thing? 21:49:29 Phantom_Hoover: :P 21:49:36 elliott: wrapping all three dimensions would indeed allow infinite acceleration 21:49:47 wrapping two, I don't think it would, but it'd make the game world act oddly in a visible way 21:49:52 howso? 21:50:27 elliott: I've just noticed that someone called Elliott has the highscore for a nonwinning game on NAO; is that you or a name coincidence? 21:50:28 -!- MDude has quit (Ping timeout: 245 seconds). 21:50:44 ais523: I'm very sceptical it's me, and I suspect you are too 21:50:45 elliott: you'd send something into the distance to get rid of it, and it'd end up coming back from the other side 21:50:47 elliott: indeed 21:51:01 NAO nicks often match Freenode nicks, though 21:51:06 I'm pretty sure I have a different name on NAO 21:51:16 ais523: really, my freenode nick is an oddity; Elliott is not a reliable nick elsewhere 21:51:23 yep, I suppose so 21:51:30 this one was stolen from me years ago, after all 21:51:32 even ais523 isn't totally reliable (someone else has the nick on AOL) 21:51:34 I'm still not sure what happened there 21:51:46 ais523: I'm surprised there are even free AIM names left 21:51:56 I haven't found a clash on callforjudgement yet, but it wouldn't surprise me if there was one 21:52:04 I wonder how irritated people with really generic AIM names are? 21:52:08 I bet they get bothered constantly 21:52:13 like, "joe" 21:52:36 I suspect most of them are no longer using AIM 21:52:56 I don't see why not; it's the most popular messenger in the US still, I think 21:53:00 and it's only fourteen years old 21:53:21 I suspect they'll have changed screennames, though 21:53:35 on pretty much any Internet service, aren't the majority of its users no longer using it, unless it's very new? 21:54:15 ais523: well, AIM has critical mass, and it's not much of a novelty application 21:54:32 "talk to friends" isn't something that gets old for most people, I suspect, especially when it's that ubiquitous 21:55:24 (I suspect facebook is more popular these days, actually) 21:56:38 this shiro slowdown is really baffling 21:56:52 I'd dig into the core except that'd be completely painful 21:59:14 what if you have no friends 21:59:36 i guess aim has some bots that you could add like Smarterchild 21:59:40 and pretend they are your friends 21:59:50 but the conversation isn't too exciting 22:00:44 cheater, how do you handle that problem? 22:01:12 it is too much to handle 22:03:40 Do you need more-notation for guard-conditions? 22:03:54 -!- Sgeo has joined. 22:04:16 Yes. 22:04:37 -!- Phantom_Hoover has quit (Quit: Leaving). 22:05:45 That is good because I put that in the document. 22:05:51 Excellent. 22:06:14 That is, guard-conditions in case blocks. 22:07:14 It cannot (and should not) put everything, because of the different things of each one dealing with ordering and duplication and so on. 22:07:38 But what is the best algorithm to make order of patterns based on specificness? 22:07:56 Would a tree structure help? 22:09:12 -!- Wamanuz has quit (Remote host closed the connection). 22:10:08 -!- Wamanuz has joined. 22:10:24 Is there a use of class of a class? 22:25:44 -!- CakeProphet has joined. 22:33:09 oh dear 22:33:24 my bug appears to be unrelated to the fingerprint change 22:33:39 elliott: oh good, I was afraid that the oh dear was out of context both forwards and backwards 22:33:41 but you provided some 22:33:51 having to ask /you/ about context would seem very out of character for you 22:34:03 well, I say "hmm" a lot 22:34:16 yep, but that nearly always gets context afterwards 22:34:19 usually when I'm desperate enough about my bugs that I hope someone asks what I'm hmming about and then solves the problem immediately 22:34:28 in that case, you waited /just/ long enough that I feared the context wasn't coming 22:34:48 -coreIns '\"' = modifyCurrentIP $ \ip -> ip{ isStringMode = not (isStringMode ip) } 22:34:49 +coreIns '"' = modifyCurrentIP $ \ip -> ip{ isStringMode = not (isStringMode ip) } 22:34:49 clearly this is the source of my performance woes 22:35:12 Did I write it good? http://zzo38computer.cjb.net/dnd/options/Illithid_Savant.c 22:35:14 hmm, what could be a vaguely interesting bot: a bot that randomly joins channels, waits for someone to talk then asks them the context 22:35:16 ok... if the only other change really is the reason for my slowdown, I'm going to kill GHC 22:35:23 (Note: This is not a C program) 22:35:33 zzo38: I was a bit confused by that URL... 22:35:50 I was hoping it'd be a C program 22:35:50 The "c" stands for "class" 22:36:10 zzo38: prestige class? template? 22:36:24 If you look in its directory, you see various extensions corresponding to different thing, such as "i" for item, "f" for feat, etc. 22:36:25 and does it apply to illithids, or to non-illithids who want to be more like illithids? 22:36:27 clearly this is the source of my performance woes <-- wat 22:36:36 oerjan: it was a: ``joke'' 22:36:40 > ['\"', '"'] 22:36:41 "\"\"" 22:36:47 oh thank god, that wasn't the source of my performance bug 22:36:48 ais523: This file is a prestige class. It applies only to illithids it is clear in the prerequisites 22:36:48 wait... 22:36:53 elliott: since when did you use LaTeX quotes? 22:36:55 this bug is literally impossible, then 22:36:58 It even says "prestige class"! 22:37:02 ah, OK 22:37:05 ais523: I use them when being condescending 22:37:06 I didn't look at the file, just at the name 22:37:19 elliott: that's a little bizarre... 22:37:27 The second line of the file says [Prestige class] 22:37:33 nothing about LaTeX really says condescension to me 22:37:39 ais523: they predate TeX 22:37:48 well, yes 22:37:50 or, well, `old-style Unix quotes' do, and GNU inherited it 22:37:53 but are used most famously in LaTeX 22:38:02 the double ``'' at least 22:38:09 singles are used in a lot more contexts 22:38:16 I think it's probably a combination of the kind of terribleness GNU tutorials contain, plus maybe I think Riastradh in hash-scheme used them a ton 22:38:19 I just updated it by adding a few words 22:38:24 I suppose ``'' quoting is plausibly used in m4 22:38:35 but I'm used to seeing autoconf m4 which uses [[]] rather than regular m4's ``'' 22:39:03 hmm, I kind of want to set up a Linux cluster 22:39:11 I use `` '' in TeX, since that is the common way of its fonts, and ligatures. But there can be other way depending on what fonts are used. 22:39:48 hmm, interesting spam 22:39:55 its title is REF NO: L/200-26937 (VIEW ATTACHMENT) with a .html and a .rtf attachment 22:40:00 and there's no text in the body 22:40:28 ais523: OK; what I'm going to do is, assume there's no performance bug, clean this up massively, and then optimise the hell out of everything 22:40:30 I'm actually vaguely curious as to what the attachment is, now, but am worried it's some sort of .rtf zeroday 22:40:42 ais523: are you on Linux? 22:40:42 I'll open it in gedit, I think, it's unlikely to be a zeroday against /that/ 22:40:44 elliott: yes 22:40:54 things that scare me when I type them: "rm -rf Shiro" 22:41:05 oh, apparently it has an invalid character encoding 22:41:06 NOOOOOOOOOOOOOOOOO 22:41:09 I should really stop with the -fs 22:41:10 poor Shiro 22:41:13 I do them instinctively when I -r 22:41:24 which makes me even more suspicious that it's actually a renamed .exe or something 22:41:41 rm -ri 22:41:50 file /tmp/spam.rtf 22:41:51 /tmp/spam.rtf: Rich Text Format data, version 1, ANSI 22:41:53 instance (Num a, Num b) => Num (a,b) where 22:41:53 (a,b) + (c,d) = (a+c, b+d) 22:41:53 (a,b) - (c,d) = (a-c, b-d) 22:41:53 -- These don't really make any sense 22:41:53 (a,b) * (c,d) = (a*c, b*d) 22:41:53 abs (a,b) = (abs a, abs b) 22:41:55 signum (a,b) = (signum a, signum b) 22:41:57 fromInteger a = (fromInteger a, fromInteger a) 22:41:58 elliott: I normally leave them out even when I need them 22:41:59 augh, what was I thinking when I wrote that second set? 22:42:01 and then have to redo the delete 22:42:15 elliott: ***FUNKY*** 22:42:16 * ais523 reads it in less 22:42:24 Deewiant: wat 22:42:28 abs (a,b) = (sqrt (a^2 + b^2), 0) 22:42:36 elliott: Re. funky instances in list-tries 22:42:41 Just reminded me 22:42:41 oh, apparently it's just ASCII text apart from it contains a NUL at the end for no obvious reason 22:42:43 Deewiant: heh 22:42:45 * elliott replaces them all with errors 22:42:52 kmc: heh 22:42:54 We advise that you keep this award personal, till your claims have been processed and your funds remitted to you. \par This is a part of our security measures to avoid double claiming or unwarranted participants or impostors, taking advantage of the situation.Failure to claim your prizes would result to forfeiture and will be used for next 2,000,000 pounds sterling international lottery program.\par 22:42:59 elliott: um looks like perfectly appropriate pointwise arithmetic to me >:) 22:43:02 ais523: always null-terminate your strings 22:43:17 elliott: yes, but a nul-terminated... text file? 22:43:28 ais523: they're strings! 22:43:35 -!- hagb4rd has quit (Ping timeout: 252 seconds). 22:43:39 oerjan: yes, I'm sure that will make my bugs so much more comforting :) 22:43:39 but not C strings 22:44:20 oh, they've even included a telephone number in the UK, which is nice 22:44:39 a mobile number, by the look of it 22:45:01 it appears to just be phishing for real name/address/phone number sets 22:45:07 I'm disappointed, I was hoping for an exploit 22:45:21 user-friendly spam 22:45:29 -- gulp 22:45:29 unsafeToAny :: a -> Any 22:45:29 unsafeToAny = unsafeCoerce 22:45:29 unsafeFromAny :: Any -> a 22:45:30 unsafeFromAny = unsafeCoerce 22:45:32 I share your thoughts, past Elliott 22:45:48 where run Fingerprint{..} = 22:45:48 fpRun $ FPState { fpGet = (unsafeFromAny . (Map.! fpName)) <$> gets globalFPState 22:45:48 , fpModify = \f -> modifyGlobalFPState (Map.adjust (unsafeToAny . f . unsafeFromAny) fpName) 22:45:48 , fpGetIP = (unsafeFromAny . (Map.! fpName)) <$> gets (ipFPState . currentIP) 22:45:48 , fpModifyIP = \f -> modifyCurrentIP $ \ip -> ip{ ipFPState = Map.adjust (unsafeToAny . f . unsafeFromAny) fpName (ipFPState ip) } } 22:45:52 but do you share my horror? 22:46:09 haha 22:46:18 dude, we have Data.Dynamic for a reason 22:46:32 kmc: yeah, I used Data.Dynamic, but then I realised that it was wasting a lot of runtime on checks that were always true 22:46:35 :) 22:46:38 yeah 22:46:48 kmc: I swear I'm doing macrooptimisation too! 22:46:50 but the competition is tough 22:46:55 hm is unsafeFromAny . unsafeToAny actually safer than just plain unsafeCoerce, and if so why isn't it defined that way to begin with... 22:47:03 oerjan: how is it safer 22:47:08 it's safer because it's less polymorphic 22:47:22 so more mistakes you could make with it are compile-time errors 22:47:31 Being incompetent with a few million people's passwords is one thing. Being incompetent with data that, if released unredacted, could end up killing people, is a different thing entirely 22:47:33 well, not the direct composition of the two 22:47:33 unsafeFromAny . unsafeToAny :: a -> c 22:47:38 doesn't look less polymorphic :-P 22:47:38 but using one and then using the other somewhere 22:47:51 oerjan: well, you can cast things that can't be casted to Any 22:47:55 it's just not very reliable 22:47:58 elliott: well that haddock page says converting to and from Any are supported. hm, it may be only if it's the same type at both ends... 22:48:04 yes 22:48:17 oerjan: yes 22:48:18 S -> Any -> T is no better than S -> T 22:48:33 ok then 22:51:49 Maybe you prefer this spell better instead of Illithid_Savant file? http://zzo38computer.cjb.net/dnd/options/Quick_Scroll.s 22:52:13 some of this code is so ugly :( 22:52:18 I don't know what I was thinking 22:52:26 actually, yes I do, I was thinking I should pass Mycology before worrying about that 22:52:41 Or even the Prohibit_Metamagic spell, or Merciful_to_Gibbering_Mouthers, or Remove_Reality 22:53:11 Remove_Reality sounds good 22:53:15 Remove Reality is a spell that it ever makes sense to cast? 22:53:19 zzo38: oh looking at that haddock page again, unsafeCoerce# (with the #) _can_ be used with unboxed types 22:53:25 zzo38: do you know about the "Locate City Bomb"? 22:53:26 istr you asked about that 22:53:45 oerjan: the # makes it even more unsafe? 22:53:45 That is what I thought, once I saw unsafeCoerce#, there is one for boxed types and one for unboxed types 22:54:01 ais523: No I don't know about the "Locate City Bomb". 22:54:12 zzo38: well unsafeCoerce is just a wrapper around unsafeCoerce#, which can be used for all, iiuc 22:54:20 And currently Remove Reality is only the name, it has no text currently 22:54:23 zzo38: it's a trick you can do by combining a lot of different feats 22:54:43 that converts the divination spell Locate City into the most powerful damage spell in the game 22:55:31 (in a caster-level times 10 mile radius, it deals 1 lightning and 1 sonic damage to everything, and makes them make a reflex and fortitude save; if they fail both saves, they're pushed to the edge of the area of effect and take d6 physical damage for every 10 feet moved) 22:56:02 (it's generally also considered to affect inanimate objects, including the ground below the caster, and they automatically fail their saves unless magical) 22:56:13 OK, now I know. 22:56:45 btw, does anyone know a system with getenv but not putenv? 22:56:56 I think it still also locates cities, too 22:57:09 elliott: arguably gcc-bf 22:57:12 but only arguably 22:57:21 because the whole notion of an environment is pretty hazy there 22:57:35 ais523: I would like to see gcc-bf run Shiro :) 22:57:48 ais523: the # doesn't make it more unsafe, but it allows it to be used on non-lifted values 22:57:48 I'd like to see it run a stdio hello world without crashing 22:57:50 Right now I depend on System.Posix.Env because EVAR requires putenv, but that's rubbish because Windows has it too 22:57:55 I'm tempted to just use the FFI to get putenv from the ystem 22:58:08 note that getenv/putenv are entirely usermode code 22:58:10 in fact, pure C 22:58:17 they just manipulate the environ variable 22:58:40 in fact, the whole thing's done by the libc; the only externally-visible time the environment comes up is when you exec a process 22:58:56 and that goes via the libc, and it just puts the environment in as an arg when you exec 22:59:04 I rarely use damaging spells. The D&D game I am in most recently, I have only a single damaging spell (actually psionic power), the Energy Ray power. It is useful because you affect the type of damage, such as fire, electric, sonic, etc 22:59:05 (the system call is execve, requiring an explicit environment) 22:59:34 ais523: is environ as portable as getenv? 22:59:47 I don't know 22:59:47 elliott: Nope 22:59:53 right 22:59:55 Windows has getenv, not environ 23:00:08 Deewiant: Windows does have environ, or at least 3.1 did 23:00:12 if you used main rather than WinMain 23:00:23 I, um, have very very out of date knowledge on how Windows works 23:00:31 as I used to target 3.1 even once Windows XP was out 23:00:44 and got annoyed when they removed deprecated functions from Windows 2 23:01:26 (in particular, the one to control the internal PC speaker, I don't think they ever did replace that one) 23:02:23 why on earth would you call a fingerprint for bitwise operations BOOL? 23:03:21 My Operating Systems Internals and Design professor wrote a simulated OS in .NET that we'll be using for homework :/ 23:05:33 elliott: I wouldn't 23:05:53 ais523: good 23:05:58 Sgeo: in .NET "asm"? or in a language that compiles to .NET? 23:06:58 who's fault is it that I'm writing this silly interpreter, anyway? 23:07:09 I think it's just an application that pretends to be a simple CPU that takes a made-up assembly as machine code and does other OS-related tasks that we will replace with our own code 23:07:27 oh, goody! a fingerprint with actual state to port! 23:07:28 So, a language that compiles to .NET, I guess 23:08:05 Why is the Bluebottle site down? :( 23:08:16 Oh, it's not 23:08:24 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:24:02 -!- mauke has joined. 23:24:17 -!- preflex has joined. 23:27:32 they're invading!!!! 23:29:57 clearly a conspiracy 23:30:12 -!- copumpkin has joined. 23:33:33 gah, why does GitHub put a flash applet on code pages that just copies them to the clipboard? 23:33:33 -!- Gregor has quit (Read error: Operation timed out). 23:33:33 since when were users not able to do that by themselves? 23:33:33 RubyGems does that too 23:33:33 i can see no sign of #esoteric being recently mentioned in #haskell, so it's even worse: it's a _secret_ conspiracy. 23:33:33 kmc: copumpkin: mauke: ok, speak up 23:33:33 Oh right, Ruby and Git are in bed together for some reason 23:33:33 who do we have to execute? 23:33:33 ? 23:33:33 -!- CakeProphet has quit (Ping timeout: 258 seconds). 23:33:33 don't play dumb 23:33:33 shachaf: YOU TOO 23:33:33 I think cheater mentioned it in #haskell-blah at some point 23:33:33 cernel joson 23:33:33 or something like that 23:33:33 -!- Gregor has joined. 23:33:33 oerjan: Me? 23:33:33 YES YOU 23:33:33 copumpkin: please tell me he was complaining about getting banned 23:33:33 I've been here for years. 23:33:33 zzo38 is the #esoteric ambassador to #haskell 23:33:33 -!- Gregor has changed nick to Guest8904. 23:33:33 elliott: dunno 23:33:33 * shachaf is a professional idler. 23:33:33 -!- glogbot has quit (Ping timeout: 258 seconds). 23:33:40 -!- esowiki has joined. 23:33:40 -!- glogbot has joined. 23:33:42 This is a foul place indeed. 23:33:51 shachaf: no, that was zzo38's very own genius 23:34:06 we just mentioned Haskell a few too many times, I think, so you all got to understand the magic 23:34:33 :-| 23:34:46 shachaf: zzo38 does that sort of thing by himself, but often talks about it here 23:35:38 Usually though it's with more obscure things like ... that game thing, right? 23:36:08 @keal 23:36:08 where can i find opensource schematics of Linus Torvalds' x86 clone? 23:36:36 @protontorpedo 23:36:36 and haskell is not a lisp. correct? holy shit then m learning haskell 23:36:47 preflex: be PoppaVic 23:36:48 automatic vars are stackframe, which is fine for use and lose - but some folks tend to be pigs about expecting infinite Memory available. It's an issue for some folks, and in combination with recursion, can ruin your day. I won't even talk about threads. 23:36:50 ?yhjulwwiefzojcbxybbruweejw 23:36:51 "\"\\\"\\\\\\\"\\\\\\" 23:37:01 we all got to understand the magic: the gathering 23:37:05 mauke: so how would one get preflex to output a line starting with an exclamation mark, backtick, or caret? 23:37:10 @@ (@protontorpedo) (@vixen @protontorpedo) 23:37:11 I dont think tcl cn do that church is my favourite computer scientist. 23:37:11 @. elite nixon 23:37:12 YOU h4VE 7o FACE tHE phaC7 tH47 wH0LE prob1e/\/\ iz R341ly 7|-|3 blACxs. the k3Y I5 70 dIvize a SY5TEM THAT reCONIZE$ +HiS w|-|i|e no7 4PPe4RinG 70... 23:37:13 I ask purely out of curiosity. 23:37:14 elliott: should be impossible 23:37:24 mauke: that's what they said about lambdabot, too >:| 23:37:28 well, during normal operation 23:37:44 elliott: you'd use the msg command 23:37:50 @sgeo 23:37:50 Unknown command, try @list 23:37:54 Oh 23:37:56 Sgeo: I wonder if zzo38 getting interested in something /makes/ it obscure 23:37:59 ?so !sh echo '?quote oops' 23:37:59 !sh echo '?quote oops' not available 23:38:00 ​?quote oops not available 23:38:04 heh 23:38:10 @@ (@protontorpedo) (@vixen @protontorpedo) 23:38:10 how would haskell solve the following gnarley problem: many client distributed accross the usa, transfers must take palce in the form of file transfer, and data must be read from 23:38:10 files, and recorded, then other partners who apply taxes to this data and then give abck new files with taxes aded, then last transers to 4th parties who get us paid for the phone calls that are the 23:38:10 product church is my favourite computer scientist. 23:38:19 ?so !sh echo '?quote oops'; # 23:38:19 ais523: I doubt it but possibly you try figure it out 23:38:19 !sh echo '?quote oops'; # not available 23:38:20 ​?quote oops 23:38:43 even the Pokémon TCG stuff, zzo38 is interested in a version of it that nobody plays any more 23:38:52 which makes his questions hard to follow sometimes 23:38:54 preflex: msg #esoteric ?so !sh echo '@quote oops'; # 23:38:54 ?so !sh echo '@quote oops'; # 23:38:55 !sh echo '@quote oops'; # not available 23:38:55 ​@quote oops 23:38:56 (except, presumably, zzo38 himself) 23:39:15 preflex: msg #esoteric obviously i have no security whatsoever 23:40:15 http://mauke.dyndns.org/stuff/ploki/ - here's an esolang 23:40:28 @quote oops 23:40:29 ihope says: Oops, I forgot that Djinn doesn't do GADT's. 23:40:39 Why don't you play that version of Pokemon card anymore? 23:40:55 oh, what is this travesty? nobody pinged fungot during the quoting-fest 23:40:55 elliott: and python control-flow expressions. any ideas what caused the original ( sorted) table of commands for my proggie i could use 23:40:57 zzo38: actually, I never played that particular version in the first place 23:41:01 ^source 23:41:01 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 23:41:02 elliott: oh wait, EgoBot's invisible space 23:41:12 but mostly, because it isn't competitive between humans, and most players of competitive card games like playing human opponents 23:41:35 I prefer playing it with random deck, if possible 23:41:38 which version is that? 23:41:41 That is deck consisting of random cards 23:41:45 mauke: doesn't look _that_ esoteric :-D 23:41:54 although i have no idea what io.pk does. 23:41:57 (Pokemon Card GB2 does not have that function, though) 23:42:11 elliott: copies stdin to stdout 23:42:19 What is it not competitive? 23:42:35 ABRUF 200 #<@sort # @sort ##> 23:42:42 mauke: that looks like J if you expanded most of the verbs into words 23:43:17 this language hides terrible secrets 23:44:34 http://mauke.dyndns.org/stuff/ploki/ploki-0.6.5.1/examples/uncomment.pk 23:45:01 pretty, apart from the parts that look like they're lifted from lolcode 23:45:16 this language is older than lolcode (or lolcats) 23:45:36 I was just referring to the LEET and KTHX keywords :P 23:46:09 yeah, WUNT and CLAUDS are obviously perfectly normal :-) 23:46:17 naturally 23:47:15 ais523: tell mauke about Feather, hopefully it'll have a profound enough effect that the invasion tapers off 23:47:26 elliott: I think I've come across a reasonably sensible definition of an esolang 23:47:42 ais523: THEN IT'S WRONG 23:47:43 mention Feather to ais523, topic suddenly changes 23:47:55 ...retroactively. 23:48:01 radioactively 23:48:02 Would it be possible for me to play with Epigram 1? 23:48:14 it's "a language for which the creation of comprehensive library support is not seen as something that it's particularly worth focusing effort on" 23:48:42 ais523: ah, good, so funge-98 isn't an esolang, and PSOX isn't an esolang project :) 23:48:54 i'm with elliott 23:48:59 Oh, found it 23:49:13 oerjan: as in, you agree with the literal statements I made, or you agree with them sarcastically? 23:49:17 elliott: I'm inclined to think that funge-98 is dangerously close to becoming a non-eso language, and may even have crossed the line already 23:49:26 because they're fairly close to opinions I hold literally 23:49:36 mauke: i detect that you do not know the horror which is feather 23:49:41 elliott: yes. 23:49:51 oerjan: neither does anyone else! that's what the horror's about 23:49:53 nobody truly knows the horror other than ais523. it will eat his soul. 23:50:03 if only he... looks 23:50:03 oerjan: correct 23:50:10 [spooky music] 23:50:19 -!- augur has quit (Read error: Connection reset by peer). 23:50:19 The most horrible thing about Feather is the fact that it doesn't exist. 23:50:29 that's far from the most horrible thing about it 23:50:31 mauke: it's an idea that I'm not entirely sure is internally consistent, and trying to work out whether it is or not drives me mad 23:50:40 I've programmed in Sorted!, though 23:50:44 so it indeed doesn't exist, and wondering whether it could is the issue 23:50:48 that causes all the problems 23:51:01 they've mostly been confined to me, though, because nobody else really grasps what the idea is well enough to think about it 23:51:05 -!- augur has joined. 23:51:20 is this like Tamerlane? 23:51:35 ais523: you should at least give him the basic summary :P 23:51:39 I doubt it, with Feather, "is this like X" seems to be false for all X 23:51:44 including X = Feather 23:51:45 ("mumble mumble retroactive change self interpreter") 23:52:04 elliott: you can't summarise Feather to a Haskell person 23:52:11 burn 23:52:11 or to anyone else, fwiw 23:52:18 http://catseye.tc/projects/tamerlane/doc/tamerlane.html 23:52:21 ais523: well, you can inaccurately summarise it 23:52:30 I supose so 23:52:36 that's what the rest of us go by, at least 23:52:57 mauke: the basic, inaccurate summary is that Feather is a language based around retroactively changing the interpreter 23:52:58 but basically, it's a modification of the principle of single static assignment, where instead of assigning to a variable, you retroactively change the value it had when it was created 23:53:00 mauke: i think i can say with some confidence "no". and i hardly looked at your link. 23:53:08 mauke: which means, Feather is normally interpreted by an infinite stack of metacircular Feather interpreters 23:53:10 this applies to everything, including the interpreter itself 23:53:18 mauke: but you can replace every element of that infinite stack with a new interpreter at the beginning of time 23:53:29 and you do everything like that 23:53:29 is this like the reverse ST monad? 23:53:31 elliott: actually, the retroactive changing of the interpreter isn't even the most confusing element 23:53:38 mauke: what's the reverse ST monad? 23:53:44 like ST, but backwards 23:53:45 it's more like continuations, anyway, used in a particular way 23:53:52 oh, it's also object-oriented 23:53:56 haha 23:54:30 and this is how inheritance is done too 23:54:37 so the whole thing almost fits together perfectly 23:54:43 but working out the details drives people mad 23:55:00 ok, then I'm just going to talk about ploki instead 23:55:07 I made a major breakthrough when I made all objects have a property that's just a boolean of whether they're the unbox operator or not, that returns an unboxed value 23:55:16 bonus points if you can tell me wtf "ploki" means 23:55:17 is ploki a p-language like plof 23:55:17 at least it seems possible to get the whole thing off the ground if you do that 23:55:27 even if it seems a little ridiculous to have something that specific 23:55:29 mauke: programminglanguageusedby loki? 23:55:38 elliott: unlikely 23:55:41 PerLiskindof OKay Ithink 23:56:13 wow, Feather sounds like it was designed during a salvia trip 23:56:25 I think ploki introduces several novel features 23:56:31 * elliott notes http://esolangs.org/wiki/Feather 23:56:42 kmc: this is part of the reason I don't take mind-altering drugs, this is the sort of thing I come up even when sober and in my apparently right mind 23:56:52 here's not one of them: interpreter written in (mostly) ansi c 23:57:22 major feature: there are no malformed ploki programs 23:57:31 literally anything is a valid program 23:57:37 i think oklopol had a language like that 23:57:45 oklotalk was like that 23:57:55 I suspect it worked in a rather more insane manner than ploki in that aspect, though 23:58:02 -!- Slereah has joined. 23:58:06 -!- GuestIceKovu has quit (Ping timeout: 252 seconds). 23:58:16 also: no error messages 23:58:24 the only "diagnostic" is an infinite loop 23:58:35 lame, it should just fix the program and keep going :) 23:58:39 this sounds like lazy language designer features so far 23:58:45 tried to open a file that doesn't exist? well, just open another one 23:58:48 but the interpreter is smart enough to recognize some infinite loops and optimize them to sleep(inf) 23:58:50 preferably one with a name close to the requested one 23:59:05 elliott: basically impossible in ansi c 23:59:10 (no directory support) 23:59:21 mauke: excuses 23:59:34 also, indeed, I can't see any similarities between Feather and Tamerlane at all 23:59:47 relatedly: cpressey should come back here 23:59:52 (if we say it at least once per day it will come true) 23:59:52 ok, how about this: regex matching directly on filehandles