←2011-08-30 2011-08-31 2011-09-01→ ↑2011 ↑all
00:00:25 -!- Sgeo has joined.
00:07:41 <Deewiant> elliott_: 'Cause typeclasses are more expected and thus more optimized by compilers
00:08:08 <CakeProphet> but it seems to me like it would be almost entirely the same thing.
00:08:46 <elliott_> Deewiant: This was an insane typeclass
00:08:49 <elliott_> Multiple type families
00:09:05 <elliott_> And AFAICT everything should be erased at runtime
00:09:16 <elliott_> Hmm, maybe I need to make the fields strict?
00:09:46 <Deewiant> If you want things to be erased at runtime then they need to be strict, yes :-P
00:11:08 <elliott_> Deewiant: That isn't what I meant by erased at runtime, I mean I use unsafeCoerce
00:11:19 <Deewiant> >_<
00:11:37 <elliott_> Deewiant: It's a safe use of unsafeCoerce!
00:15:06 <CakeProphet> safeCoerceIPromiseReally
00:15:35 <Sgeo> elliott_, hmm, where and how?
00:16:38 <CakeProphet> !haskell import Unsafe.Coerce; main = print (unsafeCoerce 2 :: IO Int)
00:16:59 <CakeProphet> oh rite
00:17:03 <elliott_> Sgeo: ?
00:17:15 <CakeProphet> !haskell import Unsafe.Coerce; main = print =<< (unsafeCoerce 2 :: IO Int)
00:17:20 <EgoBot> 0
00:17:34 <Sgeo> elliott_, what are you using unsafeCoerce for?
00:18:10 <elliott_> Sgeo: dependent map
00:18:32 <elliott_> 19:09:50: <AnMaster> err? *thinks* O(n/2) == O(n)??
00:18:33 <elliott_> 19:09:57: <Deewiant> yep
00:18:33 <elliott_> 19:10:04: <AnMaster> then O maths are strange
00:18:42 <elliott_> 19:10:05: <Deewiant> O(constant * n) == O(n)
00:18:42 <elliott_> 19:10:08: <Deewiant> :-P
00:18:42 <elliott_> 19:10:18: <Deewiant> if you know the definition it makes sense
00:18:42 <elliott_> 19:10:21: <AnMaster> Deewiant, that would only be true if n is treated as infinite
00:18:47 <elliott_> Vorpal: you used to be really smart
00:18:49 <oerjan> coercion from Integer to IO Int, which iirc is a function underneath - definitely _not_ a recommended use
00:19:06 <elliott_> oerjan: I'm surprised that even worked
00:23:36 <monqy> elliott_: wow
00:24:22 <CakeProphet> !haskell import Unsafe.Coerce; main = print ((unsafeCoerce 2 :: String -> Int ) "hi")
00:24:27 <EgoBot> 5836665117072162816
00:24:53 <CakeProphet> !haskell import Unsafe.Coerce; main = print ((unsafeCoerce 2 :: String -> Int ) "hi")
00:24:58 <EgoBot> 5188146770730811392
00:25:06 <oerjan> marvelous
00:25:11 <CakeProphet> awww not referentially transparent.
00:25:20 <oerjan> well duh
00:26:08 <elliott_> I'm really surprised that works
00:26:22 <oerjan> !haskell import Unsafe.Coerce; main = print ((unsafeCoerce 2 :: String -> Int ) undefined)
00:26:27 <EgoBot> ​-2810246167479189504
00:26:44 <CakeProphet> !haskell import Unsafe.Coerce; main = print (map (unsafeCoerce 2 :: Int -> String ) [0..])
00:26:49 <EgoBot> ​["
00:26:56 <CakeProphet> weeeee segfault
00:27:39 <elliott_> !haskell import Unsafe.Coerce; main = print ((unsafeCoerce (2 :: Int) :: String -> Int ) undefined)
00:27:44 <EgoBot> ​-2810246167479189504
00:27:50 <elliott_> oerjan: ok, _now_ i'm confused.
00:27:57 <CakeProphet> there we go, perfectly safe.
00:27:58 <elliott_> result independent of defaulting???
00:28:06 <oerjan> !haskell import Unsafe.Coerce; main = print ((unsafeCoerce 2 :: String -> Int ) undefined)
00:28:12 <EgoBot> ​-2810246167479189504
00:28:37 <CakeProphet> itt: fun with Haskell abuse.
00:28:55 <elliott_> !haskell import Unsafe.Coerce; main = print ((unsafeCoerce (2::Integer) :: String -> Int ) undefined)
00:29:00 <EgoBot> ​-5116089176692883456
00:29:07 <oerjan> the strangest thing is that it implies it actually _looks_ at the argument
00:29:10 <elliott_> oerjan: huh so EgoBot follows different defaulting rules?
00:29:14 <oerjan> huh
00:29:24 <elliott_> oerjan: huh so EgoBot follows different defaulting rules?
00:29:26 <elliott_> !haskell import Unsafe.Coerce; main = print ((unsafeCoerce (2::Integer) :: String -> Int ) undefined)
00:29:31 <EgoBot> 504403158265495552
00:34:05 <oerjan> !haskell import Data.Typeable; main = print $ typeOf 2
00:34:24 <oerjan> gah
00:34:56 <oerjan> the Typeable ruins the defaulting :(
00:35:14 <oerjan> hm...
00:35:38 <oerjan> !haskell main = print (2^100)
00:35:44 <EgoBot> 1267650600228229401496703205376
00:35:55 <oerjan> nope, still Integer
00:36:00 -!- zzo38 has joined.
00:37:20 <Sgeo> What's the use of undefined here?
00:37:47 <oerjan> i just wanted to see if the coerced-to-function thing actually used its argument
00:38:08 <zzo38> I added "case guards" to "proposal for more-notation"
00:38:13 <oerjan> it _appears_ to, since undefined gives a consistent result, different from the others
00:38:44 <oerjan> but whether that's what actually happens, i don't want to bet :P
00:38:48 <oerjan> hm...
00:39:18 <zzo38> Are you no good at betting?
00:39:31 <oerjan> !haskell import Unsafe.Coerce; main = let f = unsafeCoerce 2 :: String -> Int; print [f "hi", f undefined]
00:39:46 <oerjan> oops
00:39:51 <oerjan> !haskell import Unsafe.Coerce; main = let f = unsafeCoerce 2 :: String -> Int in print [f "hi", f undefined]
00:39:56 <EgoBot> ​[6989586621679009792,6989586621679009792]
00:40:04 <oerjan> wonderful :P
00:41:53 <zzo38> Can unsafeCoerce work with unboxed types? That seems the only use where such thing would be useful
00:41:53 <oerjan> 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 <oerjan> zzo38: no, it is intended only for boxed types
00:42:51 <zzo38> 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 <zzo38> Is it useful to use with newtype?
00:43:35 <oerjan> 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 <zzo38> 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 <oerjan> 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 <oerjan> well yes but ghc does not have a dependent type system, so you cannot give a proof
00:46:07 <oerjan> but unsafeCoerce allows you to promise that you know it's OK
00:46:12 <elliott_> oh oerjan explained for me?
00:46:12 <elliott_> neato
00:46:15 <zzo38> OK, I suppose that seems one use of it.
00:47:13 <zzo38> 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 <oerjan> 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 <elliott_> zzo38: it is the way of doing it in haskell
00:49:52 <zzo38> Of course in C you just use pointer cast not unsafeCoerce.
00:51:50 <elliott_> you would just use a file-scope variable in C for what I'm doing :)
00:52:03 <oerjan> 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 <zzo38> 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 <oerjan> zzo38: you can probably use rules for that
00:54:29 <zzo38> Do you mean the RULES pragma? Yes I suppose that can do some things like that
00:56:23 <zzo38> 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 <oerjan> well rules are done after typechecking of course
00:57:56 <elliott_> you can implement unsafeCoerce with a rule?
00:58:00 <elliott_> or does it typecheck again
00:59:03 <zzo38> 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 <elliott_> btw, with existentials you can do what i want as a list
00:59:59 <elliott_> but then lookup is O(slow)
01:00:03 <elliott_> as opposed to maps which aren't O(slow)
01:02:44 <oerjan> elliott_: rules have to typecheck, but you could presumably have a rule to introduce a use of unsafeCoerce
01:05:03 <CakeProphet> can I have a rule that introduces a rule that introduces TH?
01:05:18 <elliott_> oerjan: right
01:08:26 <zzo38> 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 <oerjan> i vaguely thought TH was applied before the core stage and rules during it
01:12:32 <CakeProphet> can I have recursive rules
01:12:38 <CakeProphet> with conditionals?
01:14:47 <CakeProphet> I am a warrior bbl lawl
01:15:00 <zzo38> 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 <CakeProphet> `quote machine
01:15:05 <HackEgo> 100) <Slereah> I can do everything a Turing machine can do, except love \ 142) <fungot> [...] i'm a law student so i am loving my bread machine \ 155) <CakeProphet> how does a "DNA computer" work. <CakeProphet> von neumann machines? <Phantom_Hoover> CakeProphet, that's boring in the context of DNA. <Phantom_Hoover> It's just
01:15:22 <CakeProphet> `quote machine elliott
01:15:23 <HackEgo> No output.
01:15:29 <CakeProphet> I am sad safe.
01:15:43 <CakeProphet> *fase
01:16:04 <zzo38> Is that the correct syntax for the `quote command?
01:16:13 <CakeProphet> *faes
01:16:25 <oerjan> i think it takes either a number or a rexex
01:16:28 <oerjan> *regex
01:16:49 <CakeProphet> `quote (??{2+@})
01:16:51 <HackEgo> No output.
01:17:09 <CakeProphet> `quote elliott.*?machine
01:17:11 <HackEgo> 633) <fungot> elliott_: it's a machine that looks like you!
01:17:54 <CakeProphet> `quote ^x
01:17:56 <HackEgo> No output.
01:17:59 <CakeProphet> `quote ^q
01:18:01 <HackEgo> No output.
01:18:17 <CakeProphet> `quote ^<.*?> q
01:18:19 <HackEgo> No output.
01:18:21 <oerjan> also the check for a number sometimes blew up but i think elliott fixed that
01:18:22 <CakeProphet> :(
01:18:25 <zzo38> 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 <zzo38> But maybe it is impossible and nonsense
01:18:54 <CakeProphet> nonpossiblesense
01:19:05 <CakeProphet> oh by the way I'm not here anymore.
01:19:14 <oerjan> zzo38: there are certainly kinds for the class _arguments_
01:20:14 <zzo38> oerjan: But that is not what I meant
01:21:37 <oerjan> well i don't know. someone probably has thought about it.
01:22:49 <zzo38> 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 <zzo38> Actually I think it is in fact wrong and impossible, at least the way I described.
01:25:48 <zzo38> But maybe not.
01:25:54 <zzo38> I am confused a bit.
01:26:06 <zzo38> I keep changed my mind now I got confusing
01:29:24 -!- azaq23 has quit (Ping timeout: 276 seconds).
01:30:08 <elliott_> happens to me too
01:32:38 <zzo38> Do you know?
01:32:45 <elliott_> 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 <elliott_> 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 <oerjan> good, good
02:07:39 -!- elliott has joined.
02:10:14 <elliott> oerjan: it didn't help :(
02:10:50 <oerjan> bad, bad
02:13:21 <elliott> maybe my FPState thing is bad
02:13:24 <elliott> <oerjan> bad, bad
02:14:02 <oerjan> food, food -->
02:16:42 <Sgeo> My web database class will involve PHP
02:17:19 <Sgeo> Can someone please give me a gun to shoot my foot off with?
02:17:46 <elliott> the gun is called not transferring
02:17:50 <elliott> it gets deadlier by the second
02:18:24 <Sgeo> 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 <elliott> 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 <elliott> SO HA
02:34:37 -!- Lymee has quit (Ping timeout: 245 seconds).
02:34:46 <Sgeo> I should attempt to grasp existentials
02:36:12 <Sgeo> data Worker x y = forall b. Buffer b => Worker {buffer :: b, input :: x, output :: y}
02:36:19 <Sgeo> Oh come on, is that all they're used for?
02:37:07 <oerjan> > fail "test" :: Either String Bool
02:37:08 <lambdabot> Overlapping instances for GHC.Base.Monad
02:37:08 <lambdabot> (Data...
02:37:17 <oerjan> O_o
02:37:43 <oerjan> lambdabot's instances are _really_ messed up.
02:38:07 <Sgeo> > fail "test"
02:38:08 <lambdabot> No instance for (GHC.Show.Show (m a))
02:38:08 <lambdabot> arising from a use of `M7990887826...
02:38:23 <Sgeo> > fail "test" :: IO ()
02:38:24 <lambdabot> <IO ()>
02:38:59 <Sgeo> For some reason, when oerjan first said it, I was thinking error instead of fail
02:39:13 <Sgeo> > fail "Discarded" :: Maybe Bool
02:39:13 <lambdabot> Nothing
02:39:40 <Sgeo> > fail "test" :: Either String a
02:39:41 <lambdabot> Overlapping instances for GHC.Base.Monad
02:39:41 <lambdabot> (Data...
02:39:51 <Sgeo> :t Just Right
02:39:52 <lambdabot> forall b a. Maybe (b -> Either a b)
02:41:37 <elliott> <Sgeo> Oh come on, is that all they're used for?
02:41:39 <elliott> what
02:41:57 <elliott> "A TUTORIAL USED ONE EXAMPLE LET ME JUMP TO A CONCLUSION AND ACT WEIRDLY ABOUT IT"
02:42:05 <Sgeo> I thought the first motivating example in http://www.haskell.org/haskellwiki/Existential_type was the only motivating example
02:42:13 <Sgeo> elliott, yes, that's what I did :/
02:42:28 <elliott> ONLY ONE MOTIVATING EXAMPLE
02:42:29 <elliott> OH NOES
02:42:33 <elliott> what's wrong with only one motivating example
02:42:52 <oerjan> well it's not really very motivating.
02:43:03 <oerjan> </python>
02:53:58 <Sgeo> What does Python have to do with anything?
02:54:05 <Sgeo> 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 <Taneb||Kindle> Hello
09:02:50 <Taneb||Kindle> I have TWO lines today
09:03:22 <Taneb||Kindle> Because I am piping the output of Taneb into a Kindle
09:03:38 <Taneb||Kindle> Or is it the other wa round?
09:04:28 <Taneb||Kindle> Lurker with an interesiting name yiyus tell me
09:05:39 <Taneb||Kindle> Oh goodbye
09:05:46 -!- Taneb||Kindle has quit (Client Quit).
09:06:07 <monqy> 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 <smoking> 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 <Taneb> Hello
15:14:36 <Taneb> 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 <Taneb> A program that outputs "Helllo, World!"...
15:15:29 <Taneb> Via One Hundred Esoteric Progra..
15:15:49 <Taneb> MMInG LANGUaGES
15:16:20 <Taneb> The lack of caps lock on akindle is both a blessing and a curse
15:17:16 <Taneb> The placement of the backspace buttone is undoubtedly a curse, though
15:17:47 <Taneb> This will be a long and arduous(?) quest
15:18:10 <Taneb> I will venture into the savage land of brainfuck
15:18:30 <Taneb> Through the dreaded Malbolge swamps
15:19:15 <Taneb> Into the high mountains of Lazy K
15:20:03 <Taneb> Explore the variable-dimension funge space
15:20:38 <Taneb> And probably end with HQ9+
15:21:07 <Taneb> LEVEL 1: HQ9+
15:21:07 <Taneb> h
15:21:54 <Taneb> LEVEL 2: deadfish
15:22:44 <Taneb> Err... what's the ASCII code for "h"?
15:23:01 <Deewiant> > ord 'h'
15:23:02 <lambdabot> 104
15:23:11 <Taneb> Merci
15:23:15 <Taneb> brb
15:23:17 <Deewiant> > map ord "Helllo, World!"
15:23:18 <lambdabot> [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 <Gregor> Taneb: You're not here.
16:35:37 <Gregor> Taneb: It would take you centuries to make a Malbolge program that actually writes "Hello, world!"
16:36:21 <olsner> Gregor: You are here.
16:36:48 <Gregor> olsner: You too are here!
16:36:58 <olsner> Am not!
16:37:40 <Gregor> Taneb: Also make sure that ShaFuck is included.
16:39:08 <Gregor> 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 <Gregor> 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 <elliott> 16:35:37: <Gregor> Taneb: It would take you centuries to make a Malbolge program that actually writes "Hello, world!"
18:27:28 <lambdabot> elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
18:27:30 <elliott> Gregor: What? It's been done.
18:28:35 -!- Wamanuz2 has quit (Remote host closed the connection).
18:28:51 <elliott> 16:39:08: <Gregor> 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 <elliott> 16:39:24: <Gregor> I seem to recall that the closest to a Hello, world! that there was output something like HeLLo
18:29:09 <elliott> Gregor: The first program was "hello world" with random-ish capitalisation which was generated.
18:29:18 <elliott> Gregor: But only a few years after -- like, two thousand and five -- people hand-wrote programs for it.
18:29:24 <elliott> (Well, modulo the "encryption" step and the like.)
18:29:38 <elliott> Malbolge is really susceptible to simple cryptanalysis.
18:32:20 -!- Wamanuz has joined.
18:42:33 <olsner> safe cryptography is hard to build into a language if you intend to distribute the interpreter
18:47:16 <elliott> olsner: only as hard as cryptography in general
18:47:32 <Gregor> Pff
18:47:36 <Gregor> ShaFuck is better :P
18:48:03 <olsner> 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 <elliott> olsner: um, no?
18:49:00 <elliott> olsner: what you're saying is "if you have the source code to a cryptographic program you can break its cryptography"
18:49:04 <elliott> to which i respond "lol"
18:49:28 <olsner> meh, nm
18:49:42 <elliott> olsner: If the routine is just "check signature, then run" then sure you can stub it out or whatever
18:49:47 <elliott> But then you're not writing in the same language
18:49:56 <elliott> And with things like ShaFuck it's much more entwined in the semantics
18:50:36 -!- kmc has joined.
18:51:07 <kmc> an esolang parody of Rails would be pretty good
18:51:46 <kmc> "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 <olsner> elliott: malbolge is not like "check signature, then run"
18:54:04 <elliott> sure
18:54:26 <elliott> Malbolge's flaw is that it's a crappy crypto system
18:54:27 <elliott> :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 <Phantom_Hoover> kmc, what bit of Rails is that parodying?
19:34:37 <Phantom_Hoover> Also, parody esolangs are unloved; go for it.
19:35:00 <kmc> Phantom_Hoover, if you have a class named "Child" it will look for a database table named "children"
19:35:12 <kmc> to this end it contains a long list of irregular English plurals
19:35:32 -!- richardwagner has changed nick to copumpkin.
19:35:41 <kmc> omg a copumpkin
19:35:41 <Phantom_Hoover> kmc, ...really?
19:35:46 <copumpkin> omg yes
19:35:49 <Phantom_Hoover> Like, this is a thing that happens in the real world?
19:35:52 <kmc> is this place just Super #haskell
19:35:53 <Phantom_Hoover> `quote copumpkin
19:35:58 <HackEgo> 461) <Phantom_Hoover> The wickedest man of all. <Phantom_Hoover> Surpassed only in wickedness by the wicked witches of the west and east. <copumpkin> you talking about me again? <Phantom_Hoover> Yes. <copumpkin> k
19:36:05 <Phantom_Hoover> kmc, BE WARNED
19:36:20 <Phantom_Hoover> Also I am not in #haskell which is why this place is superior.
19:36:23 <oerjan> kmc: well i think we went over quota about when you arrived
19:36:31 <copumpkin> kmc: I've been in here for millennia!
19:36:35 <oerjan> me neither, these days
19:36:38 <copumpkin> I was in here way before it was even starting to be cool
19:36:52 <kmc> Phantom_Hoover, http://stackoverflow.com/questions/3378316/change-plural-form-of-generated-model-in-rails
19:37:23 <elliott> kmc: it's not our fault you people keep coming here when it's mentioned in #haskell
19:37:29 <kmc> 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 <kmc> that's a sign of a great API design guys
19:37:53 <kmc> "Let's make the language second-guess the programmer!" "OH SHIT we have to keep all the bad guesses forever"
19:38:02 <oerjan> <kmc> is this place just Super #haskell <-- mind you there are people going in both directions.
19:38:20 <oerjan> we probably sent zzo38 to you *MWAHAHAHA*
19:38:26 <elliott> yeah that was our fault, sorry guys
19:38:36 <kmc> haha
19:38:41 <Phantom_Hoover> <elliott> kmc: it's not our fault you people keep coming here when it's mentioned in #haskell
19:38:50 <kmc> Haskell: The Gathering
19:39:14 <Phantom_Hoover> Well, except for the Great Haskell To Esoteric To Ooc-lang Trek.
19:39:22 <oerjan> technically i was in #esoteric before #haskell, _but_ i had already learned haskell when i got to #esoteric
19:39:30 <elliott> Phantom_Hoover: That was a beautiful diaspora. Am I using the word diaspora right.
19:39:48 <Phantom_Hoover> elliott, probably not, but WHO CARES.
19:39:53 <elliott> oerjan: well that's what happens when you single-handedly write over half of the haskell 98 report.
19:40:00 <elliott> (do not listen to oerjan's objections, people, he is far too modest.)
19:40:17 <Phantom_Hoover> kmc, also, wow.
19:42:10 <oerjan> elliott: dammit i was considering making an "inb4 elliott says ..." comment
19:42:56 <kmc> "Haskell is an esoteric language anyway"
19:43:09 <oerjan> !languages
19:43:12 <oerjan> erm
19:43:13 <Phantom_Hoover> kmc, from a certain point of view, it is.
19:43:15 <oerjan> !help languages
19:43:15 <EgoBot> ​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 <oerjan> proof: see above categorization
19:43:24 <Phantom_Hoover> That point of view is that of an imperative-only idiot, of course.
19:43:30 <elliott> OH THAT WACKY GREGOR
19:43:34 <kmc> why is c++ not under "esoteric"
19:43:44 <elliott> Phantom_Hoover: ais regularly refers to haskell as esoteric :P
19:43:53 <elliott> kmc: that would be too much of a compliment
19:44:06 <elliott> and why add a joke languages category if it'd only have one entry?
19:44:10 <Phantom_Hoover> elliott, a category that includes NetFuck but not C++?
19:46:03 <oerjan> !forth 2 2 + .
19:46:05 <EgoBot> 4
19:46:17 <Gregor> The real question is, why isn't Forth under esoteric :P
19:46:52 <Lymee> !fyb :[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;
19:46:53 <EgoBot> ​Use: !fyb <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/fyb/
19:47:00 <Lymee> !fyb does-this-still-work :[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;:[........]@@[+]++++++++++++*;
19:47:11 <Gregor> It probably doesn't X-D
19:47:20 <oerjan> !underload (:*)(:*)((:)~(*)**)~^^S
19:47:21 <EgoBot> ​:::***
19:47:30 <EgoBot> ​Score for Lymee_does-this-still-work: 0.6
19:47:47 <Gregor> Lymee: Impressive.
19:47:52 <kmc> i think many people well-versed in FP would consider Haskell to be esoteric
19:47:57 <kmc> it's not a typical functional language
19:48:19 <olsner> but almost none of the other functional languages are properly functional
19:48:39 <kmc> how so?
19:49:09 <Lymee> !fyb does-this-still-work :@++[.....................................................................]*;:[........]@@[[+]++++++++++++!>];:[........]@@[[+]++++++++++++!>];:[........]@@[[+]++++++++++++!>];
19:50:12 <EgoBot> ​Score for Lymee_does-this-still-work: 0.0
19:50:36 <Lymee> I guess the defect thing is now gone? =p
20:02:13 <oerjan> it defected
20:15:30 <Phantom_Hoover> DuckDuckGo doesn't give any easily-visible way to deactivate their spelling correction on searches.
20:15:31 <Phantom_Hoover> -what-
20:16:00 <elliott> It doesn't correct unless you click the link.
20:16:09 <elliott> That's a Google thing.
20:16:15 <Phantom_Hoover> No.
20:16:28 <Phantom_Hoover> http://duckduckgo.com/?q=headshoots
20:16:40 <Phantom_Hoover> Note distinct lack of any results even vaguely related to what I'm looking for.
20:17:12 <Phantom_Hoover> Note also lack of any way to get to said results.
20:17:34 <elliott> 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 <elliott> 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 <elliott> Personally that's the first I've seen of it.
20:41:26 <Gregor> What's a headshoot?
20:42:19 <oerjan> 's when a dorf got shoot in t'head, ye ken
20:43:54 <elliott> Gregor: I don't know, but a bunch of them make a fortress.
20:44:59 -!- monqy has joined.
20:45:01 <oerjan> > ord 'h'
20:45:02 <lambdabot> 104
20:45:28 <elliott> helo oerjan
20:45:28 * oerjan thinks he detects an off-by-one error
20:45:31 <elliott> heloerjan
20:45:52 <oerjan> iiisisiiio
20:45:57 <elliott> eieio
20:45:59 <oerjan> outputs 103 doesn't it
20:46:04 <Phantom_Hoover> Thoerjan.
20:46:07 <elliott> it doesnt even work because deadfish outputs in decimal
20:46:25 <oerjan> well yeah but it's not like he can get any closer :P
20:46:36 <oerjan> Phantom_Hoover: wat
20:47:27 <Phantom_Hoover> oerjan, u
20:47:29 <Phantom_Hoover> um
20:47:30 <Phantom_Hoover> you
20:47:31 <Phantom_Hoover> no
20:47:32 <Phantom_Hoover> you
20:47:46 <Phantom_Hoover> oerjan, http://www.youtube.com/watch?v=Pj2NOTanzWI
20:47:48 <Phantom_Hoover> watch this
20:47:52 <Phantom_Hoover> watch all the suggestions
20:48:01 <oerjan> NOOOOOOOOOO not the youtube
20:48:02 <Phantom_Hoover> Well
20:48:14 <Phantom_Hoover> Except the Japanese McDonald's ad one.
20:48:19 <Phantom_Hoover> I have no idea where that one came from.
20:48:26 <elliott> also the stoner on the price is right one?
20:48:59 <elliott> Phantom_Hoover: I'm surprised oerjan got his Ph.D. without studying that.
20:49:45 <Phantom_Hoover> I know, it's ridiculous.
20:51:03 <Phantom_Hoover> How would he know what the largest number is?
20:51:17 <elliott> didn't oerjan quote about the same figure for when arithmetic might break down once
20:51:18 <elliott> I THINK HE DID
20:58:46 <oerjan> i guess it's what we mathematicians call, er, what was it again
20:59:01 <oerjan> ah yes, "a folklore result"
20:59:20 <oerjan> (or theorem, but a number is not a theorem)
21:00:33 <oerjan> also, i now need to work out a plan to steal elizabeth 5's dress. preferably before it's toast.
21:02:51 <elliott> what do you have against toast :(
21:04:07 -!- zzo38 has joined.
21:04:13 <oerjan> nothing, but the dress would be no use if it cannot change shape.
21:06:41 <zzo38> 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 <Phantom_Hoover> oerjan, will you wear dresses beyond the dreams of avarice?
21:08:13 <oerjan> beyond _any_ dreams, Phantom_Hoover
21:08:27 <Phantom_Hoover> oerjan, don't tell Lymee!
21:08:34 <oerjan> O KAY
21:09:13 <Phantom_Hoover> A mod for DF has Nordic gold in it.
21:09:14 <Lymee> Uuu?
21:09:22 <Phantom_Hoover> This is funny for a number of reasons.
21:09:32 <oerjan> Lymee: no, not unununium, nordic gold
21:09:56 <Lymee> Uuuuuu... >:c
21:10:01 * Lymee puts oerjan into a poofy pink dress
21:10:03 <oerjan> what's so funny about nordic gold
21:10:04 <Phantom_Hoover> Firstly, Nordic gold is a very recent invention and is only used for Euro coins.
21:10:20 <oerjan> wat
21:10:31 <oerjan> tempus googlit
21:10:43 <Phantom_Hoover> Secondly, it's 5% aluminium, and aluminium is as rare as platinum in DF.
21:11:34 <oerjan> um google says it is (was?) used in swedish 10-krona
21:12:35 <Phantom_Hoover> Hmm.
21:13:21 <Phantom_Hoover> OK, it was developed 10 years before the Euro.
21:13:40 <Phantom_Hoover> That's still stupidly recent.
21:14:42 -!- ais523 has joined.
21:15:58 <ais523> happy australian mailman mailing list reminders day!
21:16:02 <zzo38> 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 <ais523> oh no, is it a bad thing if I see a statement by zzo38 and actually know the context?
21:20:12 <zzo38> 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 <zzo38> 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 <zzo38> But I don't know. What do you suggest?
21:22:04 <oerjan> ais523: resistance is futile
21:22:21 <cheater> what about reactance
21:22:37 <ais523> well, reactance = imaginary resistance
21:22:49 <ais523> that's probably going to be futile too if real resistance is futile
21:22:49 <zzo38> He has thirteen energy cards in his trash, if that would help.
21:23:19 <ais523> on the other hand, imagining it may be more productive if doing it for real doesn't work
21:23:31 <ais523> but it's going to depend a lot on the frequency
21:24:37 <zzo38> 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 <zzo38> Which attack should I play?
21:25:56 <cheater> psyduck
21:26:46 -!- FireFly has quit (Quit: FireFly).
21:26:59 <kmc> wouldn't a perfect inductor have futile resistance and non-futile reactance?
21:27:12 <kmc> i'm with cheater on this one
21:28:17 <Phantom_Hoover> Inductor?
21:28:23 <ais523> kmc: do you /have/ a perfect inductor?
21:28:33 <ais523> a whole load of engineers would be interested in it
21:28:33 <kmc> yep
21:29:03 <ais523> 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 <Phantom_Hoover> Perfect generally just means modulo energy losses, right?
21:29:17 <Phantom_Hoover> ais523, I know, we did them in AH physics.
21:29:31 <cheater> i heard talking about agda can induce coma perfectly
21:29:38 <cheater> how is that for a perfect inductor
21:29:53 <ais523> did you use them for anything other than demonstrating they obeyed the right formulas?
21:30:16 <ais523> it's amusing watching physicists do electronics, the circuits they use are always physically massive
21:30:26 <ais523> wires tens of centimetres long, etc
21:30:33 <Phantom_Hoover> So a perfect inductor would be one where E = -L(dI/dt) exactly all the time, surely?
21:30:52 <ais523> are you sure you mean E there?
21:31:01 <cheater> yes E is voltage
21:31:12 <ais523> voltage is more commonly V
21:31:19 <cheater> E is common for voltage
21:31:32 <ais523> no, it's common for energy
21:31:32 <Phantom_Hoover> ais523, I couldn't work out what the LaTeX for the curly one is.
21:31:49 <kmc> maxwell's equations canonically use D B E H
21:31:58 <Phantom_Hoover> kmc, irrelevant.
21:32:03 <kmc> no u
21:32:13 <Phantom_Hoover> None of those is emf.
21:32:22 <Phantom_Hoover> 21:31:19: <cheater> E is common for voltage
21:32:27 <Phantom_Hoover> This is so wrong I don't even.
21:32:47 <Phantom_Hoover> 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 <kmc> inductors aren't "generally avoided", they're everywhere
21:33:00 <ais523> Phantom_Hoover: I suspect cheater is just trolling again
21:33:04 <kmc> but yeah, cheaper alternatives are used when possible (as with anything else)
21:33:17 <ais523> kmc: avoided in the sense that people don't use them unless they have to
21:33:19 <ais523> but often they do
21:33:25 <Phantom_Hoover> ais523, sure, but it's more fun to pretend that he's that stupid.
21:33:26 <kmc> that's the same as any part though
21:33:44 <ais523> kmc: I've even seen circuits that use VDNRs just so they don't have to use inductors
21:33:59 <elliott> Phantom_Hoover: advanced stupidity can be a kind of trolling
21:34:13 <Phantom_Hoover> elliott, I'm imagining courses in advanced stupidity.
21:34:24 <ais523> elliott: I think the difference between stupidity and trolling is the same as that between ignorance and malice
21:34:38 <zzo38> I do not have PSYDUCK. I have HAUNTER [Lv26].
21:35:00 <elliott> ais523: exactly, so intentional stupidity is a kind of trolling
21:35:07 <elliott> admittedly, not a very common one
21:35:10 <ais523> elliott: yes
21:35:18 <monqy> not very common?
21:35:26 <elliott> monqy: intentional /feigned/ stupidity is common
21:35:33 <elliott> intentionally applying real stupidity is something else entirely
21:35:35 <ais523> elliott: at least Usenet trolls commonly make typos or grammar errors
21:35:44 <ais523> in the hope of causing more confusion when someone (often another troll) points them out
21:36:05 <ais523> elliott: would you call "refusing to learn" real or feigned stupidity?
21:36:13 <cheater> kmc, the problem is that they are not that easy to make
21:36:21 <monqy> ais523: sounds like intentional real
21:36:30 <ais523> monqy: I think I think so too, but am not sure
21:36:36 <elliott> ais523: depends what their motivation is, I suppose
21:36:49 <elliott> ais523: but it's disruptive whether intentional or not
21:37:03 <kmc> one thing i'm learning about this channel is that whenever cheater speaks there ensues a long-winded discussion of trolling
21:37:15 <kmc> regardless of whatever cheater said
21:37:15 <elliott> that's only happened like three times
21:37:22 <zzo38> Which attack do you think has a greater probability of winning?
21:37:27 <kmc> which i think makes him the master troll
21:37:27 <ais523> kmc: if you're known as a troll, even not trolling is trolling, because people look for the trollish aspects
21:37:29 <kmc> zzo38, psyduck
21:37:37 <ais523> kmc: psyduck isn't an attack...
21:37:48 <zzo38> I told you, I do not have PSYDUCK. I have HAUNTER [Lv26].
21:38:12 <cheater> zzo38, out of the possibilities you list i would take HAUNTER
21:38:16 <ais523> zzo38: which expansion is that Haunter from? (what are its attacks, if you don't know expansions?)
21:38:25 <zzo38> It is Lv26.
21:38:26 <cheater> but that is only because you have just mentioned one possibility
21:38:48 <elliott> kmc: I'm not sure provoking a vaguely interesting discussion about trolling counts as good trolling
21:38:49 <ais523> zzo38: I can't look up TCG cards based on their levels on the usual sites
21:38:52 <zzo38> 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 <ais523> so although the level might be a unique description, it's useless in solving the puzzle
21:39:20 <ais523> hmm... how many HP is the opponent from being KOed?
21:39:21 <cheater> well if he has a lot of trainer cards then go for poltergeist
21:39:46 <ais523> 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 <zzo38> 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 <ais523> unless one of the trainer cards is a full-heal equivalent
21:40:26 <ais523> (Magic: the Gathering makes a better esolang than Pokémon TCG, incidentally; there's more state to maintain)
21:40:33 <zzo38> 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 <zzo38> I have not seem his hand!
21:41:07 <ais523> and how many prizes are each player from losing? and do you have benched Pokémon?
21:41:23 <zzo38> 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 <ais523> also, do you have any trainer cards in hand yourself?
21:41:51 <zzo38> 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 <zzo38> I have no trainer cards myself.
21:42:02 <zzo38> I have only energy cards.
21:42:20 <elliott> hmm, should I fix shiro's massive performance regression or fail to implement scapegoat again...
21:42:32 <zzo38> He need 1 damage to be knocked out, I need 2 damage to be knocked out.
21:43:00 <ais523> zzo38: go with Nightmare, the probabilities are much better that way
21:43:02 <zzo38> Actually I do have SWITCH, but that won't help now.
21:43:05 <zzo38> ais523: OK.
21:43:07 <Deewiant> elliott: Fix shiro, I await your superior funge-space
21:43:22 <zzo38> Yes I win
21:43:48 <ais523> 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 <elliott> 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 <ais523> zzo38: glad to have helped
21:44:23 <Deewiant> elliott: I know; all the more reason to get to it
21:44:26 <ais523> elliott: what's your superior fungespace like
21:44:32 <zzo38> 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 <elliott> ais523: Like Deewiant's, but N-dimensional, and maybe fanceir
21:44:46 <elliott> fancier
21:44:53 <elliott> Possibly based on mcmap's experience
21:45:10 <elliott> ais523: I'll be happy if I can beat ccbi on Fungicide :-)
21:45:14 <ais523> elliott: I'm wondering what I should use to store space for Elliottcraft
21:45:35 <elliott> 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 <Phantom_Hoover> ais523, octree!
21:45:47 <ais523> 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 <elliott> Phantom_Hoover: won't work
21:45:54 <elliott> ais523: For my Elliottcraft, I've ended up just picking something similar to McRegion
21:46:08 <ais523> because it doesn't have a speed-of-light
21:46:10 <elliott> (will now describe:)
21:46:20 <ais523> (it has a 1/tick speed that's very basic, but it can be exceeded)
21:46:50 <elliott> 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 <elliott> 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 <elliott> ais523: Then you use the filesystem to do the actual region lookup.
21:47:32 <elliott> It's not amazingly elegant, but it exploits HD properties and the like and has good space usage.
21:47:40 <ais523> that's kind-of neat
21:47:47 <ais523> the problem with my version is that it has an infinite speed of sound
21:47:57 <ais523> sort-of like Rubicon
21:47:58 <elliott> ais523: You might just want to work with a finite world :P
21:48:09 <ais523> which means that speed-of-light-based calculations are problematic
21:48:11 <elliott> (as in, small enough to fit in memory at once)
21:48:14 <ais523> elliott: perhaps, but that introduces boundary issues
21:48:18 <elliott> ais523: Torus?
21:48:23 <ais523> perhaps I'll put black holes at the boundaries that destroy everything
21:48:25 <ais523> torus would be even worse
21:48:37 <elliott> oh, you could get, like, infinite acceleration with a torus, right?
21:48:57 <elliott> ais523: But yeah, mcregion is basically based on the fact that every chunk is tiny when compressed
21:49:09 <elliott> So you can fit a bunch of them into one sector
21:49:16 <Phantom_Hoover> <elliott> oh, you could get, like, infinite acceleration with a torus, right?
21:49:17 <elliott> and rarely have to rearrange the file
21:49:21 <Phantom_Hoover> This is a bad thing?
21:49:29 <elliott> Phantom_Hoover: :P
21:49:36 <ais523> elliott: wrapping all three dimensions would indeed allow infinite acceleration
21:49:47 <ais523> wrapping two, I don't think it would, but it'd make the game world act oddly in a visible way
21:49:52 <elliott> howso?
21:50:27 <ais523> 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 <elliott> ais523: I'm very sceptical it's me, and I suspect you are too
21:50:45 <ais523> 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 <ais523> elliott: indeed
21:51:01 <ais523> NAO nicks often match Freenode nicks, though
21:51:06 <elliott> I'm pretty sure I have a different name on NAO
21:51:16 <elliott> ais523: really, my freenode nick is an oddity; Elliott is not a reliable nick elsewhere
21:51:23 <ais523> yep, I suppose so
21:51:30 <elliott> this one was stolen from me years ago, after all
21:51:32 <ais523> even ais523 isn't totally reliable (someone else has the nick on AOL)
21:51:34 <elliott> I'm still not sure what happened there
21:51:46 <elliott> ais523: I'm surprised there are even free AIM names left
21:51:56 <ais523> I haven't found a clash on callforjudgement yet, but it wouldn't surprise me if there was one
21:52:04 <elliott> I wonder how irritated people with really generic AIM names are?
21:52:08 <elliott> I bet they get bothered constantly
21:52:13 <elliott> like, "joe"
21:52:36 <ais523> I suspect most of them are no longer using AIM
21:52:56 <elliott> I don't see why not; it's the most popular messenger in the US still, I think
21:53:00 <elliott> and it's only fourteen years old
21:53:21 <elliott> I suspect they'll have changed screennames, though
21:53:35 <ais523> 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 <elliott> ais523: well, AIM has critical mass, and it's not much of a novelty application
21:54:32 <elliott> "talk to friends" isn't something that gets old for most people, I suspect, especially when it's that ubiquitous
21:55:24 <elliott> (I suspect facebook is more popular these days, actually)
21:56:38 <elliott> this shiro slowdown is really baffling
21:56:52 <elliott> I'd dig into the core except that'd be completely painful
21:59:14 <cheater> what if you have no friends
21:59:36 <cheater> i guess aim has some bots that you could add like Smarterchild
21:59:40 <cheater> and pretend they are your friends
21:59:50 <cheater> but the conversation isn't too exciting
22:00:44 <Phantom_Hoover> cheater, how do you handle that problem?
22:01:12 <cheater> it is too much to handle
22:03:40 <zzo38> Do you need more-notation for guard-conditions?
22:03:54 -!- Sgeo has joined.
22:04:16 <elliott> Yes.
22:04:37 -!- Phantom_Hoover has quit (Quit: Leaving).
22:05:45 <zzo38> That is good because I put that in the document.
22:05:51 <elliott> Excellent.
22:06:14 <zzo38> That is, guard-conditions in case blocks.
22:07:14 <zzo38> 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 <zzo38> But what is the best algorithm to make order of patterns based on specificness?
22:07:56 <zzo38> 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 <zzo38> Is there a use of class of a class?
22:25:44 -!- CakeProphet has joined.
22:33:09 <elliott> oh dear
22:33:24 <elliott> my bug appears to be unrelated to the fingerprint change
22:33:39 <ais523> elliott: oh good, I was afraid that the oh dear was out of context both forwards and backwards
22:33:41 <ais523> but you provided some
22:33:51 <ais523> having to ask /you/ about context would seem very out of character for you
22:34:03 <elliott> well, I say "hmm" a lot
22:34:16 <ais523> yep, but that nearly always gets context afterwards
22:34:19 <elliott> 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 <ais523> in that case, you waited /just/ long enough that I feared the context wasn't coming
22:34:48 <elliott> -coreIns '\"' = modifyCurrentIP $ \ip -> ip{ isStringMode = not (isStringMode ip) }
22:34:49 <elliott> +coreIns '"' = modifyCurrentIP $ \ip -> ip{ isStringMode = not (isStringMode ip) }
22:34:49 <elliott> clearly this is the source of my performance woes
22:35:12 <zzo38> Did I write it good? http://zzo38computer.cjb.net/dnd/options/Illithid_Savant.c
22:35:14 <ais523> 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 <elliott> ok... if the only other change really is the reason for my slowdown, I'm going to kill GHC
22:35:23 <zzo38> (Note: This is not a C program)
22:35:33 <ais523> zzo38: I was a bit confused by that URL...
22:35:50 <elliott> I was hoping it'd be a C program
22:35:50 <zzo38> The "c" stands for "class"
22:36:10 <ais523> zzo38: prestige class? template?
22:36:24 <zzo38> 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 <ais523> and does it apply to illithids, or to non-illithids who want to be more like illithids?
22:36:27 <oerjan> <elliott> clearly this is the source of my performance woes <-- wat
22:36:36 <elliott> oerjan: it was a: ``joke''
22:36:40 <oerjan> > ['\"', '"']
22:36:41 <lambdabot> "\"\""
22:36:47 <elliott> oh thank god, that wasn't the source of my performance bug
22:36:48 <zzo38> ais523: This file is a prestige class. It applies only to illithids it is clear in the prerequisites
22:36:48 <elliott> wait...
22:36:53 <ais523> elliott: since when did you use LaTeX quotes?
22:36:55 <elliott> this bug is literally impossible, then
22:36:58 <zzo38> It even says "prestige class"!
22:37:02 <ais523> ah, OK
22:37:05 <elliott> ais523: I use them when being condescending
22:37:06 <ais523> I didn't look at the file, just at the name
22:37:19 <ais523> elliott: that's a little bizarre...
22:37:27 <zzo38> The second line of the file says [Prestige class]
22:37:33 <ais523> nothing about LaTeX really says condescension to me
22:37:39 <elliott> ais523: they predate TeX
22:37:48 <ais523> well, yes
22:37:50 <elliott> or, well, `old-style Unix quotes' do, and GNU inherited it
22:37:53 <ais523> but are used most famously in LaTeX
22:38:02 <ais523> the double ``'' at least
22:38:09 <ais523> singles are used in a lot more contexts
22:38:16 <elliott> 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 <zzo38> I just updated it by adding a few words
22:38:24 <ais523> I suppose ``'' quoting is plausibly used in m4
22:38:35 <ais523> but I'm used to seeing autoconf m4 which uses [[]] rather than regular m4's ``''
22:39:03 <elliott> hmm, I kind of want to set up a Linux cluster
22:39:11 <zzo38> 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 <ais523> hmm, interesting spam
22:39:55 <ais523> its title is REF NO: L/200-26937 (VIEW ATTACHMENT) with a .html and a .rtf attachment
22:40:00 <ais523> and there's no text in the body
22:40:28 <elliott> 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 <ais523> 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 <elliott> ais523: are you on Linux?
22:40:42 <ais523> I'll open it in gedit, I think, it's unlikely to be a zeroday against /that/
22:40:44 <ais523> elliott: yes
22:40:54 <elliott> things that scare me when I type them: "rm -rf Shiro"
22:41:05 <ais523> oh, apparently it has an invalid character encoding
22:41:06 <oerjan> NOOOOOOOOOOOOOOOOO
22:41:09 <elliott> I should really stop with the -fs
22:41:10 <oerjan> poor Shiro
22:41:13 <elliott> I do them instinctively when I -r
22:41:24 <ais523> which makes me even more suspicious that it's actually a renamed .exe or something
22:41:41 <kmc> rm -ri
22:41:50 <ais523> file /tmp/spam.rtf
22:41:51 <ais523> /tmp/spam.rtf: Rich Text Format data, version 1, ANSI
22:41:53 <elliott> instance (Num a, Num b) => Num (a,b) where
22:41:53 <elliott> (a,b) + (c,d) = (a+c, b+d)
22:41:53 <elliott> (a,b) - (c,d) = (a-c, b-d)
22:41:53 <elliott> -- These don't really make any sense
22:41:53 <elliott> (a,b) * (c,d) = (a*c, b*d)
22:41:53 <elliott> abs (a,b) = (abs a, abs b)
22:41:55 <elliott> signum (a,b) = (signum a, signum b)
22:41:57 <elliott> fromInteger a = (fromInteger a, fromInteger a)
22:41:58 <ais523> elliott: I normally leave them out even when I need them
22:41:59 <elliott> augh, what was I thinking when I wrote that second set?
22:42:01 <ais523> and then have to redo the delete
22:42:15 <Deewiant> elliott: ***FUNKY***
22:42:16 * ais523 reads it in less
22:42:24 <elliott> Deewiant: wat
22:42:28 <kmc> abs (a,b) = (sqrt (a^2 + b^2), 0)
22:42:36 <Deewiant> elliott: Re. funky instances in list-tries
22:42:41 <Deewiant> Just reminded me
22:42:41 <ais523> oh, apparently it's just ASCII text apart from it contains a NUL at the end for no obvious reason
22:42:43 <elliott> Deewiant: heh
22:42:45 * elliott replaces them all with errors
22:42:52 <elliott> kmc: heh
22:42:54 <ais523> 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 <oerjan> elliott: um looks like perfectly appropriate pointwise arithmetic to me >:)
22:43:02 <elliott> ais523: always null-terminate your strings
22:43:17 <ais523> elliott: yes, but a nul-terminated... text file?
22:43:28 <elliott> ais523: they're strings!
22:43:35 -!- hagb4rd has quit (Ping timeout: 252 seconds).
22:43:39 <elliott> oerjan: yes, I'm sure that will make my bugs so much more comforting :)
22:43:39 <ais523> but not C strings
22:44:20 <ais523> oh, they've even included a telephone number in the UK, which is nice
22:44:39 <ais523> a mobile number, by the look of it
22:45:01 <ais523> it appears to just be phishing for real name/address/phone number sets
22:45:07 <ais523> I'm disappointed, I was hoping for an exploit
22:45:21 <oerjan> user-friendly spam
22:45:29 <elliott> -- gulp
22:45:29 <elliott> unsafeToAny :: a -> Any
22:45:29 <elliott> unsafeToAny = unsafeCoerce
22:45:29 <elliott> unsafeFromAny :: Any -> a
22:45:30 <elliott> unsafeFromAny = unsafeCoerce
22:45:32 <elliott> I share your thoughts, past Elliott
22:45:48 <elliott> where run Fingerprint{..} =
22:45:48 <elliott> fpRun $ FPState { fpGet = (unsafeFromAny . (Map.! fpName)) <$> gets globalFPState
22:45:48 <elliott> , fpModify = \f -> modifyGlobalFPState (Map.adjust (unsafeToAny . f . unsafeFromAny) fpName)
22:45:48 <elliott> , fpGetIP = (unsafeFromAny . (Map.! fpName)) <$> gets (ipFPState . currentIP)
22:45:48 <elliott> , fpModifyIP = \f -> modifyCurrentIP $ \ip -> ip{ ipFPState = Map.adjust (unsafeToAny . f . unsafeFromAny) fpName (ipFPState ip) } }
22:45:52 <elliott> but do you share my horror?
22:46:09 <kmc> haha
22:46:18 <kmc> dude, we have Data.Dynamic for a reason
22:46:32 <elliott> 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 <elliott> :)
22:46:38 <kmc> yeah
22:46:48 <elliott> kmc: I swear I'm doing macrooptimisation too!
22:46:50 <elliott> but the competition is tough
22:46:55 <oerjan> 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 <elliott> oerjan: how is it safer
22:47:08 <kmc> it's safer because it's less polymorphic
22:47:22 <kmc> so more mistakes you could make with it are compile-time errors
22:47:31 <Sgeo> 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 <kmc> well, not the direct composition of the two
22:47:33 <elliott> unsafeFromAny . unsafeToAny :: a -> c
22:47:38 <elliott> doesn't look less polymorphic :-P
22:47:38 <kmc> but using one and then using the other somewhere
22:47:51 <elliott> oerjan: well, you can cast things that can't be casted to Any
22:47:55 <elliott> it's just not very reliable
22:47:58 <oerjan> 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 <kmc> yes
22:48:17 <elliott> oerjan: yes
22:48:18 <kmc> S -> Any -> T is no better than S -> T
22:48:33 <oerjan> ok then
22:51:49 <zzo38> Maybe you prefer this spell better instead of Illithid_Savant file? http://zzo38computer.cjb.net/dnd/options/Quick_Scroll.s
22:52:13 <elliott> some of this code is so ugly :(
22:52:18 <elliott> I don't know what I was thinking
22:52:26 <elliott> actually, yes I do, I was thinking I should pass Mycology before worrying about that
22:52:41 <zzo38> Or even the Prohibit_Metamagic spell, or Merciful_to_Gibbering_Mouthers, or Remove_Reality
22:53:11 <elliott> Remove_Reality sounds good
22:53:15 <ais523> Remove Reality is a spell that it ever makes sense to cast?
22:53:19 <oerjan> zzo38: oh looking at that haddock page again, unsafeCoerce# (with the #) _can_ be used with unboxed types
22:53:25 <ais523> zzo38: do you know about the "Locate City Bomb"?
22:53:26 <oerjan> istr you asked about that
22:53:45 <ais523> oerjan: the # makes it even more unsafe?
22:53:45 <zzo38> That is what I thought, once I saw unsafeCoerce#, there is one for boxed types and one for unboxed types
22:54:01 <zzo38> ais523: No I don't know about the "Locate City Bomb".
22:54:12 <oerjan> zzo38: well unsafeCoerce is just a wrapper around unsafeCoerce#, which can be used for all, iiuc
22:54:20 <zzo38> And currently Remove Reality is only the name, it has no text currently
22:54:23 <ais523> zzo38: it's a trick you can do by combining a lot of different feats
22:54:43 <ais523> that converts the divination spell Locate City into the most powerful damage spell in the game
22:55:31 <ais523> (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 <ais523> (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 <zzo38> OK, now I know.
22:56:45 <elliott> btw, does anyone know a system with getenv but not putenv?
22:56:56 <ais523> I think it still also locates cities, too
22:57:09 <ais523> elliott: arguably gcc-bf
22:57:12 <ais523> but only arguably
22:57:21 <ais523> because the whole notion of an environment is pretty hazy there
22:57:35 <elliott> ais523: I would like to see gcc-bf run Shiro :)
22:57:48 <oerjan> ais523: the # doesn't make it more unsafe, but it allows it to be used on non-lifted values
22:57:48 <ais523> I'd like to see it run a stdio hello world without crashing
22:57:50 <elliott> Right now I depend on System.Posix.Env because EVAR requires putenv, but that's rubbish because Windows has it too
22:57:55 <elliott> I'm tempted to just use the FFI to get putenv from the ystem
22:58:08 <ais523> note that getenv/putenv are entirely usermode code
22:58:10 <ais523> in fact, pure C
22:58:17 <ais523> they just manipulate the environ variable
22:58:40 <ais523> 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 <ais523> and that goes via the libc, and it just puts the environment in as an arg when you exec
22:59:04 <zzo38> 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 <ais523> (the system call is execve, requiring an explicit environment)
22:59:34 <elliott> ais523: is environ as portable as getenv?
22:59:47 <ais523> I don't know
22:59:47 <Deewiant> elliott: Nope
22:59:53 <elliott> right
22:59:55 <Deewiant> Windows has getenv, not environ
23:00:08 <ais523> Deewiant: Windows does have environ, or at least 3.1 did
23:00:12 <ais523> if you used main rather than WinMain
23:00:23 <ais523> I, um, have very very out of date knowledge on how Windows works
23:00:31 <ais523> as I used to target 3.1 even once Windows XP was out
23:00:44 <ais523> and got annoyed when they removed deprecated functions from Windows 2
23:01:26 <ais523> (in particular, the one to control the internal PC speaker, I don't think they ever did replace that one)
23:02:23 <elliott> why on earth would you call a fingerprint for bitwise operations BOOL?
23:03:21 <Sgeo> My Operating Systems Internals and Design professor wrote a simulated OS in .NET that we'll be using for homework :/
23:05:33 <ais523> elliott: I wouldn't
23:05:53 <elliott> ais523: good
23:05:58 <ais523> Sgeo: in .NET "asm"? or in a language that compiles to .NET?
23:06:58 <elliott> who's fault is it that I'm writing this silly interpreter, anyway?
23:07:09 <Sgeo> 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 <elliott> oh, goody! a fingerprint with actual state to port!
23:07:28 <Sgeo> So, a language that compiles to .NET, I guess
23:08:05 <Sgeo> Why is the Bluebottle site down? :(
23:08:16 <Sgeo> 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 <elliott> they're invading!!!!
23:29:57 <oerjan> clearly a conspiracy
23:30:12 -!- copumpkin has joined.
23:33:33 <ais523> 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 <ais523> since when were users not able to do that by themselves?
23:33:33 <Sgeo> RubyGems does that too
23:33:33 <oerjan> 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 <elliott> kmc: copumpkin: mauke: ok, speak up
23:33:33 <Sgeo> Oh right, Ruby and Git are in bed together for some reason
23:33:33 <elliott> who do we have to execute?
23:33:33 <copumpkin> ?
23:33:33 -!- CakeProphet has quit (Ping timeout: 258 seconds).
23:33:33 <elliott> don't play dumb
23:33:33 <oerjan> shachaf: YOU TOO
23:33:33 <copumpkin> I think cheater mentioned it in #haskell-blah at some point
23:33:33 <mauke> cernel joson
23:33:33 <copumpkin> or something like that
23:33:33 -!- Gregor has joined.
23:33:33 <shachaf> oerjan: Me?
23:33:33 <oerjan> YES YOU
23:33:33 <elliott> copumpkin: please tell me he was complaining about getting banned
23:33:33 <shachaf> I've been here for years.
23:33:33 <kmc> zzo38 is the #esoteric ambassador to #haskell
23:33:33 -!- Gregor has changed nick to Guest8904.
23:33:33 <copumpkin> 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 <shachaf> This is a foul place indeed.
23:33:51 <elliott> shachaf: no, that was zzo38's very own genius
23:34:06 <elliott> we just mentioned Haskell a few too many times, I think, so you all got to understand the magic
23:34:33 <mauke> :-|
23:34:46 <ais523> shachaf: zzo38 does that sort of thing by himself, but often talks about it here
23:35:38 <Sgeo> Usually though it's with more obscure things like ... that game thing, right?
23:36:08 <mauke> @keal
23:36:08 <lambdabot> where can i find opensource schematics of Linus Torvalds' x86 clone?
23:36:36 <shachaf> @protontorpedo
23:36:36 <lambdabot> and haskell is not a lisp. correct? holy shit then m learning haskell
23:36:47 <mauke> preflex: be PoppaVic
23:36:48 <preflex> 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 <elliott> ?yhjulwwiefzojcbxybbruweejw
23:36:51 <lambdabot> "\"\\\"\\\\\\\"\\\\\\"
23:37:01 <kmc> we all got to understand the magic: the gathering
23:37:05 <elliott> mauke: so how would one get preflex to output a line starting with an exclamation mark, backtick, or caret?
23:37:10 <shachaf> @@ (@protontorpedo) (@vixen @protontorpedo)
23:37:11 <lambdabot> I dont think tcl cn do that church is my favourite computer scientist.
23:37:11 <kmc> @. elite nixon
23:37:12 <lambdabot> 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 <elliott> I ask purely out of curiosity.
23:37:14 <mauke> elliott: should be impossible
23:37:24 <elliott> mauke: that's what they said about lambdabot, too >:|
23:37:28 <mauke> well, during normal operation
23:37:44 <mauke> elliott: you'd use the msg command
23:37:50 <Sgeo> @sgeo
23:37:50 <lambdabot> Unknown command, try @list
23:37:54 <Sgeo> Oh
23:37:56 <ais523> Sgeo: I wonder if zzo38 getting interested in something /makes/ it obscure
23:37:59 <elliott> ?so !sh echo '?quote oops'
23:37:59 <lambdabot> !sh echo '?quote oops' not available
23:38:00 <EgoBot> ​?quote oops not available
23:38:04 <elliott> heh
23:38:10 <shachaf> @@ <protontorpedo> (@protontorpedo) <lambdabot> (@vixen @protontorpedo)
23:38:10 <lambdabot> <protontorpedo> 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 <lambdabot> 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 <lambdabot> product <lambdabot> church is my favourite computer scientist.
23:38:19 <elliott> ?so !sh echo '?quote oops'; #
23:38:19 <zzo38> ais523: I doubt it but possibly you try figure it out
23:38:19 <lambdabot> !sh echo '?quote oops'; # not available
23:38:20 <EgoBot> ​?quote oops
23:38:43 <ais523> even the Pokémon TCG stuff, zzo38 is interested in a version of it that nobody plays any more
23:38:52 <ais523> which makes his questions hard to follow sometimes
23:38:54 <mauke> preflex: msg #esoteric ?so !sh echo '@quote oops'; #
23:38:54 <preflex> ?so !sh echo '@quote oops'; #
23:38:55 <lambdabot> !sh echo '@quote oops'; # not available
23:38:55 <EgoBot> ​@quote oops
23:38:56 <ais523> (except, presumably, zzo38 himself)
23:39:15 <elliott> preflex: msg #esoteric obviously i have no security whatsoever
23:40:15 <mauke> http://mauke.dyndns.org/stuff/ploki/ - here's an esolang
23:40:28 <oerjan> @quote oops
23:40:29 <lambdabot> ihope says: Oops, I forgot that Djinn doesn't do GADT's.
23:40:39 <zzo38> Why don't you play that version of Pokemon card anymore?
23:40:55 <elliott> oh, what is this travesty? nobody pinged fungot during the quoting-fest
23:40:55 <fungot> 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 <ais523> zzo38: actually, I never played that particular version in the first place
23:41:01 <elliott> ^source
23:41:01 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
23:41:02 <oerjan> elliott: oh wait, EgoBot's invisible space
23:41:12 <ais523> but mostly, because it isn't competitive between humans, and most players of competitive card games like playing human opponents
23:41:35 <zzo38> I prefer playing it with random deck, if possible
23:41:38 <kmc> which version is that?
23:41:41 <zzo38> That is deck consisting of random cards
23:41:45 <elliott> mauke: doesn't look _that_ esoteric :-D
23:41:54 <elliott> although i have no idea what io.pk does.
23:41:57 <zzo38> (Pokemon Card GB2 does not have that function, though)
23:42:11 <mauke> elliott: copies stdin to stdout
23:42:19 <zzo38> What is it not competitive?
23:42:35 <elliott> ABRUF 200 #<@sort #<cmp (list ] mid)#> @sort #<cmp (list [ mid)#>#>
23:42:42 <elliott> mauke: that looks like J if you expanded most of the verbs into words
23:43:17 <mauke> this language hides terrible secrets
23:44:34 <mauke> http://mauke.dyndns.org/stuff/ploki/ploki-0.6.5.1/examples/uncomment.pk
23:45:01 <elliott> pretty, apart from the parts that look like they're lifted from lolcode
23:45:16 <mauke> this language is older than lolcode (or lolcats)
23:45:36 <elliott> I was just referring to the LEET and KTHX keywords :P
23:46:09 <mauke> yeah, WUNT and CLAUDS are obviously perfectly normal :-)
23:46:17 <elliott> naturally
23:47:15 <elliott> ais523: tell mauke about Feather, hopefully it'll have a profound enough effect that the invasion tapers off
23:47:26 <ais523> elliott: I think I've come across a reasonably sensible definition of an esolang
23:47:42 <oerjan> ais523: THEN IT'S WRONG
23:47:43 <elliott> mention Feather to ais523, topic suddenly changes
23:47:55 <oerjan> ...retroactively.
23:48:01 <mauke> radioactively
23:48:02 <Sgeo> Would it be possible for me to play with Epigram 1?
23:48:14 <ais523> 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 <elliott> ais523: ah, good, so funge-98 isn't an esolang, and PSOX isn't an esolang project :)
23:48:54 <oerjan> i'm with elliott
23:48:59 <Sgeo> Oh, found it
23:49:13 <elliott> oerjan: as in, you agree with the literal statements I made, or you agree with them sarcastically?
23:49:17 <ais523> 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 <elliott> because they're fairly close to opinions I hold literally
23:49:36 <oerjan> mauke: i detect that you do not know the horror which is feather
23:49:41 <oerjan> elliott: yes.
23:49:51 <ais523> oerjan: neither does anyone else! that's what the horror's about
23:49:53 <elliott> nobody truly knows the horror other than ais523. it will eat his soul.
23:50:03 <elliott> if only he... looks
23:50:03 <mauke> oerjan: correct
23:50:10 <elliott> [spooky music]
23:50:19 -!- augur has quit (Read error: Connection reset by peer).
23:50:19 <Sgeo> The most horrible thing about Feather is the fact that it doesn't exist.
23:50:29 <elliott> that's far from the most horrible thing about it
23:50:31 <ais523> 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 <mauke> I've programmed in Sorted!, though
23:50:44 <ais523> so it indeed doesn't exist, and wondering whether it could is the issue
23:50:48 <ais523> that causes all the problems
23:51:01 <ais523> 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 <mauke> is this like Tamerlane?
23:51:35 <elliott> ais523: you should at least give him the basic summary :P
23:51:39 <ais523> I doubt it, with Feather, "is this like X" seems to be false for all X
23:51:44 <ais523> including X = Feather
23:51:45 <elliott> ("mumble mumble retroactive change self interpreter")
23:52:04 <ais523> elliott: you can't summarise Feather to a Haskell person
23:52:11 <elliott> burn
23:52:11 <ais523> or to anyone else, fwiw
23:52:18 <mauke> http://catseye.tc/projects/tamerlane/doc/tamerlane.html
23:52:21 <elliott> ais523: well, you can inaccurately summarise it
23:52:30 <ais523> I supose so
23:52:36 <elliott> that's what the rest of us go by, at least
23:52:57 <elliott> mauke: the basic, inaccurate summary is that Feather is a language based around retroactively changing the interpreter
23:52:58 <ais523> 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 <oerjan> mauke: i think i can say with some confidence "no". and i hardly looked at your link.
23:53:08 <elliott> mauke: which means, Feather is normally interpreted by an infinite stack of metacircular Feather interpreters
23:53:10 <ais523> this applies to everything, including the interpreter itself
23:53:18 <elliott> mauke: but you can replace every element of that infinite stack with a new interpreter at the beginning of time
23:53:29 <elliott> and you do everything like that
23:53:29 <mauke> is this like the reverse ST monad?
23:53:31 <ais523> elliott: actually, the retroactive changing of the interpreter isn't even the most confusing element
23:53:38 <ais523> mauke: what's the reverse ST monad?
23:53:44 <mauke> like ST, but backwards
23:53:45 <ais523> it's more like continuations, anyway, used in a particular way
23:53:52 <ais523> oh, it's also object-oriented
23:53:56 <mauke> haha
23:54:30 <ais523> and this is how inheritance is done too
23:54:37 <ais523> so the whole thing almost fits together perfectly
23:54:43 <ais523> but working out the details drives people mad
23:55:00 <mauke> ok, then I'm just going to talk about ploki instead
23:55:07 <ais523> 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 <mauke> bonus points if you can tell me wtf "ploki" means
23:55:17 <oerjan> is ploki a p-language like plof
23:55:17 <ais523> at least it seems possible to get the whole thing off the ground if you do that
23:55:27 <ais523> even if it seems a little ridiculous to have something that specific
23:55:29 <elliott> mauke: programminglanguageusedby loki?
23:55:38 <mauke> elliott: unlikely
23:55:41 <elliott> PerLiskindof OKay Ithink
23:56:13 <kmc> wow, Feather sounds like it was designed during a salvia trip
23:56:25 <mauke> I think ploki introduces several novel features
23:56:31 * elliott notes http://esolangs.org/wiki/Feather
23:56:42 <ais523> 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 <mauke> here's not one of them: interpreter written in (mostly) ansi c
23:57:22 <mauke> major feature: there are no malformed ploki programs
23:57:31 <mauke> literally anything is a valid program
23:57:37 <oerjan> i think oklopol had a language like that
23:57:45 <elliott> oklotalk was like that
23:57:55 <elliott> 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 <mauke> also: no error messages
23:58:24 <mauke> the only "diagnostic" is an infinite loop
23:58:35 <elliott> lame, it should just fix the program and keep going :)
23:58:39 <ais523> this sounds like lazy language designer features so far
23:58:45 <elliott> tried to open a file that doesn't exist? well, just open another one
23:58:48 <mauke> but the interpreter is smart enough to recognize some infinite loops and optimize them to sleep(inf)
23:58:50 <elliott> preferably one with a name close to the requested one
23:59:05 <mauke> elliott: basically impossible in ansi c
23:59:10 <mauke> (no directory support)
23:59:21 <elliott> mauke: excuses
23:59:34 <ais523> also, indeed, I can't see any similarities between Feather and Tamerlane at all
23:59:47 <elliott> relatedly: cpressey should come back here
23:59:52 <elliott> (if we say it at least once per day it will come true)
23:59:52 <mauke> ok, how about this: regex matching directly on filehandles
←2011-08-30 2011-08-31 2011-09-01→ ↑2011 ↑all