00:00:36 <oerjan> `run haskell 'm :: Integer; m = 20; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m' 2>/dev/null
00:01:26 <oerjan> close enough to excellent.
00:04:09 -!- MSleep has joined.
00:04:14 -!- MSleep has changed nick to MDude.
00:04:39 -!- pumpmas has changed nick to copumpkin.
00:04:53 <kallisti> oerjan: and it's still a multiplicative group!
00:05:39 <oerjan> which is why the ^ implementation works for this
00:06:28 <kallisti> what's the difference between a group and a multiplicative group?
00:06:47 <oerjan> well it's about where it's used, i guess
00:06:58 <kallisti> it seems to be a notational thing.
00:07:04 <oerjan> and which notation, yes
00:07:41 <oerjan> abelian groups are frequently given additively, nonabelian ones almost never
00:08:10 <oerjan> and of course if there is a ring involved, the notation is standard
00:08:13 <kallisti> all the cool kids are doing muliplication.
00:08:40 <oerjan> also ^ would work for any semigroup, i should think
00:08:57 * kallisti imagines an elementary school that taught group theory
00:09:23 <oerjan> except for x ^ 0 which needs a unit
00:09:43 <kallisti> a semigroup is just a group without the unit, I'm guessing?
00:09:54 <oerjan> no, it's a monoid without the unit
00:10:19 <kallisti> and thus no identity law, but still an associative law?
00:12:03 <kallisti> I think you could probably teach basic group theory to older kids.
00:12:21 -!- derdon has quit (Remote host closed the connection).
00:12:25 <kallisti> it's not even particularly difficult if you explain it in words instead of SCARY MATHS SYMBOLS
00:14:09 <kallisti> I remember the usage of tuples being kind of confusing to me when I was first reading math articles on Wikipedia.
00:14:47 <kallisti> but then it became clear that it was just a notation for grouping components together, and then later "lol product type"
00:16:43 <oerjan> tuples are just elements of the colimit of a diagram with two unconnected sets, what's the problem?
00:17:22 <oerjan> unless it's limit, i can never remember for sure which is which.
00:18:31 <kallisti> In abstract algebra, a normal subgroup is a subgroup which is invariant under conjugation by members of the group. Normal subgroups can be used to construct quotient groups from a given group.
00:19:00 <kallisti> that if you apply one operation, and then a second operation, then reverse the first one
00:19:06 <kallisti> you're back where you started?
00:19:35 <oerjan> no, you get back to the normal subgroup
00:19:55 <kallisti> oh so you're applying operations to the subgroup.
00:20:22 <oerjan> if you're always back exactly where you started, it's called the center.
00:21:05 <oerjan> aba^-1 = b means ab = ba
00:21:16 <kallisti> ƒ(x) = a^(−1)xa, for all x in G,
00:21:23 <kallisti> where a is a given fixed element of G.
00:21:33 <kallisti> that kind of sounds like what I was saying.
00:21:39 <oerjan> yes that's a conjugation.
00:22:47 <kallisti> A subgroup, N, of a group, G, is called a normal subgroup if it is invariant under conjugation; that is, for each element n in N and each g in G, the element gng−1 is still in N.
00:23:17 <kallisti> got it. I should have just kept reading instead of traversing infinitely further across Wikipedia's giant directed graph. :P
00:23:59 -!- GreaseMonkey has joined.
00:24:03 <oerjan> as long as you can get back to philosophy.
00:24:38 <kallisti> a concrete example of a normal subgroup would be helpful. it doesn't seem like it applies to very many integer subgroups...
00:25:22 -!- Patashu has joined.
00:26:02 <kallisti> hmmm wait for multiplication on integers, x^(-1) violates the closure property doesn't it?
00:26:51 <kallisti> and for addition, x^(-1) is actally x*(-1) .....? am I reading that correctly?
00:27:51 <oerjan> kallisti: every subgroup of a commutative group is normal
00:28:33 <oerjan> the rationals \ {0} are a commutative group under multiplication
00:29:08 <oerjan> and the integers are one under addition.
00:29:46 <kallisti> so wait... is multiplication over integers a group at all?
00:30:12 <kallisti> no inverse for every element, rather.
00:30:19 <oerjan> only 1 and -1 have any
00:32:07 <Gregor> <oerjan> Gregor: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA // I believe elliott broke that.
00:32:10 <oerjan> one subgroup of the rational numbers is the set { 2^n | n integer }
00:33:12 -!- elliott has joined.
00:33:16 <oerjan> kallisti: if you look at permutation groups instead, and consider the permutations of a finite set, then the _even_ permutations form a normal subgroup
00:33:44 <kallisti> I just now got "subgroups of commutative groups are normal" :P
00:34:06 <oerjan> permutation groups are very fundamental, though
00:34:33 <Gregor> ... Firefox lost its address bar.
00:34:54 <elliott> 15:06:30: <ais523> now we need to invent an esolang called Single Fifo
00:34:54 <elliott> 15:06:54: <ais523> it's the most ontopic name a spambot's come up with yet, even if it's not as /funny/ as My name Is Johny, what the F**K???
00:34:54 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
00:34:59 <elliott> the problem is, how can it be TC?
00:35:32 <elliott> <lambdabot> oerjan said 1h 1m 12s ago: you appear to have deleted kallisti's HackEgo haskell script while EgoBot's wasn't even _working_ properly. what do you have to say in defense and how would you like to be
00:35:42 <Gregor> oerjan: Complain at elliott.
00:35:59 <oerjan> elliott: i was running an example that needed a module
00:36:12 <elliott> oerjan: kallisti's didn't handle that. the one I wrote did, though
00:36:14 <oerjan> elliott: in fact that part of !haskell still works
00:36:17 <elliott> admittedly, I do not remember kallisti's at all.
00:36:33 <elliott> and do not remember deleting one
00:36:40 <oerjan> elliott: anyway kallisti made something which worked afterwards
00:36:55 <elliott> oerjan: well I haven't been online since yesterday if that is what you mean
00:37:10 <oerjan> elliott: this all happened tonight
00:37:17 <elliott> oerjan: then I deleted nothing
00:37:33 <elliott> oerjan: but I wrote EgoBot's new !haskell so if it's broken complain to me directly.
00:37:36 <oerjan> elliott: well except that.
00:37:48 <oerjan> !haskell main = print "Why I no work???????????????"
00:37:51 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
00:37:59 <elliott> It's because you used a meme.
00:38:03 <elliott> It rejects programs with memes.
00:38:15 <oerjan> !haskell main = print "What about this, then?"
00:38:18 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
00:38:28 <elliott> Gregor: Can you push EgoBot's hg repo to http://codu.org/projects/egobot/hg/ so I can see my own script? X-D
00:38:31 <Sgeo> !haskell --help
00:38:34 <EgoBot> runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG...
00:38:38 <elliott> oerjan: I remember this problem.
00:38:46 <elliott> The problem is that that is trying to use GHC 6.12.
00:38:50 <oerjan> the defendant confesses!
00:39:03 <elliott> Gregor: Where is HackEgo's custom GHC installed from EgoBot's perspective?
00:39:15 <HackEgo> The Glorious Glasgow Haskell Compilation System, version 7.2.1
00:39:21 <kallisti> `haskell import System.Random; main = print `fmap` (randomIO :: IO Int)
00:39:25 <HackEgo> \ /tmp/tmp.j7vwVntFq3:1:8: \ Could not find module `System.Random' \ Use -v to see a list of the files searched for.
00:39:26 <elliott> Good enough, even if it is a bit buggy IIRC
00:39:32 <Gregor> elliott: Inaccessibly is where.
00:39:45 <elliott> Gregor: Can you... fix that? :P
00:40:01 <Gregor> elliott: Is there a cp -hardlink option >_>
00:40:12 * kallisti wonders why System.Random did not exist.
00:40:27 <elliott> kallisti: Probably because System.Random is in random, not base.
00:40:30 <EgoBot> /bin/ls: cannot access /opt/ghc: No such file or directory
00:40:52 <kallisti> elliott: base doesn't include random numbers? o_o
00:41:37 <elliott> Admittedly I should get Gregor to install the Haskell Platform libs globally for that GHC
00:41:47 <kallisti> elliott: also why did you delete my script again?
00:41:52 <kallisti> it still has a purpose currently.
00:41:55 <elliott> Gregor: Here's yer new interps/ghc/runghc:
00:41:55 <elliott> if ! /opt/ghc/ghc -e "$src" 2> /dev/null
00:41:56 <elliott> /opt/ghc/runhaskell <<< $src
00:42:18 <elliott> kallisti: Because it didn't run the program you made it for and is about to become obsolete :P
00:42:23 <oerjan> elliott: i should point out that kallisti's version had the advantage that it could suppress warnings. (by using `run ... 2>/dev/null, admittedly.)
00:42:36 <elliott> oerjan: Mine does not run with -Wall.
00:42:47 <Gregor> elliott: Not helpful >_>
00:43:46 <kallisti> elliott: you could at least be polite enough to wait for it to become obsolete. clearly I have some massive Haskell program I want to dump into IRC.
00:44:12 <elliott> 19:27:53: <Gregor> Who was it that was asking me about "classical" composers?
00:44:12 <elliott> 19:28:01: <Gregor> But is also never on while I'm awake.
00:44:52 <oerjan> kallisti: elliott will probably die if he's forced to be polite, anyway
00:45:10 <elliott> Yes. That is why banning me is immoral.
00:45:26 <oerjan> hey banning you doesn't force you to be polite
00:46:01 <kallisti> `run cd bin && echo '#!/bin/sh' > haskell && echo 'T=`mktemp`; echo "$1" > $T; runhaskell $T' >> haskell && chmod +x haskell #edit war, sucker
00:46:31 <Sgeo> I told you to indent at a width of 4.
00:46:36 <Sgeo> Why are you inserting 8 tabs?
00:46:59 <kallisti> you must have tabs set to be half of a space each
00:50:51 <elliott> <oerjan> hey banning you doesn't force you to be polite
00:50:57 <elliott> it forces me to not be non-polite
00:51:10 <elliott> author does not know how runhaskell functions
00:51:18 <elliott> fails to remove temporary file in any situation (!!!)
00:51:46 <kallisti> runhaskell doesn't allow input from stdin
00:51:51 <oerjan> elliott: erm the /tmp file is not preserved afawct
00:52:02 <elliott> oerjan: well ok. i defer to all my other reasons
00:52:24 <kallisti> the mktemp is necessary because runhaskell doesn't allow input from stdin.
00:52:27 <elliott> [elliott@dinky ~]$ runhaskell
00:52:28 <elliott> main = putStrLn "kallisti is an idiot."
00:52:39 <Sgeo> Is it just me, or is antialiasing a good thing?
00:52:46 <elliott> [elliott@dinky ~]$ runhaskell --version
00:52:51 <kallisti> elliott: that's probably how I implemented it originally
00:52:53 <Sgeo> jEdit was hurting my eyes until I enabled subpixel antialiasing
00:53:09 <Sgeo> (Well, not literally hurting my eyes, but it was annoying to look at)
00:53:11 <pikhq_> oerjan: $TMPDIR might not be, though.
00:53:30 <elliott> 19:35:15: <Gregor> kallisti: 1) Not a classical composer, 2) not a pre-20th-century composer people usually think of in the top five, making "only" bizarre, 3) "clsaasical", 4) "ocmpostr"
00:53:33 <elliott> Gregor: classical composter
00:53:40 * elliott prefers traditional composint methods
00:53:41 <pikhq_> TMPDIR might also have a space in it, which leaves `mktemp` screwing up.
00:54:04 <pikhq_> Admittedly, this is unlikely in the case of HackEgo.
00:54:10 <elliott> pikhq_: You are mistaken about how the assignment "statement" works in sh.
00:54:15 <elliott> (POSIX & bash & all implementations)
00:54:17 -!- Sgeo|jEdit has joined.
00:54:22 <pikhq_> Oh, right, that works strangely.
00:54:28 <Sgeo|jEdit> There really isn't a good reason to use this as an IRC client.
00:54:34 <kallisti> `run cd bin && echo '#!/bin/sh' > haskell && echo 'echo "$1" | runhaskell' >> haskell && chmod +x haskell #edit war, sucker
00:54:37 <pikhq_> OF course, the unquoted $T later will screw up.
00:54:41 <oerjan> elliott: it is possible i slightly deluded kallisti into believing runhaskell cannot use stdin *cough*
00:54:54 <elliott> Author does not take advantage of state-of-the-art <<< input methods
00:55:00 <elliott> oerjan: You are a true patriot
00:55:18 -!- Sgeo|jEdit has quit (Client Quit).
00:55:26 <pikhq_> elliott: Which doesn't work with #!/bin/sh (does with #!/bin/bash).
00:55:36 <elliott> kallisti: One fewer process
00:55:41 <elliott> They're in short supply in HackEgo!
00:55:57 <elliott> pikhq_: Exactly, he uses obsolete technologies!!!
00:56:08 <pikhq_> Also, um, echo is a shell builtin. Even in POSIX.
00:56:18 <pikhq_> Thus, no extra process.
00:56:36 <elliott> pikhq_: Nothing's STOPPING you from implementing it as an external program while still being POSIX-compliant.
00:56:44 <elliott> The builtin could spawn a /bin/echo process.
00:56:53 <pikhq_> That said, exec runhaskell <<<"$1" is clearly better.
00:56:55 <elliott> He used #!/bin/sh, so he can't rely on any implementation guarantees!
00:56:57 <kallisti> elliott: yeah fuck standards compliance!
00:57:10 <elliott> kallisti: Welcome to the 21st century.
00:57:53 <pikhq_> Which I *think* is a Korn-ism, and should work on just about any shell that's not C or very strict POSIX.
00:58:31 <kallisti> `run cd bin && echo '#!/bin/sh' > haskell && echo 'exec runhaskell <<< "1"' >> haskell && chmod +x haskell #edit war, sucker
00:58:36 <elliott> `run rm bin/haskell # author has terrible track record; software likely to be unreliable in many respects
00:59:12 <kallisti> `run cd bin && echo '#!/bin/bash' > haskell && echo 'exec runhaskell <<< "1"' >> haskell && chmod +x haskell #edit war, sucker
00:59:20 <pikhq_> kallisti: <<< doesn't work in more POSIX-ly shells, such as Debian Almquist.
00:59:23 <elliott> `run rm bin/haskell # author's contract with us has been terminated
01:00:02 <elliott> TIL kallisti can't write a two-line shell script.
01:00:23 <pikhq_> ... Dammit, that working is a zsh-ism.
01:00:26 <HackEgo> bash: is: command not found
01:00:32 <kallisti> elliott: I wrote a perfectly fine shell script, but then you told me to use all of these things I'm not familiar with. :P
01:00:43 <elliott> kallisti: Perfectly fine apart from all the bugs
01:01:19 <elliott> pikhq_: It's bash invoked as sh, I thought, but maybe not
01:01:27 <elliott> kallisti: For one, it failed to handle temporary directories with spaces in them.
01:01:39 <elliott> pikhq_: Hmm, I may have changed that, actually :)
01:01:56 <pikhq_> elliott: /bin/sh on the system HackEgo's using is Debian Almquist.
01:02:19 <elliott> pikhq_: Though I believe alternatives lets you select that.
01:02:30 <pikhq_> Yeah, but who messes with that? :P
01:02:33 <kallisti> `run cd bin && echo '#!/bin/bash' > haskell && echo 'echo "$1" | runhaskell' >> haskell && chmod +x haskell #this is the best one, okay.
01:02:48 <pikhq_> Hmm. It's not going through the alternatives system here.
01:02:53 <pikhq_> It's just a symlink to /bin/dash
01:02:59 <elliott> Spawns additional runhaskell process instead of using exec
01:04:05 <pikhq_> `run cd bin && (echo '#!/bin/bash';echo 'exec runhaskell<<<"$1"')>haskell&&chmod +x haskell # Thar
01:04:28 <kallisti> how is this different from what I wrote..
01:05:34 <kallisti> pikhq_: I was under duress from elliott :P
01:06:51 <kallisti> `haskell main = putStrLn "Hello, World!"
01:07:55 <HackEgo> \ /tmp/runghcXXXX276.hs:1:1: \ Parse error: naked expression at top level
01:08:07 <kallisti> elliott: use inferior expression-oriented evaluators for that.
01:08:21 <kallisti> elliott: `haskell is for big boys with Real IRC Programs.
01:08:22 <elliott> You realise that the script in EgoBot does everything you're trying to do and has for ages so you could just copy it in.
01:08:36 <oerjan> elliott: it doesn't _yet_
01:08:48 <elliott> oerjan: Yes it does, it would function perfectly in HackEgo's environment.
01:09:08 <pikhq_> Also, yeah, I only put that one in because maybe having something do what he *thinks* is desired would make him stop trying. :P
01:09:08 <elliott> `fetch http://codu.org/projects/egobot/hg/index.cgi/raw-file/4523638d4513/multibot_cmds/interps/ghc/runghc
01:09:10 <HackEgo> 2011-12-17 01:09:09 URL:http://codu.org/projects/egobot/hg/index.cgi/raw-file/4523638d4513/multibot_cmds/interps/ghc/runghc [91/91] -> "runghc" [1]
01:09:15 <elliott> `run mv runghc bin/haskell; chmod +x bin/haskell
01:09:26 <HackEgo> cat: 2+2: No such file or directory
01:09:41 <elliott> `run sed -i 's/\$(cat \$1)/$1/' bin/haskell
01:09:58 <pikhq_> `haskell main=putStrLn "Hello, world!"
01:10:18 <kallisti> man it would be so much easier if we like... used that other script
01:10:24 <elliott> `run runhaskell <<< 'main=putStrLn "Hello, world!"'
01:10:31 <pikhq_> kallisti: Except it clearly doesn't.
01:10:41 <elliott> wasn't as safe as it seemed to be in my tests
01:10:47 <pikhq_> kallisti: `haskell 2+2 failed
01:10:55 <kallisti> that's not what `haskell does :P
01:10:55 <elliott> `run sed -i 's/<<< \$src/<<< "$src"/g' bin/haskell
01:11:01 <HackEgo> #!/bin/bash \ src=$1 \ if ! ghc -e "$src" 2> /dev/null \ then \ runhaskell <<< "$src" \ fi \
01:11:07 <elliott> `haskell main=putStrLn "Hello, world!"
01:11:33 <elliott> [elliott@dinky ~]$ ghc -e 'main=putStrLn "Hello, world!"'
01:11:33 <elliott> <interactive>:1:5: parse error on input `='
01:11:33 <elliott> [elliott@dinky ~]$ echo $?
01:11:42 <elliott> Well that's not fucking idiotic.
01:11:54 <kallisti> elliott: why did you expect ghc -e to do that?
01:12:04 <elliott> kallisti: It failed. Failing programs do not exit status code 1.
01:12:14 <shachaf> elliott: $ ghci\nmain=blah\n^D\necho $?
01:12:24 <elliott> shachaf: It's not ghci, it's ghc -e :P
01:12:44 <shachaf> elliott: ghc -e evaluates ghci expressions.
01:12:49 <shachaf> ghc -e ':m + Foo' -e 'blah'
01:12:57 <pikhq_> kallisti: Because the First Law of Unix is failing programs return 1.
01:13:22 <kallisti> pikhq_: in any case lambdabot works fine for expressions, so does ghc -e
01:13:41 <kallisti> so just have `haskell for actual haskell programs.
01:14:44 <pikhq_> kallisti: But GHC is breaking the Law
01:14:50 <pikhq_> Not the law, but the Law.
01:14:58 <pikhq_> You do not report success on failure.
01:15:10 <kallisti> okay, how is this relevant to having a command that can run whole haskell programs?
01:15:31 <pikhq_> Because having a command that can run whole haskell programs and haskell snippets is clearly superior.
01:16:04 <kallisti> what about the intersection of programs that were intended to be whole haskell programs but have syntax errors and accidentally get interpreted as correct expression
01:16:29 <elliott> You realise that !haskell has always done this.
01:16:42 <elliott> Its advantages over lambdabot include being able to do IO.
01:16:45 <kallisti> what does that have to do with my TOTALLY AWESOME POINT.
01:16:59 <HackEgo> \ <interactive>:0:11: \ No instance for (Num (IO ())) \ arising from the literal `2' \ Possible fix: add an instance declaration for (Num (IO ())) \ In the second argument of `(+)', namely `2' \ In the expression: print 2 + 2 \ In an equation for `it': it = print 2 + 2
01:17:08 <kallisti> elliott: if only we had some way to do that
01:17:23 <elliott> kallisti: "ghc -e isn't good enough" --kallisti
01:17:42 <elliott> kallisti: runhaskell <<< '...'
01:17:49 <elliott> Basically as short, since apparently you don't mind having to quote things
01:18:23 <kallisti> we could have two different programs.
01:18:36 <kallisti> also, having both in one makes error output potentially confusing.
01:19:13 <elliott> There are easy ways to report the correct error, but it's even easier to just rm bin/haskell all the time
01:19:48 <kallisti> one day the world is going to need saving
01:20:03 <kallisti> IS VIA THIS IRC CHANNEL, BY INPUTTING A WHOLE HASKELL PROGRAM WITHOUT STRINGS TO HACKEGO
01:20:15 <kallisti> AND YOU'RE GOING TO BE SORRY WHEN WE DON'T HAVE THE ABILITY BECAUSE YOU'RE A JERK.
01:20:18 -!- kallisti has quit (Quit: ragequit).
01:21:35 -!- pikhq has joined.
01:22:18 -!- pikhq_ has quit (Ping timeout: 276 seconds).
01:22:53 <MDude> I would try to make a combination of Forth and Fortran called Forthran, but I don't really know either lnaguage.
01:23:09 <elliott> That would be ... an interesting language.
01:23:44 <elliott> It would be stack-based, based on an threaded compiler-style loop, be heavily optimised for fast numerics, have a fixed format for lines to be in...
01:23:52 <elliott> Assuming we mean Fortran 77 or w/e
01:25:23 -!- kallisti has joined.
01:30:35 -!- cswords__ has joined.
01:32:07 * elliott considers writing a cs-words bot in the proud tradition of news-ham.
01:33:42 <oklopol> "<kallisti> ....too advanced right now." while you may not know what even permutations are, a nice thing to remember is that if N is a subgroup of G that contains half its elements, then it's normal
01:33:56 -!- cswords_ has quit (Ping timeout: 248 seconds).
01:34:45 <oklopol> or if N contains more than a third of G:s elements, since the size of a subgroup divides the size of the group, and G itself is obviously a normal subgroup of itself.
01:35:25 <oklopol> and permutations are divided into even and odd ones, and you have the same amount of each, so evens are normal.
01:36:37 <kallisti> oklopol: I know what a permutation is. -_-
01:36:51 <kallisti> or did you mean permutation group?
01:39:29 <oklopol> yeah that's what i assumed you didn't get in oerjan's message
01:39:35 <oklopol> the even permutation thing
01:39:55 <oklopol> do you know that permutations are generated by swaps
01:40:03 <elliott> Your item was processed through our JAMAICA, NY 11430 facility on December 11, 2011 at 11:38 pm. Information, if available, is updated periodically throughout the day. Please check again later.
01:40:05 <kallisti> ah okay so I have a vague idea of what a permutation group is, but I'm not clear on what the operation for a permutation group is.
01:40:06 <elliott> WHY IS MY PACKAGE IN JAMAICA
01:40:16 <oklopol> for every permutation, you can perform a sequence of permutations that just swap two elements which does the same thing
01:40:28 <oklopol> kallisti: oh it's just permuting first with one permutation then the other
01:40:45 <oklopol> so anyway about these swaps
01:40:58 <oklopol> it turns out half the permutations always take an even amount of swaps
01:41:10 <oklopol> and the other half take an odd number of swaps
01:41:22 <oklopol> and the even ones form a subgroup.
01:42:06 <kallisti> I feel you may be using the word permutation in a different way. I usually think of a permutation as a specific set. but you said "permuting first with one permutation then the other" so then are you talking about permutation as a function?
01:42:13 -!- pikhq_ has joined.
01:42:23 -!- pikhq has quit (Ping timeout: 245 seconds).
01:42:24 <oklopol> a permutation is just a bijection from a finite set to itself, yes
01:42:28 <kallisti> oklopol: ah okay so the parity of a permutation refers to the number of swaps (is there a formal name for that?)
01:42:50 <oklopol> you can represent this with a tuple containing every element exactly once, although there are two ways you can interpret that
01:43:00 <elliott> oklopol: what about infinite set CHECKMATE!!!!
01:43:04 <kallisti> oklopol: from a finite set to itself... I thought you needed an ordered set for a permutation to make any sense.
01:43:18 <oklopol> kallisti: the number of swaps is not really well-defined
01:43:27 <oklopol> you can perform useless swaps and increase it
01:43:43 <oklopol> point is the parity stays the same (this needs a proof ofc)
01:43:52 <oklopol> kallisti: no you don't need a permutation
01:44:09 <kallisti> a "useless swap" would be where you perform a swap on the same locations twice.
01:44:20 <oklopol> yeah but you could also do something more complicated
01:44:20 <kallisti> 2+n will always preserve the parity.
01:44:35 <kallisti> oklopol: but I'm assuming it follows the same basic principle.
01:44:57 <oklopol> well right, it's a plausible conjecture. especially as we know that it's true :P
01:45:41 <elliott> 19:53:10: <Phantom_Hoover> It's surprising just how unmoonlike the far side of the moon looks.
01:45:42 <elliott> There's no far side of the moon, really. As a matter of fact it's all far. Er, wait.
01:46:31 <oklopol> we had an 18 hour programming day
01:47:02 <kallisti> oklopol: oh nevermind I misunderstood what you mean by bijective map from a set onto itself.
01:47:36 <oklopol> it just means you move the elements around
01:47:53 <kallisti> I was thinking it was a function from a set to itself.... (id function) that didn't make any sense.
01:48:17 <oklopol> yeah the id function is the identity of the permutation group though, so it's very important
01:48:37 <kallisti> and then the operation is composition.
01:49:02 <oklopol> of course we have a different permutation group for all set sizes n
01:49:07 <kallisti> so a permutation group just... moves stuff around in a sequence.
01:49:38 <kallisti> like a rubik's cube or something.
01:49:43 <oklopol> yeah. and swaps generate it and things have parity. and every other finite group can be found as a subgroup.
01:49:58 <oklopol> those are the most important things i suppose
01:50:07 <kallisti> oklopol: do the swaps have a name? it would be a permutation where only one element changes.
01:50:37 <oklopol> yeah but i couldn't remember the real term :d
01:51:33 <kallisti> so all groups have a symmetry group that's all the permutations of its set.
01:51:56 <kallisti> and then the other permutation groups are subgroups of the symmetry group.
01:52:30 <kallisti> oklopol: hmmm you could also swap things in a cycle.
01:52:43 <oklopol> well the cycles are very important too.
01:52:50 <kallisti> as in, swapping more than 2 elements at once.
01:53:05 <kallisti> but I assume you can construct that from just the 2 element transpositions?
01:53:05 <oklopol> in fact, up to order of cycles, every permutation is a composition of disjoint cycles in a unique way.
01:53:33 <oklopol> that's one way to prove that transpositions generate all permutations
01:53:37 <elliott> http://phplens.com/phpeverywhere/?q=node/view/254 how to do multithreading in php: make two simultaneous requests to scripts on localhost using asynchronous IO
01:53:41 <elliott> you can't make this shit up
01:54:47 <oklopol> but about groups and symmetry groups... basically if your group G has size n, then we note that in fact every element of the group "acts" bijectively on G (left multiplication is bijective from G to G), so you can think of any g in G as a permutation on an n element set
01:55:09 <oklopol> and if you take the permutation of each g in G, they form a subgroup of the permutation group of size n which is isomorphic to G
01:55:13 <kallisti> oklopol: okay so then the transpositions themselves are just elementary permutations that can you can compose into all of the other permutations.
01:55:27 <kallisti> with cycles being another elementary kind of permutation that is also composed of transpositions.
01:56:09 <elliott> lesson: @source is not @src, guys
01:56:24 <kallisti> elliott: I was tempted to try @src but I assumed it was the same thing.
01:56:43 <elliott> 20:16:15: <Sgeo> @tell Ngevd Is the same as f x = a . b . c . d $ x
01:56:47 <elliott> is the same as f = a . b . c . d
01:57:03 <oklopol> yeah. if by "that can you can compose into all of the other permutations" you mean every other permutation can be decomposed into a product of transpositions.
01:57:07 <elliott> 20:16:31: <kallisti> @tell Ngevd use catMaybes :: [Maybe a] -> [a] instead
01:57:08 <elliott> 20:21:22: <zzo38> Should it be fixed to work with other monads too? Such as, instead of only list monad it can work other MonadPlus as well.
01:57:08 <elliott> 20:22:09: <kallisti> zzo38: that would make it much more inefficient for the list case I believe.
01:57:14 <elliott> kallisti: yes, this wild unjustified speculation is reasonable
01:57:23 <elliott> especially since you can use the SPECIALISE pragma.
01:57:34 <Sgeo> elliott, didn't I say that somewhere?
01:57:43 <elliott> Sgeo: yes, but not while Ngevd was around
01:58:34 <kallisti> elliott: I would think catMaybes uses a recursive definition rather relying on concatMap
01:58:51 <elliott> kallisti: concatMap is recursive, you moron
01:58:54 <kallisti> which would be more efficient, modulo specialise pragma.
01:58:57 <elliott> 20:25:41: <kallisti> @src catMaybes
01:58:58 <elliott> 20:25:41: <lambdabot> catMaybes ls = [x | Just x <- ls]
01:59:08 <kallisti> elliott: that's not what I meant.
01:59:11 <elliott> but no, it would not be more efficient.
01:59:18 <elliott> GHC has a very aggressive inliner; you're spreading FUD
02:00:04 <elliott> 20:55:43: <oerjan> basically, (.) does _not_ access all the arguments of its first argument, only the first, so there's no way to use it to treat its first argument as taking a stack.
02:00:13 <elliott> Sgeo: oerjan: however we can model things by changing standard functions
02:00:22 <elliott> (+) :: (Num a) => (a,(a,r)) -> (a,r)
02:00:31 <elliott> then all we need is (a,r) -> (a,(a,r)) which is trivial
02:00:42 <elliott> swap :: (a,(b,r)) -> (b,(a,r))
02:00:50 <elliott> swap (a,(b,r)) = (b,(a,r))
02:00:52 <kallisti> elliott: concatenations require more time than simply skipping over Nothing elements in a recursive function while building the list with :
02:01:01 <kallisti> elliott: but catMaybes doesn't do that.
02:01:41 <elliott> kallisti: it is incredibly likely that the concatMap would be completely inlined away in the SPECIALISE-generated Core for zzo's version.
02:03:47 <elliott> 21:30:11: <Phantom_Hoover> It reminds me of that bit in Fine Structure where — oh wait future elliott.
02:04:04 <elliott> I like how he looks hideous in that painting.
02:06:29 <Sgeo> elliott, you still haven't read Fine Structure?
02:07:10 <elliott> I read about ~half of it but then trailed off.
02:08:03 <pikhq_> To be fair, the structure of it is sufficiently weird that it's, well, insane to follow.
02:09:00 -!- zzo38 has joined.
02:09:03 * elliott had no problems up to the point he was at.
02:09:31 <pikhq_> Maybe he reordered things?
02:09:46 <pikhq_> I read it as it released, though. Which was hella-confusing.
02:09:54 <pikhq_> Oh, right, he definitely reordered things.
02:10:07 <elliott> I got up to The Story So Far.
02:10:28 <pikhq_> Perhaps I should reread it.
02:10:30 <elliott> Maybe one or two chapters further.
02:10:42 <elliott> Maybe I should read Ra as it comes out.
02:11:12 <pikhq_> Unbelievable Scenes, for instance, was not originally the start of Fine Structure.
02:11:28 <elliott> pikhq_: That is not a change that makes it less confusing.
02:11:37 <elliott> I'm sad he removed Forgotten things in space though.
02:11:53 <pikhq_> Indeed, it was not originally in Fine Structure.
02:12:11 <pikhq_> Nor was The Astronomer's Loss.
02:12:33 <pikhq_> Neither was Crushed Underground.
02:13:31 <oklopol> what's fine structure about
02:14:24 <pikhq_> As described, "This is a story about science."
02:14:29 <pikhq_> http://qntm.org/structure
02:20:14 <Sgeo> Well, I now hate my first Hackage package.
02:20:26 <Sgeo> And now I know why lazy I/O is loathed
02:21:02 <elliott> why are you using a package that depensd on haskell98 and was last updated in early 2010
02:21:45 <Sgeo> elliott, because it's the first one I sw
02:22:58 <elliott> 23:39:21: <oerjan> that _should_ be enough with a ghc recent enough to support all declarations in ghci. but that's pretty recent, maybe even after latest platform.
02:23:06 <elliott> oerjan: that's called "ghc from git"
02:23:14 <elliott> not the most popular release
02:25:32 <elliott> oerjan: what comes next after 247, 230, 260 btw
02:26:32 <oerjan> > iterate (zipWith (-) . tail) [247,230,260]
02:26:32 <lambdabot> Couldn't match expected type `[a] -> [a]'
02:26:45 <oerjan> > iterate (join $ zipWith (-) . tail) [247,230,260]
02:26:47 <lambdabot> [[247,230,260],[-17,30],[47],[],*Exception: Prelude.tail: empty list
02:28:05 <oerjan> > scanl (+) 247 [-17,30,77]
02:28:25 <elliott> oerjan: what comes after /that/?
02:28:39 <elliott> once it exceeds 500 the universe explodes
02:28:51 <oerjan> > scanl (+) 247 $ iterate (+47) (-17)
02:28:52 <lambdabot> [247,230,260,337,461,632,850,1115,1427,1786,2192,2645,3145,3692,4286,4927,5...
02:29:24 <elliott> ok. the universe has 2 more days to live.
02:29:33 <elliott> then the vortex will engulf us all
02:29:41 <shachaf> elliott: There's a section in "Mathematics Made Difficult" about "what comes next"-style questions.
02:29:52 <elliott> shachaf: Yes, yes, anything you want can come next.
02:30:01 <oerjan> Dec 19 2011. Just a little more than a year off.
02:30:03 <elliott> (I'm assuming that's the point.)
02:30:20 <Gregor> OK, I have now installed a filter that will remove the tongue smiley from every line I type in IRC and IM. I hope to stop overusing it. CAN I SURVIVE???
02:30:23 <elliott> oerjan: well the mayans weren't /that/ good at keeping track of time
02:30:33 <elliott> Gregor: What did you do to the REAL Gregor?
02:31:24 <Gregor> elliott: You'll have to become accustomed to me not sticking my tongue out every line!
02:31:35 <Gregor> oklopol: OH GOD WHAT HAPPENED TO YOUR FACE?!?!?!?
02:31:57 <shachaf> elliott: Well, in particular the contents of that section.
02:32:04 <pikhq_> shachaf: Of course the best answer for that is fix (1:)
02:32:38 <oklopol> Gregor: sorry that was my other face
02:32:59 <pikhq_> :P:P:P:P:P:P:P:P:P:P:P
02:33:16 <pikhq_> OH GOD MY TONGUE HAS A FACE! WITH A TONGUE!
02:33:37 <elliott> pikhq_: those tongues are not getting smaller. your recursion is unsound
02:33:41 <oerjan> i never realized it was supposed to be a tongue, btw
02:34:04 <pikhq_> elliott: No, my geometry is non-Euclidian.
02:34:18 <oklopol> oerjan: what did you ever realize it is?
02:34:22 <oerjan> yeah i just thought it was a smiley in profile
02:34:28 <Gregor> I hope I don't just end up overusing these faces >_>
02:34:36 <Gregor> Or taking the time to type :þ
02:34:37 <elliott> Gregor: Filter those out too
02:34:51 -!- kallisti has quit (Ping timeout: 248 seconds).
02:34:55 <Gregor> elliott: Naw, I'm not trying to prevent myself from using smileys /at all/, just to stop overusing them.
02:35:00 <oklopol> Gregor: filter everything out
02:35:05 <Sgeo> elliott, any good FTP Haskell libraries?
02:35:06 <elliott> oerjan: I cannot see how that is a smiley in profile at all.
02:35:09 <Sgeo> I mean, there's curl, but
02:35:16 <elliott> Sgeo: http://hackage.haskell.org/packages/archive/pkg-list.html
02:35:20 <Sgeo> elliott, I looked
02:35:20 <elliott> Sgeo: Here's a solution: Don't use FTP.
02:35:25 <oklopol> irc would be a better place if everyone just said empty lines
02:35:34 <oklopol> you'd have a button called "say"
02:35:45 <Sgeo> Too lazy not to use FTP
02:35:53 <elliott> Sgeo: Why are you using FTP
02:36:14 <elliott> Sgeo: Can't you just call out to ftp(1)
02:36:16 <Sgeo> Too lazy to just grab the files, run the program locally, then upload the result
02:36:41 <Sgeo> That's not to my professor's server
02:37:01 <elliott> Anyway, write a shell script using ftp(1)
02:37:09 <Sgeo> Don't want to use bash
02:37:20 <elliott> Deal with System.Process' baroque interface then
02:37:56 <Sgeo> Or I could attempt to force the list of this thing
02:38:01 <Sgeo> That should work
02:38:09 -!- DCliche has joined.
02:38:59 <elliott> This library looks 100000x more complicated than just using ftp(1).
02:39:19 <Sgeo> I just threw in a putStrLn, and all is good
02:41:52 -!- Klisz has quit (Ping timeout: 252 seconds).
02:42:02 <Sgeo> Uh, my file got cut off
02:42:08 <Sgeo> Whatever, just a trivial bit at the end
02:44:23 <Sgeo> Why is my file getting cut off?
02:45:21 <elliott> I don't know, let me get out the oracle of I Haven't Seen Your Fucking Code.
02:45:37 <elliott> It says you forgot to frobnicate the beeswax.
02:45:53 <elliott> http://esoteric.voxelperfect.net/wiki/Batman_Wonder_Woman_Relationship
02:45:59 <elliott> \u00D8 � \u00D8 \u00AA \u00D8 � \u00D8 � \u00D8 \u00A1\u00D9 \"\u00D8 � \u00D9 ... \u00D8 � \u00D8 � \u00D8 � \u00D8 \u00AA \u00D8 � \u00D8 \u00AA \u00D9\u0160 \u00D9 ..
02:45:59 <elliott> \u00D9 � \u00D9 ... \u00D8 � \u00D8 � \u00D8 � \u00D8 � \u00D8 � \u00D9\" \u00D8 � \u00D8 � \u00D9 ... \u00D8 � \u00D8 � \u00D8 � \u00D9 \"\u00D8 � \u00D8 � \u00D9 \"\u00D8� \u00D9\" \u00D9�\u00D9 � \u00D9 � \u00D9�\u00D8 � \u00D9 � \u00D8 � \u00D8 � \u00D8 \u00AA \u00D9 ..
02:48:19 <elliott> the contents of that stellar spam page
02:48:39 <Sgeo> Printing the result of putlines made it work
02:48:43 <Sgeo> I hate this library
02:49:46 <PiRSquared17> Wikipedia free odessa personals datingmegafone gay dating numberkansas gay personalsdivorce and personal growth relationshipsyahoo chat listingsthai single datingneta chatballas and bryan relationship
02:51:19 <oerjan> yeah only idiots believe in autism mercury.
02:52:08 <copumpkin> dude, my friend got vaccinated and caught autism
02:52:21 <Sgeo> Now I have to leave the world of Haskell and start writing PHP :(
02:52:23 * elliott caught autism in a light breeze.
02:53:05 <elliott> copumpkin: It's too late now! They haven't yet found the cure which flips the "autism" bit in the Thinking Lobe of the brain to 0.
02:58:18 <oerjan> well they can detect alzheimer from blood tests now, it can only be a matter of time
02:59:04 <oerjan> also, it think the phrase "the cure which flips the "autism" bit in the Thinking Lobe of the brain to 0" is a sign of autism all by itself.
02:59:12 <elliott> oerjan: Alzheimer's is actually a trit. The problem is flipping it to 0 instead of 3, sometimes referred to as "super Alzheimer's".
02:59:18 <elliott> Also, I think it may be a sign of a "joke".
02:59:44 <oerjan> yeah bad humor is also a sign of alzheimer. oh wait. and also, i meant autism.
03:00:00 <elliott> Perhaps even a sign of ""satirising"" the ""notion"" of ""a"" """cure""" to """"""""""autism"""""""""" "!!!!!!!"
03:00:05 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\...
03:01:00 <lambdabot> ["autism","autism","autism","autism","autism","autism","autism","autism","a...
03:01:08 <pikhq_> > unwords $ fix ("autism":)
03:01:09 <lambdabot> "autism autism autism autism autism autism autism autism autism autism auti...
03:01:21 <pikhq_> > unwords$fix("autism":)
03:01:22 <lambdabot> "autism autism autism autism autism autism autism autism autism autism auti...
03:01:40 <oerjan> @hoogle Monoid m => [m] -> m
03:01:40 <lambdabot> Data.Monoid mconcat :: Monoid a => [a] -> a
03:02:03 * MDude 's head explodes from elliot claiming a trit can be set to 3
03:02:05 <oerjan> there should be a function like mconcat, except which use binary splitup
03:02:20 <oerjan> i don't think that's binary.
03:02:22 <elliott> MDude: It's the brain, man. You can't explain the brain!!!
03:02:31 <elliott> oerjan: i wrote that before you said that
03:02:34 <elliott> what do you mean by binary splitup?
03:02:46 <elliott> you can certainly write a valid fold that e.g. traverses both branches of a binary tree in parallel
03:02:58 <elliott> and other similar tricks, by the monoid laws
03:03:25 <elliott> oerjan: also mconcat is a class member of Monoid, so...
03:03:31 <oerjan> elliott: well it was while i was doing modular ^ earlier
03:03:54 <oerjan> elliott: well the thing is it would be nice to be able to it with lists, and also without constructing a tree
03:04:18 <elliott> oerjan: um but you can't really split a list in two and /gain/ efficiency
03:04:26 <elliott> since you don't know where to split until you reach the end
03:04:45 <oerjan> ^ is essentially (foldMap Product .) . replicate
03:05:09 <oerjan> elliott: um you can collect in twos. i've written such functions before
03:05:12 <olsner> who put the derp in the herpa-derpa-derp?
03:05:22 <elliott> oerjan: then i don't know what you are trying to say
03:08:36 -!- kallisti has joined.
03:08:36 -!- kallisti has quit (Changing host).
03:08:36 -!- kallisti has joined.
03:09:11 <elliott> oerjan: maybe if you gave an implementation :P
03:10:10 <oerjan> > let biFold f [x] = x; biFold f l = biFold f (pair l) where pair (x1:x2:xs) = f x1 x2:pair xs; pair l = l in biFold (*) [1..10000]
03:10:11 <lambdabot> 284625968091705451890641321211986889014805140170279923079417999427441134000...
03:10:20 <lambdabot> 284625968091705451890641321211986889014805140170279923079417999427441134000...
03:10:45 <lambdabot> 334732050959714483691547609407148647791277322381045480773010032199016802214...
03:11:07 <oerjan> > let biFold f [x] = x; biFold f l = biFold f (pair l) where pair (x1:x2:xs) = f x1 x2:pair xs; pair l = l in biFold (*) [1..50000]
03:11:08 <lambdabot> 334732050959714483691547609407148647791277322381045480773010032199016802214...
03:11:28 <oerjan> > let biFold f [x] = x; biFold f l = biFold f (pair l) where pair (x1:x2:xs) = f x1 x2:pair xs; pair l = l in biFold (*) [1..100000]
03:11:29 <lambdabot> 282422940796034787429342157802453551847749492609122485057891808654297795090...
03:12:10 <oerjan> hm i guess that's not exactly what ^ needs, though
03:12:46 <oerjan> that's actually a different function which could also be done generically
03:12:59 <oerjan> (and in some way is, but you need a dummy Num instance)
03:18:46 <zzo38> Some functions should be changed from Monad to Applicative, such as sequence
03:19:01 <pikhq_> zzo38: Strongly agree.
03:21:26 <zzo38> There is no sequenceA in Control.Applicative
03:21:39 <elliott> because it applies to all kinds of structures
03:22:08 <zzo38> I think guard should also be Alternative instead of MonadPlus, and so on
03:23:13 -!- Darth_Cliche has joined.
03:23:35 <elliott> Welp, who votes I reinstall everything
03:26:30 -!- DCliche has quit (Ping timeout: 240 seconds).
03:43:01 <Sgeo> I vote you read Fine Structure
03:43:06 <Sgeo> And watch Puella Magi Madoka Magica
03:43:12 <Sgeo> And read Homestuck... oh wait
03:44:42 <Sgeo> Madoka-Kaname, do you vote that elliott watch Puella Magi Madoka Magica?
03:44:56 -!- elliott has quit (Remote host closed the connection).
03:46:14 <pikhq_> I haven't seen it, so I can't give such a suggestion.
03:52:11 -!- elliott has joined.
03:52:47 <elliott> I wonder why this connection is so unreliable lately.
03:54:27 <oerjan> i know for a fact that magnets are bad for computers.
03:54:50 <shachaf> Magnets are great for computers.
03:54:50 <elliott> "trust me, I'm a mathematician"
03:55:13 <shachaf> Who's the mathematician here?
03:55:33 <oerjan> no no, i lost nearly all the games for our first computer because of my stupid cousing playing with a magnet.
03:55:59 <shachaf> oerjan: Just imagine if magnets stopped working, though.
03:56:07 <elliott> shachaf: oerjan has a "Ph.D." in "mathematics".
03:56:08 <shachaf> oerjan: Your computer wouldn't be able to read *any* of the games!
03:56:25 <elliott> What I mean is that oerjan has a Ph.D. in mathematics.
03:56:37 <zzo38> Why is there no instance (Enum x) => Enum (Product x)
03:56:38 <shachaf> elliott: He has one, or he is one?
03:56:47 <oerjan> wow, i would never have guessed.
03:56:48 <elliott> shachaf: That's for you to decide and me to find out.
03:57:18 <shachaf> Trust him, he's a doctor (of philosphy).
03:57:40 <oerjan> zzo38: i don't think those Monoid wrappers are really intended to be used as independent data types
03:58:05 <oerjan> just for passing to Data.Monoid functions, which don't care about Enum
03:58:36 <elliott> oerjan: well it makes sense to at least give them Functor instances
03:59:15 <shachaf> Monad, while you're at it.
04:00:13 <elliott> shachaf: That makes... slightly less sense. Although Applicative is questionable too.
04:00:29 <elliott> Product (a -> b) is "interesting" if you don't have one of them fancy Num (->) instances.
04:00:50 <shachaf> elliott: I wasn't the one who brought up "sense".
04:06:27 -!- oerjan has quit (Remote host closed the connection).
04:07:02 -!- oerjan has joined.
04:12:05 <Gregor> <shachaf> Trust him, he's a doctor (of philosphy). // Then he IS a D.Ph., he HAS a Ph.D.
04:12:39 <oerjan> technically i have a "Ph.D", aka Dr. Scient.
04:12:42 <shachaf> Gregor: Doctor of Philosophy, abbreviated as Ph.D., PhD, D.Phil., or DPhil
04:13:33 <elliott> pikhq_: Hmm, my torrent client does indeed record a 16 meg upload of random.
04:13:47 -!- salisbury has joined.
04:13:54 <shachaf> By the way, did I mention how there's currently a warrant for my arrest in Finland?
04:14:48 <HackEgo> salisbury: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
04:15:15 <salisbury> shachaf: I think I'm going to like this channel
04:15:18 <Gregor> shachaf: Doesn't matter, I hear Finland is very depressing and a bit of a gulag.
04:15:48 <shachaf> Gregor: It's a nice place, man. Lots of lakes.
04:15:49 <elliott> You should know never to smile in Finland.
04:15:54 <Gregor> salisbury: You can thank for the welcome, but it's there to scare away people who come in looking for astral projection
04:15:56 -!- kallisti has quit (Quit: Lost terminal).
04:16:19 <shachaf> elliott: They sent me a booklet about my exciting future as a Finnish soldier, and a bunch of the people in it were smiling!
04:16:29 <Gregor> elliott: Note: I tried to put a tongue smiley on my last line and my IRC client removed it. I'm becoming less smiley-dependent already!
04:16:30 <elliott> Yes. We have to make sure they're *determined* to stay on the path before revealing things like THAT.
04:16:50 <elliott> Gregor: Somehow the sentence loses nothing for it.
04:17:10 <monqy> salisbury: some people are confused and think esoteric means anything but programming languages and also what happens in this channel
04:17:10 <elliott> salisbury: http://en.wikipedia.org/wiki/Esotericism is relevant :p
04:17:21 <Gregor> It is NOT relevant to this channel though >_>
04:17:34 <elliott> Well, it's about as relevant as what we usually talk about.
04:18:50 <elliott> shachaf: So why do they have a warrant for your arrest?
04:19:04 <elliott> Did they draft you or something? I hear Finland does that because it's very depressing and a bit of a gulag.
04:19:10 <shachaf> elliott: They did draft me.
04:19:18 <shachaf> That's because they weren't aware I was a citizen of any other countries.
04:19:40 <elliott> You just need to get drafted simultaneously in those ones too.
04:19:40 <Gregor> They draft everyone. I assume you're an expatriot then? Also I thought it didn't matter, they drafted all citizens regardless.
04:19:46 <zzo38> A lot of things are in this channel. The main topic is esoteric computer programming but a lot of other things are discussed, which might, in some cases, have a small amount to do with such things. But if you have message about esoteric programming then please do so.
04:19:57 <shachaf> Gregor: They don't draft you if you're a US citizen living in the US.
04:20:23 <Gregor> elliott: I CHOOSE TO STICK WITH MY TYPO.
04:20:27 <Gregor> elliott: HE IS NO LONGER A PATRIOT.
04:20:41 -!- itidus21 has quit (Read error: Connection reset by peer).
04:25:05 <salisbury> Wow, there are a lot of programming languages I had no clue about..
04:26:36 <salisbury> I see someone put Lisp on there under its development code-name, Parenthesis Hell.
04:27:02 <elliott> salisbury: Don't be silly, people wrote m-expressions back then.
04:27:13 <elliott> (Well, okay, they *didn't* and that's why m-exprs never took off.)
04:27:40 <shachaf> Did you hear the theory of how the progress of computer programming involves moving parentheses further and further to the right?
04:28:12 <elliott> No, but I'm sure you're about to tell us.
04:28:21 <zzo38> The esoteric programming involves a few experimental things, or themed, or joke, or whatever. Instead of being constraint to the purpose of programming, it can be not constrainted to actual use. Some esoteric programming can even be uncomputable
04:28:33 <shachaf> elliott: If you'd said "yes", I wouldn't've.
04:28:44 <elliott> shachaf: And I wouldn't have been sure!
04:29:02 <elliott> Allow me be the first to say, "um, DUH?".
04:29:16 <shachaf> The general idea goes that first you had (f x y); then that turned into f(x, y); and then with OO that turned into x.f(y).
04:29:27 <shachaf> There was more to the theory but I've forgotten it.
04:29:53 * elliott *slightly* suspects f(x, y) predates (f x y). :p
04:29:55 <monqy> x..............fy)(
04:30:19 <elliott> I'm speaking really quietly, your IRC client is just amplifying it.
04:30:34 <shachaf> elliott: Too many capital letters.
04:31:18 <elliott> Maybe I should just bite the bullet and die of something-or-other poisoning; i.e. actually boot this installation non-CD.
04:32:50 <shachaf> elliott: What's non-CD about it?
04:32:58 <shachaf> Is it compact? Is it a disc?
04:33:24 <elliott> Well, it's not a disc, it's not optical, it's not all *that* compact, and it's not going into a CD drive.
04:33:52 <shachaf> elliott: Is it more compact than a CD?
04:34:02 <shachaf> Fine, it's not a disc. Is it a disk?
04:35:08 <oerjan> we must therefore invent a language in which all the parentheses are put at the end, after the rest of the code.
04:35:48 <monqy> , name it after shachaf
04:35:57 <elliott> oerjan: f g h x y z (((,),,))
04:36:05 <elliott> oerjan: f g h x y z (((,),))
04:36:15 <oerjan> elliott: sorry, no commas allowed after parentheses
04:36:27 <elliott> oerjan: ok do currying then
04:36:55 <elliott> oerjan: oh that breaks down a bit
04:36:56 <oerjan> !haskell putStrLn "hey, what's up man?"
04:37:00 <elliott> salisbury: lambdabot doesn't allow IO.
04:37:54 <elliott> shachaf: So apparently the GHC devs fixed that type family bug by making the type-signatureless function fail to compile.
04:37:57 <shachaf> > unsafePerformIO $ putStrLn " <IO ()>" -- You have to know how to do it.
04:38:10 <oerjan> f g h x y z (((()())()))
04:38:12 <salisbury> > unsafePerformIO (putStrLn "hey, whats up man")
04:38:20 * elliott would generally expect "f x = g x" to always work.
04:38:28 <elliott> Which it unambiguously is, here.
04:38:40 <shachaf> elliott: Is there no way to break it with Rank-N types or something?
04:38:44 <elliott> Or, for the even simpler case, that "y = x" would always work.
04:38:47 <shachaf> salisbury: lambdabot is subtly hinting that you're trying to print the wrong thing.
04:38:51 <elliott> Where x has any type, I mean come on.
04:38:58 <elliott> I doubt you can break _that_ with rank-N types.
04:39:05 <shachaf> elliott: It's, like, linear types, man.
04:39:20 <Sgeo> > unsafePerformIO $ text "Testing"
04:39:40 <monqy> is unsafeperformio = id
04:40:27 <elliott> shachaf is doing this thing called ``trolling''.
04:40:51 <salisbury> I'll admit, he's got me on this one
04:41:10 <Sgeo> I shouldn't have done that, I think I gave it away
04:41:15 <salisbury> > unsafePerformIO $ text "hey, what's up hermaphrodite"
04:41:20 <elliott> @let unsafePerformIO = undefined
04:41:20 <lambdabot> Multiple declarations of `L.unsafePerformIO'
04:41:48 <Sgeo> > text "Lambdabot prints Docs as you see"
04:42:09 <Sgeo> My unsafePerformIO was just an attempt to continue the trolling
04:42:52 <Sgeo> > text "\nbluh"
04:43:36 <monqy> > text $ interleave (repeat 'a') (repeat '\n')
04:43:59 <oerjan> > var $ interleave (repeat 'a') (repeat '\n')
04:45:48 <Sgeo> Let me guess? More 'a's?
04:46:11 <Sgeo> I have such perfectly bad timing
04:46:35 <elliott> oerjan: Nice trick to get an infinite Doc, though
04:46:42 <elliott> Since widths are per-unit-of-text-thing
04:47:31 <elliott> [elliott@dinky ~]$ pacman -Qe | wc -l
04:47:42 <elliott> oerjan: well i think you could do it
04:47:45 <elliott> with the vertical layout operator
04:48:35 <monqy> > foldl1 ($$) (repeat 'a')
04:48:35 <lambdabot> Couldn't match expected type `Text.PrettyPrint.HughesPJ.Doc'
04:48:51 <monqy> > foldl1 ($$) (repeat (text "a"))
04:49:11 <oerjan> monqy: foldl1 never is lazy
04:49:23 <oerjan> > foldr1 ($$) (repeat (text "a"))
04:49:38 <elliott> there is an empty :: Doc, btw :P
04:49:47 <oerjan> > foldr1 ($$) (repeat (text "a"))
04:50:00 <oerjan> it doesn't look like it helps, anyway
04:50:38 <oerjan> > foldr1 ($$) (replicate 10 (text "a"))
04:51:37 <Sgeo> elliott, update
04:51:44 <elliott> oerjan: http://www.reddit.com/r/haskell/comments/nfyvy/instance_monad_ziplist_where/
04:57:16 <elliott> copumpkin: he's been maintaining that ZipList is a monad for ages now :)
04:57:22 <oerjan> well because i have several times claimed that ZipList _can_ be a Monad
04:57:29 <copumpkin> it is if you have constraints on the list
04:57:42 <oerjan> i don't think that's needed.
04:57:56 <elliott> oerjan: http://stackoverflow.com/questions/6463058/help-on-writing-the-colist-monad-exercise-from-an-idioms-intro-paper seems to have a lot more info, including some from McBride
04:58:09 <oerjan> i'm already on that page.
04:58:35 <elliott> copumpkin: well afaik nobody has actually proved it, at least not publically
04:58:41 <elliott> and oerjan has a definition he think works
04:59:02 -!- augur has quit (Remote host closed the connection).
04:59:10 <elliott> copumpkin: yes, what use would ziplist be otherwise
04:59:30 <copumpkin> how do you write join if you have no guarantee the intermediate list contains anything at all?
04:59:48 <elliott> i can dig up oerjan's definition if you want
04:59:53 <elliott> it satisfied the easier monad laws
05:00:17 <HackEgo> 2011-11-30.txt:10:01:44: <elliott> oerjan: yes, I am sure that zjoin works fine in the theory you have used to create it :P
05:00:24 <elliott> zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
05:00:42 <copumpkin> @let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
05:00:49 <lambdabot> forall a. ZipList (ZipList a) -> ZipList a
05:01:12 * elliott thinks quickcheck could be useful here.
05:01:35 <copumpkin> > getZipList (zjoin (ZipList [ZipList [], ZipList [1]]))
05:01:46 <elliott> > getZipList (zjoin (ZipList [ZipList [], ZipList [1]]))
05:02:07 <elliott> Prelude Control.Applicative> let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
05:02:08 <elliott> Prelude Control.Applicative> getZipList (zjoin (ZipList [ZipList [], ZipList [1]]))
05:02:38 <lambdabot> Not in scope: `myquickcheck'Not in scope: data constructor `True'Not in sco...
05:03:07 <elliott> Cale broke something when reinstalling lambdabot's dependencies, I guess
05:03:20 <oerjan> > getZipList (zjoin (ZipList [ZipList [], ZipList [1]])) -- how does this manage to break lambdabot
05:04:10 <lambdabot> Not in scope: `myquickcheck'Not in scope: `is'Not in scope: `this'Not in sc...
05:04:21 <lambdabot> Not in scope: `myquickcheck'Not in scope: `$'
05:06:01 <elliott> It probably parses your expression to check it's valid first.
05:11:05 <elliott> pikhq_: Can you dd this ISO file to my USB drive for me?
05:23:00 -!- augur has joined.
05:24:48 <oerjan> so afaiu the monad law which is in doubt is zjoin . fmap zjoin = zjoin . zjoin
05:27:49 <zzo38> If all lists are of same length, then you can join because it is like (->) monad
05:28:36 <elliott> oerjan: sounds difficult :P
05:28:50 <salisbury> when ever I think Im getting my mind around Haskell, someone goes any types something like let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) []
05:29:55 <oerjan> elliott: well i _think_ that the nth element of each of those lists only exists when the (x,y,z)'th element of the original matrix exists for all x,y,z <= m, and when it does it's of course the (m,m,m)'th element.
05:30:10 <oerjan> s/only exists/exists precisely when/
05:31:42 -!- MDude has changed nick to MSleep.
05:32:23 <elliott> salisbury: Don't worry, oerjan is just terrible at Haskell.
05:33:09 <elliott> (By "terrible" I of course mean "amazing".)
05:33:15 <elliott> (by "amazing" I mean terrible)
05:33:35 <salisbury> s/terribly amazing/amazingly terrible
05:33:47 <salisbury> I don't even know what "s/something/something else" means
05:34:25 <oerjan> salisbury: it's vi substitution command
05:34:30 <salisbury> I'm guessing it is not a perl regex
05:34:45 <elliott> It has the same semantics as Perl s///, it's just fuzzier. :p
05:35:11 <Sgeo> salisbury, do you understand chains of function composition?
05:35:15 <oerjan> don't count on me using consistent regex syntax as well
05:37:34 <salisbury> I just don't really understand what that particular chain is supposed to accomplish
05:38:51 <Sgeo> I haven't looked it closely enough
05:39:03 <Sgeo> I know more than most beginners, I think, but I'm no expert
05:39:44 <elliott> remember that time when you wrote cat in haskellg
05:40:30 <Sgeo> Let me paste my recent code
05:40:33 <elliott> pikhq_: Does C seriously not guarantee anything about float/double semantics
05:40:48 <Sgeo> Not that it's not bad
05:41:01 <Sgeo> And some of the comments are obsolete
05:41:09 <oerjan> salisbury: well the diag is taking the diagonal of a list of lists. the scanl1 (zipWith (flip const)) is to fix a problem with the monad laws for ZipList if you do it naively.
05:41:30 <elliott> oerjan: the (>>=) in the reddit post I linked looked like the (>>=) for your zjoin
05:42:13 <Sgeo> http://hpaste.org/55359
05:42:56 <Sgeo> I'm aware that one of the "Dealing with Lazy I/O" lines is probably unnecessary
05:42:59 <Sgeo> as is the return ()
05:44:01 <Sgeo> I was pretending to myself that I might show this to non-Haskellers at some point
05:44:10 <elliott> "main should always be IO ()" False.
05:44:29 <Sgeo> elliott, there's something on the wiki with a function that will read a marked comment in the source
05:44:34 <elliott> (print =<<) $ putlines ftpConn "populate.php" . lines . buildPHP $ files -- print in the hopes that it forces the entire thing to go through
05:44:47 <elliott> Sgeo: Uhh, Haskell is a compiled language.
05:45:13 <Sgeo> http://www.haskell.org/haskellwiki/Poor_man's_here_document
05:45:15 <elliott> Sgeo: Also theg enerated code has a massive security hole.
05:45:36 <elliott> Sgeo: And that page should be deleted, it's completely unjustifiable to do that.
05:46:13 <Sgeo> elliott, hmm? Well, the page is visited once then deleted
05:46:15 <Sgeo> But what is it?
05:46:32 <elliott> insertFile file = "$query = \"INSERT INTO sg_songs (path) VALUES ('" ++ file ++ "')\";\n" ++ performQuery
05:46:41 -!- oerjan has quit (Remote host closed the connection).
05:47:19 <elliott> http://hpaste.org/55354 ;; the difference is the difference between fmap and (=<<).
05:47:36 <Sgeo> elliott, #haskell helped me with that earlier
05:48:48 <Sgeo> elliott, in fairness wrt the SQL injection, it's a one-off script that could only have been exploited by someone knowing that I was generating the page, then visiting the generated page before I had a chance to vet it then run it
05:48:57 <Sgeo> And who had access to my FTP
05:49:09 <elliott> Sgeo: Yes, "it's not a security hole until it bites me" is a common sentiment.
05:49:10 <Sgeo> But that's how these things start, isn't it?
05:49:55 <elliott> Does anyone know a convenient way to sort a list of human file sizes?
05:50:41 <Sgeo> Is the _ <- stuff ok or bad?
05:50:53 <elliott> It's fine. You can use Control.Monad.void if you want.
05:51:08 <elliott> That also lets you reduce do { _ <- m; return () } -> void m
05:51:42 <zzo38> It could use (() <$ m) for any functors
05:55:02 <Sgeo> elliott, fun fact, that hope that the print would force the entire thing to go through, instead of cutting stuff off: It worked.
05:55:13 <Sgeo> I do not like this library.
05:55:31 <Sgeo> @hoogle a -> IO ()
05:55:33 <lambdabot> Control.Concurrent.SampleVar writeSampleVar :: SampleVar a -> a -> IO ()
05:55:33 <lambdabot> Control.Concurrent.MVar putMVar :: MVar a -> a -> IO ()
05:55:33 <lambdabot> Data.IORef writeIORef :: IORef a -> a -> IO ()
05:55:44 <Sgeo> Someone showed me a function that would do similar
05:55:48 <Sgeo> @hoogle evaluate
05:55:49 <lambdabot> Control.Exception.Base evaluate :: a -> IO a
05:55:49 <lambdabot> Control.Exception evaluate :: a -> IO a
05:55:49 <lambdabot> Control.OldException evaluate :: a -> IO a
06:00:00 <Sgeo> elliott, I think I'd have to combine deepseq with evaluate, otherwise the deepseqing itself won't be evaluated, I think
06:00:29 <Sgeo> Or is fully evaluated later than I want
06:00:30 <elliott> xs `deepseq` return (), but that's just the same as evaluate xs, modulo exceptions.
06:01:07 <elliott> where deepseq a b = rnf a `seq` b
06:01:23 <Sgeo> evaluate (force xs)?
06:01:39 <elliott> (evaluate (rnf a) is equal to (a `seq` return a) >>= return, not (a `seq` return a). If you didn't jump, you don't know Haskell yet.)
06:01:46 <elliott> (evaluate (rnf a) is equal to (rnf a `seq` return a) >>= return, not (rnf a `seq` return a). If you didn't jump, you don't know Haskell yet.)
06:03:03 <Sgeo> rnf returns a ()
06:03:08 <Sgeo> wow, returns is a bad word
06:03:15 <Sgeo> rnf :: a -> ()
06:03:21 <Sgeo> (ok, not quite)
06:03:30 <elliott> (evaluate (rnf a) is equal to (rnf a `seq` return ()) >>= return, not (rnf a `seq` return ()). If you didn't jump, you don't know Haskell yet.)
06:03:47 <elliott> AKA evaluate (rnf a) is equal to (deepseq a (return ()) >>= return), not (deepseq a (return ())).)
06:04:00 <elliott> There is a very obvious, very terrible thing there, and you are completely missing it.
06:04:04 <Sgeo> If by that, you mean wondering what the difference is
06:04:13 <elliott> There is no difference; that's one of the monad laws.
06:05:04 <Sgeo> I was more confused than startled
06:07:46 <shachaf> > (undefined >>= return :: a -> b) `seq` 1
06:09:47 <Sgeo> elliott, so why is evaluate (rnf a) one but not the other of things that are equivalent?
06:10:57 <elliott> > let eval x = x `seq` return x in eval undefined `seq` ()
06:10:58 <lambdabot> Ambiguous type variable `m' in the constraint:
06:11:07 <elliott> > let eval :: a -> IO a; eval x = x `seq` return x in eval undefined `seq` ()
06:11:13 <elliott> > let eval :: a -> IO a; eval x = (x `seq` return x) >>= return in eval undefined `seq` ()
06:11:43 <elliott> Hint: seq is the only thing that lets you distinguish (const _|_) from _|_, and in GHC, IO is implemented with a function inside.
06:13:40 <salisbury> ok, hoogle doesn't let me do _|_..
06:13:53 <Sgeo> salisbury, _|_ is another name for bottom
06:13:55 <elliott> salisbury: _|_ is any bottom value.
06:14:01 <elliott> e.g. undefined, or fix id, or error "hi".
06:14:04 <Sgeo> And you can use error or undefined as a convenient way to make bottom
06:14:22 <zzo38> I have a function (x -> Natural) for a bounded enumeration x and want to make list of all functions of the same type that their output does not exceed the output of the original function for each input.
06:14:25 <Sgeo> Does the runtime detect fix id as <<loop>>?
06:15:17 <elliott> That's a pretty obvious BLACKHOLEy type thing.
06:15:22 <elliott> I don't know the actual terminology.
06:15:34 <elliott> I think the threaded runtime doesn't detect <<loop>> at all, though.
06:16:11 <zzo38> How can I make a function to make such a list?
06:17:08 <elliott> salisbury: You don't care about <<loop>> detection.
06:17:12 <Sgeo> salisbury, so you lose a minor bragging point
06:17:17 <Sgeo> over other languages
06:17:22 <Sgeo> Not a big deal, I think
06:29:45 <shachaf> elliott: But only on GC, or something like that.
06:29:55 <shachaf> Whereas the non-threaded one detects it immediately.
06:29:56 <elliott> I don't think fix id allocates.
06:31:19 <shachaf> elliott: Does that matter?
06:31:27 <elliott> Well, no. But that's what we were talking about.
06:31:29 <shachaf> When the thread tries to evaluate the BLACKHOLE, it'lll get suspended.
06:33:00 <elliott> GHC GCs while not doing anything?
06:33:39 <shachaf> That's the best time to GC, obviously. :-)
06:33:56 <shachaf> kmc might know the details of this.
06:37:43 <elliott> I'm disappointed in you all for not making me boot this installation media.
06:38:50 <shachaf> elliott: I'm disappointed in y'all for saying "this ... media".
06:38:58 <shachaf> If it wasn't for this annoying grammatical nitpick I would've done it.
06:39:34 <elliott> Installation media is a set of {installation CD, installation HD, ...}.
06:39:41 <elliott> Yes, you're right, it should be "medium".
06:39:45 <shachaf> (And now for elliott to comment on "wasn't".)
06:40:05 <shachaf> No, "y'all" is an abbreviation for "you all".
06:40:25 <shachaf> elliott: This is where we disagree.
06:40:32 <kmc> black holes and revelations
06:40:34 <elliott> Dammit, the elliott cabal has been revealed.
06:41:02 <kmc> hi elliott
06:41:25 -!- elliott has quit (Quit: shift change for elliott bourbaki).
06:41:26 <shachaf> Bless you, elliott. Blelliott.
06:42:33 <kmc> how come you all talk about haskell all the time
06:42:37 <kmc> is it the best esoteric language
06:42:59 <shachaf> kmc: #haskell is too full of monad jokes.
06:43:07 <kmc> what's the best language if im' drunk
06:43:35 <shachaf> kmc: "I'm drunk". That would be a good keyword for gmail to look for.
06:43:59 <shachaf> WHOA, DUDE. KEYWORD ~ PASSWORD
06:44:02 <kmc> http://www.sparkfun.com/products/8880
06:44:35 <kmc> here this should help http://lusorobotica.com/index.php/topic,111.0.html
06:45:11 -!- PiRSquared17 has left.
06:45:15 <shachaf> My head just started seriously hurting. :-(
06:46:53 <kmc> chemical warfare, chemical warfare, chemical warfare warfare warfare
06:48:27 <salisbury> keep that up and we'll have a Stop IRC Violence Act by this time next month
06:50:06 <zzo38> Do you know what is the best way to make a function that will make a list of all function the output does not exceed the output of the original function for each input that it can be given?
06:50:53 <kmc> has anyone really been far even as decided to use even go want to do look more like?
06:52:23 <zzo38> kmc: That seems a difficult question that I don't know the answer.
06:52:47 <kmc> there's no escaping from ohio
06:53:03 -!- elliott has joined.
06:53:13 <zzo38> Look more like what?
06:55:48 -!- Ngevd has joined.
06:59:08 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:59:11 <Ngevd> Where I will now go
06:59:13 -!- Ngevd has quit (Client Quit).
07:00:55 <kmc> jupiter and beyond the infinite
07:01:30 <elliott> I have this weird suspicion that kmc isn't entirely sober right now.
07:02:06 <kmc> it's illegal to be drunk on the internet
07:02:09 <kmc> we all know that
07:04:53 <kmc> 1 result (0.27 seconds)
07:05:27 <elliott> It's a well-guarded secret that we all know.
07:09:27 <zzo38> Jupiter is too far away, isn't it?
07:11:01 <salisbury> no actually, if you use the teleport monad
07:12:06 <salisbury> >>= :: :: Monad m => m a -> (a -> m b) -> Jupiter
07:12:50 <shachaf> The bane of kmc has reached us, even here.
07:13:52 <kmc> (::) :: Term → Type → Decl
07:14:09 -!- kmc has left ("Leaving").
07:14:13 -!- kmc has joined.
07:14:30 <kmc> shachaf, it's your fault really
07:15:00 <kmc> you summoned me here
07:15:12 <kmc> <shachaf> kmc might know the details of this.
07:15:15 <shachaf> You mean during the BLACKHOLE discussion?
07:15:20 <shachaf> You were already in this channel.
07:15:21 <kmc> the blackest of holes
07:15:28 <kmc> i forgot why
07:16:26 <Sgeo> kmc, loop detection in threaded runtime
07:16:38 <kmc> yeah i dunno how that shit works
07:17:08 <Sgeo> elliott, did I just talk to you in another channel?
07:17:18 <zzo38> I have a program to tell you how far away Jupiter is. It is 4.33 units far.
07:17:38 <shachaf> `addquote <zzo38> I have a program to tell you how far away Jupiter is. It is 4.33 units far.
07:17:41 <Sgeo> elliott, fun fact: I just confused you with someone else.
07:17:44 <HackEgo> 767) <zzo38> I have a program to tell you how far away Jupiter is. It is 4.33 units far.
07:17:45 <kmc> 10 parts sugar, 90 parts whiskey
07:18:13 <shachaf> "Hearts full of youth / Hearts full of truth / Six parts gin to one part vermouth"
07:19:09 <zzo38> (Distance from the Earth)
07:21:17 <zzo38> Distance from sun is 4.97
07:22:02 * kmc slept through all the lectures but did not cheat on the exams
07:22:34 <zzo38> Average distance from sun is 5.203
07:23:13 <zzo38> Or, at least, this is what it says on the computer.
07:23:15 <salisbury> salisbury doesn't know how to do that thing kmc just did
07:23:52 <salisbury> salisbury also is a chemical pharmacology student and wishes he did comp sci. formally......
07:24:15 <kmc> pharmacology?!?!?!?
07:24:21 <kmc> that's way the fuck better than CS
07:24:47 <salisbury> yeah, but you folks know all this amazing haskell shit
07:25:01 <shachaf> salisbury: You don't need to be a formal CS student for that.
07:25:04 <kmc> yeah but you can synthesize novel 5HT subtype-selective receptor agonists
07:25:49 <Sgeo> salisbury, repeat after me
07:25:55 <Sgeo> /me just learned how to /me
07:26:12 <elliott> elliott thinks referring to yourself in the third person is just dandy.
07:26:33 <shachaf> elliott: If first -> third, you should second -> first.
07:27:23 <salisbury> kmc, you live in CA? look up alexander shulgin
07:27:29 <salisbury> he lives in the mountains or something
07:27:34 <kmc> i know who shulgin is ;P
07:27:36 <kmc> but i don't live in CA
07:28:01 <kmc> shulgin is basically the man
07:28:03 <kmc> in this field
07:28:06 <kmc> but he's pretty old and retired
07:28:34 <salisbury> he has a lab in his garden shed I'm fairly sure
07:28:48 <kmc> i think much of the research in this area is done by the nichols group at purdue
07:28:54 <kmc> these days
07:29:49 <shachaf> kmc: Have you considered moving to CA?
07:30:18 <kmc> shulgin has taken probably
07:30:31 <kmc> more distinct psychoactive drugs than anyone else in human history
07:30:38 <zzo38> I can compute a lot of other things about planets and sun and moon and so on, not only the distance
07:31:04 <kmc> shachaf, yes
07:31:17 <zzo38> And even a few asteroids and fixed stars, and even fictitious planets can be computed
07:31:34 <salisbury> there is no interesting research in Canada..
07:32:00 <salisbury> aaanddd.. I'm transferring into U Toronto..
07:32:01 <zzo38> salisbury: Are you sure? Have you checked?
07:32:52 <kmc> at my school the Haskell interest group and the psychedelics / research chemical interest group overlapped significantly....
07:34:49 <salisbury> I don't even know anyone else who uses Haskell
07:35:06 <zzo38> If you want these informations (including for future and past), you cantell me I can put it into the computer figure out distances and angles and azimuth and whatever else
07:36:28 <salisbury> zzo38 distance from the moon to haley's comet in 1912
07:37:44 <zzo38> O, no, haley's comet is not on here. And distances are only in AU
07:38:05 <zzo38> But angles can be measured in three different ways (radians isn't one of them).
07:38:21 <salisbury> just because it's not on there does not mean its 0
07:38:30 <salisbury> unknown would be more appropriate diction
07:38:55 <zzo38> I didn't say it was 0, I used the letter O not the number 0
07:39:50 <zzo38> I plan I might write a better program later, so I might be able to included haley's comet but probably not in millimeters
07:44:44 <zzo38> I know how to figure out the Chinese New Year, do you know the Chinese New Year?
07:47:45 <kmc> "I know how to figure out the Chinese New Year" would be a bad name for a band
07:48:06 <zzo38> Then don't name your band that!
07:50:25 -!- tuubow has joined.
07:52:44 <HackEgo> tuubow: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
07:59:10 <salisbury> or feel free to entertain us with stories of your voyages to other plains of existence
08:01:49 <zzo38> I have a list of 88 constellations including both English and Latin. And abbreviations.
08:02:52 <salisbury> zzo38 what, may I ask, are you doing with all this
08:04:26 <zzo38> Not much usually. The program just happens to have a lot of features. But sometimes I will want to figure out Chinese New Year, or the phase of the moon, or I might just be interested in how all this stuff works
08:04:49 <salisbury> are you just learning programming?
08:05:07 <salisbury> because .. otherwise .. google has
08:05:13 <zzo38> No, and this is not a program I wrote, either.
08:05:22 <zzo38> I have written a lot of programs in the past including computer game and other things.
08:07:49 <zzo38> Looking in Wikipedia, I can learn, what is prime vertical, what is ecliptic, what is a lunar node, what is zenith, right ascension and declination, and so on.
08:08:05 <zzo38> salisbury: What about now do you mean?
08:09:39 <salisbury> why do I feel like I'm in a turing test
08:09:58 <salisbury> what programs are you writing now?
08:10:48 <zzo38> I do write some programs now too. Even some computer game program, but other things including Haskell libraries and TeX macro packages, and some other stuff for some people who ask me for specific programs too.
08:12:13 <zzo38> Once I wrote a game for GameBoy.
08:17:37 -!- Ngevd has joined.
08:18:18 <Ngevd> It's surprisingly not slippy outside
08:25:28 <elliott> coppro: How can I get clang to print out every warning option it supports
08:25:36 <elliott> They're not documented at all, and appear to be distributed throughout the codebase
08:32:11 <elliott> This is what gcc -Wactually-literally-every-warning-that-gcc-supports (apart from -Wsystem-headers) thinks of mcmap.
08:32:37 * elliott decides that -Wtraditional and -Wc++-compat have to go :P
08:33:42 <elliott> Warn if any functions that return structures or unions are defined or called. (In languages where you can return an array, this also elicits a warning.)
08:33:44 <elliott> WHY WOULD THIS BE A WARNING
08:35:11 <elliott> I think -Wconversion just warns about... every single conversion.
08:35:16 <Sgeo> -Wsystem-headers?
08:35:34 <elliott> Sgeo: Shows you warnings about the code inside system headers you include.
08:35:38 <elliott> It's a good way to get a few thousand pages of warnings.
08:36:31 <Sgeo> What's wrong with Waggregate-return? Don't you need to avoid returning those sorts of things, and return pointers to them instead for some reason?
08:36:49 <elliott> Why? That requires a heap allocation and later free.
08:36:54 <elliott> Not only is that really slow, what's the point?
08:37:07 <Sgeo> elliott, I didn't think it was possible to aggregate return
08:37:20 <elliott> Sgeo: Yes, -Wimpossible is certainly likely to exist?
08:38:08 <Sgeo> Upon seeing -Waggregate-return, I modified from "impossible" to "bad idea"
08:38:29 <elliott> That sounds like a suspicious modification.
08:38:55 <elliott> There's a -Wtraditional that complains about things that K&R compilers won't like, after all.
08:40:41 <Sgeo> I'm more worried about -Wc++-compat
08:41:02 <Sgeo> I'm aware that there are things you need to do in C++ that are bad in C
08:41:23 <Sgeo> Casting malloc, I thin
08:52:50 -!- zzo38 has quit (Remote host closed the connection).
08:56:38 <shachaf> elliott: How do you -Wactually-literally-every-warning-that-gcc-supports?
08:57:49 <elliott> shachaf: curl http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html | sed 's/ <br><dt><code>-W\([^<]*\).*/-W\1/p; d' | grep -v -- '-Wno' >warns, manually removing the ones that end with = and nothing after them and the like, then gcc -std=c99 -pedantic $(cat warns) ...; remove the ones it complains about (not in your gcc for whatever reason, don't apply to your language, etc.) until it works.
08:58:06 <elliott> It's easier than it sounds.
08:58:13 <elliott> It's also even less useful than you're imagining.
08:59:08 <shachaf> That doesn't do what I think it does.
09:00:16 <shachaf> -std=c90 according to my `man ghc`.
09:00:36 <elliott> -pedantic is the one that emits the warnings that the C standard tells it to (it *doesn't* try to emit warnings about non-standard constructs, despite what people think).
09:00:58 <elliott> It's pedantic because you turn it on to get pedantically-correct behaviour, since the standard mandates printing those diagnostics.
09:01:08 <shachaf> elliott: Don't forget to compiler with optimizations.
09:01:35 <elliott> shachaf: I just set EXTRACFLAGS to that nonsense; mcmap adds -O3 from the OPTCFLAGS because fizzie is mad.
09:02:12 -!- cswords has joined.
09:02:26 <shachaf> elliott: OK, but that counts as part of the -W flags.
09:02:37 <elliott> shachaf: Yeah, I know that -O2 improves warning behaviour.
09:03:26 <shachaf> elliott: Also, you can even more exciting -W options if you compile C++.
09:05:00 <shachaf> C++ is an interesting language.
09:05:06 -!- cswords__ has quit (Ping timeout: 255 seconds).
09:05:07 <shachaf> I'm beginning to appreciate it.
09:06:38 <shachaf> elliott: There's a certain elegance to it.
09:06:52 <elliott> Play C++ sudoku, it's what I do.
09:07:36 <elliott> You have to implement a functional programming concept in C++; bonus points for using lots of templates; bonus points for using nothing but templates.
09:07:46 <elliott> Bonus points if it's something Oleg did.
09:07:58 <elliott> You might think this is easy, but you can't just use a pointer.
09:08:01 <elliott> Because you can't have a pointer to a reference.
09:08:32 <elliott> You actually need a boolean flag, and a char array with size sizeof(T), where T is the template parameter; you have to exploit the fact that you can turn anything into a bunch of chars and back, including references.
09:08:45 <elliott> Basically it turns C++'s hideous flaws into entertaining intellectual roadblocks.
09:10:04 <elliott> (Even more technically, you want a *pointer* to said char array (so you have to wrap it in a templated class/struct), otherwise maybe<T> takes up as much space as T even if it's Nothing.)
09:11:45 -!- Ngevd has quit (Ping timeout: 252 seconds).
09:16:50 <elliott> It is if you're a language lawyer.
09:17:09 * elliott used to be, but was language disbarred.
09:24:38 <Sgeo> Wait, is monqy a Homestuck person?
09:25:48 <Sgeo> Comic with some flash animations and games. http://www.mspaintadventures.com/ . Warning: Language, violence, photosensitive epilepsy
09:26:02 <Sgeo> (Erm, as in, if you're photosensitive epileptic, it may be a bad idea)
09:26:14 <Sgeo> I don't think there are any photosensitive epileptic characters.
09:27:08 <elliott> today monqy learned the true meaning of friendship
09:27:15 <elliott> and photosensitive epilepsy
09:27:56 <elliott> homestuck is very depressing and a bit of a gulag
09:28:54 <Sgeo> monqy, it starts off a bit slow. It does not stay slow.
09:28:59 <monqy> does zoosmell die........
09:29:56 <elliott> "your smell will be missed"
09:31:58 <monqy> sgeo when does it sto[p being slow....
09:32:04 <monqy> when do i get to meet homestuck.......
09:32:32 <Sgeo> Hmm. elliott what do you think?
09:32:53 <elliott> monqy: Homestuck appears on page 6781.
09:33:26 <monqy> now homestuck is ruined for me
09:33:41 <elliott> Read Station V3 instead, it's better.
09:34:25 <monqy> but station v3 is bad ;_;
09:34:36 <elliott> Yes, but is it Homestuck bad??
09:36:41 <monqy> laughing at station v3
09:36:46 <monqy> because of how bad it is
09:37:02 <monqy> all of the characters are funny
09:37:31 <elliott> read homestuck instead it'll eliminate the funny
09:37:41 <elliott> monqy: oh god the stationv3 guy responds to every comment
09:37:45 <elliott> http://www.stationv3.com/d/20111215.html#disqus_thread
09:38:45 <monqy> people tiwttered that....
09:39:03 <monqy> the Reactions section
09:39:20 <monqy> people retwetted from t.truszowkwoeskey
09:39:21 <elliott> oh god "Evening repeat" he tweets these things twice
09:39:59 <elliott> http://twitter.com/#!/Axonite
09:40:03 <elliott> Today's Station V3 is also on Reddit - http://redd.it/ndjza (Votes welcome, especially the "up" kind!)
09:40:26 <elliott> the account has the same username
09:40:43 <elliott> http://www.reddit.com/user/axonite
09:40:57 <elliott> does someone want to tell this poor sap that /r/comics has almost 10x the readers
09:43:16 <monqy> http://www.stationv3.com/art.html station v3 fanart
09:43:55 <elliott> "Art from Chris Truszkowski"
09:43:57 <elliott> is it all by his relatives
09:46:03 <monqy> wow these are amazing
09:53:02 <elliott> "In The Hitchhiker's Guide to the Galaxy, Douglas Adams mentions an extremely dull planet, inhabited by a bunch of depressed humans and a certain breed of animals with sharp teeth which communicate with the humans by biting them very hard in the thighs. This is strikingly similar to UNIX"
09:56:29 -!- Vorpal has joined.
09:59:22 -!- Ngevd has joined.
09:59:56 -!- Ngevd has changed nick to Taneb|Hovercraft.
10:04:04 <pikhq_> elliott: Yeah, yeah, yeah, Mostly Harmless.
10:04:14 <pikhq_> Also, that was an alternate Earth.
10:04:24 <elliott> I didn't quote it for the H2G2 description alone.
10:04:30 <elliott> You will note there's a second sentence.
10:10:09 <shachaf> elliott: Have you read The UNIX-HATERS Handbook?
10:10:26 <elliott> shachaf: A large portion of it, at least. I don't know that I've ever sat down and read the whole thing from start to finish.
10:10:34 <elliott> I am also responsible for what ^style jargon does.
10:12:01 -!- Phantom_Hoover has joined.
10:12:02 <fungot> Selected style: jargon (UNIX-HATERS mailing list archive)
10:12:07 -!- Phantom_Hoover has quit (Changing host).
10:12:07 -!- Phantom_Hoover has joined.
10:12:16 <shachaf> fungot: HELP HOW DO I MAKE YOU TALK
10:12:16 <fungot> shachaf: well, one helpless screaming bit at a time, the superstitious remedy doesn't work so they dreamed up their own gasoline from barrels of crude......
10:12:33 <shachaf> fungot: Well, that worked.
10:12:33 <fungot> shachaf: rucken to cause it to unix-haters. it's not unix's fault! what incredible waste! anybody who isn't a steaming pile of junk. it
10:12:41 <lambdabot> Phantom_Hoover: You have 11 new messages. '/msg lambdabot @messages' to read them.
10:12:58 <elliott> shachaf sure has sent Phantom_Hoover a lot of messages!!!
10:14:42 <Phantom_Hoover> It took a lot of effort to continue reading after he died.
10:25:48 <pikhq_> shachaf: Just say "fungot" in a sentence.
10:25:48 <fungot> pikhq_: webster has a return-path header is supposed to read, i can tell, would be " root" in the berkeley fast ( and in fact, it's screaming " wash me please".
10:27:21 <fungot> elliott: date: fri, 04 dec 92 04:14:03 gmt from: wa date: tue, 7 apr 1992 09:21 edt from: dm
10:27:30 <elliott> With an automatic, silent Turing test, of course.
10:28:01 <shachaf> elliott: But... I'm a bot.
10:28:19 <elliott> shachaf: Ooh, this is like The Difference, but reversed.
10:28:26 <elliott> (http://qntm.org/difference)
10:28:43 <shachaf> I don't read anything under the Fiction section on qntm.org.
10:29:34 <elliott> So you read... the usually-fairly-dull blog and code sections exclusively?
10:29:44 <shachaf> I don't often read those either.
10:29:50 <elliott> Or is this one of those ambiguous emissions where you actually just don't read qntm.org at all.
10:30:07 <shachaf> Once I confused the author of qntm.org with Sam Hughes.
10:30:26 <elliott> Once you confused your correctness for confusion.
10:30:49 <shachaf> http://qntm.org/news_whosthis
10:33:17 <shachaf> elliott: This will surely be your favourite language: http://samuelhughes.com/boof/
10:33:23 -!- Taneb|Hovercraft has quit (Ping timeout: 240 seconds).
10:33:50 <elliott> It predates BF derivatives becoming hopelessly, awfully tired.
10:34:20 <shachaf> elliott: Didn't that happen with the very first derivative?
10:34:26 <elliott> http://samuelhughes.com/isstring/index.html Oh good, this person is as bad as kallisti.
10:35:25 -!- elliott has quit (Quit: Leaving).
10:37:41 <Phantom_Hoover> He looks like he just things of it as a pathologically interesting thing...
10:40:42 -!- derrik has joined.
10:46:08 -!- elliott has joined.
10:54:21 -!- GreaseMonkey has quit (Quit: The Other Game).
11:10:08 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
11:10:08 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
11:21:20 -!- monqy has quit (Quit: hello).
11:27:22 <Phantom_Hoover> 02:08:03: <pikhq_> To be fair, the structure of it is sufficiently weird that it's, well, insane to follow.
11:27:57 <elliott> You can get fined for structural puns like that.
11:28:12 <Phantom_Hoover> I'm pretty sure there's time travel somewhere in there, you'd hate it.
11:54:27 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
11:59:54 -!- Ngevd has joined.
12:21:00 -!- kallisti has joined.
12:21:00 -!- kallisti has quit (Changing host).
12:21:00 -!- kallisti has joined.
12:22:19 <kallisti> elliott: I'm not familiar with the chronological relationship between Homestuck and SBaHJ; did "bone bulge" originate from the former or the latter?
12:22:47 <kallisti> SBaHJ -> Homestuck would be funnier I think.
12:23:13 <kallisti> from the perspective of Homestuck -> SBaHJ "bone bulge" sounds.. well, like an alien. :P
12:24:22 -!- elliott has quit (Quit: Leaving).
12:25:15 <kallisti> because, well, Dave makes SBaHJ
12:33:37 <kallisti> lol @ people on skyrim forums thinking that race matters at all for most builds.
12:34:31 -!- tuubow has quit (Ping timeout: 240 seconds).
12:43:45 -!- elliott has joined.
12:48:24 <kallisti> the only racial benefits that are vaguely important are the passive ones. the 50 magicka bonus on high elves is insane. Breton magic resistance is good, Nord frost resist is good, dark elf fire resist is good, Orc berserk is good, breton magic resist is good.
12:49:06 <kallisti> honestly they should have gave redguard 50 stamina or something because high elf is just broken compared to every other race.
12:53:57 -!- kallisti has quit (Ping timeout: 248 seconds).
12:55:44 -!- kallisti has joined.
12:55:44 -!- kallisti has quit (Changing host).
12:55:44 -!- kallisti has joined.
12:57:11 -!- Ngevd has quit (Ping timeout: 240 seconds).
13:07:39 -!- Ngevd has joined.
13:11:47 -!- tswett has quit (Ping timeout: 244 seconds).
13:20:16 -!- derrik has quit (Quit: bbl).
13:36:16 -!- derrik has joined.
13:41:21 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]).
13:43:12 -!- tswett has joined.
13:44:06 -!- lifthrasiir has joined.
13:56:31 -!- tswett has quit (Ping timeout: 240 seconds).
14:07:44 -!- sebbu3 has joined.
14:07:55 -!- sebbu2 has quit (Read error: Operation timed out).
14:08:47 <elliott> pikhq_: Why is C's const notation so ugly
14:10:10 <elliott> Actually I can't figure out wtf I want at all
14:10:37 <elliott> How do I declare a function taking (char **) that just doesn't mutate the treated-as-two-dimensional-array at all
14:10:39 -!- tswett has joined.
14:10:47 <Ngevd> Oh yeah, I need to remove that code I commented out
14:11:31 <Ngevd> It's Taneb's bad Haskell time!
14:11:32 <Ngevd> http://hpaste.org/55371
14:12:18 <elliott> map (ap ((,) . join . intersperse " " . init) last)
14:12:30 <elliott> This is why mechanically applying @pl to everything is dumb.
14:12:34 <Ngevd> I'm not sure what that does any mo0re
14:14:23 <elliott> Ngevd: Your random numbers are stupidly broken.
14:14:28 <elliott> You're requesting the same number every single time.
14:15:45 <elliott> Well, not in the inner loop.
14:17:36 -!- Ngevd has quit (Quit: Goodbye).
14:18:50 <elliott> http://hpaste.org/55373, anyway.
14:22:07 <elliott> @tell Ngevd http://hpaste.org/55374
14:31:17 <elliott> shachaf: I now know the woes of plagiarism.
15:02:14 -!- cswords_ has joined.
15:04:42 <elliott> Hmm, fizzie: Deewiant: pikhq_: const lawyer ping :P
15:05:02 -!- cswords has quit (Ping timeout: 240 seconds).
15:06:14 <olsner> char const *const *const
15:06:38 <olsner> ... to const all the things
15:07:01 <elliott> olsner: Erm, one of those must be redundant, because you don't want to /declare/ "immutable variable", just define it
15:07:08 <elliott> i.e. which one of those doesn't go through a pointer :P
15:08:23 <olsner> sure, the last const is optional, you can remove it if you want to mutate the pointer in the function (without mutating what it points to)
15:09:01 <elliott> olsner: well, I don't, but that shouldn't be part of the declaration regardless, no?
15:09:11 <elliott> since it's a purely "syntactic" thing about the implementation
15:09:28 <elliott> void load_colors(const char *const *lines);
15:09:39 <elliott> main.c:36:6: note: expected ‘const char * const*’ but argument is of type ‘char * const*’
15:10:09 <elliott> Now I have to figure out whether to change the declaration or add a cast at the use site.
15:10:36 <olsner> not sure if it'll accept a definition with additional const if the declaration didn't have it... even though the definition is compatible
15:11:02 <elliott> OK, I think the problem here is that const doesn't mean what I think
15:11:09 <elliott> void foo(const char *const *foo);
15:11:22 <elliott> I assumed it meant "I won't modify *foo and I won't modify **foo"
15:11:28 <elliott> but it seems to actually mean
15:11:42 <elliott> "Give me a foo such that you can't modify **foo, and I won't modify *foo"
15:11:49 <elliott> because I can't pass a (char **) to it...
15:14:33 <elliott> olsner: tell me I'm not mad?
15:14:46 <olsner> (in C++,) char** doesn't implicitly convert to const char**, because it would e.g. allow putting a const char* in there that your caller might end up using as char*
15:15:17 <olsner> with more const, I think it should be ok, but I don't know the exact rules
15:15:39 <elliott> hmm, in this case it's (char **) to (const char *const *)
15:15:56 <elliott> although note that I'm pretty sure this is just a warning
15:16:16 <olsner> yes, in C you can pass any pointer as any other pointer anyway
15:16:29 <elliott> still, it feels like I must be doing something wrong -- I'm trying to be const-correct, I shouldn't be getting any scary warnings :P
15:17:24 <elliott> "In order to reduce the verbosity of such a bad languages, there is a way. m4. Yes, the preprocessor you use when you program in C and C++."
15:17:29 <elliott> this guy lives in some kinda alternate universe
15:17:41 <olsner> C has some retardedness with const... things like you can't even explicitly cast between constness without warnings but you have implicit conversions between completely unrelated pointer types
15:18:22 <Deewiant> Whenever you're talking about warnings in C you're talking about implementations, not the language
15:19:25 <elliott> Deewiant: -pedantic exists solely to yell at you things that the C standard wants the compiler to
15:19:43 <elliott> Although maybe "diagnostics" are supposed to be errors, I forget
15:19:49 <olsner> hmm, I think I meant cast *away* constness there, don't think adding const causes any warnings
15:20:06 <Deewiant> elliott: I think they're all only recommended, not required
15:20:47 <elliott> Issue all the warnings demanded by strict ISO C and ISO C++; reject
15:20:47 <elliott> all programs that use forbidden extensions, and some other programs
15:20:47 <elliott> that do not follow ISO C and ISO C++. For ISO C, follows the
15:20:47 <elliott> version of the ISO C standard specified by any -std option used.
15:20:49 <elliott> Deewiant: Well, "demanded"
15:20:56 <elliott> Some users try to use -pedantic to check programs for strict ISO C
15:20:56 <elliott> conformance. They soon find that it does not do quite what they
15:20:56 <elliott> want: it finds some non-ISO practices, but not all---only those for
15:20:56 <elliott> which ISO C requires a diagnostic, and some others for which
15:20:58 <elliott> diagnostics have been added.
15:21:55 <olsner> hmm, is there any option to check for strict ISO C conformance then?
15:24:07 <Deewiant> elliott: By a quick search for "diagnostic" in C1X, the only required one I can find that isn't also an error is (ironically) #error
15:26:40 -!- derrik has joined.
15:27:03 <elliott> Deewiant: But fair enough.
15:27:17 -!- derrik has quit (Client Quit).
15:27:19 <elliott> olsner: sure, -pedantic + sending a bunch of patches to gnu that add all the checks
15:27:26 <elliott> although I doubt all the criteria for validity are decidable
15:27:31 -!- Ngevd has joined.
15:27:43 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
15:27:49 <lambdabot> elliott said 1h 5m 42s ago: http://hpaste.org/55374
15:28:36 -!- derrik has joined.
15:28:46 <Ngevd> I got that to work independantly
15:28:52 -!- derrik has quit (Client Quit).
15:29:17 <Ngevd> Although the prompt idea is good
15:29:19 <elliott> I was making it not terrible :P
15:29:28 <Ngevd> It's not terrible if it works
15:29:36 <elliott> I fixed the random number generation and the passing about the Map.
15:29:49 <elliott> But not completely unterrible.
15:30:15 <Ngevd> The random number generation isn't actually a problem
15:30:23 <elliott> Well, it was definitely a bug.
15:30:29 <elliott> You used the same number for the first two iterations.
15:30:41 <elliott> It was also a trivially fixable bug, but I just removed the explicit StdGen threading instead since you're already in IO.
15:30:52 <elliott> Ngevd: Actually, no, wait, you used the same number for every adjacent iteration.
15:30:58 <elliott> It went a, a, b, b, c, c, ...
15:31:00 <Ngevd> Which is the point
15:31:07 <Ngevd> It wasn't the point
15:31:07 -!- azaq23 has joined.
15:31:12 <Ngevd> But that wasn't actually the problem
15:31:19 <elliott> It went a, a, b, c, d, e, ...
15:31:23 <Ngevd> I had used "fst" instead of "snd"
15:31:41 <elliott> Ngevd: Well, you never said "fix this specific bug", you just said "here's some terrible code" and I fixed that. :p
15:31:49 -!- salisbury has quit (Quit: Leaving).
15:31:54 * elliott has no idea what the program is actually trying to do.
15:32:06 <elliott> Hmm, you said "bad", not terrible.
15:32:10 <elliott> YOU ARE LET OFF THE HOOK THIS TIME
15:34:08 <Ngevd> Version I will stick with: http://hpaste.org/55386
15:35:29 <elliott> Sorry, I was wrong, it actually *is* a, a, b, b, c, c, ...
15:35:55 <elliott> I don't know why you do "either (const (return ()))".
15:36:06 <elliott> If you don't want to handle the failure case, just change it to "Just grid <- parseCSVFromFile ...".
15:37:25 <Ngevd> Stop sighing and teach!
15:41:08 <Ngevd> What's the best way to colour the text
15:44:08 <elliott> putDoc $ red (text "abcdef") <> green (text "quux")
15:51:43 <elliott> Deewiant: So do you understand C const-correctness
15:51:55 * elliott knows there is pretty much no chance the answer is no, so he has you cornered.
15:52:24 -!- salisbury has joined.
15:53:48 <Gregor> C const-correctness is "lol, const"
15:54:01 <Deewiant> I'll go with "no" if that means I don't have to answer any questions about it
15:54:13 <Gregor> The real question is do you have any comprehension of what const ever means in C++ :P
15:54:26 <Gregor> Or better yet, the brilliant "const" v "invariant" in D (must punch designers in face)
15:56:12 <Deewiant> const in C++ means "I won't modify this... you trust me, right?"
15:56:25 <Gregor> Deewiant: But what does void *const**const foo mean?
15:59:57 <elliott> Deewiant: If you say no, I'll ask you more questions
16:00:01 <elliott> You'll just be worse at answering them
16:00:15 <elliott> Gregor: I'm not using C++, though :P
16:00:28 <elliott> Gregor: Also, what's the difference in D?
16:00:39 <elliott> If one of them means "and all the fields/dereferencings/etc. too" then I like it
16:00:42 <Gregor> elliott: No one should use C++ ...
16:00:51 <Gregor> elliott: And the difference in D is good lord hell knows what.
16:01:05 <Gregor> Oh for fuck's sake, it has final now too.
16:01:11 <Gregor> Three fucking types of constness X_X
16:01:45 <elliott> elliott's school of const design: Everything is const, and have a "mutable" modifier.
16:02:11 <elliott> Also a const thing can't contain a mutable thing because come on that's not constant.
16:02:34 <Gregor> Gregor's school of const design: If your language is fundamentally mutable, never ever ever ever ever have "const" ever.
16:02:44 <Deewiant> I think the difference in D is const = "I can't touch this", invariant = "nobody can touch this"
16:03:00 <elliott> Deewiant: reflexivemchammer + generalisedmchammerprinciple
16:03:06 <Gregor> Deewiant: To be fair I just looked this up and it's changed since I abandoned D (when it was still under construction :P )
16:03:18 <elliott> Gregor: Good thing "fundamentally mutable" = "unmaintainable unparallelisable crapshoot"!
16:03:48 <elliott> Gregor: ANYWAY, my question is why can't I pass a (char **) to void foo(const char *const *bar).
16:04:23 <elliott> I assumed that just meant foo was promising not to modify *bar or **bar, but it's complaining (as a warning) that I'm casting to an incompatible pointer type...
16:04:33 <elliott> main.c:138:3: error: passing argument 1 of ‘load_colors’ from incompatible pointer type [-Werror]
16:04:33 <elliott> main.c:36:6: note: expected ‘const char * const*’ but argument is of type ‘char * const*’
16:04:53 <Gregor> elliott: Because the type you're casting it to isn't const at the final level, so it can write a char * const in, but that char * const could then be mutated by your outside reference.
16:05:39 <elliott> Gregor: Huh? Wouldn't void foo(const char *const *const bar) just mean that it can't do "bar = x;"?
16:05:53 <elliott> That should have no semantic effect, it's just a local restriction on the /implementation/...
16:06:05 <Gregor> elliott: The leftmost const applies to 'bar' itself, every other const applies to the pointer or type immediately left of it.
16:06:28 <elliott> Um... seriously? Because (const char *) is a pointer that you can't write to.
16:06:36 <elliott> The rules somehow change when you stick more *s in?
16:06:45 <Deewiant> Just write "char const *" so everything applies to the thing immediately to the left
16:07:03 <elliott> Deewiant: That's ugly though :'( But okay maybe.
16:07:32 <Gregor> Why do I hit Ctrl+Q half the time when I want to hit Ctrl+W X_X
16:07:56 <Deewiant> Gregor: If Firefox, there's an addon that disables ctrl+q
16:08:10 <elliott> If Chrome, Ctrl+Q already does nothing :P
16:08:20 <Deewiant> ( https://addons.mozilla.org/en-US/firefox/addon/disable-ctrl-q-shortcut/ )
16:08:21 <Gregor> Deewiant: But I also use Ctrl+Q to quit intentionally
16:08:47 <elliott> Gregor: Oh noes, you have to press one more key to quit
16:08:57 <Deewiant> elliott: As for your const troubles, it seems to me like it should work.
16:09:07 <elliott> Deewiant: Well it /works/, it just warns about it.
16:09:10 <Gregor> I already explained this
16:09:21 <Gregor> Man, my life is miserable without tongue-face smiley.
16:09:26 <elliott> Gregor: I disputed your explanation.
16:09:34 <Gregor> Jafet: How fast do you type?
16:09:36 <Deewiant> elliott: const int** -> double* works too, it just warns about it. :-P
16:09:46 <Gregor> elliott: const char * is the same as char const *. The pointer is not const, it points to const things.
16:10:16 <Gregor> elliott: So char const *const * is a /variable/ pointer to /const/ things. If you pass in a /variable/ pointer to /variable/ things, it could write a /const/ pointer through the first level of /variable/ pointers.
16:10:17 <Jafet> On dvorak? about three wpm
16:10:45 <Gregor> Jafet: OK, typically when people tell me I should switch to Dvorak I ask them how fast they type and they say something like, "Oh, I type at 85WPM wooh." I type at 120 so screw you
16:10:48 <Deewiant> Gregor: It's a pointer to const pointers. So you can't write things through the pointer.
16:10:54 <Gregor> DAMN MY LIFE SUCKS WITHOUT TONGUE SMILEY D-8
16:11:18 <Jafet> The dvorak record is something like 200WPM
16:11:29 <Gregor> Ohwait ... hahah you're right, I suck at const >_>
16:11:32 <elliott> Gregor: Alternatively: in (const char *) it's not the pointer variable that's immutable, it's what it points to; in (const char *const *lines) there's only one more place for a const to go, and it's at the wrong side to matter.
16:11:48 <Gregor> Jafet: So? I don't want to risk dropipng my already-very-good typing speed in a mostly-fruitless switch.
16:11:59 <elliott> Disappointed that Deewiant isn't advocating Colemak
16:12:00 <Gregor> elliott: Yeah, I was being dumb, ignore me!
16:12:10 <elliott> Gregor: OK, so WHY DOES IT WARN :P
16:12:15 <Deewiant> !c void foo(char const* const* pp, char const* p) { *pp = p; }
16:12:44 <Gregor> Deewiant: I don't need proof, I already said you were right X_X
16:12:56 <Deewiant> Gregor: I know, I just provided it anyway.
16:12:59 <Gregor> elliott: !c uses -Wall -Werror -ansi -pedantic.
16:13:01 <Deewiant> elliott: That's not a warning, that's an error.
16:13:12 <elliott> Gregor: -pedantic -Werror? For /IRC/? :P
16:13:33 <Gregor> elliott: Just kidding ... god I need my tongue-face smiley so much right now.
16:14:05 <Deewiant> Gregor: Is your keyboard broken or something?
16:14:14 <elliott> Gregor: This journey of self-discovery will end in "goddammit, I'm an unfunny jerk, why did nobody tell me all this time?!?!".
16:14:24 <Gregor> Deewiant: I've configured my client such that I can't type a tongue-face smiley. I overuse it.
16:14:30 <Gregor> elliott: Almost certainly.
16:16:12 <Deewiant> elliott: Going back to your original question: no, I do not understand C const-correctness well enough to explain why your case should/should not work. I'm not aware enough of the exact definitions of the rules governing it.
16:16:48 <elliott> Deewiant: SIGH, it's like you never went to language law school.
16:17:39 <Deewiant> This is where you berate me for not having already fully finished my DS9K C compiler, which would give you an exact section number for each appropriate diagnostic
16:18:36 <elliott> Deewiant: I'm happy your vapour isn't becoming ware; it lets me cultivate my own more perfect vapour of the same kind.
16:19:30 <elliott> (Speaking of which, Shiro 2 development will begin once I figure out how the tree splitting needs to go.)
16:32:45 -!- Phantom__Hoover has joined.
16:35:22 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
16:51:53 -!- lifthrasiir has quit (Ping timeout: 244 seconds).
16:56:50 -!- Phantom___Hoover has joined.
16:56:53 <Phantom___Hoover> What is this crap, Wikipedia's article on Walking in the Air doesn't mention the Irn Bru version.
16:58:02 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
16:59:22 <Phantom___Hoover> "Irn-Bru also drafted in one of Scotland's top choirboys from prestigious music school, St Mary's, to sing a new interpretation of Howard Blake's 'Walking in the Air'."
17:00:47 <Ngevd> Phantom___Hoover, that's what's [citation needed] and talk pages are for
17:01:31 <Phantom___Hoover> Now, upon further Googling, I discover that the Daily Record ran an article about his voice breaking.
17:07:40 <elliott> Phantom___Hoover: Someone's VOICE BROKE??? UNTHINKABLE
17:08:08 <Ngevd> I remember the recording I did before MY voice broke
17:08:11 <Ngevd> God, that was weird
17:08:50 <elliott> "we (I)" is a good construction.
17:09:44 <Phantom___Hoover> I used it for disambiguation, since there's also "ruined-Homestuck-FOREVER" Ben.
17:10:33 <Gregor> Phantom___Hoover, elliott: Should've castrated him while they had the chance.
17:11:17 <Phantom___Hoover> Although then there mightn't have been such entertaining rumours.
17:19:41 -!- salisbury has quit (Ping timeout: 252 seconds).
17:21:43 -!- Ngevd has quit (Ping timeout: 276 seconds).
17:25:48 <Phantom___Hoover> OK quick guys we need to organise an intervention for elliott.
17:27:04 <olsner> what are we interventing?
17:31:58 <lambdabot> Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34
17:32:04 <elliott> @free ap :: f (a -> b) -> f a -> f b
17:32:08 <elliott> @free ap :: F (a -> b) -> F a -> F b
17:32:08 <lambdabot> (forall h. (forall k p. g . k = p . f => h k = p) => $map_F h x = y) => $map_F g . ap x = ap y . $map_F f
17:34:30 <Gregor> Interesting use of spaces ...
17:35:01 <elliott> Gregor: Pretty sure that's alignment and lambdabot is just stripping out the newlines.
17:35:16 <Gregor> Oh, yeah, that makes sense.
17:35:26 <elliott> Although that produces nonsense when I add newlines before the first space in a block >_>
17:35:42 <elliott> (forall h. (forall k p. g . k = p . f
17:35:48 <elliott> $map_F g . ap x = ap y . $map_F f
17:35:50 <elliott> It's probably something like that
17:47:53 -!- salisbury has joined.
17:48:13 <elliott> Phantom___Hoover: MY HEROIN ADDICTION *HELPS* PEOPLE!!!
17:53:18 -!- Vorpal has quit (Ping timeout: 268 seconds).
18:02:51 -!- zzo38 has joined.
18:36:02 -!- AnotherTest has joined.
18:37:07 <AnotherTest> Anyone knows a channel for non-esoteric language development discussion?
18:39:30 <salisbury> AnotherTest those channels are normally named after the name of the language in question
18:40:07 <AnotherTest> I mean for discussion of the development of them.
18:40:29 <AnotherTest> It's because I need opinions about what feature people find important
18:42:58 <zzo38> Just ask here at first if there is no other channel. And then ask other channels too, because different people have different opinion
18:45:03 <AnotherTest> Alright then. Would guys say a pure object oriented model is a good idea?
18:47:07 -!- itidus20 has joined.
18:47:24 <salisbury> Phantom___Hoover you from Edinburgh?
18:48:01 <salisbury> AnotherTest, Types and Programming Languages is a good book to read re language design
18:48:14 <elliott> AnotherTest: well, depends on what you mean by pure.
18:48:19 <elliott> and what the alternatives are.
18:48:41 <AnotherTest> I wouldn't either just asking and I mean as in every single thing is represented as object.
18:48:59 <itidus20> the hardest part is not obtaining the books, thank you internet, but reading them. but then again i am in the company of phd's
18:49:01 <AnotherTest> Also, salisbury, I have designed languages before; I'm not asking about how to.
18:49:06 * elliott rather thinks that nothing should be represented as an object instead.
18:49:21 <elliott> And just because you can do something doesn't mean that you can't learn more about it, of course.
18:49:55 <AnotherTest> @elliott, true. But I'm not asking you guys for knowledge, just for opinions.
18:49:59 <itidus20> nice twist on the "just because you can doesn't mean you should"
18:50:14 <elliott> AnotherTest: This isn't Twitter, lambdabot will complain about your every ping.
18:50:41 <AnotherTest> elliott: sorry, but I didn't know that the bot commands start here with @
18:50:50 <elliott> Well, lambdabot's in a lot of places :P
18:51:26 <elliott> Anyway, you won't get very interesting opinions if you don't want to know what underlies them, and understanding an interesting opinion is liable to end up giving you knowledge.
18:51:50 * elliott sees one-character bot prefixes far more often than longer ones.
18:52:10 <elliott> We have... 5 bot prefix characters in here.
18:52:33 <elliott> Different bots, of course.
18:52:46 <itidus20> my favorite bot command is `log
18:52:53 <elliott> Well, lambdabot has both @ and ?, and one of its commands starts :, and one starts "> ".
18:52:58 <HackEgo> 2007-06-19.txt:23:38:01: <bsmntbombdood> write your own
18:53:46 <AnotherTest> So, Eliott, no object oriented design at all for you?
18:54:07 <elliott> I don't like OOP much at all, no.
18:55:13 <AnotherTest> I can understand that. Do you like languages that store all functions as "anonymous"(as in a variable), now that I'm asking?
18:55:49 <AnotherTest> I was thinking about the functionality that provides earlier, what do you think
18:56:12 <elliott> I don't quite understand the question. If you're asking whether I prefer functions be first-class objects, then yes, naturally. (Rarely do people argue that it would be really great if only <language element> were second-class...)
18:58:19 <AnotherTest> I do wonder if storing pieces of code that can be accessed randomly(since it would be an interpreted language to a certain level) is a good or bad idea.
18:58:49 <elliott> I'm not sure exactly what you mean by "randomly", but beware of designing a language around the constraints of its initial implementation.
18:59:31 <elliott> So... you're asking whether you want globals? :p
18:59:50 <AnotherTest> A variable can also be randomly accessed in it's scope :/
19:00:01 -!- Ngevd has joined.
19:00:17 <AnotherTest> So maybe I should have been more precise: randomly in its scope
19:00:32 <Ngevd> (Who's AnotherTest?)
19:00:48 <zzo38> I have bots that require no prefix, all commands must be sent privately. However it is not usually active
19:00:57 <elliott> AnotherTest: If you have random-access data, then you have random-access code; data can influence the computational structure of code (that's the point, after all), and code can influence the structure of data; if you're given random-access data you can turn it into random-access code by simply writing an interpreter, and if you're given random-access code you just need to encode your data appropriately (function that does nothing but return the r
19:00:57 <elliott> elevant data, or in more constrained scenarios, e.g. Church encoding) and you've done it the other way too.
19:01:04 <elliott> So I see no reason to worry about one and not the other.
19:01:30 -!- Klisz has joined.
19:01:58 <zzo38> JavaScript has nearly everything being objects (although there are primitives as well); it seems to works OK
19:02:21 <zzo38> I like first class functions too
19:02:24 <AnotherTest> Elliott, I do mean something like the JavaScript system indeed
19:02:39 <elliott> I don't quite see the relevance of JS here.
19:03:04 <elliott> What is the actual language feature that adds the ability to "store pieces of code that can be accessed randomly"?
19:04:03 <elliott> Well, right. Like I said, being able to store data in a variable is the same as being able to store code in a variable.
19:04:22 <elliott> So unless you're eliminating variables, there is no point at all to deny storing code in them.
19:05:00 <AnotherTest> you can only store data such as numbers or string in a variable or object
19:05:14 <elliott> You have a bad definition of "most".
19:05:24 <elliott> Just about every modern "dynamic" language can do that.
19:05:49 <AnotherTest> but it's about storing everything in variables
19:05:59 <AnotherTest> and make no difference between variable and function
19:06:05 <zzo38> In programming languages such as C you can store a pointer to a function in a variable
19:06:32 <elliott> AnotherTest: Well, it's all very well to say you don't make a distinction between X and Y, but you have to show how you actually unify the two concepts for it to be a meaningful design concept, rather than just a nice idea.
19:06:42 <elliott> Also, pointers are *not* guaranteed to be numeric in C.
19:06:54 <elliott> There are C implementations with non-address representations of pointers.
19:07:10 <elliott> They're perfectly conformant -- well, OK, probably not, but the non-conformance doesn't lie in that area.
19:07:35 <zzo38> But you still need to be able to subtract pointers that are pointing into the same object, and add numbers to pointers to result in a pointer to another element of the same object.
19:08:00 <AnotherTest> The idea of a pointer is to point to something that holds data
19:09:00 <zzo38> In Haskell, a function is a first class value and you can have partially applied functions as well
19:09:02 <elliott> AnotherTest: Whether they're exceptions or not, a language isn't its implementation, and a certain implementation strategy being dominant doesn't mean it's a property of the language.
19:09:16 <elliott> AnotherTest: But note that languages like JavaScript where you store data "directly" are using pointers behind the scenes.
19:09:42 <AnotherTest> but it's about the representation of the idea, not about what really happens
19:09:43 <elliott> Sure, it's convenient that "everything" is turned into a pointer implicitly and you just treat everything as references, but there's nothing /stopping/ you from programming a language like C in this way.
19:09:50 <elliott> AnotherTest: Yes, of course.
19:10:06 <elliott> Still, the idea of making everything a reference is hardly a new one; even such conservative languages as Java apply that universally.
19:11:11 <AnotherTest> Yes; but the language that I might make isn't meant for being used
19:11:25 <AnotherTest> Just for thinking about the right way of doing things
19:11:40 <zzo38> It isn't meant for being used?
19:11:55 <AnotherTest> No, well, at least not by other people than me
19:12:29 <AnotherTest> This must probably seem pretty pointless to you, but I strongly believe it isn't.
19:13:20 <AnotherTest> (since the implementation will not be time consuming at all, it also doesn't really matter)
19:13:27 <elliott> You're in #esoteric. It sounds boringly practical.
19:13:29 <zzo38> I have made programming languages that nobody else use, even though it is public, probably because it is difficult for other people to understand, or because it is for specific domain purpose?
19:14:09 <AnotherTest> I'm not stating that I will hide my source code for anyone
19:14:19 <AnotherTest> just that I'm not going to support them using it
19:15:52 <AnotherTest> Anyway, I think I'll just try some concepts and see which ones work and which don't
19:16:17 <Phantom___Hoover> salisbury, wait, why did you say "Phantom___Hoover edinburgh"?
19:20:28 * Phantom___Hoover reads the WP article on Andy McNab, notes that the biographical information is almost certainly enough to identify him.
19:21:28 -!- tuubow has joined.
19:22:50 <elliott> Phantom___Hoover: With public information?
19:23:05 <elliott> [[As Larry King put it when McNab appeared on the Larry King Live show on CNN: "We have Andy in shadows. He's wanted by terrorist groups."]]
19:23:52 <Phantom___Hoover> Dunno, but if you did some digging (and if you wanted to kill him, you'd be up for doing that) it looks like enough.
19:24:03 <Phantom___Hoover> "McNab was born on 28 December 1959. Found abandoned on the steps of Guy's Hospital in Southwark, he was brought up in Peckham, with his adoptive family."
19:24:16 <Phantom___Hoover> Like, that alone should be enough to narrow it down to a handful of people.
19:24:17 <zzo38> (Such as, the specific domain languages FurryScript and Icoruma, that probably the document I wrote for it is not very good so that is why other people did not use it)
19:24:43 <elliott> * Phantom___Hoover reads the WP article on Andy McNab, notes that the biographical information is almost certainly enough to identify him.
19:24:48 <elliott> Presumably http://en.wikipedia.org/wiki/Andy_McNab :P
19:25:07 * elliott notes that you might be trying to tie this in to the topic of this channel, which would be inadvisable, as we're almost never on it.
19:25:08 -!- Ngevd has quit (Quit: lasagne).
19:26:07 <elliott> Phantom___Hoover: http://www.google.co.uk/search?q=andy+mcnab&um=1&ie=UTF-8&hl=en&tbm=isch&biw=1366&bih=675&sei=t-zsTqqnNYyzhAf1xvG_CA
19:26:15 <elliott> Phantom___Hoover: Well, we have absolutely no idea what he looks like.
19:26:28 <elliott> Safe as particularly safe houses.
19:26:29 <zzo38> Do you have ideas about domain languages?
19:35:51 <salisbury> Phantom___Hoover: I was at Edinburgh Uni until last year
19:36:58 <salisbury> damn, I remember trying to find Kings my first year
19:37:14 <salisbury> Walked down Nicholson/what ever it turns into
19:37:33 <salisbury> overshot by like a mile .. ended up in Morningside
19:39:14 <salisbury> Its a great uni though, just 16 000 expensive for us foreigners. Even though Canada is in the commonwealth and all, they still chose to give the free tuition to EU students
19:39:38 <Phantom___Hoover> I thought it was only Scottish students who didn't have to pay.
19:40:24 -!- Ngevd has joined.
19:40:25 <salisbury> I'm pretty sure its still like that. A German friend of mine still goes there, and he hasn't mentioned any changes
19:41:08 <Phantom___Hoover> Giving the French free tuition but not the English is the best fees policy.
19:41:15 -!- Phantom___Hoover has changed nick to Phantom_Hoover.
19:41:42 <Ngevd> If I went and lived with my dad's cousins in the Netherlands, I could go to a Scottish university for free
19:41:50 <salisbury> haha, yes. The English didn't have to pay full foreign fees though, iirc
19:41:57 <salisbury> just like ~4000 depending on the course
19:42:19 <Ngevd> But here I am,about 40 miles away from the Scottish border, have to pay 9000 a year
19:43:11 <pikhq_> *sigh* Japan. Why you so stupid.
19:43:42 <elliott> AnotherTest: Yes, if only this "Belgium" actually existed.
19:43:53 <pikhq_> INSULATE. YOUR. GOD-DAMNED. BUILDINGS.
19:44:02 <salisbury> In English? My French is super rusty, and Dutch non-existent.
19:44:09 <elliott> AnotherTest: Or so you think. Educate yourself! http://zapatopi.net/belgium/
19:44:25 <pikhq_> Freezing your ass off in the winter is called "retarded" in most developed nations.
19:44:49 <zzo38> It is a strange Magic: the Gathering effect randomly generated by computer: At the beginning of your upkeep, a non-creature artifact of opponent's choice gains "Whenever ~ becomes tapped, a face-down creature of opponent's choice becomes blue until end of turn.".
19:45:06 <zzo38> What purpose could it have?
19:45:21 <elliott> I prefer the expensive ripoff of Switzerland, [INSERT COUNTRY NAME HERE].
19:45:23 <Phantom_Hoover> Do you have any idea what the upkeep cost for a mountain is?
19:45:40 <salisbury> I once had a job offer in Switzerland. VISA -> Denied..
19:46:00 <AnotherTest> the inventor of Rijdael comes from belgium
19:46:05 <Ngevd> salisbury, aren't they in the EU work area thing?
19:46:31 <elliott> AnotherTest: Yeah, so you *know* there's Illuminati backdoors in AES.
19:46:42 <elliott> Helpful of them to drop in a clue like that.
19:46:48 <Ngevd> salisbury, ah, I assumed you were from Salisbury, Wiltshire
19:47:04 <salisbury> nope, just a made up internet-name
19:47:08 <AnotherTest> which is probably not likely to happen a lot
19:47:45 <salisbury> pikhq_ I'd love to intern in Japan. But again, me being uni-lingual, are there any opportunities
19:48:02 <salisbury> (I'm assuming they would not hire me)
19:48:11 <Ngevd> Most people on this channel seem to speak English
19:48:31 * elliott speaks a language that looks like English, but he always means the opposite of what he seems to be saying.
19:48:32 <Ngevd> A few converse only in a strangle language known as Ending
19:48:39 <elliott> Including the previous message.
19:49:00 <AnotherTest> In Belgium, most people speak English, French, Dutch and German
19:49:02 <elliott> salisbury: He didn't say Japanese, he just said Japan. Learn the very essence of Japan.
19:49:03 <Ngevd> I'm a cruciverbalist, think about it
19:49:30 <Ngevd> Phantom_Hoover, I don't know. Which here?
19:49:36 <elliott> AnotherTest: So, English, pansy English, German, and cheap plastic imitation of German?
19:49:44 <Ngevd> Phantom_Hoover, maybe.
19:49:54 <elliott> German is of course just macho English.
19:50:09 <elliott> What I'm saying is: Belgians, decide who you are already???
19:50:41 <Ngevd> One of my best friends is 1/64 belgian!
19:51:05 <elliott> Yeah, and where do the "Flemish" come from? Flemland?!
19:51:08 <Ngevd> But then, I can successfully argue that he doesn't exist
19:51:55 <Ngevd> AnotherTest, so? So does India
19:52:11 <elliott> So does Liechtehteitneisntisntientisentinsetien warhol.
19:52:56 <Ngevd> The UK is a country made of Countries
19:52:57 <elliott> olsner: Please escape Sweden already so we can blow it up.
19:53:08 <AnotherTest> it has nothing to do with country or no country
19:53:16 <elliott> salisbury: The UK is very much a country.
19:53:37 <Phantom_Hoover> elliott, I already did, and then I tried to blow you and Ngevd up but I also blew myself and the rest of the UK up?
19:53:48 <elliott> Phantom_Hoover: DEFCON isn't real life, PH.
19:54:13 <elliott> We... we don't use inches.
19:54:16 <Ngevd> AnotherTest, the UK is legally metric
19:54:24 <elliott> OK heights are usually feet and inches and disatnces are miles.
19:54:30 <elliott> But apart from that we're completely metric.
19:54:39 <elliott> AnotherTest: We use cm all the time, dude.
19:54:48 <elliott> Ngevd: Sure , if you still consume "liquids" like an old-timer.
19:55:09 <Ngevd> But that destroys the fun!
19:55:09 <elliott> (Do most objects in your daily life have a length of 1 m or greater?)
19:55:27 <Ngevd> Phantom_Hoover, he's just another test.
19:55:48 <Ngevd> Emphasis on another
19:56:05 -!- ais523 has joined.
19:56:17 <AnotherTest> and testing is the most important part of development
19:56:56 <ais523> salisbury: you're named after a UK city!
19:57:01 -!- monqy has joined.
19:57:12 <Ngevd> England == country
19:57:33 <elliott> England is the very concept of country.
19:57:34 <ais523> england isn't as countryey as some countries
19:57:52 <ais523> "subcountry" would be a good word, along the same lines as "subset"
19:58:02 <elliott> Pansy could easily be a term like "county" and the like.
19:58:19 <elliott> The quaint German pansy of Uerrfenforden.
19:58:27 <elliott> That's... not a very German name.
19:58:53 <Ngevd> England, Scotland, Wales, Northern Ireland are kinda like states, except not
19:58:55 <ais523> wow, I never realised how many people I knew who used Belgian ISPs
19:59:04 <elliott> ais523: They're on to you.
19:59:17 <elliott> DON'T FLEE TO BELGIUM, THERE IS NOTHING THERE
19:59:42 <Ngevd> In more ways than one
19:59:54 <elliott> http://en.wikipedia.org/wiki/File:Royal_Banner_of_England.svg
19:59:57 <elliott> Why have I never seen this before.
20:00:01 <elliott> This is the most ridiculous thing.
20:00:15 <Ngevd> Cold is cooler than cool
20:00:22 <ais523> wow, Novell vs. Microsoft came out inconclusive, with 11 jurors in favour of Novell and 1 in favour of Microsoft
20:00:25 <ais523> they're going to order a retrial
20:00:29 <elliott> AnotherTest: At least in Norway you know who the murderers are.
20:00:32 <AnotherTest> Belgium has moderate temperatures, which is the best
20:00:34 <elliott> In Belgium, it could be anyone.
20:01:04 <ais523> anyway, is AnotherTest someone else in disguise, or someone new?
20:01:06 <elliott> (I mean, accepting the existence of "Belgium" for the sake of argument.)
20:01:07 <ais523> likewise, for salisbury
20:01:31 <ais523> elliott: why are you using a Belgian proxy?
20:01:45 <elliott> ais523: That's impossible. Belgium doesn't exist.
20:01:49 <elliott> It must be in some other country.
20:02:09 <Ngevd> We all know where elliott lives
20:02:11 <itidus20> on the earlier topic, i had a read and a think and it seems C does not provide access to code as part of it's portable abstract machine, only access to data
20:02:19 <elliott> Ngevd: Yes, the Irish pansy of Helsinki.
20:02:31 <itidus20> function pointers being a quirky exception
20:02:47 <ais523> (the case is that Novell allege that Microsoft deliberately broke WordPerfect in Windows 95)
20:03:03 <elliott> ais523: how long has this case been going?
20:03:42 <elliott> ais523: also, as someone who has read The Old New Thing, I feel inclined to be on Microsoft's side without further information :P
20:04:06 <ais523> elliott: heh; the claim is that Microsoft deliberately fed Novell incorrect API information
20:04:18 <ais523> giving them a version of Windows to work from that implemented that API
20:04:22 <ais523> and then changed the API for the final version
20:04:26 <ais523> that got sent to customers
20:04:30 <ais523> meaning that WordPerfect didn't work
20:04:42 <elliott> hmm... that seems a really implausible espionage hypothesis compared to just having a bug in development versions
20:05:00 <itidus20> implausible? are you playing the devil's advocate?
20:05:37 <itidus20> well, with win95 they deliberately made many softwares work..
20:05:38 <monqy> no sincere person says "implausible"
20:05:45 <ais523> elliott: the trial itself started 8 weeks ago
20:05:51 <itidus20> so perhaps they also did the opposite
20:05:53 <ais523> but presumably the court case itself started much earlier
20:06:01 <itidus20> and made certain softwares not work which should work
20:06:03 <elliott> itidus20: that's, um, not the point
20:06:13 <elliott> "microsoft made wordperfect not work" is not implausible
20:06:31 <elliott> "microsoft did <the scenario ais described>" is less plausible than "microsoft had a bug in a dev version" which would result in the same observed events
20:06:55 <ais523> elliott: well, there was no API for doing what Novell was trying to do in the final Windows 95 version, and was in the dev version
20:07:07 <ais523> there was a private one that Word was using
20:07:29 <pikhq_> ais523: That's genuinely surprising, considering Windows 95 actually does have backwards-compatibility for dev versions *of itself*.
20:07:55 <zzo38> All tyrannies oppose God. Although they may set up an idol of their own and call it 'God'. But the current idol is called 'Reason'. Of course that just disguises its true nature - in reality our rulers have made an idol of themselves - but idolatry always hides its true nature behind some lie or other. God the true God is the revealer of truth and unmasker of idols that's why no tyranny can allow him. ~~"Square Circle"
20:07:57 <pikhq_> I'm not saying it's impossible, it just seems unlikely, considering how effing seriously the Win95 team took making everything (I do mean everything) work.
20:07:58 <ais523> elliott: it was some extension API for Windows Explorer (the file manager thing)
20:08:12 <ais523> pikhq_: well, I bet they could have deliberately broken something if they were told to do so
20:08:35 <pikhq_> To the point that they've got an alternate version of malloc for SimCity, because it accesses memory after freeing it.
20:08:39 <elliott> I've always seen Microsoft's maliciousness as being more on the business side of things.
20:08:42 <AnotherTest> Why discuss about windows and microsoft? Are they even worth mentioning?
20:08:51 <elliott> I don't recall any dirty code tricks they've pulled before, but I might be wrong.
20:08:52 <ais523> elliott: anyway, it seems that Microsoft admitted withdrawing the extensions, but claimed that the reasons had nothing to do with Novell
20:08:57 <elliott> AnotherTest: well, the court case sounds interesting
20:09:03 <itidus20> pikhq_: i saw raymond chan's blog :D
20:09:22 <itidus20> oh .. its coming back to me .. _thats_ where ive heard of the old new thing
20:09:53 <elliott> ais523: that sounds very hard to prove/disprove
20:10:29 <ais523> however, it's a court case, so they have things like access to Microsoft's (and Novell's) internal emails
20:11:00 <itidus20> http://farm4.static.flickr.com/3080/2611048465_e164d403ea.jpg
20:11:05 <elliott> ais523: I wonder if Microsoft has learned to do nasty stuff off the record by now :P
20:11:33 <ais523> if they were caught doing stuff off the record, they'd lose every court case ever ;)
20:11:41 <ais523> this is why companies are so careful to keep records
20:11:45 <elliott> that would be a record! :P
20:12:00 <elliott> you just have to meet in a dark alleyway and agree to secretly remove the API Novell is using
20:12:46 <pikhq_> Memphis ChicagoExtPlus doubleplusbad.
20:13:05 <zzo38> How common is Kxe8!!#
20:14:40 <ais523> elliott: well, you somehow have to inform everyone in the company who might notice
20:14:51 <ais523> or you'll get people acting "why did X happen?" in emails
20:14:58 <itidus20> the most annoying thing about GUIs is that they encourage multitasking beyond a useful level.
20:15:05 <pikhq_> ais523: Given Microsoft's policy of segregating source access, that actually doesn't take much.
20:15:19 <elliott> ais523: build a campus in a dark alleyway
20:15:41 <pikhq_> Remember, the typical Windows dev doesn't actually have complete source.
20:15:51 <elliott> `@ Phantom_Hoover quote norwegian
20:15:54 <HackEgo> Phantom_Hoover: 503) <monqy> cigaretes and drunking "lame highs for lame people" <oerjan> yeah if it doesn't make you go crazy and shoot at people, it's not worth it. take it from a norwegian. \ 693) <Ngevd> I'm neither Norwegian nor Finnish <Ngevd> I don't fit in your quaint little categories \ 766) <oklopol> in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death)
20:16:23 <Phantom_Hoover> (Also don't come to Scotland, there are TOO MANY SWEDES.)
20:16:43 <elliott> Phantom_Hoover: It was 503 in particular.
20:17:11 <ais523> hmm, "Batman Wonder Woman Relationship" seems to be entirely made out of badly encoded Unicode and formatting
20:17:47 <Phantom_Hoover> AnotherTest, unfortunately, Swedes don't melt on contact with water.
20:17:51 <elliott> ais523: i commented on that
20:18:11 <elliott> (diff) (hist) . . Language list; 19:52 . . (+365) . . 149.255.39.58 (Talk) (It makes sense about not continuing with "business as usual" � I couldn't do it, either. But I can't see ghost writing as being satisfiying for someone with as strong a voice as yours. Being an evange)
20:18:30 <AnotherTest> Phantom_Hoover: maybe you should make the rain acid
20:18:42 <itidus20> -annoying form of vertical scrolling is apparently char by char :D
20:20:43 <AnotherTest> Phatum_Hoover: not if you put a hydroxide on your skin
20:20:52 <ais523> Ngevd: re your edit comment question, no because the captcha is stronger than Esolang's
20:21:04 <AnotherTest> Although you might get a little salty afterwards
20:21:25 <itidus20> it occurs to me on thinking about old windows that the desktop could be designed in other ways
20:21:30 -!- oerjan has joined.
20:21:42 <elliott> we were just talking about norwegian mass murderers, too
20:21:47 <itidus20> for instance, when a form is in focus, the background could go black
20:22:07 <itidus20> its kind of annoying to see other icons and windows all the time
20:23:51 <itidus20> also, it would be nice if windows(sorry to linux users.. my statement can apply to your OS too) could convert a graphical display into a text display
20:24:25 <itidus20> like, text mode variations of all gui elements
20:24:50 <itidus20> .. well those where its feasible..
20:25:11 <ais523> hmm, that seems more like a window toolkit feature than an OS feature
20:25:25 <ais523> I know that Gnome can convert normal windowed displays into HTML
20:26:05 <itidus20> as for why? because text displays can be relaxing in the same way as a waterfall landscape
20:26:10 <Ngevd> AnotherTest, Linux can't run Terraria, and that makes me sad
20:26:17 <elliott> ais523: gtk's html backend just draws the pixels to a canvas :P
20:26:33 <elliott> AnotherTest: Linux can't be @.
20:26:42 <ais523> elliott: seriously? how disappointing :(
20:26:46 <Ngevd> AnotherTest, fairly. I've tried, repeatedly
20:26:55 <elliott> AnotherTest: really? tell me how
20:26:59 <elliott> because it would save me a _lot_ of work
20:27:15 <elliott> That's not @, that's an @-shaped Linux hell.
20:27:28 <ais523> I see no reason why Linux couldn't run an @ VM
20:28:36 <zzo38> Midnight intombed December's naked icebound gulf. Haggard, tired, I nodded, toiling over my books. Eldritch daguerreotyped dank editions cluttered even my bed; Exhaustion reigned.
20:28:53 <Ngevd> zzo38 is the new fungot
20:29:14 <zzo38> Notice the properly of the letters of the words.
20:29:15 <ais523> AnotherTest: it looks like a Not A Raven variant
20:29:17 <ais523> but I'm not sure which
20:29:19 <zzo38> s/properly/property/
20:29:34 <ais523> in fact, I recognise it
20:29:35 <itidus20> AnotherTest: there are indeed many things i don't know about linux.
20:29:36 <oerjan> is that from the bulwer-lytton contest or something?
20:29:40 <ais523> zzo38: have you read the book "Making the Alphabet Dance"?
20:29:46 <ais523> that's where I saw that
20:30:23 <itidus20> AnotherTest: i have an alternative topic :D
20:30:24 <oerjan> elliott: and too long for little lytton?
20:30:32 <ais523> I can't remember exactly what property that line has, though
20:30:48 <elliott> AnotherTest: I use Linux, at least!
20:30:50 <itidus20> on the earlier topic, i had a read and a think and it seems C does not provide access to code as part of it's portable abstract machine, only access to data. function pointers being a quirky exception
20:30:52 <ais523> and it's often hard to tell just by looking
20:31:08 <ais523> itidus20: you're correct; and function pointers aren't an exception
20:31:22 <ais523> because you can't dereference them, nor can you necessarily convert them to any type that can be dereferenced
20:31:32 <ais523> so you can use them to make calls via, but you can't do anything else
20:31:34 <AnotherTest> itidus20: I got to go way too soon to discuss that just now :(
20:32:31 <zzo38> ais523: I have not read book "Making the Alphabet Dance".
20:32:55 <elliott> ais523: hmm, you know how nomic messes with your sleep schedule?
20:33:00 <ais523> zzo38: among other things, it has /huge/ numbers of variants of that poem, each with different linguistic properties
20:33:05 <ais523> elliott: only occasionally, but yes
20:33:12 <elliott> I think roughly the opposite is happening with me at a geologically slow pace
20:33:22 <ais523> elliott: nomic is unmessing your sleep schedule?
20:33:30 <ais523> or your sleep schedule is messing with nomic?
20:33:38 <elliott> let's go with the second one
20:33:48 <elliott> can we make my sleep schedule a rule?
20:34:05 <ais523> well, what did you originally mean?
20:34:23 <elliott> but that's way more boring than this new idea!
20:34:42 <ais523> but I'm still interested
20:34:46 <zzo38> ais523: The book I read only had three
20:35:01 <zzo38> That wasn't its primary topic
20:35:17 <ais523> it's kind-of amusing to see what the poem does instead with restrictions that ban the word "nevermore"
20:35:30 <elliott> ais523: well, I'm falling into an all-consuming vortex of horror, and it's very slowly aligning my sleep schedule with normal GMT days
20:35:43 <elliott> AnotherTest: enjoy purgatory
20:35:53 <ais523> err, an all-consuming vortex of horror doesn't sound very nice
20:36:02 <AnotherTest> people should stop using electromagnets on wires
20:36:07 <ais523> I suggest you wear a ring of slow digestion and eat black dragon meat
20:36:34 -!- AnotherTest has quit (Quit: Leaving.).
20:36:39 <elliott> ais523: it's too late, I'm actually accelerating into it faster than any computable function
20:36:45 -!- AnotherTest has joined.
20:36:51 <elliott> AnotherTest: that was a quick purge
20:37:05 <ais523> elliott: is it something you want to talk about? or something you'd prefer to keep private?
20:37:15 <elliott> the vortex is inside us all!
20:38:10 -!- AnotherTest has quit (Client Quit).
20:38:18 <elliott> I need some of those electromagnets
20:38:22 <elliott> to wave about my computer.
20:39:21 <Ngevd> elliott, there're some in Belgium
20:42:21 <itidus20> "That's the finding of psychologists Thomas Hills of the University of Warwick and Ralph Hertwig of the University of Basel. They have examined a number of studies, and they have come to one inescapable conclusion: there's a steep price to pay for enhanced brainpower, and it's almost certainly not a good deal from an evolutionary perspective."
20:43:07 <itidus20> " "Or if you drink coffee to make yourself more alert, the trade-off is that it is likely to increase your anxiety levels and lose your fine motor control. There are always trade-offs. In other words, there is a 'sweet spot' in terms of enhancing our mental abilities if you go beyond that spot just like in the fairy-tales you have to pay the price." "
20:43:52 <Phantom_Hoover> I know, they're so much less safe than permanent magnets!
20:45:06 <itidus20> is it wrong that i want to tell these people that they're annoying prigs stating the obvious and actually producing no information of value
20:47:21 <itidus20> ah ok.. i should tell the reporters
20:48:00 <itidus20> article was titled "Why our minds have probably evolved as far as they can go"
20:48:21 <itidus20> but then i did see a smbc comic talking about science journalism
20:50:36 <fizzie> All the point of magnets and monitors is probably gone now that screens aren't CRTs any more.
20:50:39 <elliott> itidus20: It turns out something being obvious is not scientific evidence.
20:50:54 <elliott> But how about we just sweep all the times "common wisdom" was terribly wrong under the rug...
20:51:24 <oerjan> imagine a world in which the latest research findings were always entirely correct until contradicted by a later one.
20:52:02 <Gregor> That world would have a very strange definition of "research"
20:52:06 <Gregor> It's more like development ...
20:52:06 <oerjan> like, one week carrots _will_ kill you.
20:52:28 <Gregor> You have to check the newspaper every morning before deciding whether eggs for breakfast are a good idea.
20:53:02 <elliott> Gregor: But newspapers are liquid now!
20:53:16 <itidus20> elliott: no thats the vortex decieving you
20:53:37 -!- Gregor has set topic: <itidus21> on a side note, [...] finland is very depressing and a bit of a matrix of solidity | http://codu.org/logs/_esoteric/.
20:56:11 <oerjan> you can write an adventure game in agda. you just cannot compile it before universe heat death.
20:56:11 <ais523> agda's a functional language for writing programs that are proven to match a spec
20:56:22 <fizzie> Phantom_Hoover: "deva-lopment". It's dialectal.
20:56:25 <ais523> it's notoriously slow to compile
20:56:41 <ais523> because it has to check the proof
20:56:56 <itidus20> is proof a synonym for program here?
20:57:11 <Ngevd> itidus20, yes, but with different conoctations
20:57:14 <elliott> ais523: why are you spewing out a definition?
20:57:21 <elliott> (one I don't think is entirely accurate, but anyway)
20:57:45 <ais523> elliott: I thought that at least one person wasn't sure what Agda was
20:58:01 -!- sebbu3 has changed nick to sebbu.
20:58:04 <ais523> well, that's obvious; there's a chance that that person is even in #esoteric
20:58:50 <Phantom_Hoover> <ais523> agda's a functional language for writing programs that are proven to match a spec
20:59:09 <ais523> Phantom_Hoover: that's what it is, in effect
20:59:13 <Phantom_Hoover> Agda is effectively never used for formal verification
20:59:29 <ais523> Phantom_Hoover: well, OK, except that I've met people who've done it
20:59:33 <shachaf> itidus20: What's wrong with Finland?
20:59:34 <oerjan> shachaf: hey you've heard of my theory too?
20:59:36 <ais523> we can both agree that they're crazy
20:59:49 <oerjan> maybe from me, i don't recall
20:59:50 <copumpkin> Phantom_Hoover: it's an experimental language, sure
20:59:55 <ais523> just because a language has a purpose, doesn't mean it's good at it
20:59:57 <itidus20> shachaf: its explained by [...] notation :-D
21:00:05 <oerjan> shachaf: that agda is named after a hen in a swedish song.
21:00:23 -!- zzo38 has quit (Remote host closed the connection).
21:00:29 <itidus20> the odds are low on this working
21:00:43 <elliott> <Phantom_Hoover> It's not used for formally-verified programs.
21:00:43 <HackEgo> 2011-12-15.txt:20:18:20: -!- Gregor changed the topic of #esoteric to: <itidus21> on a side note, [...] finland is very depressing and a bit of a gulag | http://codu.org/logs/_esoteric/
21:00:48 <elliott> https://github.com/larrytheliquid/Lemmachine, for one.
21:00:58 <elliott> I don't know how much validation is involved there, though.
21:01:03 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.576
21:01:13 <elliott> There's also that Agda FRP implementation that compiled to JS.
21:01:31 <itidus20> shachaf "2011-12-15.txt:20:17:39: <itidus21> on a side note, someone in a distant chatroom suggested to me that finland is very depressing and a bit of a gulag"
21:01:36 <Phantom_Hoover> But I'd still say it's wrong to call that its primary purpose.
21:01:50 <fizzie> Also: depressing! You must have heard wrong.
21:01:58 <fizzie> It's very dark and wet right now, that much is true.
21:02:04 <elliott> Phantom_Hoover: Also http://www.e-pig.org/epilogue/?p=1098 is written in Agda.
21:02:17 <elliott> (As is a bunch of the stuff on Epilogue, but anyway.)
21:02:18 <itidus20> fizzie: it wasnt a finlander who said that.. rather a notorious troll
21:02:47 <ais523> itidus20: is itidus21 a troll?
21:02:55 <Gregor> Oh using [...] to intentionally misquote people.
21:02:55 <elliott> fizzie: So it is, in fact, a gulag?
21:03:10 <itidus20> Gregor: i didn't have to say it in the first palce
21:03:24 <itidus20> i am a contaigen of the words anyway
21:03:28 <Gregor> elliott: No, it's a matrix of solidity.
21:03:43 <oerjan> "Queen Victoria: We are [...] amused."
21:03:59 <HackEgo> 7oX...p)(ѳU_Al.+W.q.hYx\Z.+ކ⏡p/.ہqͶ#..o.8.:.T2>..8: ..<➟S{tl҅xz,.d17.2HYwBw*:-t...;
21:04:01 <fizzie> elliott: "-- hence transf., any place or political system in which the oppression and punishment of dissidents is institutionalized" -- well, I... guess, arguably.
21:04:09 <Ngevd> Oh, that makes me feel so much better
21:04:14 <elliott> itidus20: See, Finland is a gulag.
21:04:27 <HackEgo> x/Ԇ".7oB&<0.~!....8lc~.5ꈘ܃.0...?]@V. \ .$盏w..;wmن$.T.SYP6 .U>[َfޘu.ަ(G'4_Q.].1F0.ҁ.."ƽ \ .>}s \ `w.boJ.=.)"$.bCKGن͆{(Zjߎmk.x{%qjְɶ.3,.RFeoyԚD...@+Q4Rz`֮|. #>Z41?DO\\.h \ ԟK.PգmCIw.(X.Yȷ.}m.gL?x)gE-.N90f"hk')
21:04:52 <HackEgo> Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible.
21:05:02 <fungot> Ngevd: this will see the final shutdown and to allow non-unix-philiacs a review might help to keep track of all their very different from clim? " segmentation violation".
21:05:04 <HackEgo> fungot cannot be stopped by that sword alone.
21:05:23 <elliott> `learn EgoBot is my arch-nemesis.
21:06:33 <oerjan> `learn glogbot is a snitch, don't trust it.
21:06:36 <HackEgo> elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things?
21:06:53 <fizzie> Glögbot, the glogbot with a Christmas theme. ("Glögg is the term for mulled wine in the Nordic countries (sometimes misspelled as glog or glug); (in Swedish and Icelandic: Glögg, Norwegian and Danish: Gløgg, Estonian and Finnish: Glögi).")
21:07:08 <HackEgo> ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented.
21:07:13 <itidus20> i was trolling by quoting another troll. it will pass
21:07:20 -!- lifthrasiir has joined.
21:07:22 <HackEgo> itidus20 is horny 60 year olds having cybersex in minecraft
21:07:27 <ais523> itidus20: you mean that you are itidus21?
21:07:37 <HackEgo> itidus21 just made some instant coffee.
21:07:46 <HackEgo> Phantom_Hoover is a true Scotsman and hatheist.
21:07:51 <Ngevd> `? Phantom__Hoover
21:07:54 <HackEgo> Phantom__Hoover can't decide what an appropriate number of underscores is.
21:08:00 <lifthrasiir> i finally figured out why my irc connection to freenode is blocked while other network seemed fine
21:08:20 <HackEgo> 2011-07-29.txt:21:10:24: <ais523> I assume you're new to IRC?
21:08:24 <Ngevd> Did I break Hackego?
21:08:33 <HackEgo> 2009-10-05.txt:02:11:21: <LadyT261> very new to IRC ... i don't understand why
21:08:41 <ais523> lifthrasiir: did it have anything to do with mibbit?
21:09:02 <lifthrasiir> it turned out that port 7777 was open but 7000 was not open in some router through my machine
21:09:14 <Gregor> lifthrasiir: Apparently this channel is now dedicated to effing with bots.
21:09:16 <oerjan> `learn lifthrasiir is shunned by the rest of his country for being no good at Starcraft.
21:09:17 -!- MSleep has changed nick to MDude.
21:09:27 <elliott> I think oerjan is just making these up by now.
21:09:36 <lifthrasiir> as 7777 (commonly used for irc+ssl) was fine i assumed that 7000 (also commonly used) was also fine
21:09:51 <MDude> Is it jsut hat heist without a space?
21:09:52 <Ngevd> `learn Taneb is not actually Ngevd, no matter what you may have heard.
21:10:20 <shachaf> What's the difference between Taneb and Ngevd?
21:10:27 <lifthrasiir> oerjan: oh, starcraft is now the past. lol (or so) is the new starcraft.
21:10:39 <elliott> lol lol lol lol lol roflmao lo
21:10:49 <itidus20> Gregor: i need to detach from this channel because although i came here with best intentions, i can't really follow anything which is on-topic
21:11:03 <itidus20> so i start focusing on bots instead
21:11:05 <Ngevd> shachaf, Ngevd is what I call myself when I start thinking of myself as Taneb
21:11:11 <lifthrasiir> elliott: you will be punished by lolcats then ;)
21:11:25 <Ngevd> I think my brother plays lol
21:11:31 <elliott> lifthrasiir: Ah yes, the traditional cats of punishment that laugh manically while they rip your inferior limbs apart.
21:11:31 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13446
21:11:37 <elliott> lol is... kind of a dark game??
21:11:46 <Ngevd> I'm not much good at it
21:14:37 <oerjan> `learn lifthrasiir is shunned by the rest of his country for being no good at League of Legends.
21:14:50 <oerjan> accurate updated information.
21:15:10 <itidus20> from the beginning i had a great misconception of what an esolang is. i thought it was a homebrew lang.
21:15:22 <itidus20> but no middle ground really exists
21:15:48 <itidus20> but i should try not to actively hijack :D
21:23:44 <itidus20> it seems to me that hello world is not a good hello world for the brainfuck language
21:24:48 <itidus20> that the task of displaying the text hello world is taken arbitrarily with no regard for the complexity of the task in a given language
21:25:01 <itidus20> but it seems to provide a great milestone and benchmark
21:27:25 <ais523> well, the idea of a hello world is that it typically contains all content required to run a program of one command
21:27:31 <ais523> but in some cases, it fails, such as BF and PHP
21:32:17 <itidus20> like a boob about brainfuck would not do well to begin with hello world in the first chapter
21:36:18 <oerjan> now you've done it, sent everyone off thinking about boobs
21:39:25 <itidus20> how do i execute a bf program in here?
21:40:24 <oerjan> itidus20: printing a zero doesn't show up in irc
21:40:37 <oerjan> many small control characters are excluded
21:40:59 <itidus20> ^bf +++++++++++++++++++++++++++++++++++++++++++++++++++++.!
21:41:14 <oerjan> itidus20: you don't need the ! part if you're not using ,
21:41:29 <oerjan> it's for the input to the program
21:41:41 <itidus20> i misinterpreted the ! as an EOF delimeter
21:42:47 <pikhq_> It seperates input from the source.
21:44:43 <itidus20> hehe. ok i will let it be for now
21:44:53 <oerjan> itidus20: the first loop is never run, and the second runs off the tape
21:45:06 <fizzie> ^bf ,[>,]<[.<]!testing
21:46:32 <fizzie> fungot: Your 'rev' wins a "useless use of >" award. (Admittedly it's only useless because of a tape without a left edge.)
21:46:32 <fungot> fizzie: ohhh that editor.... oh, actually caring about the term type? can't decide if an hp attempts to lock up directly after i found the following net discussion gave me a *truly* useful core dump).
21:47:02 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:52:42 -!- elliott has quit (Ping timeout: 240 seconds).
21:54:02 <oerjan> ^bf <,[.,]!What, no left edge?
22:00:11 <fizzie> Well, no right edge either.
22:03:41 <fizzie> ^bf ,[>,]>+[>+>[<->[-]]<]>>[.>].!...what's here?
22:03:50 <fizzie> Round and round we go.
22:04:24 <itidus20> ^bf ,,.[,,.]!test2 apdhfognteyhhodmse
22:05:50 <Ngevd> DO ^bf and !bf differ in behaviour at all?
22:06:42 <fizzie> Very probably; at least in the tape length (mine is I think a loop of 1000 cells) and timing restrictions.
22:06:55 <fizzie> Perhaps also in behaviour on "EOF".
22:07:38 <fizzie> Also I don't even know if !bf does the "input after !" thing.
22:09:52 <Gregor> !bf is EgoBF, my impl.
22:10:03 <oerjan> and !bf doesn't handle cutting of infinite output *whistles innocently*
22:10:29 <fungot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ...
22:10:54 <Gregor> Yup, appears not to support !
22:11:13 <oerjan> !bf ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[.]
22:11:41 <Ngevd> What is EgoBot written in?
22:11:44 <Gregor> !bf ----[>+<----]>++[.]
22:12:00 <Gregor> Ngevd: http://codu.org/projects/egobot/hg/
22:13:21 <Ngevd> Mainly C, possibly some other languages?
22:14:16 <Gregor> The IRC component is in C, the bridge/scaffolding is mostly bash, and the languages are implemented in various things.
22:15:51 <Gregor> I'm not a one-language kind of lunatic 8-D
22:16:11 -!- sebbu2 has joined.
22:16:12 -!- sebbu2 has quit (Changing host).
22:16:12 -!- sebbu2 has joined.
22:16:43 -!- derdon has joined.
22:16:57 <Ngevd> I don't know enough languages to be any of those kinds of lunatics
22:17:04 <Ngevd> I don't know enough languages.
22:17:12 <fizzie> It's written in all the languages. All of them.
22:17:55 -!- sebbu has quit (Ping timeout: 244 seconds).
22:18:25 <Gregor> My ultimate plan is still to eventually merge all the functionality of EgoBot into HackEgo.
22:18:44 <Ngevd> And call the result HackEgoBot?
22:19:02 <Gregor> Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm probably just EgoBot.
22:19:09 <fizzie> * HackBot :No such nick/channel
22:20:20 <Gregor> fizzie: The code base is actually called HackBot, but I call it HackEgo on FreeNode to correspond to my ego-stroking naming convention
22:20:26 <kallisti> Gregor: I know exactly how you could do that .
22:20:54 <kallisti> Gregor: you could make a bot that allows you execute arbitrary code in a Unix-like sandbox with revision control.
22:20:59 <fizzie> Gregor: You certainly know how to put the "ego" back in Gregor.
22:21:07 <Sgeo> ^bf +>[->],.!!
22:21:33 <Sgeo> I intended that to go around the entire tape
22:21:36 <Sgeo> No idea if I did that right
22:21:37 <Gregor> kallisti: I'm just too lazy to actually throw all the crap that's in EgoBot into HackEgo's env.
22:21:46 <fizzie> Sgeo: The loop will never run.
22:21:58 <fizzie> Sgeo: After "+>", you're in a zero cell.
22:22:12 <kallisti> Gregor: so you want addinterp and friends?
22:22:48 <Sgeo> ^bf +>-[>-],.!!
22:22:57 <Gregor> kallisti: Well, and all the languages.
22:23:14 <Sgeo> Did mine work as intended?
22:23:18 <Sgeo> ^bf >-[>-],.!!
22:23:36 <Sgeo> I'll take that as a no, I think
22:24:40 <oerjan> Ngevd: your last one didn't halt in reasonable time
22:24:55 <fizzie> oerjan: But it certainly did "go around the entire tape".
22:25:02 <Sgeo> Who says the tape is reasonably sized?
22:25:21 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
22:25:34 <Gregor> More importantly, there are virtually no implementations in which the tape forms a loop X_X
22:25:58 <fizzie> Sgeo: See, it's aaa** cells. And executes aaaaaa***** cycles.
22:26:09 <oerjan> Sgeo: your ^bf +[->-],.!! worked i think
22:27:42 <fungot> oerjan: index: sbin/ fsck/ pass2.c 4.3bsd-reno fsck fix) date: 18 sep 90 10:46:57 pdt from: ww
22:27:53 <Gregor> oerjan: Brain asplote.
22:27:54 <oerjan> and i believe my last one proves it definitely
22:28:43 <oerjan> by actually looping around between reading and printing the character
22:29:06 <fizzie> Gregor: Certainly there are; fungot, and bfvga. And I'm pretty sure there are other low-level ones that use an 8-bit or 16-bit tape pointer which wraps around "naturally", and a correspondingly sized tape.
22:29:06 <fungot> fizzie: a crying shame too. that would explain what this note was written ( unix) the 3 a.m. sunday to:
22:31:46 <fizzie> I must've gotten the loopy-tape idea from *somewhere* when writing the fungot one.
22:31:47 <fungot> fizzie: posted as context diffs. " i don't maintain or even functional...
22:33:16 <kallisti> wow I feel like complete shit.
22:33:44 <oerjan> probably alien abduction.
22:34:11 -!- Phantom_Hoover has joined.
22:34:57 <fizzie> "Too many fingers / have I got in my hand / I think there happened a creature / an alien creature" -- paraphrasing some Finnish song lyrics.
22:35:23 <fizzie> It doesn't really translate.
22:35:25 <oerjan> fizzie: it could also be too much vodka.
22:36:14 <oerjan> new haskell platform released
22:36:43 <fizzie> ("Liikaa sormia / ompi mulla kädessä / taisi käydä olio / avaruusolio.")
22:37:29 <fizzie> We even have a quasi-known brand.
22:37:42 <fizzie> http://en.wikipedia.org/wiki/Finlandia_Vodka
22:38:27 <ais523> I've heard that drinking diluted ethanol doesn't actually give a hangover
22:38:34 <ais523> although it seems quite a pointless activity
22:38:46 <fizzie> Phantom_Hoover: There's a variant of http://en.wikipedia.org/wiki/Koskenkorva_Viina that's only 40% water.
22:39:44 <ais523> Phantom_Hoover: but what's the point in getting drunk if you don't even get the enjoyment of drinking alcoholic drinks in the process?
22:39:49 <ais523> I thought being drunk was a /bad/ thing
22:53:05 -!- Patashu has joined.
23:04:51 * kallisti has taken a liking to porter ale.
23:05:02 <kallisti> tastes pretty good for a beer.
23:07:51 -!- salisbury has quit (Quit: Leaving).
23:20:26 -!- Ngevd has quit (Ping timeout: 244 seconds).
23:25:32 <Sgeo> If I smile at a Station V3 strip, can I link it?
23:25:59 <Sgeo> http://www.stationv3.com/d/20111217.html
23:26:11 <Phantom_Hoover> (monqy means no, since I know you have no sense of monqy— goddamn it.)
23:26:30 <Phantom_Hoover> monqy, please don't say things near Sgeo, he is stupid.
23:27:02 <kallisti> Sgeo: "WHAT MIND CONTROL HELMET" HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA
23:28:08 <Sgeo> Who says that I couldn't have guessed that monqy was joking and I just deliberately took the yes literally?
23:28:25 <monqy> remember what happened with homestuck
23:29:37 <Sgeo> Just because my monqy-detector failed once doesn't mean it always fails.
23:33:17 <olsner> http://imgur.com/37cmF :(
23:33:59 <oerjan> remember kids, if you are being sarcastic the audience has a right to choose to take you literally, with all resulting consequences.
23:34:19 <Phantom_Hoover> monqy, that little stunt accounted for more than half of my lambdabot messages this morning.
23:35:16 <Sgeo> Phantom_Hoover, I sent you no @tells. Go blame elliott or something
23:35:42 <Phantom_Hoover> Yes but please consider poor lambdabot when saying stupid things while elliott's in the channel.
23:35:49 <oerjan> your puny weapons are no match for our foodstuff
23:37:17 <Phantom_Hoover> Then when Sweden invades to get you back, you can all armour yourselves with bread.
23:37:18 <oerjan> Phantom_Hoover: what, so he would starve to death?????
23:37:39 <Phantom_Hoover> Also, we can nuke them and nothing of value will be lost.
23:44:06 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Fortifikation_(Migr%C3%A4ne).jpg
23:51:19 <ais523> so, what's the appropriate internet-meme reaction to Chuck Norris advertising World of Warcraft?
23:53:25 <itidus20> i propose a new brainfuck variant which consists of nothing but the word Chuck repeated over and over
23:53:47 <itidus20> I can see a problem with this actually..
23:53:48 <Gregor> ais523: "I don't always do advertisements. And when I do, they would have rather had Chuck Norris."
23:54:04 <ais523> itidus20: that it could only have one command?
23:54:11 <ais523> or that Phantom_Hoover would replace your brains with a brick?
23:54:21 <itidus20> yeah.. it needs a second token..
23:55:19 <itidus20> so instead is the 'Chuck!' 'Chuck Chuck!' 'Chuck Chuck Chuck!' [...] 'Chuck Chuck Chuck Chuck Chuck Chuck Chuck Chuck!'
23:57:36 <oerjan> i don't see the problem. when chuck norris programs, he obviously doesn't need more than one command.
23:59:54 <ais523> hmm, what might be interesting would be an evolutionary computing language