←2011-12-16 2011-12-17 2011-12-18→ ↑2011 ↑all
00:00:32 <kallisti> oh you meant tail. gotcha.
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:00:40 <HackEgo> M 4575627262464195387
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:15 <oerjan> yes
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:06 <kallisti> addition is for 1st grades
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:51 <kallisti> so no identity law.
00:09:54 <oerjan> no, it's a monoid without the unit
00:10:06 <kallisti> ah okay.
00:10:19 <kallisti> and thus no identity law, but still an associative law?
00:10:25 <oerjan> yes
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:26 <kallisti> ..
00:18:28 <kallisti> k
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:18:35 <kallisti> so this means
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:10 <kallisti> for any element in the group?
00:19:13 <kallisti> .....?
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:01 <kallisti> ....?
00:20:22 <oerjan> if you're always back exactly where you started, it's called the center.
00:20:50 <oerjan> or well
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:22:51 <kallisti> oh, okay.
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:01 <kallisti> oh wait
00:27:08 <kallisti> x^(-1) is the inverse of x.
00:27:13 <kallisti> in that group.
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:29:50 <oerjan> no.
00:29:55 <kallisti> because there's no inverse.
00:29:58 <oerjan> yeah
00:30:07 <kallisti> er well
00:30:12 <kallisti> no inverse for every element, rather.
00:30:19 <oerjan> only 1 and -1 have any
00:32:02 <kallisti> commutativity is boring.
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:29 <kallisti> ....too advanced right now.
00:33:36 <oerjan> ok
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:09 <kallisti> because lol g^(-1)ng
00:34:31 <kallisti> because lol g^(-1)ng
00:34:33 <Gregor> ... Firefox lost its address bar.
00:34:34 <Gregor> Halp
00:34:42 <kallisti> lol g^(-1)gn
00:34:46 <kallisti> lol unit*n
00:34:49 <kallisti> lol n
00:34:53 <kallisti> lol QED
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:04 <elliott> Gregor: Ctrl+L?
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:32 <elliott> <lambdabot> executed?
00:35:33 <elliott> oerjan:
00:35:38 <elliott> `run ghc -e '2+2'
00:35:42 <Gregor> oerjan: Complain at elliott.
00:35:43 <HackEgo> 4
00:35:44 <elliott> `run ghc -e 'print 42'
00:35:49 <HackEgo> 42
00:35:51 <kallisti> elliott: not good enough
00:35:51 <elliott> Q.E.D.
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:26 <kallisti> neither do I.
00:36:29 <kallisti> so you're safe. :P
00:36:33 <elliott> and do not remember deleting one
00:36:37 <kallisti> YOU DID
00:36:39 <elliott> so... whatever
00:36:40 <oerjan> elliott: anyway kallisti made something which worked afterwards
00:36:42 <kallisti> CURSE YOU
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:22 <elliott> and you're paranoid.
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:04 <oerjan> ah.
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:34 <elliott> Oh, wait!
00:38:37 <Gregor> elliott: lul
00:38:38 <elliott> oerjan: I remember this problem.
00:38:42 <oerjan> AHA
00:38:46 <elliott> The problem is that that is trying to use GHC 6.12.
00:38:50 <oerjan> the defendant confesses!
00:38:57 <elliott> It's Gregor's fault.
00:39:03 <elliott> Gregor: Where is HackEgo's custom GHC installed from EgoBot's perspective?
00:39:12 <elliott> `ghc --version
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:24 <Gregor> elliott: Done
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:30 <kallisti> ..
00:39:31 <elliott> `rm bin/haskell
00:39:32 <Gregor> elliott: Inaccessibly is where.
00:39:34 <HackEgo> No output.
00:39:45 <elliott> Gregor: Can you... fix that? :P
00:40:01 <Gregor> elliott: Is there a cp -hardlink option >_>
00:40:12 <Gregor> Yes, there is!
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:29 <Gregor> !sh ls /opt/ghc
00:40:30 <EgoBot> ​/bin/ls: cannot access /opt/ghc: No such file or directory
00:40:33 <Gregor> Err
00:40:43 <Gregor> Oh
00:40:52 <kallisti> elliott: base doesn't include random numbers? o_o
00:41:11 <Gregor> !sh ls /opt/ghc
00:41:11 <EgoBot> bin
00:41:20 <elliott> Yay
00:41:37 <elliott> Admittedly I should get Gregor to install the Haskell Platform libs globally for that GHC
00:41:39 <elliott> But that can wait
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> #!/bin/bash
00:41:55 <elliott> src=$(cat $1)
00:41:55 <elliott> if ! /opt/ghc/ghc -e "$src" 2> /dev/null
00:41:55 <elliott> then
00:41:56 <elliott> /opt/ghc/runhaskell <<< $src
00:41:58 <elliott> fi
00:42:00 <elliott> Erm
00:42:02 <elliott> */opt/ghc/bin
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:42:55 <elliott> Gregor: :'(
00:43:00 <elliott> It's two path changes :P
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:17 <elliott> Gregor: hagb4rd
00:44:18 <kallisti> fucking deletionist scum.
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:04 <HackEgo> No output.
00:46:08 <kallisti> WHAT NOW?
00:46:25 <Sgeo> Uh, jEdit?
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:47:12 <Sgeo> *eight spaces
00:47:23 <kallisti> oh.
00:47:28 <kallisti> that's much more reasonable.
00:47:33 <kallisti> (but still wrong)
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:01 <elliott> `rm bin/haskell
00:51:03 <HackEgo> No output.
00:51:04 <elliott> terrible abuse of mktemp
00:51:10 <elliott> author does not know how runhaskell functions
00:51:11 <elliott> also
00:51:18 <elliott> fails to remove temporary file in any situation (!!!)
00:51:24 <elliott> thus disk leak
00:51:31 <elliott> Q.E.D.
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:28 <elliott> ^D
00:52:28 <elliott> kallisti is an idiot.
00:52:31 <elliott> [elliott@dinky ~]$
00:52:39 <Sgeo> Is it just me, or is antialiasing a good thing?
00:52:40 <kallisti> elliott: oh, hmmm
00:52:46 <elliott> [elliott@dinky ~]$ runhaskell --version
00:52:46 <elliott> runghc 7.0.3
00:52:48 <elliott> `runhaskell --version
00:52:49 <elliott> Sgeo: what
00:52:50 <HackEgo> runghc 7.2.1
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:53:42 <elliott> composting
00:53:47 <elliott> pikhq_: Untrue
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 <HackEgo> No output.
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:46 <elliott> `rm bin/haskell
00:54:48 <HackEgo> No output.
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:29 <kallisti> elliott: what advantage?
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:33 <HackEgo> No output.
00:58:36 <elliott> `run rm bin/haskell # author has terrible track record; software likely to be unreliable in many respects
00:58:38 <HackEgo> No output.
00:58:46 <pikhq_> aloril: Fail.
00:58:50 <pikhq_> kallisti:
00:58:51 <pikhq_> Erm
00:58:51 <elliott> aloril: Faaaaaaail.
00:58:55 <elliott> aloril: SHAME ON YOU
00:59:00 <kallisti> pikhq_: fail where?
00:59:05 <kallisti> oh
00:59:12 <kallisti> `run cd bin && echo '#!/bin/bash' > haskell && echo 'exec runhaskell <<< "1"' >> haskell && chmod +x haskell #edit war, sucker
00:59:14 <HackEgo> No output.
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
00:59:25 <HackEgo> No output.
00:59:37 <pikhq_> Also, faaaail
00:59:48 <pikhq_> `run cat <<<"1"
00:59:50 <HackEgo> 1
01:00:02 <elliott> TIL kallisti can't write a two-line shell script.
01:00:06 <pikhq_> Actually, derp
01:00:12 <pikhq_> `run <<<"1"
01:00:14 <HackEgo> No output.
01:00:23 <pikhq_> ... Dammit, that working is a zsh-ism.
01:00:23 <elliott> `run is sh
01:00:25 <elliott> not bash
01:00:26 <HackEgo> bash: is: command not found
01:00:29 <elliott> `run bash -c '<<<"1"'
01:00:31 <HackEgo> No output.
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:34 <elliott> oh
01:00:43 <elliott> kallisti: Perfectly fine apart from all the bugs
01:00:54 <kallisti> such as?
01:01:02 <pikhq_> `run echo $BASH
01:01:04 <HackEgo> ​/bin/bash
01:01:09 <pikhq_> Bam, it's bash.
01:01:19 <elliott> pikhq_: It's bash invoked as sh, I thought, but maybe not
01:01:27 <pikhq_> elliott: Can't be.
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:07 <elliott> pikhq_: Ah, indeed
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:36 <HackEgo> No output.
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:53 <elliott> `rm bin/haskell
01:02:55 <HackEgo> No output.
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:07 <HackEgo> No output.
01:04:28 <kallisti> how is this different from what I wrote..
01:04:38 <kallisti> or
01:04:39 <kallisti> one of the ones I wrote
01:04:43 <kallisti> that elliott deleted.
01:05:03 <kallisti> oh
01:05:04 <kallisti> I see.
01:05:06 <kallisti> I forgot the $1
01:05:19 <pikhq_> Learn to shell kthx
01:05:34 <kallisti> pikhq_: I was under duress from elliott :P
01:06:01 <kallisti> and his fighting words;
01:06:06 <kallisti> fighting words such as "rm"
01:06:13 <kallisti> very enraging.
01:06:51 <kallisti> `haskell main = putStrLn "Hello, World!"
01:06:56 <HackEgo> Hello, World!
01:07:50 <elliott> `haskell 2+2
01:07:55 <HackEgo> ​\ /tmp/runghcXXXX276.hs:1:1: \ Parse error: naked expression at top level
01:07:56 <elliott> `rm bin/haskell
01:07:59 <HackEgo> No output.
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:18 <HackEgo> No output.
01:09:21 <pikhq_> `haskell 2+2
01:09:26 <elliott> Oh, not quite.
01:09:26 <HackEgo> cat: 2+2: No such file or directory
01:09:28 <elliott> Needs one tweak.
01:09:29 <pikhq_> :P
01:09:33 <oerjan> @_@
01:09:41 <elliott> `run sed -i 's/\$(cat \$1)/$1/' bin/haskell
01:09:44 <HackEgo> No output.
01:09:46 <pikhq_> `haskell 2+2
01:09:52 <HackEgo> 4
01:09:58 <pikhq_> `haskell main=putStrLn "Hello, world!"
01:10:04 <HackEgo> No output.
01:10:10 <elliott> o_X
01:10:11 <pikhq_> o.O'
01:10:18 <kallisti> man it would be so much easier if we like... used that other script
01:10:20 <kallisti> which works fine.
01:10:24 <elliott> `run runhaskell <<< 'main=putStrLn "Hello, world!"'
01:10:29 <HackEgo> Hello, world!
01:10:31 <pikhq_> kallisti: Except it clearly doesn't.
01:10:34 <elliott> Hmm
01:10:37 <elliott> Maybe
01:10:37 <elliott> runhaskell <<< $src
01:10:38 <kallisti> pikhq_: in what way?
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:10:57 <HackEgo> No output.
01:10:59 <elliott> `cat 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:12 <HackEgo> No output.
01:11:19 <elliott> What the fuck?
01:11:29 <pikhq_> What the actual fuck.
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:33 <elliott> 0
01:11:42 <elliott> Well that's not fucking idiotic.
01:11:44 <pikhq_> WHY GHC WHY
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:51 * oerjan sidles away carefully
01:12:57 <pikhq_> kallisti: Because the First Law of Unix is failing programs return 1.
01:12:59 <elliott> shachaf: PAH
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:07 <kallisti> YOU NEVER KNOW
01:16:10 <kallisti> IT MAY HAPPEN
01:16:29 <elliott> You realise that !haskell has always done this.
01:16:35 <kallisti> yes
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:46 <kallisti> yes I know
01:16:54 <kallisti> `run ghc -e "print 2 + 2"
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:02 <kallisti> `run ghc -e "print $ 2 + 2"
01:17:07 <HackEgo> 4
01:17:08 <kallisti> elliott: if only we had some way to do that
01:17:13 * kallisti hmmms.
01:17:23 <elliott> kallisti: "ghc -e isn't good enough" --kallisti
01:17:31 <kallisti> ..for whole programs, no.
01:17:34 <elliott> `rm bin/haskell
01:17:36 <HackEgo> No output.
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:19:51 <kallisti> and THE ONLY WAY TO DO IT
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:25:27 <kallisti> AAAAAARGH
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:37:11 <kallisti> what is an "even permutation"
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:40 <oklopol> well
01:39:55 <oklopol> do you know that permutations are generated by swaps
01:39:58 <oklopol> that is
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:30 <kallisti> oklopol: right
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:02 <oklopol> no matter how you do them
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:41:57 <elliott> BANKRUPTCY EVERYONE!!!
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:43:53 <kallisti> well sure I can see why.
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:28 <kallisti> oklopol: yes.
01:44:35 <kallisti> oklopol: but I'm assuming it follows the same basic principle.
01:44:44 <elliott> happy 1:44 am everybody
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:40 <kallisti> oklopol: yes
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:30 <kallisti> ah okay.
01:48:37 <kallisti> and then the operation is composition.
01:48:40 <oklopol> yeah
01:48:41 <kallisti> of the bijective maps.
01:48:45 <kallisti> okay.
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:15 <kallisti> er, two
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:40 <kallisti> ??
01:51:56 <kallisti> and then the other permutation groups are subgroups of the symmetry group.
01:51:57 <oklopol> ah it's a transposition
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:20 <oklopol> yeah you can
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 <oklopol> does that make sense?
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:04 <elliott> @src (.)
01:56:05 <lambdabot> (f . g) x = f (g x)
01:56:05 <lambdabot> NB: In lambdabot, (.) = fmap
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:45 <kallisti> +than
01:58:51 <elliott> kallisti: concatMap is recursive, you moron
01:58:54 <kallisti> which would be more efficient, modulo specialise pragma.
01:58:56 <elliott> also
01:58:56 <kallisti> elliott: no shit.
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:58:59 <elliott> ~NO RECURSION~
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:36 <elliott> and (.) works fine
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:00:56 <kallisti> elliott: is what I was saying
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:02:20 <kallisti> hmm, okay.
02:03:47 <elliott> 21:30:11: <Phantom_Hoover> It reminds me of that bit in Fine Structure where — oh wait future elliott.
02:03:48 <elliott> Arse.
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:31 <pikhq_> No, definitely.
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:14 <pikhq_> Lots of things.
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:20:39 <elliott> what package
02:20:42 <Sgeo> ftphs
02:20:51 <elliott> why aer you using ftp
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:21:46 <Sgeo> *saw
02:21:52 <elliott> clever
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:24:44 <oerjan> pretty recent, then.
02:25:32 <elliott> oerjan: what comes next after 247, 230, 260 btw
02:26:01 <oerjan> hm...
02:26:32 <oerjan> > iterate (zipWith (-) . tail) [247,230,260]
02:26:32 <lambdabot> Couldn't match expected type `[a] -> [a]'
02:26:33 <lambdabot> against inferred type `[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:06 <lambdabot> [247,230,260,337]
02:28:10 <oerjan> elliott: 337
02:28:18 <oerjan> scientifically proven
02:28:22 <elliott> oerjan: oh dear.
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:39 <oerjan> ok.
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:25 <oklopol> ',p
02:31:31 <elliott> Gregor: :P
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:41 <oklopol> :P
02:32:59 <pikhq_> :P:P:P:P:P:P:P:P:P:P:P
02:33:09 <oerjan> :P
02:33:13 <elliott> :P
02:33:18 <pikhq_> AND IT NESTS!
02:33:21 <pikhq_> AAAAGH
02:33:34 <oklopol> :o
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:33:49 <oklopol> it's finite so it's okay
02:34:01 <elliott> oerjan: seriously?
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:19 <Gregor> >_> <_<
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:33 <elliott> oerjan: how
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:22 <elliott> It's 2011.
02:35:23 <elliott> Don't use FTP.
02:35:25 <oklopol> irc would be a better place if everyone just said empty lines
02:35:33 <elliott>
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:35:58 <Sgeo> For class
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:29 <elliott> Dude, don't they have ssh
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:13 <elliott> Tough
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:42:10 <Sgeo> Weird though
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:04 <PiRSquared17> ?
02:48:19 <elliott> the contents of that stellar spam page
02:48:38 <PiRSquared17> LOL
02:48:39 <Sgeo> Printing the result of putlines made it work
02:48:43 <Sgeo> I hate this library
02:49:02 <PiRSquared17> That bot is stupid
02:49:17 <Sgeo> Success!
02:49:42 <PiRSquared17> "Autism Mercury Chat"
02:49:45 <PiRSquared17> External links
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:51:48 <elliott> mercury, god of autism
02:52:08 <copumpkin> dude, my friend got vaccinated and caught autism
02:52:15 <copumpkin> never was the same after that
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:52:28 <elliott> It's in the air.
02:52:30 <copumpkin> elliott: wear one of those masks
02:52:32 <copumpkin> Sgeo: aww
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:07 <oerjan> *i
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:04 <elliott> > fix show
03:00:05 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\...
03:00:13 <oerjan> > fix autism
03:00:14 <lambdabot> Not in scope: `autism'
03:00:54 <Sgeo> > fix pmukt
03:00:54 <lambdabot> Not in scope: `pmukt'
03:00:55 <Sgeo> erm
03:00:57 <Sgeo> > fix pmult
03:00:58 <lambdabot> Not in scope: `pmult'
03:00:59 <pikhq_> > fix ("autism":)
03:01:00 <lambdabot> ["autism","autism","autism","autism","autism","autism","autism","autism","a...
03:01:01 <Sgeo> Wait, no
03:01:08 <pikhq_> > unwords $ fix ("autism":)
03:01:09 <lambdabot> "autism autism autism autism autism autism autism autism autism autism auti...
03:01:16 <elliott> Too much autism!
03:01:21 <pikhq_> > unwords$fix("autism":)
03:01:22 <lambdabot> "autism autism autism autism autism autism autism autism autism autism auti...
03:01:23 <pikhq_> Better?
03:01:40 <oerjan> @hoogle Monoid m => [m] -> m
03:01:40 <lambdabot> Data.Monoid mconcat :: Monoid a => [a] -> a
03:01:41 <lambdabot> Prelude head :: [a] -> a
03:01:41 <lambdabot> Data.List head :: [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:05 <elliott> oerjan: fold
03:02:10 <elliott> from Data.Foldable
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:26 <oerjan> *uses
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:54 <elliott> f.e.
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:04:51 <elliott> heh
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:08:55 <kallisti> hai
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:19 <oerjan> > product [1..10000]
03:10:20 <lambdabot> 284625968091705451890641321211986889014805140170279923079417999427441134000...
03:10:23 <oerjan> > product [1..100000]
03:10:27 <lambdabot> mueval-core: Time limit exceeded
03:10:29 <oerjan> > product [1..100000]
03:10:30 <elliott> oic
03:10:33 <lambdabot> mueval-core: Time limit exceeded
03:10:36 <oerjan> oops
03:10:41 <oerjan> > product [1..50000]
03:10:45 <lambdabot> 334732050959714483691547609407148647791277322381045480773010032199016802214...
03:10:53 <oerjan> gah
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:20 <oerjan> > product [1..100000]
03:11:24 <lambdabot> mueval-core: Time limit exceeded
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:11:33 <oerjan> there it worked
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:20:54 <elliott> there's sequenceA
03:21:26 <zzo38> There is no sequenceA in Control.Applicative
03:21:31 <elliott> Data.Traversable
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:21 <Madoka-Kaname> > take 10 $ reverse $ show $ product [1..50000]
03:44:25 <lambdabot> "0000000000"
03:44:42 <Sgeo> Madoka-Kaname, do you vote that elliott watch Puella Magi Madoka Magica?
03:44:51 <Madoka-Kaname> I dunno!
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:53:48 <oerjan> mgnets.
03:54:05 <oerjan> they also stole my a.
03:54:05 <elliott> wat
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:46 <oerjan> *-g
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:18 <elliott> If you know what I mean.
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:56:56 <shachaf> I decide that he is one.
03:57:18 <shachaf> Trust him, he's a doctor (of philosphy).
03:57:39 * elliott finds out.
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:23 <oerjan> oh and Foldable.
03:58:36 <elliott> oerjan: well it makes sense to at least give them Functor instances
03:58:48 <elliott> Applicative too
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:46 <elliott> 5 days ago, apparently.
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:46 <elliott> `welcome salisbury
04:14:46 <elliott> shachaf: Seriously?
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:05 <salisbury> hey thanks
04:15:05 <shachaf> elliott: Yep.
04:15:12 <shachaf> As of Dec 15.
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:39 <elliott> shachaf: Did you smile.
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:05 <elliott> Gulakes(ag).
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:44 <salisbury> astral projection?
04:16:50 <elliott> Gregor: Somehow the sentence loses nothing for it.
04:16:57 <Gregor> elliott: Exactly!
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:17:36 <elliott> But: less interesting.
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:23 <elliott> X-D
04:19:24 <shachaf> (Which I am. Two others.)
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:56 <elliott> Gregor: Expatriot :D
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:23 * shachaf also enjoys "expatriot".
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:25:38 <monqy> most are bad
04:26:31 <shachaf> All are bad.
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:14 <monqy> bracket hell
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:07 <elliott> *me to
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:40 <elliott> x.f y ()
04:29:53 * elliott *slightly* suspects f(x, y) predates (f x y). :p
04:29:55 <monqy> x..............fy)(
04:30:04 <shachaf> elliott: Be quiet.
04:30:13 <monqy> )x.f.y(
04:30:14 <shachaf> Plagiarist.
04:30:19 <elliott> I'm speaking really quietly, your IRC client is just amplifying it.
04:30:26 <monqy> )(x)(f)(y)(
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:34:09 <elliott> No. And yes.
04:34:43 <monqy> disq
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:04 <elliott> erm
04:36:05 <elliott> oerjan: f g h x y z (((,),))
04:36:09 <elliott> == f(g(h(x,y),z))
04:36:11 <salisbury> oh, lambdabot is in here too
04:36:15 <oerjan> elliott: sorry, no commas allowed after parentheses
04:36:27 <elliott> oerjan: ok do currying then
04:36:42 <salisbury> > putStrLn "hey, what's up man?"
04:36:43 <lambdabot> <IO ()>
04:36:46 <salisbury> ..
04:36:55 <elliott> oerjan: oh that breaks down a bit
04:36:56 <oerjan> !haskell putStrLn "hey, what's up man?"
04:36:59 <EgoBot> 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:37:58 <lambdabot> <IO ()>
04:38:02 <shachaf> elliott: Makes sense.
04:38:07 <elliott> shachaf: It does?
04:38:10 <oerjan> f g h x y z (((()())()))
04:38:12 <salisbury> > unsafePerformIO (putStrLn "hey, whats up man")
04:38:13 <lambdabot> <IO ()>
04:38:16 <shachaf> elliott: Yes.
04:38:20 * elliott would generally expect "f x = g x" to always work.
04:38:24 <elliott> Assuming g is a function.
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:22 <lambdabot> Testing
04:39:29 <salisbury> !!
04:39:40 <monqy> is unsafeperformio = id
04:39:53 <monqy> ??
04:40:27 <elliott> shachaf is doing this thing called ``trolling''.
04:40:33 <shachaf> elliott: No I'm not!
04:40:51 <salisbury> I'll admit, he's got me on this one
04:41:04 <oerjan> :t unsafePerformIO
04:41:05 <lambdabot> forall a. a -> a
04:41:10 <Sgeo> I shouldn't have done that, I think I gave it away
04:41:10 <elliott> @undefine
04:41:15 <salisbury> > unsafePerformIO $ text "hey, what's up hermaphrodite"
04:41:16 <lambdabot> Not in scope: `unsafePerformIO'
04:41:20 <elliott> @let unsafePerformIO = undefined
04:41:20 <lambdabot> <local>:2:0:
04:41:20 <lambdabot> Multiple declarations of `L.unsafePerformIO'
04:41:20 <lambdabot> Declared...
04:41:26 <elliott> shachaf: Oi.
04:41:26 <shachaf> Too late. :-(
04:41:48 <Sgeo> > text "Lambdabot prints Docs as you see"
04:41:49 <lambdabot> Lambdabot prints Docs as you see
04:41:49 <Sgeo> :t text
04:41:50 <lambdabot> String -> Doc
04:42:01 <salisbury> Sgeo you magic
04:42:09 <Sgeo> My unsafePerformIO was just an attempt to continue the trolling
04:42:25 <shachaf> > text "a\nb"
04:42:26 <lambdabot> a
04:42:26 <lambdabot> b
04:42:41 <shachaf> > text "\n"
04:42:42 <lambdabot> Terminated
04:42:44 <shachaf> > text "\n"
04:42:44 <lambdabot> Terminated
04:42:48 <shachaf> > text "a\n\nb"
04:42:49 <lambdabot> a
04:42:49 <lambdabot>
04:42:49 <lambdabot> b
04:42:52 <Sgeo> > text "\nbluh"
04:42:53 <lambdabot> bluh
04:43:36 <monqy> > text $ interleave (repeat 'a') (repeat '\n')
04:43:40 <lambdabot> mueval-core: Time limit exceeded
04:43:42 <monqy> :0
04:43:59 <oerjan> > var $ interleave (repeat 'a') (repeat '\n')
04:44:00 <lambdabot> a
04:44:00 <lambdabot> a
04:44:00 <lambdabot> a
04:44:00 <lambdabot> a
04:44:00 <lambdabot> a
04:44:02 <lambdabot> [21 @more lines]
04:45:11 <elliott> @more
04:45:11 <lambdabot> a
04:45:11 <lambdabot> a
04:45:11 <lambdabot> a
04:45:11 <lambdabot> a
04:45:11 <lambdabot> a
04:45:13 <lambdabot> [16 @more lines]
04:45:15 <elliott> @more
04:45:15 <lambdabot> a
04:45:17 <lambdabot> a
04:45:19 <lambdabot> a
04:45:19 <shachaf> How unpredictable!
04:45:21 <lambdabot> a
04:45:23 <lambdabot> a
04:45:25 <lambdabot> [11 @more lines]
04:45:27 <elliott> @more
04:45:27 <lambdabot> a
04:45:29 <lambdabot> a
04:45:31 <lambdabot> a
04:45:33 <lambdabot> a
04:45:35 <lambdabot> a
04:45:37 <lambdabot> [6 @more lines]
04:45:39 <elliott> @more
04:45:40 <lambdabot> a
04:45:41 <lambdabot> a
04:45:43 <lambdabot> a
04:45:45 <lambdabot> a
04:45:47 <lambdabot> a
04:45:48 <Sgeo> Let me guess? More 'a's?
04:45:49 <lambdabot> ...
04:45:55 <elliott> The surprising end!
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:18 <oerjan> :t var
04:47:19 <lambdabot> forall a. String -> Sym a
04:47:31 <elliott> [elliott@dinky ~]$ pacman -Qe | wc -l
04:47:31 <elliott> 218
04:47:34 <elliott> That's not many, right???
04:47:38 <elliott> oerjan: oh :P
04:47:42 <elliott> oerjan: well i think you could do it
04:47:45 <elliott> with the vertical layout operator
04:47:55 <oerjan> if you say so
04:47:55 <monqy> :t ($$)
04:47:56 <lambdabot> Doc -> Doc -> Doc
04:48:35 <monqy> > foldl1 ($$) (repeat 'a')
04:48:35 <lambdabot> Couldn't match expected type `Text.PrettyPrint.HughesPJ.Doc'
04:48:36 <lambdabot> agains...
04:48:38 <monqy> oop
04:48:51 <monqy> > foldl1 ($$) (repeat (text "a"))
04:48:56 <lambdabot> mueval-core: Time limit exceeded
04:49:04 <monqy> creys
04:49:11 <oerjan> monqy: foldl1 never is lazy
04:49:11 <elliott> crey mainframe :(
04:49:14 <monqy> oh
04:49:15 <monqy> :(
04:49:19 <elliott> oerjan: er are you sure
04:49:23 <oerjan> > foldr1 ($$) (repeat (text "a"))
04:49:24 <elliott> > foldl1 f (repeat x)
04:49:28 <elliott> oh
04:49:28 <lambdabot> mueval-core: Time limit exceeded
04:49:28 <lambdabot> mueval-core: Time limit exceeded
04:49:29 <elliott> foldl
04:49:29 <elliott> rite
04:49:35 <oerjan> not that it helped
04:49:38 <elliott> there is an empty :: Doc, btw :P
04:49:40 <elliott> or mempty :: Doc
04:49:47 <oerjan> > foldr1 ($$) (repeat (text "a"))
04:49:51 <lambdabot> mueval-core: Time limit exceeded
04:50:00 <oerjan> it doesn't look like it helps, anyway
04:50:38 <oerjan> > foldr1 ($$) (replicate 10 (text "a"))
04:50:39 <elliott> hmm, 188 in 19
04:50:41 <lambdabot> a
04:50:41 <lambdabot> a
04:50:41 <lambdabot> a
04:50:41 <lambdabot> a
04:50:41 <lambdabot> a
04:50:43 <lambdabot> [5 @more lines]
04:50:57 <elliott> yay
04:51:01 <elliott> oh
04:51:02 <elliott> nay
04:51:03 <elliott> @more
04:51:03 <lambdabot> a
04:51:03 <lambdabot> a
04:51:03 <lambdabot> a
04:51:03 <lambdabot> a
04:51:03 <lambdabot> a
04:51:11 <Sgeo> :t ($$)
04:51:14 <lambdabot> Doc -> Doc -> Doc
04:51:37 <Sgeo> elliott, update
04:51:44 <elliott> oerjan: http://www.reddit.com/r/haskell/comments/nfyvy/instance_monad_ziplist_where/
04:56:28 <elliott> I think I crushed oerjan.
04:56:44 <monqy> rip
04:56:55 <copumpkin> why?
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:33 <elliott> no shit
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:12 <copumpkin> it is needed
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:58:56 <copumpkin> pure produces an infinite list?
04:59:00 <copumpkin> I guess it already did
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:15 <elliott> f <$> xs <*> ys
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:49 <oerjan> `log zjoin
04:59:53 <elliott> it satisfied the easier monad laws
04:59:54 <copumpkin> oerjan: oh, I see
05:00:04 <copumpkin> cthulhu does too
05:00:08 <elliott> wat
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:22 <oerjan> argh
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:28 <elliott> copumpkin: there you go
05:00:29 <oerjan> thanks
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:44 <lambdabot> Defined.
05:00:48 <copumpkin> :t zjoin
05:00:49 <lambdabot> forall a. ZipList (ZipList a) -> ZipList a
05:01:00 <elliott> TEST 1: passed
05:01:04 <oerjan> XD
05:01:12 * elliott thinks quickcheck could be useful here.
05:01:35 <copumpkin> > getZipList (zjoin (ZipList [ZipList [], ZipList [1]]))
05:01:39 <lambdabot> mueval-core: Time limit exceeded
05:01:43 <elliott> lol
05:01:46 <elliott> > getZipList (zjoin (ZipList [ZipList [], ZipList [1]]))
05:01:49 <lambdabot> mueval-core: Time limit exceeded
05:01:53 <oerjan> wat
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:08 <elliott> []
05:02:09 <elliott> yw
05:02:13 <elliott> bit of a hard computation
05:02:38 <shachaf> @check \x -> True
05:02:38 <lambdabot> Not in scope: `myquickcheck'Not in scope: data constructor `True'Not in sco...
05:02:44 <elliott> :D
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:03:22 <lambdabot> []
05:03:26 <oerjan> ah.
05:04:10 <elliott> @check is this fixed yet
05:04:10 <lambdabot> Not in scope: `myquickcheck'Not in scope: `is'Not in scope: `this'Not in sc...
05:04:13 <elliott> OH GOOD
05:04:14 <elliott> @check )
05:04:15 <lambdabot> Unbalanced parentheses
05:04:21 <elliott> @check ")"
05:04:21 <lambdabot> Not in scope: `myquickcheck'Not in scope: `$'
05:04:24 <elliott> X-D
05:05:29 <shachaf> @check ")" where x$y=x y
05:05:30 <lambdabot> Parse error at "where" (column 5)
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:25:13 <oerjan> *sigh*
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:41 <elliott> to prove, I mean
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:42 <salisbury> and*
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:00 <oerjan> er
05:32:11 <oerjan> s/\<m\>/n/g
05:32:23 <elliott> salisbury: Don't worry, oerjan is just terrible at Haskell.
05:32:51 <oerjan> D:
05:33:09 <elliott> (By "terrible" I of course mean "amazing".)
05:33:15 <elliott> (by "amazing" I mean terrible)
05:33:18 <elliott> (it's code)
05:33:20 <elliott> (secret code)
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:35 <elliott> You forgot the last /.
05:34:45 <elliott> It has the same semantics as Perl s///, it's just fuzzier. :p
05:34:49 <elliott> oerjan: *ed
05:34:56 <oerjan> ah.
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:35:20 <salisbury> yes
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:39:46 <elliott> good times, good time
05:39:47 <elliott> s
05:39:50 <elliott>
05:40:14 <elliott>
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:22 <oerjan> *diag function
05:41:30 <elliott> oerjan: the (>>=) in the reddit post I linked looked like the (>>=) for your zjoin
05:41:31 <elliott> but I'm not sure
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:43:58 <elliott> The "huge trick"?
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:37 <elliott> s/$/./
05:44:47 <elliott> Sgeo: Uhh, Haskell is a compiled language.
05:45:12 <Sgeo> Nevertheless
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:17 <elliott> *the generated
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:40 <Sgeo> Oh
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:49:59 <elliott> i.e. 1.9M vs. 124K.
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
05:58:49 <elliott> Sgeo: ITT: deepseq
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:00:49 <elliott> erm
06:00:52 <elliott> *evaluate (deepseq xs)
06:00:58 <elliott> erm
06:00:59 <elliott> *evaluate (rnf xs)
06:01:01 <elliott> dur
06:01:07 <elliott> where deepseq a b = rnf a `seq` b
06:01:23 <Sgeo> evaluate (force xs)?
06:01:27 <elliott> What is force
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:42 <elliott> Erm
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:01:49 <elliott> Blah blah blah
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:19 <elliott> OK fine
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:46 <Sgeo> "jump"?
06:03:47 <elliott> AKA evaluate (rnf a) is equal to (deepseq a (return ()) >>= return), not (deepseq a (return ())).)
06:03:52 <elliott> Sgeo: Yep.
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:04:17 <elliott> m >>= return = m.
06:05:04 <Sgeo> I was more confused than startled
06:07:46 <shachaf> > (undefined >>= return :: a -> b) `seq` 1
06:07:46 <lambdabot> 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:10:58 <lambdabot> `GHC.Base.Monad m'
06:10:58 <lambdabot> a...
06:11:03 <elliott> >_<
06:11:07 <elliott> > let eval :: a -> IO a; eval x = x `seq` return x in eval undefined `seq` ()
06:11:08 <lambdabot> *Exception: Prelude.undefined
06:11:13 <elliott> > let eval :: a -> IO a; eval x = (x `seq` return x) >>= return in eval undefined `seq` ()
06:11:14 <lambdabot> ()
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:14:55 <elliott> Sgeo: I believe so.
06:15:01 <elliott> fix id
06:15:06 <elliott> let x = id x in x
06:15:12 <elliott> let x = x in x
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:09 <salisbury> oh no.. I use that
06:16:11 <zzo38> How can I make a function to make such a list?
06:16:34 <elliott> salisbury: ?
06:16:49 <salisbury> I use the threaded runtime
06:17:08 <elliott> salisbury: You don't care about <<loop>> detection.
06:17:10 <elliott> It's just a cheap trick.
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:36 <shachaf> elliott: It does.
06:29:42 <elliott> Oh, okay.
06:29:45 <shachaf> elliott: But only on GC, or something like that.
06:29:49 <elliott> Heh.
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:19 <elliott> Hmm.
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:43 <elliott> *medium
06:39:45 <shachaf> (And now for elliott to comment on "wasn't".)
06:39:54 <elliott> Not "y'all"?
06:40:05 <shachaf> No, "y'all" is an abbreviation for "you all".
06:40:10 <shachaf> It's an accepted one.
06:40:13 <elliott> I'm one person, shachaf.
06:40:15 <elliott> Usually.
06:40:23 <kmc> omfgwhat
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:40:44 <shachaf> elliott bourbaki
06:40:56 <elliott> kmc: hi.
06:41:02 <kmc> hi elliott
06:41:04 <kmc> helliott
06:41:11 <elliott> Hi shachaf. Hachaf.
06:41:25 -!- elliott has quit (Quit: shift change for elliott bourbaki).
06:41:26 <shachaf> Bless you, elliott. Blelliott.
06:41:29 <shachaf> That's a fun word.
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:09 <shachaf> This is our escape.
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:13 <kmc> sux
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:58:51 <elliott> wait where did oerjan go
06:59:01 <Ngevd> Hexham
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:02:15 <elliott> Yes.
07:02:16 <elliott> Yes it is.
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:10:17 <kmc> yes
07:11:01 <salisbury> no actually, if you use the teleport monad
07:11:20 <salisbury> it's undocumented though
07:12:06 <salisbury> >>= :: :: Monad m => m a -> (a -> m b) -> Jupiter
07:12:26 <salisbury> yes, I did mean to type :: twice
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:14:48 <shachaf> It is?
07:15:00 <kmc> you summoned me here
07:15:04 <shachaf> I did?
07:15:12 <kmc> <shachaf> kmc might know the details of this.
07:15:15 <shachaf> You mean during the BLACKHOLE discussion?
07:15:16 <shachaf> Ah.
07:15:20 <shachaf> You were already in this channel.
07:15:21 <kmc> the blackest of holes
07:15:25 <kmc> yeah
07:15:28 <kmc> i forgot why
07:16:05 <shachaf> Probably to talk about @.
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:17:52 <elliott> Sgeo: Cool.
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:24:51 <shachaf> salisbury: /me ...
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:17 <salisbury> yes
07:25:19 <salisbury> well,
07:25:20 <salisbury> no
07:25:21 <salisbury> but
07:25:24 <salisbury> in theory
07:25:32 <kmc> plz
07:25:49 <Sgeo> salisbury, repeat after me
07:25:55 <Sgeo> /me just learned how to /me
07:26:06 * salisbury just learned how to /me
07:26:08 <salisbury> yay
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:26:49 <elliott> Quite.
07:27:06 <elliott> But also I'm lazy.
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:36:47 <salisbury> in millimeters
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:40:37 <elliott> *Halley's
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:48:12 <kmc> i won't
07:50:25 -!- tuubow has joined.
07:52:41 <elliott> `welcome tuubow
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:45 <salisbury> how about now
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:07:59 <salisbury> indeed
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:17:47 <elliott> hi Ngevd
08:17:49 <Ngevd> Hello!
08:18:18 <Ngevd> It's surprisingly not slippy outside
08:19:42 <elliott> not slippy, just dull :P
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:31:55 <elliott> http://sprunge.us/jaPC
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:32:47 <elliott> Also -Wpadded.
08:33:42 <elliott> -Waggregate-return
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:42 <Sgeo> BRB
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:41:26 <Sgeo> think
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:58:52 <shachaf> What about -ansi?
08:59:02 <shachaf> Oh, wait.
08:59:08 <shachaf> That doesn't do what I think it does.
09:00:03 <elliott> That's just -std=c89.
09:00:16 <shachaf> -std=c90 according to my `man ghc`.
09:00:21 <elliott> Same thing.
09:00:24 <elliott> (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:03:34 <shachaf> Options like -Weffc++.
09:03:40 <elliott> Quite.
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:05:50 <elliott> Try not to.
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:04 <shachaf> What's that?
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:51 <elliott> For instance, Maybe.
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:08:50 <elliott> It's the best game.
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:12:23 <shachaf> Sounds fun.
09:16:50 <elliott> It is if you're a language lawyer.
09:17:09 * elliott used to be, but was language disbarred.
09:18:20 <Sgeo> UPDATE
09:24:12 <monqy> hi
09:24:32 * Sgeo updates monqy
09:24:38 <Sgeo> Wait, is monqy a Homestuck person?
09:24:38 <monqy> hi
09:24:49 <monqy> whats a homestuck
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:26:36 <monqy> oh
09:27:08 <elliott> today monqy learned the true meaning of friendship
09:27:15 <elliott> and photosensitive epilepsy
09:27:21 <monqy> and homestuck
09:27:22 <monqy> amen
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:56 <monqy> oh no.....
09:28:59 <monqy> does zoosmell die........
09:29:38 <elliott> yes
09:29:40 <elliott> rip
09:29:42 <monqy> ;_;
09:29:49 <elliott> zoosmell page 2 - page 3
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:32:59 <elliott> He dies on page 1271943.
09:33:15 <monqy> D:
09:33:26 <monqy> now homestuck is ruined for me
09:33:28 <monqy> very depressing
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:34:44 <monqy> :0
09:36:38 <monqy> oh no im
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:07 <monqy> the jokes too
09:37:09 <monqy> hlep
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:06 <monqy> i..........
09:38:45 <monqy> people tiwttered that....
09:38:56 <elliott> w h a t
09:39:03 <monqy> the Reactions section
09:39:07 <elliott> why
09:39:11 <elliott> well
09:39:16 <elliott> two of them is the author
09:39:20 <monqy> people retwetted from t.truszowkwoeskey
09:39:21 <elliott> oh god "Evening repeat" he tweets these things twice
09:39:31 <monqy> what all of them
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:20 <elliott> it's on reddit because
09:40:22 <elliott> he submitted it to reddit
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:19 <pikhq_> Also, WTF UNIX?
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 <shachaf> ^style jargon
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 <Phantom_Hoover> labdnambot
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:23 <Phantom_Hoover> zoosmell ;_;
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:26:14 <shachaf> > "fun" ++ "got"
10:26:15 <lambdabot> "fungot"
10:27:21 <elliott> fungot ignores bots.
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:22 <elliott> Inversed.
10:28:23 <elliott> Conversed.
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:29:54 <elliott> Omissions. Oops.
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:31:43 <elliott> Riveting.
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:39 <elliott> Boolfuck is ancient.
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:07 <elliott> @src sequence
11:10:07 <lambdabot> sequence [] = return []
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:32 <Phantom_Hoover> One could even say that it is very.... fine.
11:27:55 <Phantom_Hoover> 02:13:31: <oklopol> what's fine structure about
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:01 <kallisti> ah it was Homestuck first.
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:43:47 <elliott> @src foldl1
12:43:47 <lambdabot> foldl1 f (x:xs) = foldl f x xs
12:43:47 <lambdabot> foldl1 _ [] = undefined
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]).
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:08:54 <elliott> const char *const *sad :(
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:14:36 <Ngevd> Am not!
14:14:47 <Ngevd> Well, am!
14:15:15 <elliott> Yes, you are.
14:15:43 <Ngevd> Hmm
14:15:45 <elliott> Well, not in the inner loop.
14:15:47 <Ngevd> Do I want randomR
14:15:49 <Ngevd> ?
14:16:44 <Ngevd> Possibly..
14:17:02 <elliott> Give me a second.
14:17:36 -!- Ngevd has quit (Quit: Goodbye).
14:18:48 <elliott> ...
14:18:50 <elliott> http://hpaste.org/55373, anyway.
14:22:07 <elliott> @tell Ngevd http://hpaste.org/55374
14:22:07 <lambdabot> Consider it noted.
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:04:47 <elliott> Oh, olsner too
15:04:49 <elliott> EVERYONE GETS A PING
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:15 <elliott> and not an API detail
15:09:28 <elliott> void load_colors(const char *const *lines);
15:09:28 <elliott> SO BEAUTIFUL.
15:09:39 <elliott> main.c:36:6: note: expected ‘const char * const*’ but argument is of type ‘char * const*’
15:09:44 <elliott> olsner: :-/
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:11 <elliott> I hate C.
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:04 <elliott> When I saw
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:11 <elliott> yeah, it is
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:06 <elliott> Deewiant: Not true
15:19:25 <elliott> Deewiant: -pedantic exists solely to yell at you things that the C standard wants the compiler to
15:19:30 <elliott> Uh, restructure that.
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> -pedantic
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:00 <elliott> "requires"
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:26:54 <elliott> Deewiant: Ha
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:37 <elliott> *conformance
15:27:38 <elliott> Ngevd: say hi
15:27:43 <Ngevd> hi
15:27:43 <lambdabot> Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it.
15:27:48 <Ngevd> @messages
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:14 <elliott> I wasn't fixing it
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:39 <elliott> And yeah, it really is.
15:29:45 <elliott> OK, not terrible.
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:38 <Ngevd> Do I?
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:04 <Ngevd> No wait
15:31:07 <Ngevd> It wasn't the point
15:31:07 -!- azaq23 has joined.
15:31:07 <elliott> It is?
15:31:12 <Ngevd> But that wasn't actually the problem
15:31:15 <elliott> Actually, wait, no.
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:31 <Ngevd> In the say_answer
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: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:42 <elliott> But, your code.
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:36:09 <elliott> Erm
15:36:10 <elliott> *Right grid
15:36:18 <Ngevd> You can DO that!?
15:36:23 * elliott sigh
15:37:25 <Ngevd> Stop sighing and teach!
15:38:19 <elliott> I just did
15:38:20 <elliott> *.
15:41:08 <Ngevd> What's the best way to colour the text
15:42:57 <Ngevd> ?
15:42:57 <elliott> Ngevd: ansi-wl-pprint
15:43:10 <Ngevd> Hmm
15:44:08 <elliott> putDoc $ red (text "abcdef") <> green (text "quux")
15:47:25 <Ngevd> Brilliant...
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:58:05 <Deewiant> Same thing it means in C
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:18 <elliott> I'm in lol land.
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:36 <Deewiant> Then you're screwed I guess
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:21 <Jafet> Gregor: dvorak
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:44 <elliott> Gregor: OK, wait.
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:11:04 <elliott> What Deewiant said.
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:11 <Deewiant> elliott: Colemak has QWFP
16:12:15 <Deewiant> !c void foo(char const* const* pp, char const* p) { *pp = p; }
16:12:18 <EgoBot> Does not compile.
16:12:22 <Deewiant> (Proof.)
16:12:40 <elliott> !c uses -Werror?
16:12:42 <EgoBot> Does not compile.
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:57 <elliott> o, ic.
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:26 <Deewiant> Mostly the -Werror
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:23 * elliott predicts.
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:15:26 <elliott> Test
16:15:32 <elliott> Ha ha ha
16:15:34 <elliott> :P :P
16:15:36 <elliott> ...
16:15:39 <elliott> Dude, there were three.
16:15:42 <elliott> What is wrong with you.
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:57:06 <Phantom___Hoover> Oh, wait, it does.
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'."
16:59:32 <Phantom___Hoover> He definitely wasn't at St Mary's when I knew him...
17:00:47 <Ngevd> Phantom___Hoover, that's what's [citation needed] and talk pages are for
17:00:58 <Phantom___Hoover> That's from a different article.
17:01:31 <Phantom___Hoover> Now, upon further Googling, I discover that the Daily Record ran an article about his voice breaking.
17:02:56 <Phantom___Hoover> *different, non-WP article
17:03:28 <Ngevd> Okay
17:07:40 <elliott> Phantom___Hoover: Someone's VOICE BROKE??? UNTHINKABLE
17:07:46 <Phantom___Hoover> elliott, I KNOW
17:07:51 <Phantom___Hoover> Ah, I remember that guy.
17:07:59 <Phantom___Hoover> Hentai Ben, we (I) called him.
17:08:08 <Ngevd> I remember the recording I did before MY voice broke
17:08:11 <Ngevd> God, that was weird
17:08:29 <Phantom___Hoover> Then, later, Stacy.
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:09:59 <Phantom___Hoover> Everyone else just used his surname.
17:10:33 <Gregor> Phantom___Hoover, elliott: Should've castrated him while they had the chance.
17:10:43 <Phantom___Hoover> Should've.
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:57 <elliott> @free (<*>)
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:04 <lambdabot> Extra stuff at end of line
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:08 <Gregor> Ahhhhhhhhhhhhhh
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:38 <elliott> Oh, hm
17:35:42 <elliott> (forall h. (forall k p. g . k = p . f
17:35:42 <elliott> =>
17:35:42 <elliott> h k = p)
17:35:42 <elliott> =>
17:35:44 <elliott> $map_F h x = y)
17:35:46 <elliott> =>
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:35:50 <Gregor> lol
17:36:11 <elliott> That's some free theorem.
17:39:54 <Phantom___Hoover> olsner, his growing addiction to Stack Overflow!
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).
17:57:00 <Phantom___Hoover> elliott, but they are terrible people!
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:12 <salisbury> Phantom___Hoover Edinburgh?
18:40:29 <AnotherTest> It's because I need opinions about what feature people find important
18:41:09 <salisbury> ?
18:41:38 <Phantom___Hoover> Hello?
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:47:53 <elliott> AnotherTest: no
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:18 <salisbury> gives you a good feel for things
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:55 <lambdabot> Unknown command, try @list
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:34 <salisbury> excusez-moi
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:08 <AnotherTest> Usually, people prefer a longer token
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:07 * AnotherTest sees bad bots more often than good ones.
18:52:10 <elliott> We have... 5 bot prefix characters in here.
18:52:24 <AnotherTest> uh
18:52:33 <elliott> Different bots, of course.
18:52:46 <itidus20> my favorite bot command is `log
18:52:51 <itidus20> `log
18:52:53 <elliott> Well, lambdabot has both @ and ?, and one of its commands starts :, and one starts "> ".
18:52:56 <elliott> But lambdabot's special.
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:57:23 <AnotherTest> Yes
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:44 <AnotherTest> It does certainly have some advantages?
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:02 <AnotherTest> randomly; at any time
18:59:31 <elliott> So... you're asking whether you want globals? :p
18:59:35 <AnotherTest> No
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:19 <Ngevd> Hello!
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:02:42 <AnotherTest> although even more
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:03:13 <AnotherTest> Variables
19:03:21 <AnotherTest> You store the code in a variable
19:03:54 <pikhq_> Wait, like mutation?
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:04:37 <AnotherTest> In most other languages
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:18 <AnotherTest> The idea is to store everything
19:05:24 <elliott> Just about every modern "dynamic" language can do that.
19:05:32 <AnotherTest> Yes
19:05:36 <AnotherTest> maybe
19:05:49 <AnotherTest> but it's about storing everything in variables
19:05:58 <Phantom___Hoover> maybe
19:05:59 <AnotherTest> and make no difference between variable and function
19:06:02 <Phantom___Hoover> it's about love
19:06:05 <zzo38> In programming languages such as C you can store a pointer to a function in a variable
19:06:16 <AnotherTest> zzo38, that's not the same
19:06:21 <AnotherTest> then you still store a number
19:06:29 <AnotherTest> (an address)
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:27 <AnotherTest> Maybe, but those are exceptions?
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:08:04 <AnotherTest> it doesn't store the data
19:08:11 <AnotherTest> so it's not at all the same as a pointer
19:08:14 <AnotherTest> ?
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:28 <AnotherTest> Elliot, yes
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:13:35 <elliott> :P
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:14:33 <AnotherTest> and I also don't expect people to
19:15:28 <zzo38> OK
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:16:18 <AnotherTest> (after thinking about them, obviously)
19:16:32 <Phantom___Hoover> Oh, right.
19:16:33 <Phantom___Hoover> Yes, I am.
19:16:35 <Phantom___Hoover> Why?
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:06 <elliott> Gahahaha
19:23:20 <AnotherTest> Um
19:23:27 <AnotherTest> mind explaining me a bit,
19:23:29 <AnotherTest> :(
19:23:48 <elliott> Explaining what?
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:31 <AnotherTest> Such as, what article?
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:46 <AnotherTest> Isn't Andy McNab a writer or so?
19:24:48 <elliott> Presumably http://en.wikipedia.org/wiki/Andy_McNab :P
19:25:05 <AnotherTest> Well seems like I got that write
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:19 <salisbury> I caught the references
19:36:21 <Phantom___Hoover> I may go to Edinburgh Uni this year.
19:36:45 <Phantom___Hoover> I have already gotten lost in King's Buildings several times.
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:28 <Phantom___Hoover> They did??
19:39:38 <Phantom___Hoover> I thought it was only Scottish students who didn't have to pay.
19:39:47 <salisbury> yeah, and EU.
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:40:38 <Ngevd> Hello!
19:40:42 <Phantom___Hoover> If that's true, it's the funniest thing ever.
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:42:43 <salisbury> !that much for English folks
19:43:08 <AnotherTest> Come 2 Belgium
19:43:11 <pikhq_> *sigh* Japan. Why you so stupid.
19:43:16 <AnotherTest> We have great universities
19:43:42 <elliott> AnotherTest: Yes, if only this "Belgium" actually existed.
19:43:50 <AnotherTest> Um
19:43:53 <AnotherTest> I live in it...
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:25 <AnotherTest> haha
19:44:26 <Phantom_Hoover> Ah, Belgium.
19:44:28 <pikhq_> But not Japan.
19:44:31 <AnotherTest> This is hilarious
19:44:34 <Phantom_Hoover> The cheap ripoff of Switzerland.
19:44:41 <AnotherTest> Not really
19:44:46 <AnotherTest> we don't even have mountains
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:44:49 <AnotherTest> :/
19:44:52 <elliott> He did say cheap.
19:45:06 <AnotherTest> I guess
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:30 <Phantom_Hoover> elliott, Luxembourg?
19:45:31 <Ngevd> elliott, Nepal
19:45:34 <Phantom_Hoover> Liechtenstein?
19:45:37 <elliott> Luxempal.
19:45:40 <salisbury> I once had a job offer in Switzerland. VISA -> Denied..
19:45:42 <elliott> Friendship Luxem-pal.
19:45:50 <AnotherTest> elliott
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:06 <AnotherTest> prove that it exists?
19:46:20 <salisbury> Ngevd I'm Canadian.
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:46 <AnotherTest> Let me ask him
19:46:48 <Ngevd> salisbury, ah, I assumed you were from Salisbury, Wiltshire
19:47:00 <AnotherTest> whenever I see him
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:04 <AnotherTest> COME TO BELGIUM
19:48:11 <Ngevd> Most people on this channel seem to speak English
19:48:13 <zzo38> Then learn Japan.
19:48:26 <salisbury> zzo38, you make it sound so easy
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:48:42 <elliott> Also, what's Ending.
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:08 <AnotherTest> so you guys wouldn't have any problems
19:49:09 <Phantom_Hoover> Ngevd, could we get an internship here/
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:37 <Phantom_Hoover> #esoteric here.
19:49:44 <Ngevd> Phantom_Hoover, maybe.
19:49:54 <elliott> German is of course just macho English.
19:50:00 <AnotherTest> eliott: You're discriminating Belgiums :(
19:50:09 <elliott> What I'm saying is: Belgians, decide who you are already???
19:50:20 <AnotherTest> I'm Flemish in fact
19:50:41 <Ngevd> One of my best friends is 1/64 belgian!
19:50:51 <AnotherTest> so, whatever if Belgium doesn't exist
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:10 <elliott> Ridiculous.
19:51:44 <AnotherTest> we have beer dude
19:51:53 <salisbury> this is true
19:51:55 <Ngevd> AnotherTest, so? So does India
19:52:04 <AnotherTest> Yes, but we have more and better
19:52:11 <elliott> So does Liechtehteitneisntisntientisentinsetien warhol.
19:52:22 <Phantom_Hoover> You know which European country sucks completely?
19:52:28 <AnotherTest> Yes, the UK
19:52:37 <salisbury> technically that is not a country
19:52:39 <salisbury> but a kingdom
19:52:45 <Phantom_Hoover> No.
19:52:46 <AnotherTest> no no
19:52:47 <Phantom_Hoover> Sweden.
19:52:56 <AnotherTest> a kingdom is a type of government
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:01 <Ngevd> Countryception
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:28 <AnotherTest> Aha
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:38 <AnotherTest> They don't even have €, what a suckers
19:53:48 <elliott> Phantom_Hoover: DEFCON isn't real life, PH.
19:53:54 <Phantom_Hoover> It isn't???
19:53:57 <AnotherTest> and they use Inches, haha!
19:54:02 <Phantom_Hoover> I've not really been killing millions?
19:54:05 <Phantom_Hoover> AnotherTest, ahahahahahahaha
19:54:07 <elliott> Not... really?
19:54:10 <Phantom_Hoover> do
19:54:13 <elliott> We... we don't use inches.
19:54:14 <Phantom_Hoover> do you know anything about the uk
19:54:16 <Ngevd> AnotherTest, the UK is legally metric
19:54:17 <AnotherTest> Not even an SI-unit
19:54:22 <Phantom_Hoover> Heights are sometimes given in feet and inches.
19:54:24 <elliott> OK heights are usually feet and inches and disatnces are miles.
19:54:25 <Phantom_Hoover> Nothing else is.
19:54:30 <elliott> But apart from that we're completely metric.
19:54:31 <elliott> *distances
19:54:31 <AnotherTest> meter is the SI-unit
19:54:35 <Ngevd> MIlk is pint?
19:54:39 <elliott> AnotherTest: We use cm all the time, dude.
19:54:45 <AnotherTest> cm sucks
19:54:48 <elliott> Ngevd: Sure , if you still consume "liquids" like an old-timer.
19:54:51 <elliott> AnotherTest: And m.
19:54:57 <AnotherTest> Okay
19:55:02 <AnotherTest> then stop pretending you don't
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:15 <Phantom_Hoover> <AnotherTest> cm sucks
19:55:17 <Phantom_Hoover> are you for real
19:55:22 <AnotherTest> yes
19:55:27 <Ngevd> Phantom_Hoover, he's just another test.
19:55:40 <AnotherTest> Test was already taken :/
19:55:48 <Ngevd> Emphasis on another
19:55:50 <Phantom_Hoover> are you sure
19:55:57 <AnotherTest> Guys
19:56:01 <AnotherTest> I'm a test
19:56:05 -!- ais523 has joined.
19:56:17 <AnotherTest> and testing is the most important part of development
19:56:28 <AnotherTest> so I'm the most important
19:56:38 <salisbury> TIL UK == country.
19:56:43 <salisbury> I mean, I knew
19:56:44 <salisbury> but
19:56:56 <ais523> salisbury: you're named after a UK city!
19:56:56 <AnotherTest> England != country
19:57:01 -!- monqy has joined.
19:57:12 <elliott> England is a country.
19:57:12 <Ngevd> England == country
19:57:33 <AnotherTest> It isn't
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:47 <Phantom_Hoover> England is not a country, it is a PANSY
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:29 <AnotherTest> Saukerl.
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:07 <elliott> Run before it's too late.
19:59:10 <AnotherTest> Telenet = boss.
19:59:28 <AnotherTest> COME TO BELGIUM
19:59:31 <AnotherTest> ITS COOL
19:59:38 <Ngevd> Norway's cooler
19:59:42 <Ngevd> In more ways than one
19:59:48 <AnotherTest> Norway has mass murderers
19:59:52 <AnotherTest> I would never go there
19:59:54 <elliott> http://en.wikipedia.org/wiki/File:Royal_Banner_of_England.svg
19:59:56 <Ngevd> So does Tasmania
19:59:57 <elliott> Why have I never seen this before.
20:00:01 <elliott> This is the most ridiculous thing.
20:00:03 <AnotherTest> Also
20:00:06 <AnotherTest> in Norway it's cold
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:01 <AnotherTest> True, we had this idiot lately
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:21 <AnotherTest> I'm actually elliott trying to be cool.
20:01:29 <AnotherTest> But don't tell anyone.
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:01:49 <AnotherTest> He's using Tor
20:01:58 <AnotherTest> sorr
20:02:01 <AnotherTest> *sorry
20:02:04 <AnotherTest> I'm using Tor
20:02:08 <AnotherTest> so I can't help it
20:02:09 <Ngevd> We all know where elliott lives
20:02:09 <elliott> We're using Tor.
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:02:56 <elliott> ais523: /95/?
20:03:03 <elliott> ais523: how long has this case been going?
20:03:28 <ais523> I'm not sure
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:11 <elliott> no, I'm being sincere
20:05:37 <itidus20> well, with win95 they deliberately made many softwares work..
20:05:38 <monqy> no sincere person says "implausible"
20:05:41 <itidus20> which shouldn't work
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:36 <itidus20> i blame my brain
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:02 <ais523> no public API, I mean
20:07:07 <ais523> there was a private one that Word was using
20:07:12 <elliott> hmm
20:07:21 <elliott> what did the API do?
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:46 <elliott> ais523: heh
20:09:53 <elliott> ais523: that sounds very hard to prove/disprove
20:10:17 <ais523> elliott: indeed
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:08 <elliott> using codenames.
20:12:22 <itidus20> memphis and chicago
20:12:46 <pikhq_> Memphis ChicagoExtPlus doubleplusbad.
20:13:05 <zzo38> How common is Kxe8!!#
20:13:13 <elliott> the most common
20:13:29 <zzo38> I doubt it
20:14:40 <ais523> elliott: well, you somehow have to inform everyone in the company who might notice
20:14:41 <pikhq_> zzo38: Beautiful.
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:33 <Phantom_Hoover> <AnotherTest> Norway has mass murderers
20:15:40 <ais523> pikhq_: oh, right
20:15:41 <pikhq_> Remember, the typical Windows dev doesn't actually have complete source.
20:15:41 <Phantom_Hoover> oerjan always was a little shifty...
20:15:41 <elliott> ais523: Q.E.D.
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:11 <Phantom_Hoover> wha
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:16:46 <AnotherTest> Scotland has to much rain anyway
20:16:54 <AnotherTest> *too
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:17:53 <elliott> by uh
20:17:54 <elliott> pasting it
20:17:56 <elliott> well
20:17:58 <elliott> one line of i
20:17:58 <elliott> t
20:18:06 <itidus20> t
20:18:07 <itidus20> h
20:18:08 <itidus20> e
20:18:11 <elliott> (diff) (hist) . . Language list‎; 19:52 . . (+365) . . (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:16 <itidus20> -
20:18:18 <itidus20> m
20:18:19 <itidus20> o
20:18:20 <itidus20> s
20:18:22 <itidus20> t
20:18:27 <monqy> hi
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:18:48 <AnotherTest> or sour
20:18:51 <Phantom_Hoover> Scots melt on contact with acid too.
20:18:53 <AnotherTest> whatever the word is
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:36 <elliott> hi oerjan
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:21:59 <oerjan> yay!
20:22:07 <itidus20> its kind of annoying to see other icons and windows all the time
20:23:13 <itidus20> humm
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:00 <AnotherTest> um
20:25:05 <AnotherTest> Who said linux can't?
20:25:11 <ais523> hmm, that seems more like a window toolkit feature than an OS feature
20:25:12 <itidus20> i'm assuming it can't
20:25:13 <AnotherTest> Who dares stating that?
20:25:23 <AnotherTest> Linux can do everything
20:25:25 <ais523> I know that Gnome can convert normal windowed displays into HTML
20:25:28 <AnotherTest> that's the first thing you must know
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 <AnotherTest> Ngevd, are you sure?
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:49 <AnotherTest> Linux can be @
20:26:53 <elliott> ais523: well, IIRC
20:26:55 <elliott> AnotherTest: really? tell me how
20:26:59 <elliott> because it would save me a _lot_ of work
20:27:06 <AnotherTest> Shape your computer into an @
20:27:10 <AnotherTest> install Linux
20:27:11 <AnotherTest> done.
20:27:15 <elliott> That's not @, that's an @-shaped Linux hell.
20:27:25 <elliott> Also, @ isn't an at sign.
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:52 <AnotherTest> ^ ?
20:28:53 <Ngevd> zzo38 is the new fungot
20:28:54 <fungot> Ngevd: of course,
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:29:55 <elliott> oerjan: nah, too short
20:29:59 <AnotherTest> itidus20: do you use linux, atleast?
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:34 <elliott> oerjan: indeed
20:30:37 <elliott> *lyttle
20:30:39 <elliott> medium lytton
20:30:48 <elliott> AnotherTest: I use Linux, at least!
20:30:49 <elliott> I hate it, though.
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:33 <itidus20> ho ho ho
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:34 <elliott> :D
20:33:34 <ais523> or something else?
20:33:38 <elliott> let's go with the second one
20:33:40 <elliott> i like that
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:06 <AnotherTest> Gusy
20:35:08 <AnotherTest> *guys
20:35:14 <AnotherTest> I might have to purge my connection
20:35:17 <monqy> ok
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:52 <AnotherTest> damn
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:05 <AnotherTest> brb
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:01 <itidus20> the vortex of fluidity
20:37:04 <AnotherTest> back
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:37:29 <AnotherTest> Okay
20:37:35 <AnotherTest> now my screen is dieing
20:37:47 <AnotherTest> I hate kids playing with electromagnets
20:38:07 <AnotherTest> bye
20:38:10 -!- AnotherTest has quit (Client Quit).
20:38:14 <elliott> awesome
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:15 <itidus20> science journalism
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:18 <Phantom_Hoover> <AnotherTest> I hate kids playing with electromagnets
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:46:15 <Phantom_Hoover> itidus20, no.
20:46:24 <Phantom_Hoover> Wait, the researchers?
20:46:25 <Phantom_Hoover> Yes.
20:46:26 <Phantom_Hoover> Very.
20:47:21 <itidus20> ah ok.. i should tell the reporters
20:47:23 <itidus20> :D
20:47:26 <itidus20> i see
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:27 <Gregor> elliott: I. Uh.
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:54:10 * coppro learns agda
20:54:54 <itidus20> adventure game development?
20:55:27 <Phantom_Hoover> Where the hell does the final A come from there?
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:07 <copumpkin> yeah
20:57:11 <copumpkin> everywhere
20:57:11 <Ngevd> itidus20, yes, but with different conoctations
20:57:14 <elliott> ais523: why are you spewing out a definition?
20:57:14 <itidus20> :-D
20:57:21 <elliott> (one I don't think is entirely accurate, but anyway)
20:57:33 <itidus20> i set the wheels in motion
20:57:44 <itidus20> by my own definition
20:57:45 <ais523> elliott: I thought that at least one person wasn't sure what Agda was
20:57:51 <itidus20> he has corrected it
20:57:56 <elliott> ais523: fair enough
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:58:52 <shachaf> What *is* Agda?
20:58:52 <Phantom_Hoover> ahahahahaha no
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:18 <shachaf> Agda is a bird.
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:40 <Phantom_Hoover> ais523, with toy problems, sure.
20:59:44 <ais523> indeed
20:59:49 <shachaf> oerjan: Which theory?
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:53 <Phantom_Hoover> It's not used for formally-verified programs.
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:02 <Phantom_Hoover> It's an experimental dependently-typed language.
21:00:05 <oerjan> shachaf: that agda is named after a hen in a swedish song.
21:00:15 <itidus20> `log finland is very
21:00:19 <Phantom_Hoover> SWEEEEEEEEEDEEEEEEEEN
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:53 <itidus20> `pastelogs finland is very
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:24 <Phantom_Hoover> Hmm, OK.
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:09 <ais523> ah, I see
21:03:10 <itidus20> Gregor: i didn't have to say it in the first palce
21:03:12 <itidus20> ^place
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:39 <itidus20> ^contagion
21:03:43 <oerjan> "Queen Victoria: We are [...] amused."
21:03:56 <Ngevd> `? Ngevd
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:24 <ais523> `? Ngevd
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:34 <elliott> Truly Ngevd.
21:04:49 <Ngevd> `? Gregor
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 <Ngevd> `? fungot
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:12 <Ngevd> `? EgoBot
21:05:14 <HackEgo> EgoBot? ¯\(°_o)/¯
21:05:23 <elliott> `learn EgoBot is my arch-nemesis.
21:05:25 <HackEgo> I knew that.
21:05:38 <Ngevd> `? glogbot
21:05:40 <HackEgo> glogbot? ¯\(°_o)/¯
21:06:13 <Ngevd> `? lambdabot
21:06:15 <HackEgo> lambdabot? ¯\(°_o)/¯
21:06:33 <Ngevd> `? elliott
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:52 <HackEgo> I knew that.
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:05 <Ngevd> `? ais523
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 <Ngevd> `? itidus20
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:35 <Ngevd> `? itidus21
21:07:37 <HackEgo> itidus21 just made some instant coffee.
21:07:44 <Ngevd> `? Phantom_Hoover
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:03 <Ngevd> `? CakeProphet
21:08:05 <HackEgo> ​:>
21:08:09 <Phantom_Hoover> Dammit guys, that's not what hatheist means.
21:08:14 <itidus20> `log new to irc
21:08:20 <elliott> lifthrasiir: welcome back
21:08:20 <HackEgo> 2011-07-29.txt:21:10:24: <ais523> I assume you're new to IRC?
21:08:24 <itidus20> tch
21:08:24 <Ngevd> Did I break Hackego?
21:08:26 <itidus20> `log new to irc
21:08:28 <lifthrasiir> elliott: long time no see. heck.
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:08:44 <itidus20> i distracted him
21:08:49 <ais523> if not, what was it?
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:08 <MSleep> Doens't mean what?
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:19 <HackEgo> I knew that.
21:09:27 <elliott> I think oerjan is just making these up by now.
21:09:32 <elliott> It's just a hunch though.
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:49 <oerjan> elliott: you think?
21:09:51 <MDude> Is it jsut hat heist without a space?
21:09:51 <lifthrasiir> silly me
21:09:52 <Ngevd> `learn Taneb is not actually Ngevd, no matter what you may have heard.
21:09:54 <HackEgo> I knew that.
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:35 <elliott> I'm really good at lol.
21:10:39 <elliott> lol lol lol lol lol roflmao lo
21:10:40 <elliott> l
21:10:45 <elliott> Fuck, I messed up. :(
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:24 <itidus20> `pastelogs `log
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:39 <HackEgo> I knew that.
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:31 <elliott> is this farewell :'(
21:15:34 <itidus20> no.
21:15:38 <elliott> yay
21:15:48 <itidus20> but i should try not to actively hijack :D
21:18:31 <Ngevd> ^echo ping
21:18:32 <fungot> ping ping
21:18:37 <Ngevd> Good
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:25:21 <itidus20> and a rosetta stone of sorts
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:27:35 <ais523> and INTERCAL
21:32:17 <itidus20> like a boob about brainfuck would not do well to begin with hello world in the first chapter
21:32:21 <itidus20> ^book
21:36:18 <oerjan> now you've done it, sent everyone off thinking about boobs
21:39:16 <itidus20> hmm
21:39:25 <itidus20> how do i execute a bf program in here?
21:39:42 <oerjan> ^bf ,[.,]!Like so
21:39:42 <fungot> Like so
21:39:59 <itidus20> ^bf .
21:40:12 <itidus20> ^bf .!
21:40:18 <itidus20> ^bf ,!
21:40:24 <oerjan> itidus20: printing a zero doesn't show up in irc
21:40:29 <itidus20> ahhh
21:40:37 <oerjan> many small control characters are excluded
21:40:40 <itidus20> ^bf +++++.!
21:40:40 <fungot>
21:40:48 <itidus20> ^bf +++++++++++++++++++++.!
21:40:48 <fungot>
21:40:59 <itidus20> ^bf +++++++++++++++++++++++++++++++++++++++++++++++++++++.!
21:40:59 <fungot> 5
21:41:05 <itidus20> yay
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:41:48 <oerjan> it sort of is
21:41:54 <itidus20> ah i see
21:42:47 <pikhq_> It seperates input from the source.
21:44:02 <itidus20> ^bf ,>[,>]<.[<.]!test
21:44:02 <fungot> t
21:44:33 <itidus20> ^bf ,>[,>]<.[<.]!tesc
21:44:33 <fungot> t
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:45:06 <fungot> gnitset
21:45:42 <fizzie> ^show rev
21:45:43 <fungot> >,[>,]<[.<]
21:45:48 <itidus20> afk
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?
21:54:02 <fungot> What, no left edge?
22:00:11 <fizzie> Well, no right edge either.
22:00:18 <fizzie> (It's a loo.)
22:02:55 <itidus20> ,,.[,,.]!test2
22:02:59 <itidus20> oops
22:03:04 <itidus20> ^bf ,,.[,,.]!test2
22:03:05 <fungot> et
22:03:41 <fizzie> ^bf ,[>,]>+[>+>[<->[-]]<]>>[.>].!...what's here?
22:03:41 <fungot> ..what's here?
22:03:50 <fizzie> Round and round we go.
22:04:24 <itidus20> ^bf ,,.[,,.]!test2 apdhfognteyhhodmse
22:04:24 <fungot> et phonehome
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 <oerjan> ^bf ,[.]!a
22:10:29 <fungot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ...
22:10:48 <Gregor> !bf ,[.]!a
22:10:54 <Gregor> Yup, appears not to support !
22:11:13 <oerjan> !bf ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[.]
22:11:40 <Gregor> !bf ----[>+<----]>++.
22:11:40 <EgoBot> A
22:11:41 <Ngevd> What is EgoBot written in?
22:11:44 <Gregor> !bf ----[>+<----]>++[.]
22:11:48 <oerjan> !bf ,[.,]!hm...
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:14 <oerjan> but the other kind
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:19:12 <fizzie> That's free too.
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:25 <Ngevd> EgoEgo
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:57 <kallisti> +to
22:20:59 <fizzie> Gregor: You certainly know how to put the "ego" back in Gregor.
22:21:07 <Sgeo> ^bf +>[->],.!!
22:21:07 <fungot> !
22:21:20 <Ngevd> !bf +>[->],.!!
22:21:23 <Gregor> kallisti: AMAZING
22:21:28 <kallisti> yes
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:55 <Sgeo> Oh
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:15 <Ngevd> ^bf +[->],.!!
22:22:15 <fungot> !
22:22:28 <oerjan> Ngevd: only runs once
22:22:42 <Ngevd> ^bf +[->-],.!!
22:22:47 <fungot> ...out of time!
22:22:48 <Sgeo> ^bf +>-[>-],.!!
22:22:48 <fungot> !
22:22:57 <Gregor> kallisti: Well, and all the languages.
22:23:04 <kallisti> right
22:23:08 <Ngevd> !numberwang 1623
22:23:09 <EgoBot> That's numberwang!
22:23:14 <Sgeo> Did mine work as intended?
22:23:18 <Sgeo> ^bf >-[>-],.!!
22:23:22 <fungot> !
22:23:35 <oerjan> ^bf +>,[>-]>.!!
22:23:36 <fungot> !
22:23:36 <Sgeo> I'll take that as a no, I think
22:24:03 <Ngevd> I think mine did?
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:04 <oerjan> well that's true.
22:25:11 <oerjan> Sgeo: fizzie
22:25:21 <fizzie> ^source
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:26:18 <oerjan> or wait
22:27:04 <oerjan> well in some way
22:27:41 <oerjan> Gregor: fungot's does
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:20 <kallisti> I wonder how that happened
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:36:58 <oerjan> ompa pa
22:37:19 <Phantom_Hoover> Surely Finns don't drink vodka?
22:37:29 <fizzie> We even have a quasi-known brand.
22:37:42 <fizzie> http://en.wikipedia.org/wiki/Finlandia_Vodka
22:37:54 <Phantom_Hoover> But that stuff's 60% water!
22:38:07 <ais523> and 40% alcohol?
22:38:10 <fizzie> Yes.
22:38:13 <ais523> haha
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:38:55 <Phantom_Hoover> Better.
22:38:58 <Phantom_Hoover> ais523, um no?
22:39:01 <Phantom_Hoover> You get drunk?
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:40:03 <Phantom_Hoover> Nnnnnnno.
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:40 <kallisti> no.
23:25:45 <Phantom_Hoover> No.
23:25:49 <monqy> yes
23:25:59 <Sgeo> http://www.stationv3.com/d/20111217.html
23:26:08 <kallisti> monqy: WHAT HAVE YOU DONWE
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: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:34:22 <Phantom_Hoover> I hope you're happy.
23:34:32 <monqy> overjoyed
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:36:52 <Phantom_Hoover> olsner, see you should move to Finland??
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:44:12 <Phantom_Hoover> I forgot how terrible this is.
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:54:24 <Phantom_Hoover> Use 'Chuck', 'Norris', binary code.
23:54:45 <Phantom_Hoover> I dare you, motherfucker. I double dare you.
23:55:19 <itidus20> so instead is the 'Chuck!' 'Chuck Chuck!' 'Chuck Chuck Chuck!' [...] 'Chuck Chuck Chuck Chuck Chuck Chuck Chuck Chuck!'
23:55:41 <Phantom_Hoover> A logic language based on Chuck Norris facts.
23:57:36 <oerjan> i don't see the problem. when chuck norris programs, he obviously doesn't need more than one command.
23:58:07 <itidus20> aha
23:59:54 <ais523> hmm, what might be interesting would be an evolutionary computing language
←2011-12-16 2011-12-17 2011-12-18→ ↑2011 ↑all