←2011-07-13 2011-07-14 2011-07-15→ ↑2011 ↑all
00:00:55 <elliott> (cur) (last) 22:20, 13 July 2011 Taneb (Talk | contribs) (Replaced with new esolang)
00:00:55 <elliott> (cur) (last) 21:53, 13 July 2011 Taneb (Talk | contribs) (Numberwang moved to Numberwang (brainfuck derivative))
00:00:59 <elliott> I find this precedent disturbing
00:01:13 <elliott> I'm going to invent a language called brainfuck and move the old article away
00:01:20 <elliott> (perhaps to Brainfuck (brainfuck derivative))
00:01:54 <elliott> 21:51:26: <oerjan> motion that people stop thinking i'm a wiki admin
00:01:54 <elliott> NEVER
00:01:58 <elliott> oerjan: delete a page for me plz
00:02:35 <Phantom_Hoover> <elliott> I'm going to invent a language called brainfuck and move the old article away
00:02:44 <Phantom_Hoover> Yeah, but I told him to try it and see if anyone stopped him.
00:02:51 <elliott> I WILL STOP HIM WITH MY POWERS
00:02:54 <elliott> 22:36:07: * Rugxulo is not interested in searching months of backlogs ...
00:02:54 <elliott> 22:36:21: <Rugxulo> I probably missed some interesting stuff ... is fizzie here now? perhaps he can sum it up for me
00:03:00 <elliott> fizzie: your true purpose in life revealed.
00:03:15 <Phantom_Hoover> Oh, you're just before the gay stuff.
00:03:19 <Phantom_Hoover> Poor Taneb.
00:03:25 <elliott> My cringing is ready.
00:03:58 <elliott> 22:44:14: <Taneb> You don't know what gender I am
00:04:03 <elliott> i forget what i was giong to say
00:06:08 <elliott> 22:47:39: <Taneb> I am regretting joining this chat
00:06:08 <elliott> I am regretting reading this log.
00:08:22 -!- copumpkin has joined.
00:10:43 <elliott> 22:57:18: <oerjan> Taneb: although funnily i can only recall two people on the channel who are openly gay. (augur being one, of course.)
00:10:44 <elliott> wait who's the other I KEEP A REGISTRY
00:10:56 <augur> elliott: you, ofcourse
00:11:15 <elliott> 22:59:11: <oerjan> `addquote <augur> ive been in #haskell and #agda primarily, recently <Phantom_Hoover> So is #agda now full of dependently-typed gay sex?
00:11:15 <elliott> FOLLOW THE FUCKING RULES
00:11:19 <elliott> `delquote 503
00:11:21 <HackEgo> ​*poof*
00:11:26 <elliott> `addquote <augur> ive been in #haskell and #agda primarily, recently <Phantom_Hoover> So is #agda now full of dependently-typed gay sex?
00:11:28 <HackEgo> 503) <augur> ive been in #haskell and #agda primarily, recently <Phantom_Hoover> So is #agda now full of dependently-typed gay sex?
00:11:48 <augur> elliott: whats the rules
00:11:55 <monqy> is that a double space
00:12:16 <augur> oic
00:12:17 <monqy> I can't see because it breaks the line and I'm too lazy to adjust my terminal
00:13:13 <elliott> yes
00:15:28 <oerjan> elliott: wait what
00:15:36 <elliott> oerjan: ?
00:15:38 <elliott> the two spacing rule
00:16:11 <oerjan> elliott: it _was_ two spaces O_O
00:16:27 <oerjan> i have no idea why you didn't see that
00:16:39 <elliott> oh was it
00:16:45 <elliott> hm
00:16:46 <elliott> logs stripped it
00:16:46 <elliott> heh
00:16:56 <monqy> bad logs
00:17:57 <oerjan> elliott: also, slereah
00:18:29 <Phantom_Hoover> I pronounce 'Slereah' as 'Slerah' in my head for some reason.
00:18:42 -!- kwertii has quit (Quit: bye).
00:18:54 <Phantom_Hoover> Of course, I thought 'Fibonacci' was 'Fibocanni' for quite some time, so I'm not terribly good at that.
00:19:26 <elliott> http://esolangs.org/wiki/Nthern_archive
00:19:30 <elliott> itt: userspace
01:08:04 <Phantom_Hoover> O...K...
01:08:09 <Phantom_Hoover> I hear seagulls outside.
01:08:18 <Phantom_Hoover> This suggests that it is uncomfortably close to morning.
01:08:24 * Phantom_Hoover → sleep
01:08:26 -!- Phantom_Hoover has quit (Quit: Leaving).
01:08:34 <elliott> It's two am, you idiot.
01:29:05 -!- Sgeo_ has joined.
01:30:45 -!- Sgeo has quit (Ping timeout: 255 seconds).
01:35:49 <Sgeo_> "More than 6,000 people with pillow-related injuries check into U.S. emergency rooms every year!"
01:36:00 <Sgeo_> Thanks, I really, really, wanted to know that
01:37:18 <elliott> Do you have... pillowphobia.
01:37:36 <elliott> pobia
01:38:05 <Sgeo_> No, but I've never feared dying from pillow before
01:38:18 <elliott> and now you do
01:38:38 <quintopia> you're probably more likely to die in a pillow-related accident than by shark bite. especially if you never swim in the ocean.
01:50:46 <elliott> Guys how does Maven even work.
01:51:00 -!- hagb4rd has quit (Ping timeout: 240 seconds).
01:54:25 <oklopol> how can you "die from pillow"?
01:54:52 <oklopol> you know that thing in the movies where they put a pillow on someone's face and try to suffocate them
01:54:57 <oklopol> that doesn't work.
01:55:13 <quintopia> a pillow fight gets violent
01:55:16 <oklopol> we tried that with my ex once, but we just couldn't kill each other that way
01:55:27 <oklopol> you can just breathe through it or slightly tilt your head
01:55:32 <quintopia> you know that thing where you sneak rocks into your snowballs because you're mean
01:55:37 <quintopia> it works with pillows too
01:55:44 <oklopol> ah
01:56:04 <elliott> im a porks
01:58:03 <oerjan> `addquote <oklopol> you know that thing in the movies where they put a pillow on someone's face and try to suffocate them <oklopol> that doesn't work. <oklopol> we tried that with my ex once, but we just couldn't kill each other that way
01:58:04 <HackEgo> 504) <oklopol> you know that thing in the movies where they put a pillow on someone's face and try to suffocate them <oklopol> that doesn't work. <oklopol> we tried that with my ex once, but we just couldn't kill each other that way
02:01:54 <quintopia> oklopol: it is possible to suffocate someone with a pillow though. you have to shove it down her throat. hard. just because the movies do it wrong doesn't mean it can't be done.
02:04:52 <oklopol> well right or you could set the pillow on fire and then shoot the girl
02:18:29 -!- derrik has joined.
03:02:23 -!- azaq23 has quit (Quit: Leaving.).
03:15:54 -!- oerjan has quit (Quit: Good night).
03:22:49 -!- derrik has quit (Quit: left).
03:24:08 -!- yorick has quit (Ping timeout: 240 seconds).
03:25:23 -!- jix has quit (Ping timeout: 240 seconds).
03:28:00 -!- ralc_ has quit (Remote host closed the connection).
03:29:27 -!- jix has joined.
03:37:15 <CakeProphet> ...wait
03:37:22 <CakeProphet> what?
03:40:50 <elliott> ?
03:47:48 <oklopol> would you touch a boob that was on fire?
03:48:05 <elliott> Gregor: Debian are always right, right?
03:48:21 <pikhq_> #!/usr/bin/make -f says no.
03:48:40 <elliott> What?
03:48:59 <pikhq_> That's the first line of boilerplate in pretty much every debian/rules file.
03:49:07 <elliott> ...so?
03:49:32 <pikhq_> My point is, "Their packaging scheme is absurd."
03:49:45 <pikhq_> That's just the most easy to spot absurdity.
03:52:01 -!- yorick has joined.
03:55:06 <elliott> Gregor: OI
04:01:02 <elliott> Gah, someone else answer :P
04:01:08 <elliott> Is Apache Two a DFSGLSGLSG-ok license?
04:01:47 <pikhq_> elliott: It's DFSG, FSF, and OSI approved.
04:01:53 <pikhq_> In addition to being GPLv3 compatible.
04:02:21 <pikhq_> Really, it's only a non-copyleft license with a patent clause.
04:02:46 <elliott> THEN WHY ISN'T INTELLIJ IDEA IN DEBIAN (As someone suffering with Java, I am trying to find a tool to make it as bearable as possible, and Intellij IDEA looks well-liked :P)
04:03:31 <coppro> DFSG is pretty good
04:03:36 <pikhq_> Probably because it became free software only a couple years ago.
04:03:42 <coppro> debian packaging scheme is ridiculous
04:03:51 <elliott> Oh boy, their Linux distribution is a tar.gz.
04:03:52 <coppro> but then again, so are all packaging schemes
04:03:56 <elliott> INSTALLATION INSTRUCTIONS
04:03:56 <elliott> Unpack the idea-10.0.tar.gz file using the following command: tar xfz idea-10.0.tar.gz
04:03:56 <elliott> Run idea.sh from the bin subdirectory.
04:04:09 <pikhq_> coppro: Some more so than others.
04:04:15 <elliott> Maybe I'll just try NetBeans; that has the advantage of being packaged in my distribution.
04:04:29 <pikhq_> Most the source-based distros have at least *respectable* packaging schemes.
04:04:38 <pikhq_> s/Most t/T/
04:05:01 <elliott> (I might just stick with Eclipse if I can get a tolerable build system working with it :P)
04:05:25 <pikhq_> And I give Slackware props for simplicity, though Slackbuild scripts are way too complicated for my tastes.
04:05:50 <pikhq_> (mostly due to being *entirely standalone*)
04:07:12 <elliott> Oh, good, IDEA doesn't install globally.
04:07:19 <elliott> It... just has no installation script.
04:07:26 <CakeProphet> elliott: try Groovy
04:07:31 <elliott> That's a language.
04:07:32 -!- oklopol has quit (Ping timeout: 252 seconds).
04:07:41 <CakeProphet> (in relation to your Java suffering)
04:07:44 <elliott> It's also a fairly crappy one, but more importantly, an excruciatingly slow one.
04:08:11 <elliott> Plus I'd have to bundle the entirety of Groovy in.
04:08:13 <monqy> java? aren't there other languages that run on the jvm and can interface with java, or are they bad too, or do you really have to use java
04:08:26 <CakeProphet> groovy is one such language.
04:08:42 <elliott> monqy: I'm writing a Bukkit plugin, so it has to be JVM based; any language will add heaps to my filesize; and I don't know of any languages that run on the JVM that are sufficiently good to make this worthwhile.
04:08:44 <CakeProphet> and Clojure
04:08:53 <monqy> elliott: ah
04:09:00 <elliott> Scala is a mess. Clojure is also a mess.
04:09:08 <CakeProphet> Jython!
04:09:14 <elliott> Python is... Python.
04:09:14 <monqy> python is a mess
04:09:32 <monqy> is there a perl for jvm
04:09:39 <CakeProphet> doubt it
04:09:43 <CakeProphet> there's only one perl. :)
04:09:46 <elliott> jerl
04:09:51 <pikhq_> Jacl.
04:09:56 <CakeProphet> jaskell
04:09:58 <monqy> aren't there multiple perl6s at least
04:10:03 <elliott> <CakeProphet> there's only one perl. :)
04:10:08 <elliott> http://www.perlmonks.org/?node_id=272641
04:10:16 <monqy> right parrot
04:10:19 <elliott> rather dead now, I think
04:10:43 <monqy> what other languages exist
04:10:46 <pikhq_> elliott: http://jtcl.kenai.com/
04:10:48 <elliott> bancstar
04:10:52 <elliott> pikhq_: "lol"
04:11:01 <CakeProphet> elliott: why not just code in JVM.
04:11:08 -!- oklopol has joined.
04:11:10 <CakeProphet> like a real programer.
04:11:16 <CakeProphet> ...yes, with one m
04:11:21 <pikhq_> Or, more realistically, write your own Forth for JVM.
04:11:22 <monqy> zepto for jvm
04:11:26 <monqy> j zepto
04:11:31 <pikhq_> Jepto.
04:11:36 <elliott> WARNING: You are launching IDE using OpenJDK Java runtime
04:11:37 <monqy> no that ruins it
04:11:37 <elliott> THIS IS STRICTLY UNSUPPORTED DUE TO KNOWN PERFORMANCE AND GRAPHICS PROBLEMS
04:11:59 <elliott> ugh IDEA why are you using ugly Javaish text rendering
04:12:00 <pikhq_> ... I was unaware there was any notable difference between OpenJDK and Sun JDK.
04:12:06 <elliott> also, ugly javaish ui
04:12:12 <elliott> pikhq_: there is
04:12:19 <pikhq_> elliott: Like?
04:12:29 <monqy> known performance and graphics problems
04:12:33 <elliott> openjdk = java seven backported to work with previous java versions
04:12:39 <elliott> with a bunch of proprietary stuff rewritten
04:13:00 <CakeProphet> http://en.wikipedia.org/wiki/Category:JVM_programming_languages
04:13:38 <monqy> are any of them minimal
04:14:08 <CakeProphet> Pizza is a superset of Java.
04:14:10 <elliott> IDEA you are not being nice to me.
04:14:26 <monqy> jscheme is r4rs is r4rs any good is jscheme any good
04:14:31 <CakeProphet> with generics, function pointers, and "class cases and pattern matching (a.k.a. algebraic types)"
04:14:41 <elliott> oh, pizza == gj predecessor
04:14:51 <elliott> "It was designed by Gilad Bracha, Martin Odersky, David Stoutamire, and Philip Wadler to offer developers a smoother transition and better Java compatibility than the Pizza programming language, previously created by Odersky and Wadler."
04:14:53 <elliott> big names
04:14:54 <oklopol> pizza tastes good
04:16:32 <Sgeo_> GJ?
04:16:41 <Sgeo_> And only one I recognize is Bracha :/
04:16:42 <monqy> why is there php for jvm
04:16:53 <monqy> the only one I recognize is odersky
04:17:06 <monqy> does this make me a bad person
04:17:47 <elliott> Sgeo_: you don't recognise odersky? wadler?
04:18:02 <Sgeo_> elliott, I only recognize Bracha because of Newspeak, tbh
04:18:11 <monqy> odersky is the scala guy right
04:18:20 <monqy> if I ever knew who wadler is, I forget now
04:18:38 <elliott> monqy: odersky = creator of Scala, Wadler = populariser of monads in functional programming, populariser in general of functional programming, influential in development of Haskell, author of "Theorems for free!", which popularised the study of parametricity in functional languages
04:19:17 <CakeProphet> Larry Wall = God of teh computers
04:19:17 <monqy> sounds decent
04:19:22 <monqy> impressive
04:19:23 <elliott> CakeProphet: r u srs
04:19:31 <monqy> teh is a serious word
04:19:36 <CakeProphet> ya srsly
04:19:58 <elliott> bleh, IDEA is complex
04:20:06 <monqy> I dislike IDEs
04:20:08 <CakeProphet> what does it stand for?
04:20:16 <elliott> IDEA, I think
04:20:23 <elliott> monqy: yeah but with Java it's not an IDE so much as...
04:20:26 <elliott> monqy: the real language
04:20:36 <monqy> what
04:20:37 <CakeProphet> would it be possible to change the D to a K and make furniture puns?
04:20:45 <Sgeo_> elliott, um, it's not Smalltalk..
04:20:48 <elliott> monqy: you might see <huge class boilerplate>, but the actual language behind it is is [File → New → Class]
04:21:07 <elliott> it just erases that information after you write it, because java is stupid
04:21:11 <elliott> so you can't reify intentions
04:21:28 <monqy> can you do it with reflection
04:21:34 <elliott> that's a joke right
04:21:36 <monqy> yes
04:21:45 <monqy> I was going to continue it
04:21:49 <monqy> and make it better
04:21:53 <monqy> but then you killed it
04:21:54 <elliott> ok
04:21:57 <elliott> monqy: go on
04:21:57 <CakeProphet> basically the answer to any problem in Java is "define a class"
04:22:00 <elliott> let's pretend i said nothing
04:22:01 <monqy> I can't
04:22:02 <monqy> it's dead
04:22:04 <monqy> gone
04:22:08 <elliott> :<
04:22:23 <elliott> IntelliJ IDEA Q[ampersand]A for Eclipse Users
04:22:23 <elliott> Q: What happened to my Workspace? Where are all my projects?
04:22:23 <elliott> A: They're OK, but in a slightly different way.
04:22:34 <monqy> they're in a better place
04:22:40 <CakeProphet> they have been converted into a hilarious furniture themed interface!
04:23:01 <elliott> Q: I feel that the editor behaves differently. Am I right?
04:23:01 <elliott> A: Yes, you are.
04:23:15 <CakeProphet> these answers are so helpful.
04:24:37 <CakeProphet> all of your files are in drawers, the current file being edited is on the table. You have a handy wardrobe of tools, and you compile with the coffee cup.
04:24:59 <elliott> there's longer answers below :P
04:25:43 <elliott> IDEA what are you doing, you confuse me even more than Emacs :(
04:25:45 <monqy> CakeProphet: the homespring of ides?
04:25:56 <elliott> asterisk HOtMEfSPRIbNG
04:26:02 <monqy> I can't bother to remember that
04:26:23 <CakeProphet> elliott can always be bothered.
04:26:44 <CakeProphet> This is his youthful superpower
04:26:51 <monqy> apparently jaskell is a thing but instead of being like haskell it's weird
04:26:55 <CakeProphet> young whipper-snapper
04:27:19 <CakeProphet> Nice apparently has ideas from ML and Haskell
04:27:29 <CakeProphet> but that's all I know about it. Also I think it's dying.
04:27:48 <CakeProphet> ...I wish io wasn't dead. Such a good idea..
04:27:50 <elliott> oh god yeah jaskell
04:27:52 <elliott> we found that before
04:27:53 <elliott> it's amazing
04:28:05 <elliott> it has like, literlaly nothing to do with haskell?
04:28:05 <monqy> does anyone know what its deal is
04:28:07 <elliott> literally
04:28:10 <monqy> literally
04:28:38 <CakeProphet> There's OCaml-Java
04:29:20 <CakeProphet> Erjang, and Micro Focus JVM Visual COBOL
04:29:29 <elliott> IDEA is upsetting me
04:29:29 <CakeProphet> these are your best choices.
04:29:31 <oklopol> JOBOL
04:29:32 <monqy> like 4 java schemes, 2 java phps, 3 java clisps, two cobols, awk, ada, 2 logos, 3 luas, 2 pascals, perl6
04:29:44 <elliott> i'll write it in logo then
04:29:46 <elliott> or pascal
04:29:50 <monqy> cobol
04:29:50 <monqy> twice
04:29:52 <fizzie> <Rugxulo> I probably missed some interesting stuff ... is fizzie here now? perhaps he can sum it up for me <-- Just paste the last year of logs into Microsoft Word and use the "auto-summarize" option.
04:30:08 <CakeProphet> there's a C to JVM compiler...
04:30:08 <elliott> oh wow IDEA wasn't joking about letting you place the cursor outside of a line boundary
04:30:25 <elliott> you know what IDEA reminds me of
04:30:27 <elliott> IDEA reminds me of J
04:31:00 <monqy> I've never bothered to understand J
04:31:14 <elliott> no the other J
04:31:17 <monqy> oh
04:31:21 <CakeProphet> Alef++, a programming language inspired by Perl and Lisp.
04:31:24 <CakeProphet> Sounds good to me.
04:31:24 <elliott> J the language is awesome you sohuld understand it.
04:31:29 <monqy> CakeProphet: ahahahaha what
04:31:36 <Sgeo_> There are two Js?
04:31:44 <CakeProphet> http://en.wikipedia.org/wiki/List_of_JVM_languages
04:31:45 <monqy> I'll put J in my reading pile
04:31:51 <CakeProphet> under "New JVM languages"
04:31:56 <monqy> http://alefpp.sourceforge.net/
04:32:04 <monqy> how can a language have ++ in its name that's obscene
04:32:11 <monqy> how can a language be influenced by both perl and lisp
04:32:14 <monqy> that's obscene
04:32:40 <elliott> oh, IDEA is kind of slow when i type, prolly cause of openjdk
04:32:41 <elliott> i think
04:32:42 <elliott> that i
04:32:44 <elliott> am going to try netbeans
04:33:09 <CakeProphet> I use Eclipse for Java IDEs..
04:33:16 <elliott> me too, it sucks
04:33:27 <monqy> I remember J is related to APL and it's good for golf and it's "function-level" but that's it
04:33:29 <CakeProphet> it's the best one I've found. I don't like netbeans at all.
04:33:36 <elliott> ok it wouldn't suck if i had the patience to get the build system working
04:33:55 <CakeProphet> elliott: be a snob and use emacs for everything.
04:33:56 <monqy> investigating alef++ now
04:33:58 <elliott> monqy: it's actually a really powerful paradigm and understanding it brings a great insight into why programs in it are so short
04:34:02 <elliott> monqy: J, that is
04:34:14 <elliott> monqy: hint: J would be just as good as golf if every operator had a word-long name
04:34:39 <elliott> function-level is a misnomer, it basically just has higher-order functions (every function is an operator, functions have one or two arguments only)
04:34:40 <monqy> elliott: yeah it's on my reading pile. I read about that function-level paradigm once but I never really tried doing anything with it. I will. eventually.
04:34:46 <elliott> not full higher-order functions, just second-level
04:34:52 <elliott> but it has things like forks
04:35:17 <elliott> (unopa binopb unopc) x = (unopa x) binopb unopc x
04:35:24 <Sgeo_> Now if only the functions were even slightly possible to remember
04:35:25 <monqy> I remember there are no values things in "function-level" languages and that's it
04:35:29 <elliott> wrong
04:35:31 <elliott> that's bullshit
04:35:34 <monqy> oh
04:35:36 <elliott> Sgeo_: they are.
04:35:43 <Sgeo_> Hmm, maybe I should make an Ahnk deck thing
04:35:55 <elliott> monqy: so sum is +/%# = +/ % #
04:35:58 <elliott> % is division
04:36:02 <elliott> # is length
04:36:05 <elliott> erm
04:36:08 <elliott> monqy: mean
04:36:08 <elliott> not sum
04:36:13 <elliott> / is over (fold)
04:36:17 <monqy> mm
04:36:20 <oklopol> Sgeo_: they are hard to remember forever without making a mnemonic. they are easy to remember while you're actually reading and using it.
04:36:23 <elliott> so it's just (sum fold) divide length
04:36:23 <oklopol> *or
04:36:37 <elliott> monqy: and basically, every operation is lifted to arrays
04:36:41 <elliott> i.e. array+array does the obviousa
04:36:45 <elliott> (arrays are N-dimensional)
04:36:50 <elliott> (and fixed-size)
04:37:02 <oklopol> yes, they always have 7 elements
04:37:04 <elliott> :D
04:37:14 <elliott> monqy: basically the J approach to solving problems is to look at the problem so that everything is an array, and then you just construct the array operation out of the primitives. :)
04:37:24 <elliott> you very rarely see explicit loops or recursion of any sort
04:37:32 <monqy> yeah I need to learn this. I'll do it after I finish my busy.
04:37:32 <CakeProphet> I think they have this thing called map that kind of works like that.
04:37:37 <CakeProphet> and fold..
04:37:37 <elliott> monqy: busy is a bad thing to do.
04:37:42 <CakeProphet> and zip
04:37:46 <elliott> CakeProphet: yes, and J takes that idea to the entire language.
04:38:51 <monqy> oh right and I'm suspending my busy until I get on this alef++ thing. good time management.
04:39:17 <monqy> Why "Alef++"?
04:39:17 <monqy> Well, some day I'm bored -- no project no idea --, but magically, i Googling a magical words "Creating my own programming language", by finding, reading, and testing some Open Source projects based in Java Virtual Machine like ObjectScript, Sleep, JRuby ..., i want to create my own dynamic programming language with a design like Perl. but recently, Artificial Intelligence has attracted my curiosity by programming with Lisp.
04:39:23 <monqy> After, i decided to forge a revolutionary design for a programming language, between my imagination and (Perl, Lisp) syntax, by giving birth for Alef++.
04:39:26 <monqy> is this for serious
04:40:06 * elliott attempts to counteract the horrible with http://inamidst.com/pluvo/
04:40:17 <elliott> a Perl-influenced language that's actually interesting
04:40:45 <monqy> onto the reading pile
04:41:05 * elliott barf all over netbeans
04:41:35 <elliott> eclipse it is
04:41:47 <monqy> alef++ is, unsurprisingly, horrible
04:42:00 <elliott> "Its syntax owes much to Bash" ;; hehe, these words rarely signify goodness
04:42:03 <CakeProphet> I demand a J/Perl hybrid.
04:42:10 <CakeProphet> actually I demand that there be Perl hybrids of every language.
04:42:20 <monqy> perl/lisp oh wait
04:42:24 <elliott> perl/per
04:42:25 <elliott> l
04:42:35 <monqy> actually alef++ doesn't seem anything like lisp to me
04:42:37 <monqy> what am I missing
04:42:39 <Sgeo_> FOR THE LOVE OF ALL THAT IS HOLY WHY WOULD ANYONE WANT BASH INSPIRED SYNTAX
04:42:44 <monqy> hi sgeo
04:42:48 <elliott> Sgeo_: pluvo is actually good, shut your trap.
04:43:05 <monqy> even alef++'s website is broken wtf
04:43:09 <Sgeo_> Oh, thought we were talkig about a different language
04:43:25 <elliott> logic
04:43:39 <monqy> Alef++, is a new programming language like Perl and Lisp syntax, with a many changing in classical languages designs, her specification designed to be implemented for any VM, by default can access to any private/protected/default Java fields or methods.
04:43:55 <CakeProphet> lolwhat
04:44:00 <monqy> alef++
04:44:01 <Sgeo_> Can access any private Java field?
04:44:41 <Sgeo_> ...don't tell me encapsulation isn't enforced at the JVM level.. or is it workaround-able like in Ruby?
04:45:04 <elliott> conclusion of my java ide exxxploration: everything sucks, eclipse slightly lessso
04:45:06 <CakeProphet> I believe access modifiers are compile-time only.
04:45:20 <fizzie> CakeProphet: They definitely exist on the bytecode level in Java.
04:45:21 <CakeProphet> elliott: I have reached the same conclusion.
04:45:35 <fizzie> I vaguely recall you can go around them with the reflection API, though.
04:45:36 <CakeProphet> fizzie: oh, well, shows what I know about JVM. :P
04:46:07 <elliott> oh hey, you can configure eclipse to use less ugly tabs
04:46:40 <fizzie> http://radio.javaranch.com/val/2004/05/18/1084891793000.html "Hack any Java class using Reflection" (first Google hit on some relevant keywords)
04:46:43 * elliott configures Eclipse to automatically close tabs. good idea.
04:47:00 <monqy> okay enough alef++ for me
04:47:41 <elliott> "[X] Show affordance in hover on how to make it sticky"
04:47:42 <elliott> what
04:47:50 <CakeProphet> elliott: oh hey Pluvo looks pretty cool.
04:48:30 <elliott> i just wish Eclipse was slightly less laggy than it is
04:48:33 <CakeProphet> the syntax looks like someone mixed Haskell and Perl.
04:49:08 <monqy> a good idea
04:49:09 <CakeProphet> but I suspect this is superficial.
04:49:19 <pikhq_> "You put shit in my jelly!" "You put jelly in my shit!"
04:49:47 <monqy> syntax is good at being superficial
04:50:01 <elliott> does eclipse really rebuild every project whenever i save a file
04:50:24 <CakeProphet> monqy: superficial in some sense, but not superficial in the "unimportant" sense.
04:51:54 <monqy> it's mostly concrete syntax that invites superficial; abstract syntax is nice and structurey
04:54:07 <CakeProphet> concrete syntax is concerned with layout, abstract syntax is the structure. I think both are important.
04:54:37 <CakeProphet> one thing that makes Haskell nice is the user-defined infix operators. A small change in syntax layout that improves the coding experience.
04:55:25 <monqy> notice the subtle difference between "is" and "is good at being"/"invites"
04:56:33 <monqy> yes it's important (at least at some level), but it invites lots of concern/hype/whatever about things that really don't matter
04:56:38 <elliott> wow, Eclipse actually wraps to eighty chars by defaul
04:56:38 <elliott> t
04:57:32 <CakeProphet> monqy: depends on what you think matters. The concrete layout of the syntax is important to me, especially as the semantics become more complex.
04:59:15 <monqy> reiteration: it matters, but is, in my opinion, more prone to invite superficial nonsense than other aspects of language design
05:00:13 <coppro> elliott: awesome
05:00:35 <coppro> CakeProphet: Because a ***<>* b makes code so clear
05:00:55 <CakeProphet> ha, no, not quite.
05:01:06 <CakeProphet> I mostly prefer things to be convenient. This is why I don't like Java.
05:01:07 <elliott> coppro: "awesome"?
05:01:12 <coppro> elliott: yes
05:01:19 <elliott> coppro: i too use a vtonehundred
05:01:26 <CakeProphet> Having short infix operators composed of just a few symbols is rather convenient.
05:01:45 <coppro> elliott: 80cols is important for putting multiple files up simultaneously
05:01:59 <coppro> elliott: also reducing horizontal scan
05:02:11 <coppro> CakeProphet: Yes except all the good ones are taken
05:02:11 <elliott> this is java
05:02:17 <elliott> eightycols just makes boilerplate spread across multiple lines
05:02:22 <monqy> I dislike infix operators due to alignment/precedence/yuck issues but I don't know of anything better :(
05:02:41 <elliott> coppro: I very rarely run into wanting to name an operator a name that's already taken in Haskell
05:02:50 <elliott> I don't believe it's an issue that exists in practice
05:03:09 <elliott> The only duplicates I get are for Parsec, which has names identical to ones in Control.Applicative for backwards-compat, but they do the exact same thing as the Applicative ones
05:03:11 <elliott> So that's not even a conflict
05:03:27 <coppro> When I see code using operators like ||| or *** I cringe
05:03:35 <coppro> I don't even have a fucking clue what they are supposed to do
05:03:38 <monqy> I've used ***
05:03:38 <coppro> they're just symbols
05:03:40 <monqy> not ||| yet
05:03:49 <CakeProphet> For me it's Java syntax that mostly ruins Java for me. Semantically I actually consider somewhat elegant due to the minimalism, but the syntax is verbose and that makes simple things very inconvenient.
05:03:50 <coppro> I'd much rather `infix` operators at that point
05:03:50 <elliott> coppro: (***) is called split
05:03:54 <elliott> somehow I don't think that would enlighten you either
05:03:59 <CakeProphet> ....not that I like Java semantics, I was just comparing it to the syntax.
05:04:09 <elliott> coppro: Before you learned <language>, you didn't have a fucking clue what <anything in language> was supposed to do.
05:04:16 <elliott> Except by familiarity with things you already know.
05:04:17 <coppro> monqy: ||| is used in xmonad for composing layout strategies or whatever they call them
05:04:19 <elliott> Learning curves are not bad.
05:04:34 <monqy> coppro: oh I know (|||) from the ArrowChoice or whatever it is definition
05:04:35 <coppro> elliott: This is true
05:04:42 <monqy> coppro: (and (***) from Arrow)
05:04:48 <elliott> The only reason you could possibly think learning curves are bad is because you have rarely strayed outside your circle of knowledge, i.e. you've only used languages that are really no improvement on what you know.
05:04:49 <coppro> elliott:
05:05:12 <elliott> Programming languages are... well, languages; they should optimise for concision for powerful/general/useful/common operators.
05:05:40 <CakeProphet> see: Perl. :D
05:05:45 <coppro> *elliott: However I find that the Haskell community's treatment of abstract symbols are an unnecessary addition to the learning curve
05:05:47 <elliott> The Arrow options are pretty much as general as they come, so they have short, concise names; some of them are infix operators because any alphabetic name would either be far too long, or incomprehensible.
05:06:05 <CakeProphet> also alphabetic names for everything suck. see: Java
05:06:14 <CakeProphet> *sucks
05:06:17 <elliott> coppro: I hear that complaint a lot, but never from someone who actually uses Haskell for actual projects.
05:06:37 <elliott> I find that, usually, valid complaints are echoed from within a community; certainly for Haskell there are many valid complaints that are echoed within the community.
05:06:50 <elliott> (Actually most valid complaints about Haskell are heard /only/ within the community because they require an understanding of the language to form.)
05:07:31 <elliott> When using Haskell I basically never think "oh, these infix operators sure are a drag"; usually, replacing infix operators with alphabetic ones would make my code's structure harder to see.
05:07:33 <CakeProphet> I agree with these statements, elliott..
05:08:00 <coppro> I must congratulate you on one of the most lucid arguments I have heard you make
05:08:30 <CakeProphet> elliott: now extend the arguments to complaints about Perl, plz. :)
05:08:40 <coppro> Although I would say that part of the reason these sorts of complaints don't get heard as much within the community are that the learning curve is steep enough to discourage the people who would complain about that sort of thing
05:08:43 <elliott> Compare (f `blahBlah` g) with (f >>+ g); you may not know what (>>+) does, but you probably wouldn't know what blahBlah does either; you're pretty much going to have to look it up no matter what you do. At least with the latter, those who know the operator can more easily scan the code, because the symbols make a distinction between "branch"/"structural" elements and "leaf" elements of a tree of compositional-style code.
05:08:48 <monqy> perl is a mess end of argument
05:08:48 <coppro> CakeProphet: not on your life
05:09:37 <coppro> elliott: perhaps this is an implicit goal of the haskell community
05:09:38 <elliott> coppro: Certainly true, but the Haskell community is big enough that I feel that just about any argument should have someone arguing for it from within. For chrissakes, I even saw someone argue, on /r/haskell -- someone who actually used Haskell to write actual code -- that nobody uses the monads that aren't basically StateT IO, and that they should be removed.
05:10:24 <coppro> hahahaha
05:10:24 <CakeProphet> yeah, no one uses [] or Maybe...
05:10:44 <CakeProphet> or ->
05:10:57 <coppro> The closest thing I ever wrote to a real project in Haskell used Parsec
05:11:09 <monqy> sometime I should learn what the (-> a) monad instance means
05:11:12 <coppro> and I still consider Parsec to be one of the greatest things about Haskell
05:11:26 <elliott> coppro: Another thing on infix operations: If you read a paper about Haskell, the operators are almost universally prettied up with LaTeX along with the rest of the code,
05:11:29 <elliott> [asterisk]code.
05:11:37 <CakeProphet> f >>= g a = g (f a) a
05:11:41 <elliott> coppro: <*> is a lot nicer when you see it as "star in a circle".
05:11:43 <CakeProphet> return = const
05:11:49 <elliott> That's basically a limitation of ASCII, though.
05:12:02 <elliott> Ideally we'd write Haskell programs on whiteboards. :p
05:12:06 <monqy> I dunno; the angle bracket shape is pretty groovy
05:12:39 <elliott> Parsec is certainly a great way of showing how Haskell's abstractions help in writing actual code.
05:13:29 <CakeProphet> and also how infix operators help to make code more concise.
05:13:31 <coppro> elliott: out of curiosity, how familiar are you with category theory in the rigorous sense?
05:13:53 <elliott> coppro: Not nearly as much as I'd like to be, but learning it properly isn't on my short-term todo list.
05:13:59 <CakeProphet> *proper use of infix operators
05:14:06 <coppro> elliott: ok
05:14:29 <elliott> coppro: I feel a little twinge of disappointment in myself every time Edward Kmett posts something and I don't "get" it. :)
05:14:40 <elliott> Not "get" as in understand why the code works, but "get" in a more abstract sense.
05:14:48 <coppro> (my experience with Haskell tells me I would be best served learning proper category theory and considering Haskell to be an application of the category theory)
05:14:49 <monqy> does perl properly use infix operators, or is that just unary prefix and those wacky sigil things and whatever /// and friends are?
05:14:55 <monqy> a: no
05:15:09 <CakeProphet> monqy: a useful function is ap. ap f g = (\a -> f a (g a))
05:15:18 <elliott> coppro: There are a significant number of prominent Haskell programmers that consider the category theory relation to not actually be that useful to understanding Haskell code
05:15:33 <elliott> I wouldn't be able to say who's right, though.
05:15:33 <CakeProphet> > ap(++)show$"ap(++)show"
05:15:35 <lambdabot> "ap(++)show\"ap(++)show\""
05:15:36 <monqy> CakeProphet: S is nice, yes; I usually use (<*>) instead though
05:15:49 <elliott> But there is obviously much of Haskell that does not actually originate from category theory.
05:15:55 <monqy> and return is K
05:16:03 <elliott> There's only a handful of main abstractions from category theory to understand, I would say.
05:16:03 <CakeProphet> right.
05:16:05 <elliott> Maybe two handfuls.
05:16:24 <elliott> Does anyone know how to get Eclipse to unindent blank lines as soon as I leave them?
05:16:31 <elliott> It really irks me to have those tabs lying around.
05:16:34 <elliott> Tab characters, that is.
05:16:44 <elliott> I know that Clean Up does it, but that's another step.
05:16:56 <monqy> and I think fmap is composition
05:17:06 <monqy> can't remember anything else at the moment
05:17:09 <CakeProphet> monqy: not familiar with how <*> works for the (e ->) instnace
05:17:17 <CakeProphet> monqy: correct.
05:17:22 <elliott> :t fmap.($)
05:17:23 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
05:17:31 <elliott> ugh
05:17:37 <elliott> :t flip (flip fmap.($))
05:17:38 <lambdabot> forall a b a1. (a -> b) -> (a1 -> a) -> a1 -> b
05:18:00 <monqy> CakeProphet: (<*>) is literally ap but defined as a part of applicative functors rather than in terms of monad stuff
05:18:19 <elliott> sigh, we really need a better hierarchy for those typeclasses
05:18:36 <CakeProphet> monqy: oh, so it's identical.
05:18:48 <monqy> but <*> looks a lot nicer than `ap`
05:18:51 <CakeProphet> right.
05:19:19 <monqy> and <*> is more general, assuming someone bothered to define applicative instances for every monad
05:19:19 <CakeProphet> elliott: or perhaps something better than typeclasses..
05:19:30 <monqy> CakeProphet: perl allusion?
05:19:44 <CakeProphet> I have done no alluding to Perl....
05:20:00 <CakeProphet> or?
05:20:03 <CakeProphet> what are you talking about?
05:20:18 <monqy> I was asking if you were in the process of alluding to perl
05:20:22 <CakeProphet> oh, no.
05:20:22 <monqy> apparently not
05:20:32 <elliott> Typeclasses are pretty good.
05:20:38 <CakeProphet> no Haskell has generally figured shit out better than Perl has.
05:20:54 <CakeProphet> it would be silly to allude to Perl as a means to improve Haskell.
05:21:15 <monqy> silly is good so long as not everyone is serious
05:21:17 <elliott> <!-- WARNING: Eclipse auto-generated file.
05:21:17 <elliott> Any modifications will be overwritten.
05:21:17 <elliott> To include a user specific buildfile here, simply create one in the same
05:21:17 <elliott> directory with the processing instruction <?eclipse.ant.import?>
05:21:17 <elliott> as the first entry and export the buildfile again. -->
05:21:20 <elliott> eclipse, u r being bad.
05:21:24 <monqy> meaning of good depending on who is serious
05:21:40 <monqy> hehe ant
05:22:05 <monqy> all I know about it is it uses xml
05:22:13 <elliott> it sucks
05:22:17 <CakeProphet> if you had dynamic typing like Perl, then typeclass hierarchies wouldn't even be an issue!
05:22:31 <CakeProphet> monqy: how was that?
05:22:39 <elliott> if you had loose typing like forth, type errors wouldn't even be an issue!
05:22:46 <monqy> I've seen antfiles and heard stuff and stuff
05:22:57 <coppro> elliott: notwithstanding the dumbstupid bits of design whereby Haskell concepts don't map cleanly onto category-theoretic ones, my main issue with Haskell is simply one of comphrehending the reason each particular abstraction exists
05:23:19 <monqy> who thought xml was a good idea suited to build process definition or whatever the term is for what antfiles do
05:23:22 <CakeProphet> abstraction for the sake of abstraction, duh.
05:23:34 <elliott> coppro: I feel like "issue" places the blame unnecessarily on Haskell, since the problem seems to be mainly one of ignorance
05:23:53 <coppro> elliott: sorry, yes, that was phrased badly
05:24:04 <CakeProphet> Perl fixes all of these issues by not allowing you to define other data structures besides the ones it provides you.
05:24:17 <monqy> then it gives you oop
05:24:17 <elliott> coppro: I mean, understanding why monads are useful is pretty easy (IMO; way too much emphasis is placed on monads as being a Thing in writings about Haskell by people who don't know Haskell, which is unfortunate)
05:24:22 <coppro> and my small experience with formal category theory tells me that this is the best approach. I shall eventually follow it up with learning examples (both in mathematics and in Haskell)
05:24:36 <coppro> agreed on that point
05:24:37 <elliott> e.g. Alternative is an abstraction that is very easy to understand the use of:
05:24:40 <elliott> class Applicative f => Alternative f where
05:24:41 <elliott> empty :: f a
05:24:41 <elliott> (<|>) :: f a -> f a -> f a
05:24:41 <elliott> some :: f a -> f [a]
05:24:41 <elliott> many :: f a -> f [a]
05:24:52 <elliott> if you know Parsec, you understand Alternative's use, and can easily visualise its generalisation to failure handling of various kinds
05:25:03 <elliott> if you know the list monad, you can come up with the implementation pretty easily
05:25:29 <elliott> (well, some and many are confusing, but they have defaults)
05:25:54 <elliott> the shame with Alternative is that it's separate from Monoid and MonadPlus, sigh
05:26:11 <elliott> but I mean, sure some abstractions are difficult to see teh application of
05:26:14 <monqy> what's arrowplus' deal; I forget
05:26:17 <elliott> but it's hard to think of a solution to that other than reading a bunch of code
05:26:28 <monqy> or does it have a different name like arrowadd
05:26:40 <CakeProphet> elliott: it would be nice if the only thing that mattered was the type of the function and not the name for the purposes of being an instance, but I think that would create some ambiguity.
05:26:48 <elliott> CakeProphet: uhhhh, yeah.
05:26:49 <coppro> elliott: I'm sorry, but I have to be honest; the defintion of Alternative provides me little insight into what it does
05:26:56 <elliott> coppro: well it has documentation, I elided it
05:27:02 <elliott> coppro: it "does" nothing, it is a typeclass
05:27:11 <elliott> coppro: you've used Parsec, you know what <|> does
05:27:15 <elliott> empty is the failure value
05:27:20 <elliott> some and many are irrelevant (they have defaults)
05:27:42 <elliott> i wish i hadn't picked it now since it's part of the Great Number of Typeclasses That are Actually Just Monoids, sigh
05:27:48 <coppro> elliott: I'm lookingat the documentation
05:27:53 <elliott> the list implementation is empty = []; (<|>) = (++) btw
05:28:11 <coppro> elliott: what do some and many do?
05:28:18 <monqy> @src ArrowPlus
05:28:19 <lambdabot> Source not found. Are you on drugs?
05:28:27 <monqy> :(
05:28:37 <elliott> coppro: like I said, they're basically just library functions; they're in the typeclass so you can give them more efficient implementations
05:28:38 <CakeProphet> fungot: why is lambdabot so mean?
05:28:38 <fungot> CakeProphet: i'll bet that lurking further down the road is some sort of magic shell script that gives you ( complaints/ bugs to:
05:28:49 <elliott> they're irrelevant for this quickly-becoming-disasterous example
05:28:54 <monqy> ooh ArrowPlus is actually split up into ArrowZero and ArrowPlus
05:28:55 <monqy> snazzy
05:29:25 -!- elliott has left ("Leaving").
05:29:32 -!- elliott has joined.
05:29:42 <monqy> may your example rest in peace
05:29:53 <elliott> guh, Eclipse's generated ant build.xmls are so ugly
05:29:53 <coppro> elliott: ok let's pretend you did MonadPlus then
05:30:04 <elliott> coppro: that's just as bad.
05:30:11 <elliott> only Monoid should exist :P
05:30:20 <coppro> elliott: ok fine
05:30:30 <coppro> elliott: monoid it is
05:30:31 <elliott> (oh hey, new homestuck albums)
05:30:36 <CakeProphet> I really think that Monoid would be vastly improved by having (++) instead of mappend
05:30:39 <elliott> coppro: well, you know whawt a monoid is.
05:30:41 <elliott> presumably.c
05:30:44 <elliott> CakeProphet: hysterical raisins
05:30:48 <elliott> base sucks, get used to it :P
05:31:00 <monqy> caleskell caleskell
05:31:43 <CakeProphet> also, since monoids are pretty common, it seems expected that there would be a number of typeclasses that are supersets of Monoid.
05:31:54 <coppro> elliott: This is a real complaint about the Haskell community: They let the abstract algebra leak into 'how to program in this language' way too quickly
05:32:01 <CakeProphet> at least they use better names like (<|>) instead of mappend...
05:32:06 <monqy> CakeProphet: supersets/identical????????
05:32:11 <coppro> Thankfully I enjoy abstract algebra so I am not significantly discouraged by this
05:32:19 <monqy> CakeProphet: except requiring a different kind
05:32:28 <elliott> coppro: every other language lets sloppy engineering leak into "how to program in this language" way too quickly
05:32:55 <coppro> but for newbies, the Monoid a => Monoid (Maybe a) instance documentation is horrendous
05:32:56 <CakeProphet> monqy: well yes, some are identical. It's nice to not have to newtype for every possible monoid.
05:33:02 <coppro> (for instance)
05:33:09 <elliott> instances need documentation?
05:33:19 <CakeProphet> elliott: I think so, yes.
05:33:36 <elliott> well, some types have more than one possible instance for a typeclass
05:33:40 <elliott> but most of the time they don't
05:33:45 <elliott> so any documentation would be... boilerplate.
05:33:55 <monqy> isn't Maybe like that
05:34:03 <monqy> so there's what First and Last
05:34:05 <CakeProphet> > Just 2 `mappend` Just 3
05:34:06 <lambdabot> Ambiguous type variable `t' in the constraints:
05:34:06 <lambdabot> `Data.Monoid.Monoid t'
05:34:06 <lambdabot> ...
05:34:13 <monqy> use +++
05:34:14 <monqy> I mean
05:34:15 <monqy> ++
05:34:16 <coppro> elliott: "Lift a semigroup into Maybe forming a Monoid according to http://en.wikipedia.org/wiki/Monoid: "Any semigroup S may be turned into a monoid simply by adjoining an element e not in S and defining e*e = e and e*s = s = s*e for all s S." Since there is no "Semigroup" typeclass providing just mappend, we use Monoid instead. "
05:34:17 <monqy> bleugh
05:34:19 <monqy> :t (++)
05:34:20 <lambdabot> forall m. (Monoid m) => m -> m -> m
05:34:25 <elliott> coppro: ok, I agree that's ugly inline
05:34:42 <CakeProphet> monqy: wait, (++) = mappend? Is that standard Haskell?
05:34:46 <monqy> CakeProphet: caleskell
05:34:51 <elliott> coppro: it's wrapped in the code which is slightly better http://hackage.haskell.org/packages/archive/base/4.3.1.0/doc/html/src/Data-Monoid.html#Monoid
05:35:02 <elliott> coppro: but basically ... well
05:35:06 <elliott> coppro: ok, what you're saying is:
05:35:16 <monqy> :t (.)
05:35:17 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
05:35:20 <elliott> coppro: that documentation is not helpful for a newbie who doesn't know abstract algebra
05:35:21 <monqy> CakeProphet: caleskell
05:35:39 <elliott> which is true, but the newbie probably either doesn't want to use the instance, or will just use it without the documentation by experimentation
05:35:55 <CakeProphet> sometimes just a brief explanation of how a particular instance works would be nice.
05:36:02 <elliott> coppro: But remember that this is an API reference, not a tutorial
05:36:07 <coppro> elliott: This is true
05:36:14 <elliott> CakeProphet: tbh, I find sourcediving the quickest way to answer such wishes
05:36:21 <CakeProphet> yes, that's normally what I do.
05:36:30 <coppro> elliott: Thus it becomes apparent that knowing the abstract algebra is useful
05:36:39 <CakeProphet> still it doesn't describe intent/use-cases and such.
05:36:43 <elliott> coppro: I agree that the Haskell... "experience" for a newbie could use improvement, but on the other hand, I don't really care much about the experiences of people coming from "traditional" imperative languages.
05:37:18 <elliott> I mean, not that they're bad people or anything, I just think that "dumbing down" Haskell to make it easier for them would miss the point of Haskell
05:37:27 <CakeProphet> I didn't find Haskell to be particularly difficult to learn, at least the basics anyways.
05:37:38 <monqy> haskell wasn't difficult at all for me
05:37:48 <elliott> Not saying I want to be "elitist" about it or anything -- god I love scare quotes -- but I find, e.g. a mathematician wanting to learn Haskell a much more interesting origin to optimise for.
05:37:49 <CakeProphet> most of the learning curve is in the abstractions that are built from a fairly simple language.
05:38:13 <elliott> coppro: I also don't think that belittling "traditional" programmers by hiding the abstract algebra, etc. underpinnings of things a good idea, either.
05:38:32 <elliott> Sure, there are a lot of programmers who would dismiss it as abstract nonsense, but let's be honest, they probably wouldn't end up using Haskell anyway.
05:38:39 <coppro> elliott: true
05:39:14 <elliott> (Unfortunately this kind of we're-all-practical-and-those-guys-are-so-abstract-ho-ho superiority complex seems to be distressingly common with programmers on the internet, but well... this is the internet, everyone is an asshole.)
05:39:43 <CakeProphet> see: Perl programmers
05:39:47 <pikhq_> We're "practical" — we believe malloc is cheap and garbage collection expensive.
05:40:05 <elliott> coppro: I think your criticism is definitely valid, but at the same time I think that the Haskell community should focus on making the language nicer for existing users is more important than making it nicer for newbies, at least in the short-ish term.
05:40:08 <monqy> what do php programmers think
05:40:13 <pikhq_> monqy: Nothing.
05:40:13 <coppro> elliott: ok
05:40:15 <CakeProphet> php programmers don't think anything....
05:40:18 <pikhq_> Their heads are entirely empty.
05:40:33 <Sgeo_> Do they also have a hat full of bomb?
05:40:47 <CakeProphet> PHP programmers are programmers who are too stupid to be Perl programmers.
05:40:54 <CakeProphet> or who are paid to be PHP programmers.
05:41:04 <monqy> who pays someone to program in php
05:41:08 <CakeProphet> lots of people...
05:41:12 <CakeProphet> see: the internet
05:41:16 <coppro> elliott: One thing I wish was possible was a better way to handle cases where a single type may have multiple instances of a typeclass, as with Monoid
05:41:20 <monqy> sadist? idiot? are there other reasons?
05:41:34 <CakeProphet> like I said, money.
05:41:47 <elliott> coppro: Typeclasses are a trade-off: You avoid passing a record to every single function you're using, but you can only have one instance.
05:42:02 <CakeProphet> but really every PHP script in the world should be replaced with Perl.
05:42:11 <coppro> elliott: Well you can get around that with newtype
05:42:12 <elliott> coppro: Actually I hear that ML programmers laughed at Haskell typeclasses to start with, because "ho ho only one instance", but then it turns out that passing around records is a huge gigantic pain and typeclasses are so much more convenient.
05:42:20 <elliott> coppro: IMO, if there is more than one possible instance, either:
05:42:29 <CakeProphet> newtype newtype newtype!
05:42:34 <elliott> - There is one instance that is much more useful than the other, and the other should be provided with a newtype;
05:42:45 <elliott> - Or both are equally useful, and there should be _no_ instance for the base type, only two newtypes.
05:43:03 <elliott> It's not ideal, but usually there's only one instance you would actually want to use, so it works out.
05:43:08 <elliott> Unfortunately the latter seems to be a path not often taken.
05:43:57 <coppro> elliott: I agree in concept; I just wish the syntax was better
05:44:23 <elliott> Yeah.
05:44:31 <monqy> newtype is a pain :'(
05:44:57 <CakeProphet> Just have Monoid1, Monoid2, Monoid3, ... :)
05:45:02 <CakeProphet> what could be simpler.
05:45:18 <pikhq_> CakeProphet: Actually, not really.
05:45:21 <CakeProphet> (Note: 'everything else' is not a valid response)
05:45:22 <pikhq_> CakeProphet: There'd be only one Monoid.
05:45:44 <pikhq_> CakeProphet: There'd be ConcatList and ZipList, though.
05:46:23 <pikhq_> (note, not Monoid implementations. My brain sucks at thinking of a more relevant example.)
05:46:28 <coppro> elliott: for instance, getSum $ mconcat $ map Sum [1..10]
05:46:48 <elliott> coppro: http://hackage.haskell.org/packages/archive/newtype/0.2/doc/html/Control-Newtype.html
05:46:54 <elliott> "ala Sum"
05:47:29 <coppro> elliott: nice, didn't know about that
05:47:32 <elliott> Conor McBride: always the best?
05:47:33 <elliott> (Yes.)
05:47:38 <monqy> that does look very nice
05:48:17 <elliott> Make Ant easy with Eclipse --http://www.ibm.com/developerworks/opensource/tutorials/os-ecl-easyant/
05:48:21 <elliott> `quote have become
05:48:23 <HackEgo> 498) <fizzie> elliott: You have become the very thing you fought for!
05:48:34 <coppro> elliott: I /think/, however, you could work this into the type system somehow
05:48:34 -!- cal153 has joined.
05:48:42 <elliott> this thing is 9 pages lol
05:48:43 <coppro> elliott: perhaps I should write a paper on it, or do those exist?
05:48:55 <elliott> coppro: Probably :-P
05:48:58 -!- cal153 has quit (Client Quit).
05:49:15 <coppro> elliott: Where is a good repo of Haskell papers
05:49:53 <elliott> http://www.haskell.org/haskellwiki/Research_papers ?
05:49:57 <coppro> thanks
05:50:02 <elliott> You should basically just read anything McBride has ever written and be done with it.
05:50:26 <elliott> coppro: But really, <opinynz>a blog post would accomplish at least as much as far as whatever idea you have goes</opinynz>.
05:51:14 <coppro> elliott: sure
05:51:23 <coppro> elliott: but I can do one better with a paper
05:51:33 <coppro> if I actually go and explain detailed semantics, etc.
05:51:39 <elliott> You said "sure", then immediately contradicted yourself :)
05:51:50 <coppro> ok, fine then
05:51:51 <coppro> I disagree
05:51:53 <elliott> You can put anything you can put in a paper in a blog post :P
05:52:12 <coppro> elliott: no one wants a multipage blog post
05:52:14 * pikhq_ is not quite getting what ala Sum would do
05:52:20 <elliott> coppro: I do.
05:52:36 <elliott> coppro: This is Haskell, we expect multipage blog posts :)
05:52:46 <elliott> I'm sure most of Conal's posts count as multi-page.
05:53:11 <elliott> Some of ezyang's oto.
05:53:13 <elliott> too.
05:55:40 <pikhq_> I mean, would that "getSum $ mconcat $ map Sum [1..10]" example be written as "ala Sum (\_ -> mconcat)", or what?
05:56:07 <pikhq_> Erm, "ala Sum (\_->mconcat) [1..10]"
05:57:11 <elliott> you'd use foldMap, not mconcat
05:57:36 <monqy> :t foldMap
05:57:37 <lambdabot> Not in scope: `foldMap'
05:57:57 <monqy> @hoogle foldMap
05:57:58 <lambdabot> Data.Foldable foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m
05:57:58 <lambdabot> Data.Traversable foldMapDefault :: (Traversable t, Monoid m) => (a -> m) -> t a -> m
06:04:37 <coppro> elliott: my approach to multiple instances would be to basically allow the type system to implicitly create a complex type where multiple instances exist, and then disambiguate it later. Operations on the typeclass would be lazy and thus not performed until at least the disambiguation occurs. There's some deep type system magic that it would entail though.
06:05:04 <coppro> possibly the issues are actually unresolvable
06:05:28 <elliott> "Lazy" is way too vague in this context; what you mean is that it'd add a context like
06:05:35 <elliott> (Num Integer) => Integer -> Integer -> Integer
06:05:48 <elliott> to the disambiguated signature of (+) whenever you used + on Integer arguments, right?
06:06:02 <elliott> Where the Integer arguments there are actually the same Integer as that Num instance.
06:06:05 <elliott> It's really vague :P
06:06:08 <elliott> Maybe something like
06:06:10 <coppro> nah
06:06:13 <elliott> (Num t, t ~ Integer) => t -> t -> t
06:06:22 <coppro> I mean something like trying to make mconcat [1..10] be well-defined
06:06:29 <coppro> but useless until you perform getSum or getProduct on it
06:06:31 <elliott> :t mconcat [1..10]
06:06:32 <lambdabot> forall t. (Num t, Enum t, Monoid t) => t
06:06:35 <elliott> It is.
06:06:40 <elliott> > mconcat [1..10]
06:06:41 <lambdabot> Ambiguous type variable `a' in the constraints:
06:06:41 <lambdabot> `Data.Monoid.Monoid a'
06:06:41 <lambdabot> ...
06:06:46 <elliott> > mconcat [1..10] :: [Integer]
06:06:47 <lambdabot> No instance for (GHC.Enum.Enum [GHC.Integer.Type.Integer])
06:06:47 <lambdabot> arising from ...
06:06:52 <elliott> Meh, you can make an instance
06:07:10 <coppro> well sure you can.
06:10:00 <coppro> I think it could be done by making a type which is a supertype of Integer, Sum Integer, and Product Integer, and the underlying machinery would actually make an mconcat instance on that type. The actual evaluation semantics would depend on whether you attempt to use the result as a Sum Integer or a Product Integer; an attempt to use it as an Integer would be illegal
06:10:19 <coppro> actually wait that makes no sense
06:10:36 <elliott> :)
06:10:41 <coppro> basically I want the magic type-inference disambiguation of Num
06:10:59 <coppro> as it works on constants
06:13:10 <coppro> except applying to ambiguous applications of polymorphic functions
06:13:23 <coppro> (and this is not the same as overloading, I'll note)
06:16:22 <CakeProphet> I want Perl contexts in Haskell. :)
06:16:31 <CakeProphet> except you can define your own contexts.
06:17:22 -!- azaq23 has joined.
06:18:08 <elliott> <coppro> basically I want the magic type-inference disambiguation of Num
06:18:08 <elliott> <coppro> as it works on constants
06:18:15 <elliott> not magic; "9" simply doesn't mean "9::Integer"
06:18:21 <elliott> it means Prelude.fromInteger (9::Integer)
06:18:26 <elliott> sorry, it means Prelude.fromInteger (9::Prelude.Integer)
06:18:30 <coppro> ah
06:18:37 <elliott> there's also IsString with recent ghc and -XOverloadedStrings
06:18:40 <elliott> from Data.String
06:18:44 <elliott> that lets you overload string literals too
06:18:56 <coppro> ah ok
06:19:02 <elliott> then "x" means Data.String.fromString ("x"::Prelude.[] Char) :P
06:19:08 <coppro> it wouldn't work quite like that then
06:19:12 <elliott> it's kind of ad-hoc, but...
06:19:15 <coppro> although I guess it could
06:19:16 <coppro> hmm
06:19:25 <CakeProphet> :t fromString
06:19:25 <lambdabot> Not in scope: `fromString'
06:19:33 <CakeProphet> :t Data.String.fromString
06:19:34 <lambdabot> forall a. (Data.String.IsString a) => String -> a
06:19:57 <CakeProphet> this is a beautiful thing.
06:20:29 <CakeProphet> as that is pretty much the same thing as read.
06:20:36 <elliott> Uhh.
06:20:40 <elliott> No, no it is not.
06:20:47 <CakeProphet> :t read
06:20:48 <lambdabot> forall a. (Read a) => String -> a
06:20:51 <coppro> hmm
06:20:55 <elliott> IT HAS THE SAME TYPE OBVIOUSLY THE SAME FUNCTION OMFGWTFBQBQ
06:21:03 <elliott> For one, the argument to fromString is not expected to be a piece of valid Haskell cod.e
06:21:04 <elliott> code.
06:21:16 <CakeProphet> right, this is even better.
06:21:26 <elliott> It's...
06:21:28 <elliott> Literally completely unrelated.
06:21:33 <elliott> It is only for string types like ByteString and Text.
06:21:47 <CakeProphet> because it means I can take an arbitrary data structure, and implicitly parse a domain-specific language into that data structure.
06:21:54 <monqy> > fromString "hello" :: String
06:21:54 <lambdabot> Not in scope: `fromString'
06:21:56 <elliott> That is not what IsString is for.
06:22:00 <monqy> > Data.String.fromString "hello" :: String
06:22:01 <lambdabot> Not in scope: `Data.String.fromString'
06:22:03 <monqy> oops
06:22:04 <CakeProphet> elliott: k.
06:22:28 <CakeProphet> but there is nothing stopping this usage is there? so...
06:22:47 <elliott> CakeProphet: Yes, there is; my real-world ability to club you if you do that.
06:22:51 <elliott> Do not expect me to back down on this.
06:23:30 <CakeProphet> I don't see the harm in taking a risk here...
06:24:15 <CakeProphet> I mean, it's obviously a language extension that needs ridiculous exploiting.
06:24:39 <elliott> <elliott> hi, I know someone who thinks it's a good idea to use -XOverloadedStrings so that strings can act as a DSL for any data structure whatsoever. please give me appropriate threats to use in response. thanks
06:24:50 <elliott> #haskell is on the case
06:25:30 <monqy> incidentally he also likes perl
06:25:33 <elliott> <c_wraith> "go write perl" seems like an appropriate dismissal
06:25:35 <elliott> CakeProphet: craet
06:25:43 <elliott> caret.
06:25:49 <monqy> ^
06:27:09 <coppro> elliott: so I think this is doable within the type system, but not with the existing language constructs
06:27:39 <elliott> It's way too ad-hoc for me to support it ;D
06:28:08 <coppro> elliott: since it requires a transparent supertype
06:28:16 <elliott> Haskell has no supertyping :P
06:28:21 <elliott> Or, well, subtyping.
06:28:25 <elliott> I don't think you are using "supertype" correctly.
06:28:26 <coppro> Not explicitly
06:28:34 <elliott> You mean: data type with one type argument.
06:28:37 <coppro> No
06:28:48 <coppro> I mean "type whose set of values is a superset of the other's"
06:28:57 <elliott> Right, Haskell does not have those at all.
06:29:03 <coppro> Sure it does
06:29:04 <elliott> No.
06:29:06 <CakeProphet> elliott: I see nothing wrong with my idea.
06:29:18 <CakeProphet> in fact it is an excellent abuse of a wonderful language extension.
06:29:27 <pikhq_> CakeProphet: That's because Perl has removed your sense of taste.
06:29:36 <coppro> elliott: what type is fromInteger
06:29:40 <coppro> err sorry
06:29:49 <coppro> 0
06:29:58 <coppro> (you know what I meant the first time)
06:30:16 <CakeProphet> pikhq_: but it has given me a newfound appreciate of convenience. :)
06:30:21 <CakeProphet> *appreciation
06:30:36 <monqy> dying
06:30:43 <elliott> coppro:
06:30:43 <elliott> :t 0
06:30:44 <lambdabot> forall t. (Num t) => t
06:30:45 <CakeProphet> you haven't lived until you've died.
06:30:55 <elliott> coppro: just like the type of
06:31:00 <monqy> cool well-designed macros are like convenience except elegant
06:31:02 <monqy> woah
06:31:05 <elliott> :t (fromInteger (0::Integer) +)
06:31:06 <lambdabot> forall a. (Num a) => a -> a
06:31:07 <elliott> coppro: is that.
06:31:14 <elliott> coppro: not subtyping at all, just syntactic sugar.
06:31:16 <elliott> if you define
06:31:17 <pikhq_> CakeProphet: We're talking about a language that enforces a variant of Hungarian notation. Except more confusing.
06:31:25 <elliott> data Integer = Neg Nat | Zero | OnePlus Nat
06:31:28 <elliott> data Nat = Z | S Nat
06:31:29 <elliott> then
06:31:35 <elliott> 0 === fromInteger Zero
06:31:43 <elliott> see? nothing that even looks like subtyping
06:31:52 <monqy> template haskell sounds more pleasant than abusing overloaded strings
06:32:02 <monqy> to me
06:32:06 <CakeProphet> pikhq_: I'm not even sure if that's the right way to describe sigils.
06:32:15 <elliott> coppro: well, there is a very shallow form of subtyping; every type has _|_
06:32:18 <pikhq_> monqy: At the very least, Template Haskell is *intended for that*.
06:32:25 <elliott> coppro: typeclasses are kind of like subtyping, but only if you look at them wonky :)
06:32:36 <coppro> elliott: Yeah, every type has bottom
06:33:30 <CakeProphet> what's the fuss about? It is completely harmless to use OverloadedStrings to my own advantage.
06:33:44 <coppro> elliott: Every type that has an instance of Read also has the type of read
06:33:46 <CakeProphet> for example, in live coding, it would reduce the amount of typing required to do something.
06:33:47 <monqy> CakeProphet: I'm crying
06:33:59 <monqy> CakeProphet: itwould increase the crying
06:34:03 <elliott> coppro: category error: types don't... have types.
06:34:07 <elliott> rephrase thx
06:34:11 <elliott> (pedantic? yup, but so is this discussion :P)
06:34:17 <coppro> elliott: *value
06:34:20 <monqy> CakeProphet: just use quasiquotation or something actually meant for what you want to do
06:34:26 <elliott> coppro: that's overloading, not subtyping
06:34:31 <monqy> CakeProphet: you know about template haskell, right?
06:34:41 <monqy> right?
06:34:43 -!- azaq23 has quit (Quit: Leaving.).
06:34:51 <CakeProphet> monqy: why is the intent of a feature important when the actual utility of the feature is completely exposed for a certain use?
06:35:06 <monqy> dead
06:35:08 <elliott> i really want to ban CakeProphet from using haskell
06:35:34 <copumpkin> send him to #agda
06:35:34 <CakeProphet> monqy: and yes I know about it.
06:35:48 <Vorpal> what did he do
06:35:49 <monqy> do you know about quasiquotation specifically
06:36:02 <elliott> Vorpal: bad things.
06:36:03 <CakeProphet> if anything, the intent is a completely meaningless assertion. Call me a language anarchist, I guess. :P
06:36:09 <Vorpal> elliott, such as?
06:36:13 <monqy> perlist
06:36:26 <monqy> CakeProphet: wow are you serious
06:36:28 <CakeProphet> this has nothing to do with Perl...
06:36:38 <elliott> Vorpal: bad
06:36:47 <elliott> CakeProphet: i guess we really do need coq
06:36:56 <elliott> you actually _cannot_ trust some people to respect non-codified laws.
06:37:04 * CakeProphet was abusing Python's featured for unintended purposes before he ever learned Perl.
06:37:13 <CakeProphet> *features
06:37:15 <elliott> you're a bad person
06:37:18 <monqy> guido is crying too
06:37:20 <CakeProphet> nonsense.
06:37:32 <elliott> Vorpal: he wants to use -XOverloadedStrings to use string literals as arbitrary DSLs
06:37:42 <CakeProphet> I'm merely apathetic to the designers concerns.
06:37:45 <monqy> because quasiquotation is uncool
06:37:56 <elliott> instance IsString (IO ()) where fromString = compileAndRunWithGHC
06:37:57 <Vorpal> elliott, whoa
06:37:58 <pikhq_> CakeProphet: "Apathetic to design", more like.
06:38:03 <elliott> main = "print ()"
06:38:07 <Vorpal> elliott, what does -XOverloadedStrings do now again?
06:38:12 <elliott> Vorpal:
06:38:15 <elliott> ?src IsString
06:38:15 <lambdabot> Source not found. This mission is too important for me to allow you to jeopardize it.
06:38:16 <elliott> ugh
06:38:19 <coppro> elliott: k we're both wrong
06:38:22 <elliott> Vorpal: class IsString a where fromString :: String -> a
06:38:27 <CakeProphet> especially when they haven't implemented a means to restrict the usage to the one they intended. It is purely vapor...
06:38:28 <elliott> Vorpal: "a" == fromString ("a"::String)
06:38:33 <Vorpal> elliott, eeeer whoa
06:38:36 <elliott> Vorpal: just like integer literals are overloaded
06:38:39 <elliott> Vorpal: it's for ByteString + Text
06:38:39 <Vorpal> errrrr*
06:38:43 <elliott> + other similar packages
06:38:44 <elliott> nothing wrong with it
06:38:46 <Vorpal> elliott, nice
06:38:47 <elliott> unless you let CakeProphet near it
06:38:51 <Vorpal> elliott, I see
06:39:00 <Vorpal> elliott, yeah I can imagine where that is heading
06:39:02 <monqy> one time I read a bug report involving someone using it to embed XML
06:39:04 <monqy> it was a mess
06:39:06 <coppro> elliott: I got the relation backwards
06:39:10 <Vorpal> elliott, fits into perl though. But not haskell
06:39:15 <pikhq_> CakeProphet: You're the kind of person who would use undefined behavior in C because it works with your compiler.
06:39:25 <CakeProphet> pikhq_: no, that's different.
06:39:37 <elliott> pikhq_: the difference is that the language spec forbids that :P
06:39:58 <CakeProphet> that has actual negative consequences.
06:40:14 <elliott> being clubbed in the head is an actual negative consequence.
06:40:15 <elliott> please remember this.
06:40:19 <elliott> i can find out where y oulive.
06:40:29 <Vorpal> CakeProphet, I can sell you an iron helmet
06:40:34 <pikhq_> CakeProphet: Assume that the next person who will maintain your code is a serial murderer who knows where you live.
06:40:46 <elliott> they are (it's me)
06:40:48 <CakeProphet> why would anyone maintain my code?
06:40:50 <CakeProphet> this is silly.
06:40:55 <elliott> so i can club you
06:40:58 <CakeProphet> to be concerned with things that aren't going to happen.
06:41:22 <pikhq_> Serial murderer. Who knows where you live.
06:41:24 <Vorpal> elliott, ooh what will be required to make you maintain cfunge in the future!?
06:41:29 <coppro> elliott, pikhq_: hartnell or tennant
06:41:33 <elliott> Vorpal: loss of soul
06:41:36 <Vorpal> elliott, ah
06:41:39 <elliott> coppro: hartnellant
06:41:42 <elliott> coppro: an abomination against nature.
06:41:45 <Vorpal> elliott, who's soul?
06:41:46 <CakeProphet> elliott: if anything, you should club whoever designed OverloadedStrings
06:41:47 <elliott> Vorpal: mine.
06:41:51 <Vorpal> elliott, aaah
06:41:51 <elliott> CakeProphet: no, they were trusting.
06:41:59 <CakeProphet> why would they ever do that?
06:41:59 <coppro> elliott: no seriously I have to watch something
06:42:02 <elliott> HOW DO YOU SPLIT ECLIPSE WORKSPACES
06:42:08 <elliott> coppro: which episodes are under consideration
06:42:48 <CakeProphet> trusting anyone and everyone to use something exactly as you intended is like... writing an IRC bot with a command that executes bash outside of a sandbox.
06:42:51 <elliott> argh, i have no ide ahow you're actually meant to use workspaces.
06:42:55 <elliott> is anyone an eclipse expert.
06:43:09 <elliott> CakeProphet: how the fuck are they meant to prevent what you are trying to do?
06:43:12 <elliott> it's a strong AI problem
06:43:18 <monqy> CakeProphet: is your fascination with breaking OverloadedStrings just because you want to defy something, or do you just not know about how quasiquotation is what you really want and so much better
06:43:23 <coppro> elliott: uh.. next up for Hartnell is the Aztecs. Next up for Tennant is start of series 3
06:43:30 <pikhq_> CakeProphet: This is like complaining about the design of unsafePerformIO because someone wants to define foo = unsafePerformIO killAllOfHumanity `seq` undefined
06:43:43 <Vorpal> elliott, by defining it to be undefined behaviour
06:44:11 <elliott> coppro: Smith and Jones is, as I recall, quite good; The Aztecs sounds like it'll be cringingly sixties-racist
06:44:14 <elliott> go for tennant
06:44:35 <coppro> k
06:44:39 <CakeProphet> monqy: no, I'm not fascinated. I just see a possible use case that is pretty simple to implement, but really if I need TH I'll use that instead.
06:44:49 <coppro> on the one hand, this gets me closer to finishing the new series. on the other hand, it doesn't get me any closer to Baker
06:45:14 <pikhq_> CakeProphet: This is worse than my C lambda macros.
06:45:33 <Vorpal> pikhq_, how so
06:45:37 <coppro> elliott: why is I am the Doctor only in the 11th doctor episodes
06:46:11 <elliott> coppro: i haven't seen many of them, so i don't know what you're talking about
06:46:23 <pikhq_> Vorpal: There's already something in the language that does this, but better and doesn't involve murder!
06:46:33 <coppro> elliott: the awesome music
06:46:46 <elliott> coppro: presumably because it wasn't written until then
06:46:49 <CakeProphet> pikhq_: but unsafePerformIO doesn't have some arbitrary vaporous restriction attached to it. It is intended to break the rules where appropriate because sometimes it's a good idea.
06:47:06 <monqy> what
06:47:13 <monqy> but it does
06:47:23 <coppro> elliott: I believe I linked it to you
06:47:50 <CakeProphet> also, I'm not saying OverloadedStrings is a bad idea. I am stating the opposite.
06:47:52 <monqy> the "arbitrary vaporous restriction" is that application should be referentially transparent
06:48:28 <monqy> or however the proper terminology says it
06:48:50 <CakeProphet> that is a perfectly reasonable restriction, in that case. :)
06:49:03 <coppro> elliott: also yes it was only written by then. But it will probably go away for the twelfth :(
06:49:08 <elliott> why
06:49:20 <monqy> And what's so unreasonable about overloaded strings being supposed to represent textual data?
06:50:03 <elliott> DOES ANYONE USE ECLIPSE HALP;P
06:50:06 <monqy> no
06:50:14 <CakeProphet> because you could use it safely for other purposes.
06:50:16 <elliott> HA;LPERGKJ
06:50:26 <coppro> elliott: because it is the eleventh doctor's action theme
06:51:11 <monqy> CakeProphet: safely? If there's any sort of parsing going on, you can't check the wellformedness until runtime
06:51:17 <Vorpal> elliott, read the docs?
06:51:23 <Vorpal> elliott, try google?
06:51:45 <elliott> Vorpal: docs don't answer nebulous questions of life
06:51:51 <elliott> coppro: oh is smith retirin'
06:51:51 <monqy> I mean
06:51:55 <monqy> any parsing that might fail
06:51:55 <Vorpal> elliott, oh google does
06:51:58 <pikhq_> Yeaaah, it pretty much eliminates static guarantees.
06:52:01 <elliott> Vorpal: no i tried
06:52:14 <coppro> elliott: well he will eventually
06:52:25 <monqy> compare template haskell which is good at actually happening at compile time
06:52:32 <CakeProphet> monqy: well, not safe in that sense, no.
06:52:40 <CakeProphet> safe in the sense that it's a reasonable use...
06:52:43 <monqy> no
06:52:45 <monqy> it isn't
06:52:52 <monqy> what does reasonable mean
06:53:16 <Sgeo_> Well, hmm, maybe a (Read a) => String -> IO a?
06:53:18 <CakeProphet> sane, useful, not buggy. I don't know.
06:53:36 <Sgeo_> unsafeParse :: (Read a) => String -> IO a
06:54:15 <monqy> not sane; we already covered buggy; usefulness is covered by template haskell (or just making a function to do the parsing for you)
06:54:26 <elliott> iWantToKillAndMurderCakeProphet :: (Killing a) => a
06:54:29 <elliott> it denotes exactly the value you want
06:54:32 <elliott> in that specific situation
06:54:37 <elliott> just define an instance and off you go
06:54:47 -!- pikhq has joined.
06:54:47 <elliott> you have to state your intent to kill and murder CakeProphet to use it though
06:54:51 <elliott> HOPEFULLY THIS SHOULD BE AN ADEQUATE DETERRENT
06:55:05 <monqy> intent is meaningless
06:55:13 <elliott> monqy: but but, quasiquotation involves at least three more characters : ' CRYNIIG (
06:55:18 <elliott> [f|uck|]
06:55:59 <CakeProphet> monqy: how would calling the function explicitly eliminate the horrible possibility of a runtime error.
06:56:20 <monqy> CakeProphet: it doesn't but it eliminates a good bit of the insanity
06:56:32 <monqy> a good thing
06:56:58 -!- pikhq_ has quit (Ping timeout: 240 seconds).
06:58:09 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=how+do+i+use+eclipse+and+workspaces+and+what+is+it+and+also+should+i+have+just+one+per+like+bukkit+plugin+i+am+writing+or+multiple+in+one+or%3F%3F%3F%3F%3F%3F%3F%3F%3F%3F+FUCK+YOU+SHIT+HEAD+HELP+ME
06:58:11 <elliott> it isn't working
06:58:23 <elliott> Vorpal: help
06:58:55 <monqy> http://www.google.com/search?q=eclipse+workspaces does this help i have no clue help me help you
06:59:12 <Sgeo_> Wait, what does CakeProphet want to do? Complex value literals via overloaded strings?
06:59:18 <elliott> yes
06:59:27 <elliott> monqy: i dont .'t;,mk know
06:59:31 <elliott> im look at eclipse documentation
06:59:41 <elliott> im also cry
07:00:11 <Sgeo_> Why even use that instead of (read "Whatever")?
07:00:24 <Sgeo_> Or, um
07:00:30 <Sgeo_> Better yet, not use a string
07:00:31 <CakeProphet> because read is intended to be Haskell code!!
07:00:31 <monqy> Sgeo_: the better question is why even use that instead of template haskell
07:00:36 <elliott> Sgeo_: becaue CakeProphet is a trrible ipersonje
07:00:54 <elliott> what if i just ate my keyboard
07:01:32 <Sgeo_> CakeProphet, do you object to 60 * 60 * 24 in code?
07:01:47 <CakeProphet> basically I am thinking it would be useful as a way to describe a rhythm in a library for creating music.
07:01:55 <CakeProphet> yes, I can just define a function to do that.
07:02:00 <CakeProphet> and not use overloaded strings.
07:02:08 <elliott> [rhythm|dumf ook dumf dumf ook|]
07:02:11 <elliott> "TOO LONG"
07:02:14 <elliott> [r|dumf ook|]
07:02:26 <monqy> too long
07:02:26 <elliott> [r|damf pluk|] --> compile time error
07:02:42 <monqy> let runtime handle it
07:02:46 <elliott> monqy im crying irl how do i eworksapce
07:02:50 <CakeProphet> no, that's fine really. I just didn't consider TH as something to consider.
07:02:58 <elliott> i should try actually crying irl
07:03:01 <elliott> maybe it would help ease my suffering
07:03:17 <Sgeo_> elliott, listen to Nightmare repeatedly
07:03:28 <elliott> The welcome page is the first page you see when you first launch eclipse. Its purpose is to introduce you to the product. Welcome content will vary from one Eclipse based product to another, it typically includes an overview of the product and its features, tutorials to guide you through some basic tasks, samples to get you started, etc.
07:03:28 <elliott> There are many possible forms of welcome, ranging from simple static text to elaborate extendable multi-page presentations. The Eclipse platform and platform SDK uses a form known as Universal Welcome, which defines a common page structure, allowing several products to share the welcome space. If your product is using the Universal Welcome, you can customize its appearance using the "customize page" button. Products which use universal welcome w
07:03:28 <elliott> ill display a welcome page the first time they are restarted after new features with welcome content are installed and highlight the new welcome content.
07:03:31 <monqy> i dont even know what a workspace is whats ecluispe......
07:03:43 <elliott> monqy: ecluispe sounds like the best ide
07:03:59 <elliott> http://www.google.co.uk/search?hl=en&safe=off&q=good+java+ide&aq=f&aqi=g-c2g-b1&aql=&oq=
07:04:02 <elliott> help it still shows eclipse
07:04:05 <Sgeo_> elliott is quickly learning all the programs.
07:04:32 <elliott> imjust looking at my screen crying softly
07:04:36 <monqy> http://www.google.com/search?q=bad+java+ide hth
07:04:49 <elliott> monqy: NO STUOPD MAKING ME CRY
07:04:50 <Sgeo_> Is that "hope that" helps or "happy to help"?
07:04:51 <elliott> STOPS
07:04:55 <elliott> Java IDE ? Or should I even use Java? - YoYoGames Forums
07:05:33 <elliott> http://gaming.stackexchange.com/questions/26210/my-pet-is-a-public-menace-what-did-i-do-wrong
07:05:39 <elliott> i saw this ad on stackoverflow w/o it specifying gaming subreddit
07:05:41 <elliott> i was like wow
07:05:46 <elliott> so now im not crying any more
07:07:58 <CakeProphet> so I'm thinking it would be a good idea to write a Perl interpreter as an instance of IsString
07:08:27 <monqy> unsafePerformIO . runperl
07:08:31 <Sgeo_> CakeProphet, if by good you mean "insane". Insane isn't bad, of course, just please keep it away from regular projects
07:08:43 <monqy> don't encourage him
07:09:35 <elliott> people like IntelliJ IDEA so much
07:09:37 <Sgeo_> I'm pretty sure that at this point CakeProphet is joking
07:09:49 -!- Lymia has joined.
07:09:56 <monqy> but you responded so seriously
07:10:04 <monqy> im confused
07:10:07 <monqy> :-;
07:10:13 <elliott> what is :-;
07:10:15 <CakeProphet> but I should add that I intend all of the Perl code used with this interpreter to be referentially transparent.
07:10:18 <monqy> ;_;
07:10:31 <monqy> also ;-;
07:10:39 <Sgeo_> ....he's 100% serious. And apparently intending to use it in a project?
07:10:41 <monqy> but i hit the rwong key
07:10:50 <Sgeo_> Or, no, I'm just reading too much into that
07:11:05 <Sgeo_> But 100% serious. I'm going to have nightmares now.
07:11:26 <Sgeo_> [Note: I will not literally have nightmares due to this. I think.]
07:11:26 <elliott> yeah obviously he's serious
07:11:32 <elliott> youuve jused good logi =c to that
07:11:38 <elliott> IM GONNA PUNCH A JAVA SHIT FUCK
07:11:41 <elliott> kjnmfglhjk;tdrmknohgtreghmtrhn
07:11:49 -!- Lymee has quit (Ping timeout: 240 seconds).
07:11:52 * elliott CRYS; EXTENSIVELY;
07:11:56 * CakeProphet is always serious.
07:12:06 * CakeProphet opens Eclipse.
07:12:16 <monqy> use a preprocessor or something like that instead of an ide
07:12:16 <elliott> IntellJ IDEA. I use to have this project with some 2,000 classes and tons of libraries. I swapped from Eclipse to IntellJ, bacause I hated so much the project and I though it was Eclipse fault. The result was Idea was very slow. Workaround? I create a module and use IDEA anyway. :) Idea is awsome!! – OscarRyz Oct 1 '08 at 2:08
07:12:20 <elliott> im doint like you
07:12:25 <elliott> CakeProphet: HOW DO I USE WORKSPACES
07:12:30 <elliott> DO I USE ONE PER ACTUAL LIKE END PRODUCT
07:12:32 <elliott> OR?//////////
07:12:42 <CakeProphet> yes.
07:12:42 <elliott> IM MAKE A BUNCH OF BUKKIT PLUGINS DO I WANT ONE WORKSPACE PER PLUGIN
07:12:47 <CakeProphet> workspace = project
07:12:49 <elliott> EBCAUSE THAT SEEMS LIKE A LOT OF WORKSPOCES
07:12:57 <elliott> CakeProphet: thats clearly bull taken literally
07:13:05 <elliott> CakeProphet: because a Project is something you create inside a workspace
07:13:15 <elliott> i guess some big programs are made up of more than one project?????
07:13:15 <CakeProphet> er, not what I meant.
07:13:22 <elliott> but it feels like
07:13:23 <elliott> eclipse
07:13:27 <elliott> wants you to just use one workspace
07:13:31 <elliott> like the default is ~/workspace
07:13:37 <monqy> whats a prbleject
07:13:37 <CakeProphet> oh, right.
07:13:38 <elliott> and switching workspaces is kind of a pain???
07:13:40 <elliott> but
07:13:43 <elliott> at the ame time
07:13:46 <CakeProphet> yeah you normally only use one workspace.
07:13:49 <elliott> monqy: aksjdg
07:13:52 <CakeProphet> it's just the... location of all of your projects.
07:13:57 <elliott> CakeProphet: but thats really weird because like
07:14:02 <CakeProphet> and each plugin should have its own project probably.
07:14:04 <elliott> if you import the same builder into two separate java projects
07:14:09 <elliott> it actually renames them
07:14:13 <elliott> to have (number) after
07:14:15 <elliott> since it considers itt a conflict
07:14:16 <elliott> and im like
07:14:19 <elliott> these are completely separate
07:14:20 <elliott> why are you doing that
07:14:21 <elliott> and like
07:14:23 <elliott> if the build fails in one
07:14:28 <elliott> it bothers you whenver you make a change to another plugin
07:14:29 <elliott> and im like
07:14:35 <elliott> this is coupling these projects together way more than i want
07:14:35 <CakeProphet> ...I have never imported a builder. I'm not even sure what that means.
07:14:40 <elliott> am i meant to use two different workspaces????
07:14:45 <elliott> CakeProphet: well i said other things
07:15:26 <CakeProphet> oh you mean you're importing a package into two different projects?
07:15:38 <coppro> SEGWAYS
07:16:02 <elliott> CakeProphet: no
07:16:14 <elliott> Eclipse can't remotely be called an IDE to my opinion. Okay that's exaggerated, I know. It merely reflects my intense agony thanks to eclipse! Whatever you do, it just doesn't work! You always need to fight with it to make it do things the right way. During that time, you're not developing code which is what you're supposed to do, right? eclipse and maven integration: unreliable! Eclipse and ivy integration: unreliable. WTP: buggy buggy buggy! Ec
07:16:14 <elliott> lipse and wstl validation: buggy! It complains about not finding URL's out of the blue even though they do exist, and a few days later, without having changed them, it suddenly does find them etc etc. I Could write a frakking book about it. To answer your question: NO ECLIPSE IS NOT EVEN CLOSE THE BEST IDE!!! IntelliJ is supposed to be MUCH better!
07:16:38 <elliott> how does java
07:16:44 * elliott weep
07:16:54 <Sgeo_> elliott, why do you need an IDE again?
07:17:00 <elliott> because java
07:17:02 <elliott> sucks
07:18:01 <fizzie> I don't know what a "builder" in Eclipse-land is either; but I'd probably still at least try to put multiple plugins in the same workspace as long as there's at least something that could be shared. I wouldn't put any "serious" completely unrelated projects to the same workspace though.
07:18:16 <elliott> theres nothing that will be shared pretty much
07:18:23 <elliott> fizzie: a builder is like...
07:18:26 <elliott> if you build your project with ant
07:18:28 <elliott> then you have an ant builder
07:18:31 <elliott> and theres the built in Java Builder
07:18:33 <CakeProphet> also I believe you merge workspaces by closing Eclipse, merging the two directories, and opening Eclipse again.
07:18:35 <elliott> each project has a bunch of builders
07:18:39 <elliott> CakeProphet: no id want to split eclipse
07:19:11 <fizzie> elliott: I can see that; but I've just been using Ant without any "builders". I mean, you can run the tasks from a build.xml just like that.
07:19:20 <elliott> fizzie: that's not automatic
07:19:47 <CakeProphet> elliott: I'm sorry, you're probably want some kind of IDE to handle that for you.
07:19:55 <elliott> CakeProphet: um i mean i want to split workspaces
07:20:03 <fizzie> Yes, well, I only use the ant thing to make .jars and other sort of "releases", I don't see why that should happen automatically.
07:20:18 <elliott> fizzie: I need jars every single change because that's how bukkit plugins are packaged
07:20:29 <elliott> so i can't test without the jar being created, at all
07:20:33 <CakeProphet> elliott: as far as I know Eclipse only uses one workspace at a time...
07:20:59 <elliott> ffff
07:21:03 <elliott> i want to make a workspace into two workspaces
07:21:05 <elliott> because i put too mcuh in one
07:21:28 <CakeProphet> you could make two directories, but I don't think you can work with both workpaces at the same time.
07:21:43 <monqy> be productive make a language that compiles to java.....
07:21:44 <fizzie> elliott: It's still just one more click to run the ant task. Presumably you need to do something to reload the plugin in Bukkit too; amortized in that it's not much.
07:21:49 <monqy> just to get rid of boilerplate
07:22:02 <elliott> CakeProphet: i dont want to.
07:22:08 <monqy> it sounds much more pleasant than using an ide
07:22:13 <elliott> fizzie: i thought an ide was meant to save me work
07:22:15 <CakeProphet> well then file > switch workspaces > Other..
07:22:20 <monqy> ides are hell
07:22:22 <elliott> CakeProphet: I WANT TO SPLIT A WORKSPACE
07:22:25 <elliott> god's sake
07:22:27 <elliott> that is not hard to understand
07:22:34 <CakeProphet> elliott: man mv
07:22:39 <elliott> ffs
07:22:44 <elliott> it has metadata files with references to projects
07:22:49 <monqy> haha ides
07:22:50 <monqy> haha
07:23:00 <fizzie> elliott: "cp -a workspace anotherWorkspace"; then delete half of one, switch to the other, delete the other half?
07:23:06 <elliott> fizzie: gross, but fine
07:23:20 <monqy> then clean up the metadata?
07:23:35 <CakeProphet> find would probably be good for that.
07:23:48 <CakeProphet> deleting things, that is.
07:24:44 <fizzie> About the builder thing, I don't really know; I wouldn't want to run my horrible ant packaging mess after *every* change, just when I'm ready to test it, so I'd keep it non-automatic anyway.
07:24:48 <CakeProphet> I think you probably just want to use sh from now on instead of Eclipse...
07:24:56 <elliott> fizzie: Horrible mess = single task to create a jar
07:25:06 -!- Lymia has changed nick to Lymee.
07:25:15 <elliott> Lymee: WHAT IDE DO YOU US
07:25:16 <elliott> E
07:25:53 <fizzie> elliott: Still, it feels stupid to build a .jar every time a single file changes. But that's probably just me.
07:26:09 <elliott> fizzie: It builds the Java files whenever a file changes; why not build the .jar too?
07:26:18 <elliott> I mean, every time I save, I'm going to alt-tab, /reload, and test it; why add more steps?
07:26:22 <elliott> If I could make it automatically /reload, I would
07:27:12 <CakeProphet> you might be confusing Eclipse with something that does everything slightly tedious for you.
07:27:34 <elliott> that's called automation, yes, and it's what a computer is for.
07:27:50 <CakeProphet> well, right.
07:28:08 <CakeProphet> I'm not saying it isn't possible. I'm just Eclipse probably isn't going to do that for you.
07:28:10 -!- Taneb has joined.
07:28:15 <CakeProphet> *just saying
07:28:22 <Taneb> Hello
07:28:33 <fizzie> I tend to have to make changes to multiple files before a "thing" is ready to test, possibly because of the all-classes-in-separate-files. But anyway, I really suppose it's just my peculiarities why I don't want it to automatically keep updating the .jar file.
07:28:34 <elliott> hi
07:28:57 <fizzie> Maybe I'd feel differently if it was clever enough to actually update it instead of throwing it out and rebuilding it completely.
07:29:30 <Taneb> What does everyone think of Numberwang?
07:29:33 <elliott> I also hate how you have to re-import a builder every time it changes for the changes to take effect, sigh.
07:29:34 <elliott> Hmm...
07:29:39 <elliott> Maybe I'll just make the single build.xml build all the projects.
07:29:50 <elliott> Even though that's kind of gross.
07:30:02 <CakeProphet> sometimes programming is like surgery.
07:30:04 <elliott> fizzie: I thought you didn't know how to use Ant any other way than incrementally :-P
07:30:12 <elliott> CakeProphet: What; kind of gross?
07:30:15 <CakeProphet> yes.
07:30:24 <Taneb> What kind of gross?
07:30:56 <CakeProphet> ..the kind that makes elliott not want to do something? I don't know.
07:31:05 <fizzie> elliott: That was in the "compiling Java" context. :p
07:31:57 <CakeProphet> :t if'
07:31:57 <lambdabot> Not in scope: `if''
07:32:14 <fizzie> From the web it sounds like a builder can be "interested in" multiple projects, so having a single all-plugins builder might be possible to automatate properly.
07:32:29 <CakeProphet> @pl (\c a b -> if c then a else b)
07:32:30 <lambdabot> if'
07:32:34 <elliott> fizzie: Right; that seems like it'd have a lot of duplicated code with Ant though
07:32:36 <elliott> i.e. one per project.
07:33:07 <CakeProphet> ah, so it's not standard, pl is just telling you to define that function.
07:33:21 <elliott> ?hoogle if'
07:33:21 <lambdabot> No results found
07:33:24 <elliott> Meh
07:33:28 <fizzie> elliott: It sounds like it should be possible to re-use a single task but change some properties between the invocation of it.
07:33:48 <elliott> fizzie: Meh, possibly. It really feels like Eclipse wants me to use one workspace per project if I'm going to bring the BIG GUNS of Ant in.
07:33:50 <Taneb> You mean like a function?
07:34:06 <Taneb> With different stuff put in?
07:34:10 <elliott> Taneb: this is Ant, it lacks such civilised concepts.
07:34:26 <elliott> Oh what, is this article kidding me or does the ant builder stuff not actually have compile-on-svae.
07:34:28 <elliott> God I hate java.
07:34:47 <Sgeo_> svae
07:34:48 <fizzie> elliott: Having a separate buildfile for each plugin sounds like a lot of duplicated Ant code too, except duplicated in separate files, not in one file. Unless you go into pulling stuff in from some common file, and so on.
07:34:59 <elliott> fizzie: they all have the same build.xml
07:35:02 <elliott> So I just store it in a "common" project
07:35:07 <CakeProphet> > let if' c a b = if (c a b) then a else b in zipWith (if' (>)) [1,3,7,2,45,7,2,4,2,234,4,1,4,-4] [7,3,7,23,5,213,1,5,2356,35,24,21]
07:35:08 <lambdabot> [7,3,7,23,45,213,2,5,2356,234,24,21]
07:35:51 <CakeProphet> not really if' as pl defines it, it's more like a generalization of max and min...
07:37:12 <fizzie> Anyway, there's an <antcall> task which runs a target from the same build.xml with some defined parameters; that way you could have a single <target name="build">...</target> and then one-line <target name="plugin1"><antcall target="build"><param name="plugname" value="plugin1"/></antcall></target> per plugin. But again I don't know about hooking the Ant builder to the auto-build system.
07:37:27 <elliott> Ugh this is all so gross.
07:37:32 <fizzie> ISTR that running Ant's awfully slow (more than one second) anyway.
07:38:13 <CakeProphet> @pl (\f a b -> g (f a b) a b)
07:38:13 <lambdabot> flip flip id . (ap .) . (flip . (g .) =<<)
07:39:25 <Vorpal> <elliott> Vorpal: help <-- ?
07:39:33 <CakeProphet> > let if' c a b = if c then a else b; compareWith = flip flip id . (ap .) . (flip . (if' .) =<<) in compareWith (==) [1,3,7,2,45,7,2,4,2,234,4,1,4,-4] [7,3,7,23,5,213,1,5,2356,35,24,21]
07:39:34 <lambdabot> [7,3,7,23,5,213,1,5,2356,35,24,21]
07:41:18 <CakeProphet> @hoogle Bool -> a
07:41:18 <lambdabot> Control.Exception assert :: Bool -> a -> a
07:41:18 <lambdabot> Control.OldException assert :: Bool -> a -> a
07:41:19 <lambdabot> Control.Exception.Base assert :: Bool -> a -> a
07:41:26 <Vorpal> fizzie, I think bukkit uses maven instead
07:41:30 <Vorpal> which looks about as bad
07:41:50 <CakeProphet> elliott: yeah, unfortunately using other peoples stuff can get ugly.
07:43:03 -!- Phantom_Hoover has joined.
07:43:07 <elliott> <fizzie> ISTR that running Ant's awfully slow (more than one second) anyway.
07:43:09 <elliott> ugh
07:43:13 <elliott> Vorpal: yeah i am tempted to use maven myself
07:43:17 <Vorpal> elliott, idea for stupid esolang: generic brainfuck variant. Basically you feed a file with string->command mappings for brainfuck and a program to be translated.
07:43:37 <elliott> :D
07:43:42 <elliott> that's actually brilliant
07:43:47 <elliott> meta-turing-complete, too!
07:43:58 <Vorpal> elliott, wait what?
07:44:04 <Vorpal> meta-turing-complete?
07:44:29 <Vorpal> it is just a simple lookup table to translate, say, ook or whatever, into brainfuck, and then it is executed
07:44:32 <elliott> whoosh
07:44:45 <elliott> http://esolangs.org/wiki/Talk:Meta_Turing-complete
07:45:09 <Vorpal> oh tehz
07:45:10 <Vorpal> right
07:45:38 <CakeProphet> Vorpal: I'm in the slow process of specifying a regular expression based language that would basically be a superset of that.
07:45:48 <CakeProphet> the mapping file is the program string, the program to translate is the input string.
07:45:49 <elliott> many languages are subsets of that
07:45:53 <CakeProphet> ...yes.
07:45:56 <CakeProphet> *supersets
07:46:07 <CakeProphet> but also subsets, I guess.
07:46:23 <Vorpal> elliott, was "<elliott> that's actually brilliant" a joke too? I presume so
07:46:36 <elliott> no
07:46:38 <elliott> its hilarious
07:46:58 <Vorpal> elliott, well I lost my wiki account, you can put it up on the wiki and attribute it to me
07:47:14 <elliott> yeah but i'll actually spec it so its BY EHIRD WITH INSPIRATION FROM VORPAL
07:47:17 <elliott> MINOR INSPIRATION
07:47:19 <elliott> (REALLY MINOR)
07:47:22 <elliott> ((LIKE, HE SNEEZED))
07:47:24 <Vorpal> wait
07:47:24 <elliott> (((AT THE TIME)))
07:47:31 <Vorpal> elliott, I'll define it more
07:47:35 <Vorpal> elliott, file format:
07:47:36 <elliott> /ignore Vorpal
07:47:42 <elliott> CANT FUCKING HEAR YOU
07:47:46 <elliott> fizzie: how does maven work thx
07:47:51 <Vorpal> <bf command><space><string to be used for it>
07:47:53 <Vorpal> elliott, ^
07:48:09 <Vorpal> followed by newline
07:48:19 <elliott> http://maven.apache.org/eclipse-plugin.html HWICH DOES I USE
07:48:22 <Vorpal> elliott, that is all there is to it
07:48:33 <CakeProphet> "you should define it like this...
07:48:35 <Taneb> So, it's a brainfuck equivalent creation tool?
07:48:55 <Vorpal> Taneb, basically yes
07:48:57 <Vorpal> Taneb, :D
07:49:07 <CakeProphet> ("string to be used" -> "bf code")*
07:49:16 <CakeProphet> followed by a newline, or.. not
07:49:18 <Vorpal> CakeProphet, why that format?
07:49:19 <CakeProphet> this is the best syntax for it
07:49:23 <CakeProphet> because it is the best.
07:49:26 <Vorpal> why
07:49:39 <CakeProphet> because then it will be a subset of a language I am working on. :)
07:49:48 <Vorpal> CakeProphet, not a valid reason
07:49:55 <CakeProphet> it is the best reason..
07:50:08 <Vorpal> I suggest string := <4 byte with length of string><data>
07:50:08 <Taneb> I wonder if it would be possible to make a language using that syntax that's barely like brainfuck at all
07:50:22 <Vorpal> then the file is made up with pairs of strings
07:50:24 <Vorpal> of*
07:50:37 <elliott> it should be
07:50:42 <elliott> /string/bf code/
07:50:45 <elliott> because then it's a subset of ///
07:50:49 <Vorpal> elliott, :D
07:50:57 <elliott> wait, bf code can have comments
07:50:59 <elliott> ok then it's literally ///
07:51:18 <pikhq> elliott: Brainfuck code must have matched []
07:51:34 <Vorpal> elliott, eh the interpreter needs two inputs: language definition and program-to-translate
07:51:52 <elliott> pikhq: yeah but
07:51:56 <elliott> you can define loop equivalents with this
07:51:56 <Vorpal> elliott, hm we need to be rather advanced to do bitfuck, so that it out of the scope
07:51:57 <elliott> so
07:53:18 <Taneb> If it could output an interpreter, that would be good
07:53:45 <CakeProphet> though I might define ->* in a prelude-esque file that is equivalent to (... -> ...)*
07:55:03 <Vorpal> Taneb, hm that could work yeah
07:55:10 <elliott> Has anyone used Maven with Eclipse, I have literally become an insane.
07:55:30 <Vorpal> elliott, don't look at me. I don't use eclipse at all
07:56:17 -!- monqy has quit (Quit: hello).
07:56:51 <elliott> I blame Lymee.
07:57:15 <Vorpal> elliott, why
07:58:21 <elliott> Because she didn't tell me what IDE she uses for Bukkit development which would obviously completely solve my problems by way of expertosity.
07:58:27 <CakeProphet> okay so I have encountered a problem...
07:58:43 <CakeProphet> I don't think I can define global substition in terms of single substition and *..
07:59:01 <CakeProphet> unless single substition consumes all input up to the point of substition...
07:59:05 <CakeProphet> which is bad.
07:59:42 <Taneb> Add some sort of multiplication thing
07:59:55 <CakeProphet> well that is kind of what * is.
08:00:11 <Taneb> Oh, okay
08:00:18 <Taneb> Add some sort of wildcard thing
08:01:07 <CakeProphet> okay, so everything has a string result, numeric result, and a success or failure value. pattern* repeats pattern zero or more times until it fails. The numeric result of * is the addition of the numeric results of each subpattern invocation, and the string result is the concatenation of the subpattern's string results.
08:01:35 <CakeProphet> -> is the substition pattern. Originally I intended to make it zero-width, meaning it doesn't consume any input.
08:02:07 <CakeProphet> but if it doesn't consume input (i.e. "move forward" in the input string), then each invocation of -> within a * will start at the beginning of the input string.
08:02:21 <CakeProphet> which is inefficient and will lead to strange things happening..
08:02:35 <CakeProphet> possible infinite loops and such, which is generally not good.
08:03:16 <CakeProphet> however, if I make -> work so that it consumes all input up to the point of substition, then that means that using -> by itself will almost never happen. I will have to always enclose within a backtrack operator.
08:03:51 <CakeProphet> so I think I should define them seperately, as much as I don't want to...
08:04:03 <CakeProphet> have a -> and a ->*
08:04:26 <CakeProphet> with ->* not being defined in terms of ->
08:05:05 <elliott> I'm just gonna wait until Lymee appearss. :p
08:05:43 <CakeProphet> but I find this exceptionally lame, as the idea is that you should be able to use general-purpose combinators to do complex things with basic expressions.
08:06:46 <CakeProphet> elliott: in the meantime you should help me with this. :P
08:06:48 <elliott> no
08:07:19 <CakeProphet> but you always have good ideas for these types of problems...
08:07:50 <Taneb> Don't define -> without the backtrack operator?
08:08:17 <CakeProphet> so you're saying make -> inherently zero-width, right?
08:09:06 <Taneb> I have no idea what's going on, I'm just trying to say things so something happens
08:09:06 <Taneb> Maybe
08:09:12 <CakeProphet> ..
08:09:32 <CakeProphet> okay so basically I want to define global substition in terms of single substition (->) and *
08:09:58 <CakeProphet> but to do that I need to make -> not be zero-width..
08:10:22 <CakeProphet> because if it's zero-width then things like ('a' -> 'ab')* will loop infinitely.
08:10:58 <Taneb> You could lock text that's been substituted in this cycle
08:11:15 <CakeProphet> so I either need to change the semantic model, or change -> so that it is not zero-width but instead consumes input, which is lame because then there will be backtrack operations everywhere.
08:11:28 <elliott> CakeProphet: rename -> to => and make it not zero-width
08:11:38 <elliott> then make a->b an alias for backtrack(a=>b)
08:11:52 <CakeProphet> that's a possibility.
08:12:02 <elliott> that's the obvious possibility.
08:12:04 <elliott> :p
08:12:14 <CakeProphet> but couldn't I create some hackish semantic model?
08:12:15 <CakeProphet> lol
08:12:32 <CakeProphet> implicit shenanigans.
08:13:13 <CakeProphet> I think I would prefer --> to =>, or something.
08:13:20 <CakeProphet> because I am using => for something else. :)
08:14:19 <CakeProphet> => is a kind of variable modifier thing. The left hand side is a variable name and the right hand side is a pattern. The pattern is evaluated with the string result of the variable as the input string.
08:15:04 <CakeProphet> and the pattern modifies the contents of the variable. it's basically defined in terms of another operator that I haven't named yet.
08:15:30 <CakeProphet> I am sure this makes perfect sense to everyone.
08:16:31 <CakeProphet> ~> looks like a good name for it. left-hand sides result string is used as the input string for the right-hand pattern.
08:17:12 <Taneb> I'm seeing what the Numberwang program 0! 1! does
08:17:21 <CakeProphet> the a => b := (a = (a ~> b))
08:17:24 <CakeProphet> *then
08:17:37 <Taneb> So far, it's into its second Numberwang
08:17:59 <CakeProphet> I am finding the name Numberwang somewhat hilarious.
08:18:41 <elliott> CakeProphet: http://www.youtube.com/watch?v=qjOZtWZ56lc
08:19:36 <CakeProphet> ...what the hell is this.
08:19:49 <elliott> A sincere and legitimate British institution throughout the ages.
08:20:06 <elliott> CakeProphet: http://www.youtube.com/watch?v=-r6NY4Kl8Ms
08:20:09 <elliott> This should be enlightening.
08:21:12 <CakeProphet> these laugh track things are unnerving.
08:22:20 <CakeProphet> philosopher and magician Bertrand Russell...
08:27:31 <Taneb> Graaah! I need a numberwang debugger
08:27:34 <Taneb> And a shower
08:27:39 <Taneb> brb
08:27:46 <elliott> That's Numberwang!
08:27:47 -!- Taneb has changed nick to TanebIsNotHere.
08:31:10 <Vorpal> <elliott> CakeProphet: http://www.youtube.com/watch?v=qjOZtWZ56lc <-- like Mornington Crescent right? But even more senseless
08:31:16 <CakeProphet> @hoogle (Read a) => String -> Maybe a
08:31:16 <lambdabot> Network.CGI.Protocol maybeRead :: Read a => String -> Maybe a
08:31:16 <lambdabot> Network.CGI readCookie :: (Read a, MonadCGI m) => String -> m (Maybe a)
08:31:17 <lambdabot> Network.CGI readInput :: (Read a, MonadCGI m) => String -> m (Maybe a)
08:32:03 <CakeProphet> @hoogle String -> Bool
08:32:03 <lambdabot> Network.URI isAbsoluteURI :: String -> Bool
08:32:03 <lambdabot> Network.URI isIPv4address :: String -> Bool
08:32:03 <lambdabot> Network.URI isIPv6address :: String -> Bool
08:37:39 <CakeProphet> !addinterp numberwang haskell flip when (putStrLn "That's Numberwang!") =<< (any (all isDigit) =<< getContents)
08:37:40 <EgoBot> ​Interpreter numberwang installed.
08:37:52 <CakeProphet> !numberwang 22 34 83
08:38:21 <CakeProphet> hmmm, parse error.
08:39:53 <CakeProphet> !delinterp numberwang
08:39:54 <EgoBot> ​Interpreter numberwang deleted.
08:46:57 <TanebIsNotHere> Hello
08:47:01 -!- TanebIsNotHere has changed nick to Taneb.
08:48:15 <elliott> he;lo
08:51:04 <CakeProphet> @hoogle f (a -> f b) -> f a -> f b
08:51:04 <lambdabot> Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b
08:51:04 <lambdabot> Control.Monad (=<<) :: Monad m => (a -> m b) -> m a -> m b
08:51:04 <lambdabot> Prelude (>>=) :: Monad m => m a -> (a -> m b) -> m b
08:51:20 <CakeProphet> o rly?
08:52:47 <coppro> none of those appear to match
08:53:00 <CakeProphet> indeed not
08:54:17 <elliott> um, yes they do
08:54:23 <elliott> well, close enough :)
08:54:32 <elliott> :t (join .) . (=<<)
08:54:33 <lambdabot> forall (m :: * -> *) a a1. (Monad m) => (a1 -> m (m a)) -> m a1 -> m a
08:54:40 <elliott> :t join . (=<<)
08:54:40 <lambdabot> Occurs check: cannot construct the infinite type: m = (->) (m a)
08:54:40 <lambdabot> Probable cause: `=<<' is applied to too few arguments
08:54:41 <lambdabot> In the second argument of `(.)', namely `(=<<)'
08:54:43 <elliott> hmm wait
08:54:56 <elliott> ?pl \f x -> f >>= \f' >>=x >>= \x' -> f' x'
08:54:56 <lambdabot> (line 1, column 19):
08:54:56 <lambdabot> unexpected ">"
08:54:56 <lambdabot> expecting operator, pattern or "->"
08:55:06 <elliott> ?pl \f x -> f >>= \f' -> x >>= \x' -> f' x'
08:55:07 <lambdabot> (. (>>=)) . (>>=)
08:55:10 <elliott> heh
08:55:16 <elliott> wait hmm
08:55:19 <elliott> ?hoogle (<asterisk>)
08:55:19 <lambdabot> Parse error:
08:55:19 <lambdabot> --count=20 (<asterisk>)
08:55:19 <lambdabot> ^
08:55:20 <elliott> someone do that plz
08:56:47 <CakeProphet> @hoogle (<*>)
08:56:47 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
08:57:51 <elliott> right
08:57:55 <elliott> :t (join .) . (<asterisk>)
08:57:56 <lambdabot> parse error on input `)'
08:57:57 <elliott> someone do that also.
08:58:06 <CakeProphet> :t (join .) . (<*>)
08:58:07 <lambdabot> forall (m :: * -> *) a a1. (Monad m, Applicative m) => m (a1 -> m a) -> m a1 -> m a
08:58:36 <elliott> see
08:58:38 <elliott> now u r the planet
08:59:04 <CakeProphet> @unpl (join .) . (<*>)
08:59:04 <lambdabot> (\ d i -> (d <*> i) >>= \ e -> e)
08:59:31 <CakeProphet> ......?
08:59:38 <CakeProphet> >>= id?
08:59:40 <elliott> yes.
08:59:41 <elliott> that's join.
08:59:42 <elliott> :t join
08:59:43 <lambdabot> forall (m :: * -> *) a. (Monad m) => m (m a) -> m a
09:00:00 -!- elliott has quit (Remote host closed the connection).
09:00:10 <Vorpal> gah I was just about to ask him something
09:06:56 <CakeProphet> @pl do { f <- when <$> (any isDigit <$> return "22"); f . putStrLn $ "That's numberwang!"}
09:06:56 <lambdabot> (line 1, column 4):
09:06:56 <lambdabot> unexpected "{"
09:06:56 <lambdabot> expecting variable, "(", operator or end of input
09:07:04 <CakeProphet> aw...
09:08:48 <CakeProphet> !addinterp numberwang haskell do { f <- when <$> (any isDigit <$> getContents); f . putStrLn $ "That's numberwang!"}
09:08:49 <EgoBot> ​Interpreter numberwang installed.
09:08:52 <CakeProphet> !numberwang 22
09:09:15 <CakeProphet> I am so bad at this it's ridiculous.
09:10:59 <CakeProphet> !addinterp numberwang haskell do { c <- (any isDigit <$> getContents); when c $ putStrLn "That's numberwang!"}
09:11:00 <EgoBot> ​There is already an interpreter for numberwang!
09:11:06 <CakeProphet> !!!
09:11:10 <CakeProphet> !delinterp numberwang
09:11:10 <EgoBot> ​Interpreter numberwang deleted.
09:11:12 <CakeProphet> !addinterp numberwang haskell do { c <- (any isDigit <$> getContents); when c $ putStrLn "That's numberwang!"}
09:11:12 <EgoBot> ​Interpreter numberwang installed.
09:11:20 <CakeProphet> !numberwang I hate you 23
09:11:39 <Taneb> !numberwang 12
09:11:53 <CakeProphet> it's got a parse error...
09:12:13 <Phantom_Hoover> !addinterp ! haskell putStrLn "I really hope this works."
09:12:14 <lambdabot> Phantom_Hoover: You have 4 new messages. '/msg lambdabot @messages' to read them.
09:12:14 <EgoBot> ​Interpreter _ installed.
09:12:16 <Phantom_Hoover> !!
09:12:18 <Phantom_Hoover> !_
09:12:19 <EgoBot> I really hope this works.
09:12:21 <EgoBot> I really hope this works.
09:12:21 <Phantom_Hoover> Dammit.
09:12:25 <Phantom_Hoover> Wait, no
09:12:27 <Phantom_Hoover> !!
09:12:29 <EgoBot> I really hope this works.
09:13:04 <CakeProphet> you could speed it up by using an interpreted language, since it compiles Haskell every use.
09:13:14 <Phantom_Hoover> !delinterp !
09:13:14 <EgoBot> ​Interpreter _ deleted.
09:13:35 <CakeProphet> !delinterp numberwang
09:13:36 <EgoBot> ​Interpreter numberwang deleted.
09:15:36 <CakeProphet> !addinterp numberwang perl print q(That's numberwang!) if grep /\d/, <>
09:15:37 <EgoBot> ​Interpreter numberwang installed.
09:15:39 <CakeProphet> !numberwang 22
09:15:40 <EgoBot> That's numberwang!
09:15:43 <CakeProphet> I succumbed...
09:16:12 <Taneb> !numberwang hello
09:16:23 <Taneb> !numberwang 12
09:16:23 <EgoBot> That's numberwang!
09:16:32 <CakeProphet> I suppose a "That's not numberwang!" would be appropriate.
09:16:50 <Taneb> Or "Sorry, but Brazil isn't a vegetable!"
09:17:07 <CakeProphet> !delinterp numberwang
09:17:08 <EgoBot> ​Interpreter numberwang deleted.
09:18:00 <CakeProphet> !addinterp numberwang perl print (grep /\d/, <>)? q(That's numberwang!) : q(I'm sorry, but Brazil isn't a vegetable!)
09:18:00 <EgoBot> ​Interpreter numberwang installed.
09:18:18 <CakeProphet> !numberwang when is that?
09:18:23 <CakeProphet> ... :o
09:18:25 <Taneb> !numberwang 2
09:18:26 <EgoBot> 2
09:18:28 <CakeProphet> lol
09:18:58 <Taneb> I believe you have made an error
09:19:03 <CakeProphet> yes I believe so as well.
09:19:13 <Phantom_Hoover> http://www.reddit.com/r/Minecraft/comments/iot8b/dear_miners_and_notch_think_bigger/c25jyoh
09:19:16 <CakeProphet> !delinterp numberwang
09:19:16 <EgoBot> ​Interpreter numberwang deleted.
09:19:23 <Phantom_Hoover> Please please please tell me this person isn't right.
09:19:31 <Phantom_Hoover> Because if so I'll have to shoot every programmer ever.
09:20:02 <CakeProphet> !addinterp numberwang perl print (grep /\d/, <> ? q(That's numberwang!) : q(I'm sorry, but Brazil isn't a vegetable!))
09:20:02 <EgoBot> ​Interpreter numberwang installed.
09:20:06 -!- Nisstyre has quit (Ping timeout: 255 seconds).
09:20:07 <CakeProphet> !numberwang what is this?
09:20:12 <CakeProphet> :(
09:20:31 <CakeProphet> !numberwang 44
09:20:52 <CakeProphet> !delinterp numberwang
09:20:52 <EgoBot> ​Interpreter numberwang deleted.
09:21:11 <CakeProphet> !addinterp numberwang perl print (grep (/\d/, <>) ? q(That's numberwang!) : q(I'm sorry, but Brazil isn't a vegetable!))
09:21:11 <EgoBot> ​Interpreter numberwang installed.
09:21:15 <CakeProphet> !numberwang 44
09:21:15 <EgoBot> That's numberwang!
09:21:18 <CakeProphet> !numberwang q
09:21:19 <EgoBot> I'm sorry, but Brazil isn't a vegetable!
09:21:40 <Taneb> !numberwang I'll give you a tenner if this is Numberwang
09:21:40 <CakeProphet> yeah, I have a bad habit of not using parentheses on operators...
09:21:40 <EgoBot> I'm sorry, but Brazil isn't a vegetable!
09:23:27 <Taneb> Okay, now there's three esolangs called Numberwang
09:23:44 <Phantom_Hoover> Four, although my one doesn't count.
09:23:46 <Taneb> !numberwang 12!
09:23:46 <EgoBot> That's numberwang!
09:23:57 <CakeProphet> I guess I could have used "" instead of q() but... I'd like to think that I'm making the code more efficient by not interpolating. :)
09:24:14 <Taneb> !numberwang 12! 2! 42.4!
09:24:15 <EgoBot> That's numberwang!
09:25:00 <Taneb> Phantom_Hoover: Make your version
09:25:18 <Phantom_Hoover> Taneb, I want to, but it's not an easy task.
09:26:19 <Taneb> Just say it's imperatively functional and build from there
09:26:50 <CakeProphet> So how does one make a numberwang programming language?
09:27:24 <Taneb> Step 1: Have an idea
09:27:39 <CakeProphet> but, what makes it themed off of numberwang?
09:27:43 <Taneb> Step 2: Share idea
09:27:43 <Taneb> Step 3: Build on idea
09:27:43 <Taneb> Step 4: Publish idea
09:27:43 <Taneb> Step 5: ...
09:27:43 <Taneb> Step 6: PROPHET!
09:28:03 <Taneb> Hmm...
09:28:13 <Taneb> It's like calvinball, but with numbers
09:29:06 -!- myndzi has quit (Ping timeout: 246 seconds).
09:30:45 <fizzie> CakeProphet: You could've used '', it's literally the same as q().
09:31:08 <CakeProphet> fizzie: well, right, but I used it to escape escaping the ' in the string
09:31:11 <Taneb> My Numberwang has something that's a bit like eval(12!4.4!92!10!49.8!2!2!2!)
09:31:32 <Taneb> For the program 0!1! it's in at least 7 nested ones of those
09:32:33 <Taneb> After 14 instructions
09:33:06 -!- myndzi has joined.
09:34:52 <Taneb> I have no idea if it is Turing-Complete or not
09:35:19 <CakeProphet> I am interested in defining a language for which the halting problem is solvable, and where programs can halt or not halt.
09:35:27 <CakeProphet> obviously the halting problem is solvable for a language if it always halts...
09:36:14 <Taneb> Have all loops by definition infinite
09:36:22 <Taneb> If it has any loops, it does not halt
09:36:25 <Taneb> Otherwise, it does
09:37:29 -!- myndzi has quit (Ping timeout: 240 seconds).
09:37:46 -!- myndzi has joined.
09:38:21 <Taneb> Oh dear
09:38:22 <Taneb> Instruction 16 is a successful goto
09:38:34 <CakeProphet> Taneb: or you could have a finite loop and an infinite loop. The finite loop could not be infinite.
09:39:02 <CakeProphet> but then there's the problem of conditionals
09:39:11 <Taneb> Like, it exits after n iterations where n is finite?
09:39:14 <CakeProphet> what if you conditionally infinite loop on the input?
09:39:18 <CakeProphet> Taneb: right.
09:39:56 <Taneb> I don't think this language will be Turing-Complete
09:41:30 <CakeProphet> well, the halting problem would still be solvable with conditionals.
09:41:52 <CakeProphet> what you would do is execute the program, and when you come across an infinite loop construct then you say the program does not halt
09:41:59 <CakeProphet> if you reach the end of the program, then it does halt.
09:42:31 <CakeProphet> and the only way to not reach the end of the program would be to use an infinite loop construct.
09:42:43 -!- myndzi has quit (Ping timeout: 258 seconds).
09:43:21 <Taneb> True
09:44:09 <CakeProphet> so there'd be no conditional loop, only a conditional, a repetition loop, and an infinite loop.
09:44:45 <CakeProphet> so it probably isn't possible to implement brainfuck since you have no way to implement []
09:45:20 <Taneb> So it isn't Turing Complete
09:45:22 <CakeProphet> hmmm, well, you might be able to compile it...
09:45:37 <Taneb> Otherwise, you'd be given lots of money by Cambridge University
09:45:55 <CakeProphet> but compiling bf does not make your language turing complete.
09:46:36 <Taneb> You can compile HQ9+ into Brainfuck
09:47:41 <Taneb> Here's a almost entirely irrelevant question:
09:48:10 <CakeProphet> I wonder if you could prove that /any/ Turing complete language cannot have the halting problem solved for it.
09:48:12 <Taneb> How should a goto line number command work with non-integer values?
09:48:41 <CakeProphet> most likely by mapping each non-integer value to an integer.
09:48:57 <CakeProphet> this is what a label does essentially.
09:49:02 <Vorpal> <CakeProphet> I wonder if you could prove that /any/ Turing complete language cannot have the halting problem solved for it. <-- hm
09:49:09 <Vorpal> CakeProphet, can you explain what you mean
09:49:42 <Taneb> For any Turing-Complete language p, it is impossible to solve the halting problem
09:49:47 <Taneb> Is that statement provable?
09:50:09 <Vorpal> depends on if oracle machines can exist surely?
09:50:49 <CakeProphet> For any program p with input i in Turing-complete language l, it is impossible to solve the halting problem.
09:50:58 <CakeProphet> the input string is important.
09:51:56 <CakeProphet> the halting problem itself only asserts that you can't determine whether all programs and inputs halt or not.
09:52:03 <Vorpal> CakeProphet, well you could given a program that consists of only the symbol "halt" say that it halts.
09:52:27 <CakeProphet> right, but it also has to be turing complete.
09:52:34 <Vorpal> CakeProphet, or take C, it is trivial to say that #include <stdlib.h>\nint main(void) { return 0; } halts
09:52:44 <Taneb> I think this was why Alan Turing invented his famous machine
09:52:45 <Taneb> From Wikipedia: "Alan Turing proved in 1936 that a general algorithm to solve the halting problem for all possible program-input pairs cannot exist. A key part of the proof was a mathematical definition of a computer and program, what became known as a Turing machine. "
09:52:59 <CakeProphet> because the idea is that we want to prove that it's impossible for all turing complete languages. If we can't, then it may be possible that a Turing complete language exists for which the halting problem is solvable.
09:54:09 <Taneb> As any Turing Complete language by definition can be translated into any other
09:54:53 <Taneb> I think that we can't tell whether any program for turing complete language p will halt on input i
09:55:35 <CakeProphet> ah, yes, that makes sense.
09:56:18 <CakeProphet> so essentially the inability to determine whether an arbitrary program halts in a turing complete language is built-in to being turing complete...
09:56:23 <Taneb> I also think I need to walk my dog
09:56:23 <Taneb> Bye, everyone
09:56:23 -!- Taneb has changed nick to TanebIsNotHere.
09:56:23 -!- TanebIsNotHere has changed nick to TanebIsAway.
09:56:23 <TanebIsAway> Oh, I've dissappeared
10:00:17 -!- myndzi has joined.
10:02:49 -!- TanebIsAway has quit (Ping timeout: 240 seconds).
10:12:51 -!- tswett_ has quit (Ping timeout: 264 seconds).
10:20:00 <Vorpal> <CakeProphet> so essentially the inability to determine whether an arbitrary program halts in a turing complete language is built-in to being turing complete...
10:20:18 <Vorpal> iirc the halting problem is not solvable for some simpler models of execution either
10:39:32 <Phantom_Hoover> It's not solvable for any model of execution that allows a self interpreter, basically.
10:49:47 <Phantom_Hoover> CakeProphet, look up the proof on the Wikipedia article; it's very simple.
11:04:44 <CakeProphet> I'm surprised Wikipedia doesn't have an article on code golf
11:04:52 <CakeProphet> instead "code golf" redirects to Perl.
11:05:10 <Lymee> Not GolfScript?
11:05:41 <CakeProphet> well, I think the practice of code golfing might have originated in the Perl community, but it's since become a more general phenomenon
11:10:27 <CakeProphet> @P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{
11:10:27 <lambdabot> Unknown command, try @list
11:10:27 <CakeProphet> @p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord
11:10:27 <CakeProphet> ($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&&
11:10:27 <lambdabot> Unknown command, try @list
11:10:30 <CakeProphet> close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print
11:12:41 <CakeProphet> ''=~('(?{'.('-)@.)@_*([]@!@/)(@)@-@),@(@@+@)'
11:12:42 <CakeProphet> ^'][)@]`}`]()`@.@]@%[`}%[@`@!#@%[').',"})')
11:12:44 <CakeProphet> ...what?
11:12:57 <CakeProphet> I don't even understand how people come up with these.
11:15:37 <fizzie> What, no pack/unpack pair?
11:19:25 <CakeProphet> http://search.cpan.org/dist/Acme-EyeDrops/lib/Acme/EyeDrops.pm
11:21:49 <CakeProphet> !perl @{sub b{[@b=(abs||No,bottle.'s'x!!++$_,of,beer),on,the,wall]}b}
11:25:52 <Vorpal> !help
11:25:52 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
11:25:56 <Vorpal> hm it is there
11:30:32 -!- tswett has joined.
11:33:08 -!- Sgeo_ has quit (Read error: Connection reset by peer).
11:41:45 * CakeProphet drinks cow milk like a baby cow
11:44:21 <CakeProphet> Except I am a large bipedal furless ape.
11:46:23 <fizzie> Meh, a mammal's a mammal.
11:48:35 <CakeProphet> But as a string-parsing ape creature, I feel strange about stealing delicious fluids from mama cows.
11:48:59 <CakeProphet> so much so that I am generating strings about it. :)
11:49:36 <fizzie> For some reason I found that whole string-generation thing hilarious.
11:49:45 <fizzie> "Oh look, it's generating strings all flustered there!"
11:50:14 <fizzie> Anyway, it's the cow's fault somehow. It always is.
11:50:41 <CakeProphet> yes, because their strings do not suggest that they care.
11:51:01 <CakeProphet> they're all "moooo"
11:51:07 <fizzie> "meeeeh".
11:51:30 <fizzie> I like how one of the 18 pictures in the Mammal_Diversity_2011.png main illustration of Wikipedia's "Mammal" article is the meeting of Nixon and Brezhnev.
11:52:16 <fizzie> Diverse indeed.
11:52:47 <fizzie> Also, a cow: http://isometric.sixsided.org/data/strips/only_when_youre_ready/21.gif
11:53:24 <fizzie> (I had a dot-matrix printer rendition of that on my wall as a decoration, not more than 9 years ago.)
11:56:15 -!- oerjan has joined.
11:56:27 <fizzie> oerjan: Welcome to the cow channel.
11:56:52 <oerjan> Moo!
11:56:58 <fizzie> Correct!
11:57:07 <oerjan> yay
11:59:39 <oerjan> <fizzie> For some reason I found that whole string-generation thing hilarious.
12:00:37 <oerjan> now i am imagining sentient^Wsapient spiders communicating with silk strings
12:02:17 <fizzie> They could form... a SPIDER NETwork!
12:05:52 <oerjan> <Taneb> Step 6: PROPHET!
12:05:59 <oerjan> sounds dangerous.
12:13:41 <oerjan> 00:27:50 <CakeProphet> > let if' c a b = if (c a b) then a else b in zipWith (if' (>)) [1,3,7,2,45,7,2,4,2,234,4,1,4,-4] [7,3,7,23,5,213,1,5,2356,35,24,21]
12:13:45 <oerjan> 00:27:51 <lambdabot> [7,3,7,23,45,213,2,5,2356,234,24,21]
12:13:45 <oerjan> in fact...
12:13:47 <oerjan> 00:28:34 <CakeProphet> not really if' as pl defines it, it's more like a generalization of max and min...
12:14:09 <oerjan> > zipWith max [1,3,7,2,45,7,2,4,2,234,4,1,4,-4] [7,3,7,23,5,213,1,5,2356,35,24,21]
12:14:10 <lambdabot> [7,3,7,23,45,213,2,5,2356,234,24,21]
12:17:14 <fizzie> The zipWith Camel, a famous World War 1 era airplane.
12:24:01 <Phantom_Hoover> `addquote <fizzie> The zipWith Camel, a famous World War 1 era airplane.
12:24:04 <HackEgo> 505) <fizzie> The zipWith Camel, a famous World War 1 era airplane.
12:27:06 <fizzie> I was trying to come up with some sort of add-on, maybe a known function that sounded like "Camel" and a related pun, but failed.
12:59:56 <CakeProphet> :t zipWith (zipWith f)
12:59:57 <lambdabot> forall a b c. (Show a, Show b, SimpleReflect.FromExpr c) => [[a]] -> [[b]] -> [[c]]
13:00:48 <CakeProphet> :t zipWith zip
13:00:48 <lambdabot> forall a b. [[a]] -> [[b]] -> [[(a, b)]]
13:00:52 <CakeProphet> what else would you zip with?
13:10:58 <fizzie> :t zipWith zip3
13:10:59 <lambdabot> forall a b c. [[a]] -> [[b]] -> [[c] -> [(a, b, c)]]
13:11:02 <fizzie> A reasonable type.
13:29:41 -!- derrik has joined.
13:30:09 -!- derrik has left.
13:30:59 <CakeProphet> In 1920, H. G. Wells referred to the Mediterranean race as the Iberian race. He regarded it as a fourth subrace of the Caucasian race, along with the Aryan, Semitic, and Hamitic subraces. He stated that the main ethnic group that most purely represented the racial stock of the Iberian race was the Basques, and that the Basques were the descendants of the Cro-Magnons.
13:40:48 -!- ais523 has joined.
13:53:18 <Lymee> :t zapWith (zapWith zipWith)
13:53:19 <lambdabot> Not in scope: `zapWith'
13:53:19 <lambdabot> Not in scope: `zapWith'
13:53:27 <Lymee> :t zipWith (zipWith zipWith)
13:53:28 <lambdabot> forall a b c. [[a -> b -> c]] -> [[[a]]] -> [[[b] -> [c]]]
13:55:55 -!- Taneb has joined.
13:56:26 <Taneb> Hello!
13:57:10 <ais523> hi
13:57:13 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:02:47 <Taneb> What's happening in the world of esoteric programming?
14:03:41 <oerjan> well i think i just proved DigFill TC, see wiki
14:04:21 <ais523> I've been thinking about Anarchy again
14:05:18 <Taneb> Anarchy?
14:05:40 <ais523> it's a programming language I'm working on, possibly an esoteric one, I'm not sure (it's near the boundary)
14:05:44 <ais523> so far, just thoughts, no code
14:06:04 <ais523> it's based on algebraic data types where type constructors can mean different things at different points in the program
14:06:12 <ais523> which is a feature that's both insane, and badly missing from Haskell and OCaml
14:06:23 <oerjan> it's just one of ais523's methods to suppress thinking of fe *hit by falling anvil*
14:07:05 <Taneb> Meta type constructors?
14:07:55 <oerjan> i never m *anvil rolls on top of him again*
14:08:33 <boily> that's quite the pesky anvil...
14:08:41 <oerjan> yes.
14:15:12 <ais523> oerjan: is that a mezzacotta reference (with an indirect reference behind it)?
14:15:46 <oerjan> hm not that i recall
14:15:58 <Taneb> Everything's a mezzacotta reference
14:16:06 <Taneb> There's a lot of it to reference
14:16:14 <Taneb> It's the Turing Oracle of Webcomics
14:17:12 <oerjan> the problem is of course _finding_ the reference.
14:20:28 -!- copumpkin has joined.
14:20:28 -!- copumpkin has quit (Changing host).
14:20:28 -!- copumpkin has joined.
14:22:22 <Taneb> Why can't my German-made French-published game with Italian characters run on my Japanes-designed Chinese-made laptop with a South African OS based on a kernel designed by a Swedish speaking FInn?
14:23:06 <Taneb> The game also has Norwegian and... Argentinian? characters
14:23:29 <oerjan> ah there's the problem. the chinese currently hate the norwegians.
14:23:54 <oerjan> they _really_ didn't like the last nobel peace prize.
14:25:41 <Taneb> That explains
14:25:44 <Taneb> it
14:25:54 <Taneb> I pressed return compulsively...
14:26:30 <ais523> newline is a punctuation mark on IRC
14:26:37 <ais523> but one that several channels discourage people from using
14:26:44 <ais523> also, people tend not to be completely consistent on its meaning
14:27:36 <oerjan> it means "i despise you so much i'm going to steal your screen real estate despite not really saying much." hth.
14:27:58 * oerjan feels out of character.
14:28:25 <Taneb> But yeah, Settlers IV doesn't run on Ubuntu on my Toshiba
14:28:42 <ais523> what OS is it intended for?
14:28:46 <Taneb> Windows
14:28:55 <ais523> oerjan: wow, that was out of character for you
14:29:04 <Phantom_Hoover> Numberwang should clearly just be a stupidly computationally expensive algorithm for generating sequences of numbers.
14:29:21 <Taneb> I could think of a fix, but it's easier just to nick my brother's laptop with Windows
14:29:23 <oerjan> ais523: YOU THINK?
14:29:59 <oerjan> maybe elliott is taking over my brain. except he does the return thing too...
14:30:51 <oerjan> Phantom_Hoover: hey turing proved all computation is really just generating sequences of numbers. well, more or less.
14:31:15 <Taneb> Any data can be encoded as a sequences of ones and zeroes
14:31:42 <Phantom_Hoover> Taneb, depends on how you define 'data', I suppose.
14:32:45 <Taneb> Give me a definition that you can't
14:33:08 * oerjan gets the virtual popcorn
14:33:20 <Phantom_Hoover> Well, if you allow arbitrary reals to be data, you can't.
14:33:20 <Taneb> I'm just curious
14:33:44 <Taneb> Can you encode reals as anything, though?
14:34:02 <oerjan> a real is perfectly encodeable as a sequence of ones and zeroes. it just has to be infinite.
14:34:12 <Phantom_Hoover> oerjan, OK then, P(R).
14:34:36 <oerjan> fiendish.
14:34:54 <Phantom_Hoover> Just stick Ps on until it gets big enough.
14:37:07 <oerjan> i think if you define data as something you can extract any part of in finite time, Taneb's point may still stand.
14:37:47 <Taneb> I had a really good argument if you said something like "the feeling of happiness"
14:37:56 <Taneb> But it's no use now
14:38:06 <Taneb> And pretty... psychopathic
14:38:36 <Phantom_Hoover> Um...
14:38:43 <Taneb> Or is it sociopathic?
14:38:51 <oerjan> homeopathic
14:39:05 <Phantom_Hoover> Oh, right, that actually does make sense.
14:40:54 -!- ais523_ has joined.
14:42:33 <Taneb> Phantom_Hoover: What, homeopathy?
14:42:44 <Phantom_Hoover> No, what you said.
14:42:51 <Phantom_Hoover> I thought you'd just gone slightly mad.
14:43:06 <Taneb> Nah, not gone.
14:43:11 <Taneb> And not slightly
14:43:13 -!- ais523 has quit (Ping timeout: 255 seconds).
14:43:15 * oerjan googles for that quote again
14:45:40 <Taneb> "The next time you decide to stab me in the back, have the guts to do it to my face"?
14:45:54 <oerjan> no
14:46:06 <oerjan> "Alice: But I don't want to go among mad people.
14:46:06 <oerjan> The Cat: Oh, you can't help that. We're all mad here. I'm mad. You're mad.
14:46:06 <oerjan> Alice: How do you know I'm mad?
14:46:06 <oerjan> The Cat: You must be. Or you wouldn't have come here.
14:46:07 <oerjan> "
14:46:11 <Phantom_Hoover> Who's stabbing who in the back?
14:46:23 <oerjan> i was trying to find a version without line breaks, but i gave up
14:46:28 <Taneb> Jayne Cobb and Captain Mal Reynolds
14:46:32 <Phantom_Hoover> If there's any backstabbing going on, I want to be in on it.
14:46:39 <Phantom_Hoover> Oh god not Firefly.
14:47:54 <Taneb> That'll be the last Firefly I quote, I promis
14:47:57 <Taneb> e
14:50:37 * oerjan does his regular thursday taneb stalking
14:50:46 -!- ais523_ has changed nick to ais253.
14:50:49 -!- ais253 has changed nick to ais523.
14:50:55 <ais523> wow, someone else has ais253 registered
14:51:01 <ais523> stop registering typos of my name, ais253!
14:51:07 <oerjan> ais523: wat
14:51:13 <Taneb> Maybe it's you?
14:51:18 <ais523> haha, I know who it is, too
14:51:27 <ais523> it's someone I know from another channel, they must have set that up to troll me
14:52:00 <oerjan> i wonder if e has ever been here without us noticing it...
14:52:27 <Taneb> Just got a 416 error on the wiki
14:52:32 <Taneb> Recent Changes page
14:52:55 <oerjan> it sometimes gets a bit flaky
14:53:02 <Taneb> Never had one of those before
14:53:06 <Phantom_Hoover> Taneb, the internet is collapsing around you.
14:53:11 <Phantom_Hoover> Civilisation is at its end.
14:53:24 <oerjan> loads for me
14:53:28 <Phantom_Hoover> We are actually just chatbots to keep you occupied until you can fulfil your purpose.
14:53:39 <Taneb> 4xx errors are client-side
14:53:40 <ais523> what does 416 even mean?
14:53:50 <Taneb> "Requested Range Not Satisfiable"
14:54:02 <Taneb> Something to do with asking for stuff after EOF or something
14:55:53 <Taneb> It's just the recent changes page
14:57:53 <Taneb> Hang on
14:57:58 <Taneb> My purpose?
14:58:13 <oerjan> Your Destiny
14:58:22 <Taneb> Does it come with a sword?
14:58:40 <oerjan> either that, or a spaceship, i'm not sure which.
14:58:56 <Taneb> Oh, like in Arthur King of Space and Time?
14:59:04 <oerjan> or possibly, a horse and a gun.
14:59:51 <oerjan> if you discover it is a laser sword and a space horse, run away as fast as you can.
15:00:42 <Taneb> I'll keep that in mind
15:03:20 <cheater_> wtf
15:03:25 <cheater_> eiffel in gmail ads
15:03:56 <Phantom_Hoover> oerjan, on the space horse?
15:04:20 <oerjan> Phantom_Hoover: i'd not recommend that. at least unless you also have a space suit.
15:04:32 <Taneb> Or a terraformed planet
15:04:56 <oerjan> well the trouble here, you see, is keeping the horse _on_ the planet
15:05:12 <Phantom_Hoover> Taneb, what, you mean I ride away on my space horse on a terraformed planet.
15:10:15 <Taneb> Here's a problem: Is Taneb's Numberwang Turing Complete?
15:10:57 <Taneb> I suspect it is
15:11:05 <CakeProphet> That's numberwang!
15:13:11 -!- augur has quit (Remote host closed the connection).
15:14:23 <Taneb>
15:14:28 * oerjan makes it a table so he doesn't need to scroll
15:17:38 <oerjan> hm digital root, so there is a fundamental mod 9 operation in most cases
15:17:52 <Taneb> And a subsequent mod 4
15:18:24 <oerjan> what precisely is "the value of the current command" in command 2?
15:18:57 <Taneb> If your program was 0, 7, 2, and you were on the 7, it would be 7
15:19:16 <oerjan> ok so before any of that summing and moduloing stuff
15:19:42 <Taneb> Yeah
15:20:01 <oerjan> i was a little confused by the "this value" a bit above that, which means something else
15:20:34 <oerjan> (and can only be 1-9 afaict)
15:20:58 <Taneb> I use the word value to mean three different things
15:21:07 <Taneb> I think I'll change the second to number
15:25:43 <oerjan> i think this will not be too hard if you make sure all jumps are by multiples of 9, so the step number is always in synch with the position
15:27:00 <CakeProphet> oerjan: I have encountered a problem involving my regular expression language I would like to submit to you..
15:27:27 <oerjan> argh, i mean hm?
15:28:23 <oerjan> Taneb: do step numbers and positions start at 0 or 1?
15:28:45 <Taneb> 0
15:28:59 <CakeProphet> okay so basically the language is composed of patterns, which can also take subpatterns as arguments. A pattern has a string result and a numeric result, which can be based on the string/numeric results of their subpatterns...
15:29:09 <CakeProphet> so I have -> as a substition operator. It takes the first occurence of the left-hand pattern in the input string and replaces it with the string result of the right-hand side.
15:29:43 <CakeProphet> I would like to define global substition (s/.../.../g) in terms of ->, as (a -> b)*
15:29:59 <CakeProphet> where * is similar to * in other regexp languages.
15:30:13 <CakeProphet> however...
15:30:16 <oerjan> Taneb: ok so if jumps are ensured to be mod 9, then the adjustment to each command is predictable (mod 9) from position: 0,2,4,6,8,1,3,5,7,0 etc.
15:30:55 <CakeProphet> if -> is zero-width then upon each repetition it will start at the beginning of the input string, which is undesirable because it means patterns like ('a' -> 'ab')* would loop infinitely.
15:30:59 <Taneb> Jumps are mod length of program
15:31:04 <Taneb> I think
15:31:18 <oerjan> Taneb: er *0 (mod 9)
15:32:14 <oerjan> if the length of the program is _not_ divisible by 9, then you should be able to jump from any position
15:32:19 <CakeProphet> however, if -> consumes the input string after the point of substition, then I can define global substition as * applied to ->, but then.... it consumes the input string that I just made substitions upon, which is generally not desirable.
15:32:37 <CakeProphet> so I'd have to explicitly backtrack.
15:33:38 <CakeProphet> so I'm just trying to figure out how to make this work...
15:33:59 -!- augur has joined.
15:34:06 <CakeProphet> perhaps I need a second method of traversing the input string rather than literally consuming it..
15:34:22 <oerjan> CakeProphet: i'm afraid my brain refuses to switch context to your problem
15:34:24 <CakeProphet> or different backtracking semantics... or multiple substition operators.
15:34:30 <CakeProphet> oerjan: haha, okay. That's fine.
15:34:50 <CakeProphet> it's obscenely late in the morning for me to be thinking about this.
15:36:11 <CakeProphet> I may have to ditch defining global substition in terms of a repetition of single substition, and just have -> and a separate ->* defined as built-ins.
15:37:18 <CakeProphet> elliott suggested a zero-width version and a consuming version of ->.. but a consuming substition operator seems pointless unless the semantics of the backtracking operator magically preserve side-effects of things when backtracking...
15:37:40 <CakeProphet> which might be undesirable in other cases..
15:38:05 <CakeProphet> turns out making a systematically elegant regular expression language is difficult.
15:40:01 <Taneb> You know what would make everything much more confusing?
15:40:26 <Taneb> Making Numberwang have ternary cells
15:41:01 <CakeProphet> hmmm, perhaps I could add more contextual return values for expressions. Yes, this sounds fun.
15:41:14 <CakeProphet> string result, numeric result, and NEXT ITERATION RESULT.
15:41:16 <CakeProphet> ...
15:41:20 <CakeProphet> no, this is a terrible idea.
15:41:49 <CakeProphet> Taneb: ternary isn't terribly confusing, but I don't know how numberwang works so...
15:42:20 <Taneb> It's binary
15:42:51 <oerjan> 3,6,0, oh hum
15:43:17 <Taneb> With similar changing commands to one of the BF Minimization things
15:43:29 <CakeProphet> oerjan: what would be awesome about (a -> b)* is that * defines its string result as the concatenation of each iteration of the subpattern, and the numeric result as the addition of the subpattern's numeric results..
15:44:01 -!- monqy has joined.
15:44:09 <CakeProphet> -> could return the number of substitions that occurs for the numeric result, which would be either 0 or 1
15:44:23 <CakeProphet> thus the * would return the total number of substitions...
15:44:40 <CakeProphet> this is awesome, you see.
15:45:08 <Taneb> I've had a crazy idea for making an esolang
15:45:15 <Taneb> We all say stuff, and see what sticks
15:45:50 <CakeProphet> http://www.esolangs.org/wiki/Adjudicated_Blind_Collaborative_Design_Esolang_Factory
15:46:59 <monqy> not an imperative language those are boring if they don't have really good gimmicks
15:47:03 <oerjan> sadly no one ever tried to sort out that mess :P
15:47:38 <monqy> :(
15:47:51 <oerjan> Taneb: positions 2,5 or 8 (mod 9) are ideal jump points for numberwang, as when the step number and command value are all of the same kind, that gives a jump
15:48:13 <Taneb> Okay
15:48:20 <Taneb> So, this crazy idea
15:48:32 <Taneb> ABCDEF... G
15:48:56 <monqy> G?
15:49:08 * oerjan swats Taneb for the heinous crime of abbreviating Adjudicated Blind Collaborative Design Esolang Factory
15:49:14 <oerjan> * -----###
15:49:20 <oerjan> (forgot the swatter)
15:49:22 <Taneb> I never abbreviated that
15:49:34 <oerjan> WELL YOU GOT DANGEROUSLY CLOSE
15:50:07 <Taneb> I abbreviated Abbreviation Because Crazy Declarative Esoteric Fantasy... Groans
15:50:12 <monqy> adjudicated blind collaborative design esolang factory garden
15:50:23 <oerjan> O KAY
15:50:25 <monqy> garden is a good word
15:50:32 <Taneb> Gaiden?
15:51:18 <Taneb> That means like a spin-off
15:51:37 <CakeProphet> oerjan: I enjoy your submission the most. :D
15:51:38 <oerjan> oh wait i'm miscalculating, because a jump should go to a position _after_ the current one (mod 9)
15:51:52 <monqy> an adjudicated blind collaborative design garden of esolang factories
15:52:07 <monqy> or is it a garden of adjudicated blind collaborative design esolang factories
15:52:29 <Taneb> It's the garden that is attached to an adjudicated blind collaborative design esolang factory
15:55:39 <oerjan> 1,4,7, whoops
15:56:04 <oerjan> Taneb: ok my miscalculation corrected, there actually _aren't_ any perfect jump points
15:56:29 <Taneb> I think it's possible to jump from anywhere to anywhere, though
15:56:52 <oerjan> Taneb: it still should work if the length of the program is not 0 (mod 9)
15:57:39 <oerjan> Taneb: the thing is i'm trying to do this without step numbers getting out of synch
15:58:55 <oerjan> it's easy to make it 4 (mod 9) instead, by appending a NOP 1,0,1,0
15:59:33 <oerjan> anyway, later
15:59:36 -!- oerjan has quit (Quit: leaving).
15:59:36 <Taneb> bye
16:00:52 <CakeProphet> Taneb: the language has only numbers as values
16:01:12 <CakeProphet> in string contexts, an inverse hash function is applied to the number to get a string.
16:01:24 <CakeProphet> the hash function is implementation defined.
16:01:48 <Taneb> All functions take strings
16:04:25 <CakeProphet> all numbers are quantum numbers that can be composed of a possibly infinite number of superpositions. The superpositions collapse based on what context the value is used in. For example, in string context the collapse occurs as the concatenation of the inverse hash value of each superimposed number.
16:06:08 <cheater_> http://shrike.depaul.edu/~mhendri5/CSC394/ConceptDemo/projectManager.html Professor Elliott - 2 l's and 2 t's.
16:06:27 <CakeProphet> for every context there is an anti-context in which an inverse collapsing operation occurs. For every defined context an anti-context must also exist.
16:07:12 <Taneb> There is one context that is its own anti-context
16:07:41 <Vorpal> CakeProphet, are you working on figuring out ABCDEF?
16:07:59 <CakeProphet> Vorpal: we are defining a language collaboratively via logs. :)
16:08:07 <CakeProphet> and I am sleep deprived enough to come up with some crazy ideas.
16:08:18 <Vorpal> CakeProphet, uh, logs of who and from which time span?
16:08:25 <Taneb> Logs of us, and now
16:08:34 <Vorpal> ah
16:09:10 <Vorpal> CakeProphet, Taneb whatever it is, the source code (if such exists) should exist on a hyperbolic surface
16:10:58 <CakeProphet> the anti-string context is the union of each superposition in string-context. There is an operator to induce the anti-context of whatever context an expression is in.
16:11:45 <CakeProphet> numeric context is the summation of the superpositions. anti-numeric context is the subtraction of each superposition in left-associative order
16:12:27 <CakeProphet> there is nothing horrible about any of this.
16:12:30 <CakeProphet> :)
16:12:54 <Taneb> If a context and its anticontext are used in the same function, that function is from thence forth outputs infinity on any input
16:13:11 <Phantom_Hoover> Why are you discussing hyperbolic surfaces?
16:14:23 <Taneb> Making an esolang
16:15:10 <CakeProphet> the null superposition is a special value that is empty. It represents the identity element for whatever context it is being evaluated in.
16:15:55 <Phantom_Hoover> Are you trying to make the semantics as complicated as possible?
16:15:59 <CakeProphet> yes.
16:16:57 <Phantom_Hoover> All operations are nondeterministic.
16:17:08 <CakeProphet> In list context the superposition is merely a linked list. This is the natural state of the superposition. The anti-context of this context is identical.
16:17:09 <Taneb> Except the rand() function
16:17:10 <Phantom_Hoover> You have to make sure that all eventualities lead to the same outcome.
16:17:24 <Taneb> Which always outputs four
16:17:27 -!- MigoMipo has joined.
16:18:07 <CakeProphet> In boolean context, only the null superposition is false, all other superpositions are true. The anti-context is the logical negation of this.
16:19:13 <Vorpal> <CakeProphet> In list context the superposition is merely a linked list. This is the natural state of the superposition. The anti-context of this context is identical. <-- shouldn't the anti-context be the reversed list?
16:19:29 -!- MigoMipo has quit (Read error: Connection reset by peer).
16:19:31 <CakeProphet> well, I guess that would make sense...
16:19:31 <Phantom_Hoover> Vorpal, did you need to paste the last line of chat to reply to it?
16:19:38 -!- Nisstyre has joined.
16:19:42 <Vorpal> Phantom_Hoover, it wasn't the last line
16:19:44 <Phantom_Hoover> Oh, wait.
16:19:45 <Phantom_Hoover> Right.
16:20:05 -!- MigoMipo has joined.
16:20:22 <Vorpal> CakeProphet, it would make sense? Perhaps we can think of something else then
16:20:24 <Taneb> I think I've got Settlers IV working on Ubuntu
16:20:44 <Taneb> Got a splash and my CD drive is whirringh
16:21:04 <Taneb> And flashinh
16:21:15 <Taneb> You can figure out what I mean
16:22:00 <CakeProphet> operators can only be named as numbers.
16:22:18 <Taneb> Names can only be numbered as operators
16:22:32 <Vorpal> what does that even mean
16:22:38 <lifthrasiir> http://esolangs.org/w/index.php?title=Brainfuck&curid=961&diff=23689&oldid=23593 uhm, can we just split the "implementations" section to the separate comparison page? it is becoming hard to manage.
16:23:10 <CakeProphet> in function context, a superposition acts as the function with the same name. The result is the superposition of each function in the superposition applied to all of the arguments specified.
16:23:27 <CakeProphet> The superposition of two superpositions is their concatenation concatenation.
16:23:54 <lifthrasiir> with columns like "implemented in", "targets", "cell size", "behavior on EOF" etc.
16:24:08 <CakeProphet> thus an infinite superposition of 1s will apply the function 1 infinitely many times to its arguments.
16:24:41 <Taneb> Vorpal: If I wanted to assign a number to a name (like Vorpal is number 6) I would have to say "Vorpal is +" or something
16:24:47 <Vorpal> CakeProphet, how would you write such a superposition in the source?
16:24:54 <Vorpal> Taneb, ah
16:25:08 <ais523> Vorpal: just put the bits on your hard drive into quantum entanglement
16:25:12 <CakeProphet> Vorpal: shenanigans. Probably via some repeat function.
16:25:16 -!- augur has quit (Remote host closed the connection).
16:25:19 <CakeProphet> which is probably recursive.
16:25:25 <Vorpal> ais523, or that yes
16:25:25 <Taneb> Numbers can only been operated as names
16:25:56 <CakeProphet> it's like... a hybrid between Haskell and Perl. :)
16:26:01 -!- augur has joined.
16:26:06 <Taneb> And befunge
16:26:23 <CakeProphet> yes, there needs to be more two-dimensionality somewhere...
16:26:43 <Taneb> It's on a hyperbolic surface, isn't it?
16:26:54 <CakeProphet> I don't even know what that means.
16:27:07 <Vorpal> Taneb, suggestion: if you write "foo is" without anything after (except statement delimiter such as newline) it should be assigned a default implementation defined value out of the set {-42, 0, 42, 2-5}
16:27:33 <Taneb> It's not my language, there's nothing I can do to stop it
16:27:34 <CakeProphet> okay, so that's the extent of my idea-vomit. I am probably going to sleep now.
16:27:39 <Taneb> It's everybody's language
16:27:43 <Taneb> Goodnight
16:28:03 <Taneb> Not only is it two-dimensional, it's non-euclidean
16:28:05 <Vorpal> CakeProphet, not sure either. But I guess that mean parallel lines aren't like in an Euclidan geometry
16:28:26 <Vorpal> as in, I suggest a hyperbolic geometry (which one: implementation defined)
16:29:45 <Phantom_Hoover> <CakeProphet> I don't even know what that means.
16:30:04 <Taneb> Basically, hang on
16:30:09 <Phantom_Hoover> You can get one by taking a standard triangular tiling and putting seven triangles around a point rather than six.
16:30:10 <Taneb> >v
16:30:12 <Taneb> ^<
16:30:14 <Taneb> Isn't an infinite loop
16:30:18 <CakeProphet> numbers are delicious fruit. Thus subtraction is the devouring of a number of fruit from a pool of fruit by the interpreter or object code. Negative fruit is fruit owed and thus accumulates compound interest over time.
16:30:20 <Taneb> But does sort of work
16:30:40 <Taneb> Numbers can fall in any direction
16:32:17 <Phantom_Hoover> Taneb, BtW, I assume you're referring to http://en.wikipedia.org/wiki/Order-5_square_tiling as the tiling used.
16:32:34 <Taneb> That works
16:33:08 <Phantom_Hoover> (Is it just me or is that projection not a Poincare disc?)
16:33:17 <Phantom_Hoover> (The lines near the centre seem too straight.)
16:33:57 <Phantom_Hoover> Oh, never mind.
16:35:28 <Vorpal> bbl
16:38:55 <CakeProphet> negative numbers accumulate continuous compound interest, with an interest rate that is implementation defined. The interest rate must be available to programs as a built-in constant.
16:40:31 -!- MigoMipo has quit (Read error: Connection reset by peer).
16:41:11 -!- foocraft has joined.
16:42:33 <CakeProphet> local usury laws wherever the program is being run provide a cap for the interest rate.
16:43:06 <quintopia> so...basically, negative numbers get more negative proportional to their magnitude
16:43:12 <CakeProphet> yes
16:43:35 <quintopia> one can get an exponentially large number by subtracting one, nopping for a while, and then absing
16:43:40 <quintopia> sounds useful
16:43:45 <CakeProphet> with respect to local legislature on the matter.
16:43:49 -!- Taneb has quit (Ping timeout: 255 seconds).
16:44:08 <Phantom_Hoover> <CakeProphet> local usury laws wherever the program is being run provide a cap for the interest rate.
16:44:17 <Phantom_Hoover> So it's impossible to use in the Islamic world?
16:44:44 <quintopia> is it possible for a program that is destitute and performing nothing but nops to collect unemployment?
16:45:46 <CakeProphet> I don't know, is it?
16:45:55 <quintopia> is it possible for a program with a large fruit debt to go bankrupt?
16:46:17 <CakeProphet> Phantom_Hoover: I would presume that in those countries it would either be simple interest or no interest at all.
16:46:23 <quintopia> (knowing that its credit score will weaken and it will be unable to store negative values until it performs well for a while)
16:47:30 <quintopia> would it be possible for it to store a positive value (over some minimum value) in a savings register and collect interest on it?
16:47:49 <CakeProphet> these are complex financial and legal matters. You will need to contact your program's lawyer and accountant on the matters.
16:48:22 <CakeProphet> quintopia: sounds resonable.
16:49:19 <CakeProphet> perhaps also a mutual fund with net loss/earnings based on regional stock quotes.
16:51:06 <CakeProphet> ABCDEFG, a context, quantum, hyperbolic, numeric, and finance oriented language.
16:51:58 <Phantom_Hoover> CakeProphet, it's not going to be very helpful for anything hyperbolic, TbH.
16:52:23 <Phantom_Hoover> Ooh, wait, if it has Befunge-style mutable program space it can construct geometrical things.
16:54:56 <CakeProphet> well, it might be possible, but perhaps not globally.
16:55:07 <CakeProphet> making it a fungeoid constricts the syntax to single characters.
16:55:24 <CakeProphet> but incorporated a 2D code grid as part of the language would be interesting.
16:55:30 <CakeProphet> *incorporating
16:56:17 <CakeProphet> code that manipulates quantum superpositions of fruit and fruit-loans, no doubt.
16:56:44 <quintopia> CakeProphet: if it's finance oriented, all output should be as advertising. thus, it must be paid for and associated with some commodity. the value of that commodity will rise depending on the investment in advertising.
16:57:22 <CakeProphet> I think fruit is a good commodity.
16:57:30 <CakeProphet> as it is delicious.
16:57:31 <quintopia> all input should be as market research, and may not be possible for some users depending on whether they are in the target demographic
16:57:40 <quintopia> the preferred input method will be multiople choice surveys
16:57:50 <CakeProphet> .....
16:58:01 <CakeProphet> I lol'd
16:59:00 <quintopia> (the nice thing about surveys is that sometimes they include "select all that apply" questions, thus making it possible to input superpositions)
17:01:25 <Vorpal> <CakeProphet> making it a fungeoid constricts the syntax to single characters. <-- unicode is large
17:01:40 <Vorpal> CakeProphet, anyway you could construct source lines on the surface or something
17:02:04 <Vorpal> CakeProphet, oh and... hm... perhaps the gravity of the program deforms the geometry?
17:02:10 <Vorpal> for sufficiently large programs
17:04:22 <Vorpal> quintopia, there is only one free text input per program, which is so annoying to get at, that most programs will promptly discard it?
17:05:40 <quintopia> Vorpal: rather, the user can provide as much input as s/he likes, but the program pays by the character to read it
17:05:58 <cheater_> you can have n-character-wide commands too
17:06:00 <quintopia> eventually, this cost is passed on to the user
17:06:04 <cheater_> nothing wrong with that
17:07:49 <lifthrasiir> Phantom_Hoover: well, actually i wanted something like this: http://esolangs.org/wiki/User:Tokigun/Brainfuck_Implementations
17:12:07 <Phantom_Hoover> lifthrasiir, sure, but it's good to have them out of the main article before experimenting.
17:12:36 <lifthrasiir> yes. that's exactly why i set it up in my user page.
17:48:40 -!- Taneb has joined.
17:48:48 <Taneb> Hello
17:53:01 <ais523> hi
17:53:02 <Taneb> Laughing at where the esolang I suggested has gone
17:53:14 <Taneb> A context, quantum, hyperbolic, numeric, and finance oriented language?
18:00:43 -!- cheater__ has joined.
18:03:57 -!- cheater_ has quit (Ping timeout: 240 seconds).
18:08:23 -!- MigoMipo has joined.
18:09:58 -!- MigoMipo has quit (Read error: Connection reset by peer).
18:10:32 -!- MigoMipo has joined.
18:31:15 -!- Sgeo has joined.
19:02:57 -!- oerjan has joined.
19:08:58 <oerjan> <Vorpal> CakeProphet, are you working on figuring out ABCDEF?
19:09:17 <oerjan> no, ABCDEFG. there is no such thing as a language abbreviated ABCDEF.
19:09:29 * oerjan readies the swatter in case someone disagrees.
19:09:45 <Taneb> It's actually abbreviated ABCDEF...G
19:09:52 <Taneb> The ellipsis is important
19:09:53 <oerjan> aha
19:10:24 <Taneb> However, it can be replaced by a newline in some contexts
19:10:58 -!- cheater__ has quit (Ping timeout: 255 seconds).
19:11:23 <oerjan> also, i realized my former idea of perfect jump points in numberwang works again if the program has an initial 2!, to put things into the correct phase initially
19:11:36 <Taneb> Ooh, brilliant
19:14:15 <oerjan> and then we can put the "real" instructions at spots that are position 2 (mod 9), and pad between with 1,0,1,0,1,0,1,0 nops (although one might manage to put something other than a nop in there too)
19:14:59 <oerjan> since 0 and 1 commands can be achieved easily anywhere
19:15:40 <Taneb> Yeah
19:17:38 <Sgeo> How is ... the thing that ABCDEF is not an abbreviation for?
19:17:56 <Taneb> Inactive
19:18:02 <Taneb> Confusing
19:18:06 <Taneb> Self-contradicting
19:18:39 <monqy> rest in peace abcdef
19:18:49 * oerjan swats monqy -----###
19:18:51 <Taneb> oerjan?
19:19:03 <Taneb> Just as I expected
19:19:29 <oerjan> i guess it was inevitable
19:19:50 <monqy> rest in peace that thing for which abcdef is not an abbreviation, too
19:23:20 <oerjan> it is also possible to put jumps at positions 5 and 8 (mod 9), although they can only jump to other instructions with consistent phase (lest you make the phase inconsistent :P)
19:24:29 -!- cheater__ has joined.
19:25:30 <oerjan> those jumps can be to next instruction, so you can insert nops that way
19:25:41 <oerjan> *the next
19:25:54 <Taneb> This is too easy to program in
19:26:02 <oerjan> eek
19:26:57 <oerjan> well it looks obvious that you can automatically translate a Wang B-machine to this now
19:27:09 <Taneb> Hence it is Turing Complete
19:28:30 <Taneb> Damn
19:32:25 <ais523> is it meant to be sub-TC?
19:32:27 <oerjan> hm actually it's not exactly the same, numberwang flips bits while the B-machine only sets them (and the W-machine also clears)
19:32:44 <Taneb> It's meant to be really hard to prove
19:33:12 <oerjan> but nothing really difficult there i guess
19:33:31 <Taneb> It's practically usable
19:33:54 <monqy> Oozlybub and Murphy is a good example of hard to prove
19:35:41 <oerjan> yes but in a somewhat unsatisfactory way
19:36:11 <monqy> are there any satisfactory examples
19:37:10 <Taneb> Not off the top of my head
19:37:14 <Taneb> Piet?
19:37:23 <oerjan> well no one has attempted my Malbolge Unshackled yet afaik :P
19:37:30 <oerjan> (not me, for sure)
19:40:29 <Taneb> How can I complicate this?
19:41:02 <Taneb> I want its computational class to be "probably Turing Complete..."
19:41:52 <Taneb> All programs much reach Numberwang so many times?
19:42:13 <monqy> what does numberwang do
19:42:35 <Taneb> http://esoteric.voxelperfect.net/wiki/Numberwang
19:42:41 <monqy> I mean
19:42:50 <Taneb> Oh, ok
19:42:50 <monqy> 12! 4.4! 92! 10! 49.8! 2! 2! 2!
19:42:57 <Taneb> Depends when it happend
19:43:00 <Taneb> *happens
19:43:03 <monqy> right
19:43:18 <monqy> but does it necessarily have any effects?
19:43:30 <Taneb> It's an almost certainty
19:44:12 -!- ais523 has quit (Remote host closed the connection).
19:44:33 <Taneb> Like, I have no idea what the program 3! does
19:46:30 -!- MigoMipo has quit (Remote host closed the connection).
19:48:02 <lifthrasiir> Taneb: is the digital root of 4.4 or 49.8 defined?
19:48:23 <Taneb> It is, but the most common algorithm doesn't work
19:48:30 <Taneb> 8 and 3 respectively
19:48:35 <lifthrasiir> okay
19:49:01 <Taneb> Multiply by 10 until n % 1=0
19:49:03 <lifthrasiir> so that it only affects the interpretation of instruction 2, right?
19:49:09 <Taneb> Yeah
19:49:34 <lifthrasiir> then what on the earth is the command at the fractional index? :p
19:49:52 <lifthrasiir> (given the current cell is marked)
19:49:58 <Taneb> I haven't worked that out yet
19:50:52 <lifthrasiir> i guess some kind of interpolation will be fine...
19:50:58 <Taneb> I think you do the * 10 until n % 1 = 0
19:52:00 <lifthrasiir> e.g. if you go to the offset 4.2 which is between the command 92 and 10, then it is interpreted as the command 26.4
19:52:40 <Taneb> That works, too!
19:52:43 <lifthrasiir> since the initial commands are always integers multiplied with 10^-k (k integer)
19:52:51 <lifthrasiir> there is no problem with recurring decimals etc.
19:53:25 <Taneb> All commands are k/(2^j)*(5^l)
19:53:48 <lifthrasiir> that is k'/10^max(j,l) for some k'. :p
19:54:07 <lifthrasiir> ugh,
19:54:18 <lifthrasiir> no don't mind.
19:54:30 <lifthrasiir> my expression parser seems to be broken
19:56:25 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
19:59:39 <Taneb> Your suggestion is now canon
20:00:01 <cheater__> hi
20:00:07 <Taneb> Hello
20:00:08 <cheater__> anyone know what encoding this page is in? http://www.john-a-harper.com/tubes201/
20:00:40 * cheater__ eyes fizzie
20:00:52 <Taneb> UTF-8?
20:01:05 <Taneb> HTML 3.2?
20:01:25 <Taneb> GIF?
20:01:26 <Sgeo> I don't think HTML 3.2 is an encoding
20:01:42 <cheater__> Sgeo, any ideas?
20:01:49 <Taneb> Pretty sure it's UTF-8
20:02:14 <Taneb> With HTML 3.2 markup and images as GIFs
20:02:15 <cheater__> can you search for the text "is a constant for a given electrode geometry. In other words, the actual plate voltage is divided by" ?
20:02:32 <cheater__> does a \mu character show up?
20:02:36 <monqy> <meta name="GENERATOR" content="Microsoft FrontPage 3.0"> nice
20:02:41 <Sgeo> No
20:02:43 <fizzie> Yeah, the "broken" characters seem to be UTF-8 "missing character" symbols.
20:03:11 <monqy> � ...encoding...:(
20:03:40 <lifthrasiir> looks like U+FFFD in UTF-8.
20:03:56 <fizzie> There's the byte sequence EF BF BD (which is UTF-8 for the U+FFFD) for both the degree signs and the supposedly-µ.
20:04:12 <fizzie> So it's not something you could reverse back to anything sensible.
20:07:16 <cheater__> wtf is an <ins> element?
20:07:22 <cheater__> i'm looking at the source of this
20:07:26 <fizzie> Google has a quick-view of a PDF version, second hit for me for the "How Vacuum Tubes Really Work" (in quotes) search.
20:07:46 <cheater__> fizzie, yeah i decided to change everything by hand
20:07:48 <oerjan> i guess someone sent non-UTF-8 to a program that was expecting UTF-8, and the unknown characters were turned into that
20:07:57 <fizzie> And the <ins> and <del> tags are used to denote insertations and deletions in a document.
20:09:31 <cheater__> oh oh
20:10:25 <cheater__> <meta name="editor" content="Vim">
20:11:02 <Taneb> I could make a better website with Wine Notepad and a packet of crisps!
20:11:11 <Taneb> By better, I mean better HTML
20:11:17 <Taneb> Not better content
20:11:36 <cheater__> the preview has all the right characters
20:12:04 <Taneb> Replace your mu characters with &mu;
20:12:51 <lifthrasiir> &moo;.
20:13:21 <cheater__> yeah i will
20:13:29 <cheater__> what's the degree one? &deg right?
20:13:54 <Taneb> &deg;, yeah
20:14:00 <Taneb> The semicolon is important
20:24:13 <cheater__> i realize, but it's part of sgml, not the entity
20:24:26 <cheater__> funnily enough i have had to use two different encodings for the mu character
20:24:35 <Taneb> Why?
20:24:36 <cheater__> &mu and &micro for different contexts
20:24:41 <Taneb> Huh
20:25:02 <cheater__> mu is used for the prefix "micro" in units as well as for a variable called "mu"
20:25:15 <cheater__> as in "Vari-mu", "low-mu", "high-mu"
20:25:32 <Taneb> What does a zen cow say?
20:25:34 <Taneb> Mu!
20:27:01 <quintopia> why did the kitten stay on the hot tin roof longer than the adult cat?
20:27:07 <quintopia> it had a higher mu!
20:28:17 <cheater__> that made no sense
20:29:01 <Taneb> Today I have ice cream, so I take it away from you.
20:29:12 <Taneb> Tomorrow I have no ice cream, so I give it to you.
20:29:19 <Taneb> This is an ice cream koan
20:37:50 <quintopia> today i had lots of beer
20:37:53 <quintopia> i am a koanhead
20:38:36 <Gregor> I seem to finally have working webernauts.
20:41:04 -!- Taneb has quit (Ping timeout: 264 seconds).
20:46:56 -!- Phantom_Hoover has joined.
20:53:07 -!- Sgeo has quit (Ping timeout: 255 seconds).
20:55:34 -!- Sgeo has joined.
21:03:55 -!- boily has quit (Ping timeout: 255 seconds).
21:04:18 * Phantom_Hoover notes that he just clicked on a YouTube video called "Mitchell & Webb Mac Adverts" on the assumption it would be a parody.
21:05:02 -!- hagb4rd has joined.
21:06:34 * oerjan recalls someone posted an animated gif of a mac advert on reddit the other day
21:07:10 <oerjan> from a norwegian online newspaper
21:16:31 -!- cheater__ has quit (Ping timeout: 255 seconds).
21:17:35 -!- elliott has joined.
21:23:03 <oerjan> something is wrong, elliott joined and the channel is _still_ silent
21:23:12 <elliott> im logreading -minecraft first is why
21:23:17 <oerjan> ah.
21:23:20 <elliott> :D
21:23:30 <oklopol> morning
21:23:34 <elliott> mroing
21:24:18 <oerjan> mwrong
21:29:23 -!- cheater__ has joined.
21:35:19 * oerjan figures -minecraft must have been _really_ active today.
21:35:39 <elliott> no im just scrolling dwon to find ten am
21:35:44 <elliott> when i left
21:35:47 <elliott> down
21:36:37 * oerjan uses ^F for that
21:36:59 <elliott> ur an f
21:38:20 <oklopol> what's your angle?
21:38:32 <elliott> 14:06:23: <oerjan> it's just one of ais523's methods to suppress thinking of fe *hit by falling anvil*
21:38:32 <elliott> 14:07:05: <Taneb> Meta type constructors?
21:38:33 <elliott> 14:07:55: <oerjan> i never m *anvil rolls on top of him again*
21:38:33 <elliott> :D
21:38:35 <elliott> pet anvil
21:38:52 <oklopol> aww :D
21:39:14 <elliott> 14:22:22: <Taneb> Why can't my German-made French-published game with Italian characters run on my Japanes-designed Chinese-made laptop with a South African OS based on a kernel designed by a Swedish speaking FInn?
21:39:14 <elliott> 14:23:06: <Taneb> The game also has Norwegian and... Argentinian? characters
21:39:14 <elliott> which south african os?
21:39:18 <oklopol> "hihihi here i come oerjie" "AAAAAAARGH!"
21:39:24 <elliott> oerjie
21:39:42 <elliott> 14:27:36: <oerjan> it means "i despise you so much i'm going to steal your screen real estate despite not really saying much." hth.
21:39:43 <elliott> oerjan: why
21:39:44 <elliott> don't
21:39:44 <elliott> you
21:39:46 <elliott> love
21:39:47 <elliott> ME????????????
21:40:17 <elliott> 14:28:25: <Taneb> But yeah, Settlers IV doesn't run on Ubuntu on my Toshiba
21:40:17 <elliott> Ubuntu is South African only by very dubious measures :-P
21:40:19 <oerjan> nothing personal, you're just evil newline-spamming scum, is all.
21:40:49 <elliott> 14:34:02: <oerjan> a real is perfectly encodeable as a sequence of ones and zeroes. it just has to be infinite.
21:40:49 <elliott> 14:34:12: <Phantom_Hoover> oerjan, OK then, P(R).
21:40:49 <elliott> 14:34:36: <oerjan> fiendish.
21:40:49 <elliott> 14:34:54: <Phantom_Hoover> Just stick Ps on until it gets big enough.
21:40:50 <elliott> :D
21:41:18 <olsner> I think domesticated anvils will be made of light metals and have some form of truss-like interior instead of being solid metal
21:41:47 <olsner> they're just not that cuddly when they still weigh a ton or two (or a half)
21:42:46 <Phantom_Hoover> http://esolangs.org/wiki/Surface
21:42:56 <Phantom_Hoover> ITA: Madk doesn't understand fundamental polygons.
21:43:04 <oklopol> aww now i want a pet anvil :D
21:43:20 <oerjan> anvils are not pets!
21:43:23 <elliott> Phantom_Hoover: I am going to revert your [[Brainfuck implementations]] change
21:43:29 <Phantom_Hoover> Why?
21:43:34 <Phantom_Hoover> I had CONSENSUS.
21:43:41 <elliott> because you moved every single implementation, including the /original/
21:43:42 <oerjan> they are fierce creatures who hate puns
21:43:42 <olsner> oerjan: pet anvils are pets
21:43:54 <oklopol> really it would be kind of sad, it moves by jumping so everyone always yells at it if it moves too much because it makes this huge noise :(
21:44:05 <Phantom_Hoover> elliott, consider simply moving that into the article, rather than moving the whole thing.
21:44:18 <Phantom_Hoover> And it _is_ an implementation regardless.
21:44:25 <oklopol> and when it tries to come greet its master, it will just often step on his feet and get yelled at again :(
21:45:28 <elliott> 14 July 2011
21:45:28 <elliott> (diff) (hist) . . Brainfuck implementations‎; 21:44 . . (-8,084) . . Ehird (Talk | contribs) (...better organisation than the current section. I will do a proper move later today or tomorrow.)
21:45:28 <elliott> (diff) (hist) . . Brainfuck‎; 21:44 . . (+8,024) . . Ehird (Talk | contribs) (Revert; while I support the separation of implementations into a separate article, ''notable'' implementations (e.g. original distribution, esotope) should stay. And any such page should have...)
21:45:33 <elliott> Phantom_Hoover: (read backwards)
21:46:03 <oerjan> elliott: tokigun is already working on a better implementation listing
21:46:13 -!- cheater__ has quit (Ping timeout: 255 seconds).
21:46:20 <elliott> oerjan: citation?
21:46:22 <oerjan> not got very far, mind you
21:46:24 <elliott> oh, I see
21:46:27 <oklopol> i wish i had 100 million moneys
21:46:30 <elliott> I find that format much worse, I'm afraid
21:46:37 <elliott> especially since we don't have wikipedia's table sorting JS
21:46:47 <oklopol> i could buy a pet anvil AND pillow shoes for it
21:50:22 <oerjan> oklopol: oh it's all fun and games until one day you want to meet a pun and then *BAM*
21:50:47 -!- sidhe has joined.
21:51:08 <oklopol> :\
21:51:08 * oerjan smells an elf
21:51:20 -!- pikhq_ has joined.
21:51:47 <elliott> the name sidhe rings a bell
21:51:56 <sidhe> dresden files
21:52:50 <elliott> wat
21:53:00 <elliott> i mean from here.
21:53:22 -!- oklofok has joined.
21:53:52 <olsner> oerjan: are you the chairman of the "former pet anvil owners who've had enough" club or something?
21:53:57 <sidhe> i was just on ##nomic for a few seconds due to forgetting the name of this channel
21:54:12 <oklofok> one
21:54:13 <oerjan> olsner: no, i never met any other survivors
21:54:14 <oklofok> hundred
21:54:15 <oklofok> million
21:54:16 <oklofok> moneys
21:54:23 <sidhe> though i've never been here before using this nick.
21:54:38 <oerjan> also it's not my pet
21:55:16 -!- pikhq has quit (Ping timeout: 258 seconds).
21:55:25 -!- oklopol has quit (Ping timeout: 240 seconds).
21:55:56 -!- cheater__ has joined.
21:58:03 -!- sidhe has left.
21:58:28 <elliott> Lymee: OK SERIOUSLY HOW DOES MAVEN EVEN WORK.
21:58:47 <olsner> elliott: maven? isn't that some java crap?
21:58:52 <elliott> yes.
21:59:06 <elliott> lymee is our resident expert on java crap.
21:59:11 <elliott> olsner: i gather it's less crap than ant, though
21:59:12 <olsner> but do you really want to know how it works?
21:59:19 <Lymee> elliott, Maven works with magic.
21:59:19 <elliott> well i need to use it, yes, so i can avoid using ant.
21:59:24 <Lymee> Magic is bad
21:59:30 <elliott> Lymee: do you have a better suggestion
21:59:30 <Lymee> *shrug*
21:59:33 <elliott> :-P
21:59:36 <Lymee> I let Eclipse deal with maven.
21:59:45 <Lymee> So, "loldunno
21:59:46 <elliott> Yeah, but there's two different plugins and no indication of which one to use :-(
21:59:52 <elliott> It's like fascism.
22:00:38 <olsner> I get the impression that maven does things that ant users find useful, and it uses xml
22:00:47 <elliott> Lymee: http://maven.apache.org/eclipse-plugin.html Which one ;_;
22:02:19 <Lymee> *shrug*
22:03:02 <elliott> Clearly you want me to suffer.
22:03:03 * elliott cries.
22:03:16 <Lymee> No, that's Apache.
22:03:24 -!- cheater__ has quit (Ping timeout: 250 seconds).
22:04:02 <elliott> Which one do you have installed, I just want something that works :P
22:04:09 <elliott> Ant has completely melted down under its own shittiness.
22:04:23 <elliott> Also I think Maven is meant to be a bit faster than Ant, which is nice because Ant is dog slow.
22:06:18 <oklofok> http://www.vjn.fi/temporary%20shit/anvie.png
22:06:22 <Lymee> Maven Integration.
22:06:47 <elliott> Lymee: Thanks.
22:06:55 <elliott> oklofok: awwwwww
22:07:30 <elliott> Now I just have to figure out how to write Maven files :(
22:07:32 <olsner> oklofok: you drew that?
22:07:40 <olsner> or is it a photograph?
22:07:54 <elliott> photograph
22:08:35 <oklofok> yeah i photographed it using my mspaint brand camera
22:09:49 <oerjan> IT'S A TRAP
22:10:30 <oklofok> it's soooooo cute when it bounces around :D
22:11:08 <oklofok> i wish i was awesome at animating shit, hope you're imagining what i'm imagining
22:11:41 <elliott> bleh, it looks like my eclipse version is too old to use m2e
22:11:50 <elliott> I blame Lymee for probably not using Linux
22:12:01 <elliott> I'm just going to blame every Bukkit plugin development problem I have on Lymee
22:12:09 <elliott> Makes things super easy
22:12:25 <olsner> oklofok: bouncy bouncy :D
22:12:55 <oklofok> it's like the antidog in the sense that it loves to scratch you with its horn
22:13:22 <oklofok> (it can actually move that thing a bit)
22:13:39 <oerjan> oklofok: also think of the floor repair bills
22:13:59 <oklofok> in fact it wiggles and waggles it like a dog does with its tail, although the movement is slightly slower and much smaller
22:15:11 <elliott> "The Eclipse software development kit is the development environment used to develop plug-ins for the Eclipse platform."
22:15:18 <elliott> Eclipse is like the most incestuous piece of software imaginable.
22:15:28 <elliott> Its main distribution is a tool to extend itself.
22:16:18 <Lymee> elliott, Lymee does use Linux.
22:16:36 <elliott> PAH
22:17:01 <elliott> I'm having problems; the only conceivable way anyone else could not be having problems is if they are inferior to me.
22:17:56 <elliott> holy shit what the hell is maven
22:18:32 <oerjan> a monster raven
22:19:53 <oklofok> awww that's so cute :D
22:20:10 <elliott> this is like using martian software, if martians were idiots
22:20:33 <oerjan> conclusion, oklofok thinks everything that can kill you is cute
22:32:09 <oklofok> http://www.vjn.fi/temporary%20shit/monsterravie.png
22:32:21 <elliott> that's my fursona
22:33:44 <oklofok> erm updating a bit
22:34:22 <oklofok> realized i had two ground levels
22:35:03 <elliott> no thats good
22:35:14 <oklofok> i prefer the new one
22:35:36 * oerjan is disappointed that http://www.vjn.fi/permanent%20shit/ doesn't exist
22:36:32 <oklofok> we emptied vjn.fi, and moved stuff to our new domain, but missed the deadline for cancelling the webhotel thingie we had for it so now we'll just have an empty domain standing there for about a year
22:37:01 <oklofok> so it turns out i love drawing shit
22:37:09 <oklofok> why have i never drawn anything :\
22:37:31 <quintopia> because you're no good at it?
22:38:10 <oklofok> eh, did you see the pics?
22:38:18 <elliott> Lymee: if I steal CommandBook's pom.xml and modify it to my own nefarious purposes, do you promise not to tell?
22:38:35 -!- aloril has quit (Ping timeout: 258 seconds).
22:38:51 <Lymee> :3
22:39:02 <oklofok> i don't think i've ever seen a cuter monster raven
22:39:16 <oklofok> or a more terrifying anvil
22:45:57 -!- azaq23 has joined.
22:46:13 <elliott> Wow OK Maven is literally the slowest thing.
22:46:18 <elliott> Is it... downloading every dependency each time?
22:46:29 <elliott> This is the least Zepto I have ever felt.
22:47:44 <monqy> are you still eclipsimng
22:48:42 <Lymee> elliott, if it is...
22:49:33 <Phantom_Hoover> What is Maven?
22:50:03 <elliott> Lymee: It isn't.
22:50:04 <coppro> the worst build system evern
22:50:05 <elliott> Phantom_Hoover: Confusing.
22:50:14 <coppro> [sic]
22:50:21 <elliott> Mavern.
22:50:24 <elliott> monqy: Yes.
22:51:02 <monqy> why haven't you just made something to replace ides yet
22:51:29 <monqy> or is an ide actually required for whatever you're doing is it a bukkit plugin I don't even know what that is
22:52:25 -!- aloril has joined.
22:53:19 <oklofok> Phantom_Hoover: you can also check you my picture of maven
22:54:05 <Phantom_Hoover> oklofok, did.
22:54:08 <Phantom_Hoover> It was best.
22:54:40 <oklofok> i love how paint adds a smoothing touch around every line so that the filler fucks up
22:55:00 <oklofok> of course it would have been hard to have a wing otherwise, but still sorta ugly
22:55:30 <Phantom_Hoover> Sweet Maven and Hella Oklopol.
22:56:30 <elliott> X-D
22:56:40 <elliott> Maven has to download maven-clean-plugin just to clean the repository out.
22:56:42 <elliott> Beautiful.
22:58:52 <elliott> 14/07/11 23:57:54 BST: [WARN] Some problems were encountered while building the effective model for net.pyralspite:hostilechunks:jar:0.1
22:58:52 <elliott> 14/07/11 23:57:54 BST: [WARN] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 49, column 12
22:58:53 <elliott> 14/07/11 23:57:54 BST: [WARN] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 58, column 12
22:58:53 <elliott> 14/07/11 23:57:54 BST: [WARN] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.
22:58:55 <elliott> BLARRRRRRRRRR
23:00:04 <monqy> :(
23:05:10 <Lymee> WHAT
23:05:19 <elliott> Lymee: wat
23:05:29 <Lymee> <elliott> 14/07/11 23:57:54 BST: [WARN] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 49, column 12
23:05:35 <Lymee> *boggles*
23:05:39 <Lymee> WHY IS THIS A PLUGIN!?
23:05:41 <elliott> Yeah, you have to tell Maven the exact versions of every Maven component you want.
23:05:44 <elliott> It's so great.
23:05:53 <elliott> Lymee: Like I said, "mvn clean" actually downloaded maven-clean-plugin.
23:05:57 <elliott> rm -r: a plugin
23:06:19 <Lymee> Enterprisey, eh?
23:06:36 <elliott> I'm this close to replacing my build system with a shell script and getting Eclipse to run it.
23:06:41 <Lymee> I can understand that level of modularization, but not not including it by default.
23:06:46 <Lymee> including core modules*
23:07:22 <Lymee> But...
23:07:41 <Lymee> If you do that, the only reason you'd remove core modules is for slimmed down bundled releases.
23:08:58 <Phantom_Hoover> http://www.reddit.com/r/math/comments/iph88/mathematics_questions_over_on_raskscience_are_met/
23:09:10 <Phantom_Hoover> r/math vs. r/AskScience: place your bets!
23:09:22 <elliott> Why you should use the Maven Ant Tasks instead of Maven or Ivy
23:09:23 <elliott> MARCH 8, 2009 BY PETER THOMAS 21 COMMENTS
23:10:03 <Phantom_Hoover> oerjan, incidentally, is it possible to have a non-Euclidean space where there is a circle constant which works like it does in Euclidean space?
23:10:44 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:10:47 <Phantom_Hoover> Since radius:circumference clearly isn't constant in an elliptical space, and ISTR it's not constant in hyperbolic space either.
23:10:54 <elliott> Lymee: hmm, does Maven kill Eclipse's automatic error-highlighting for you, too?
23:11:24 <oklofok> that's actually a kind of interesting question
23:11:49 <Lymee> elliott, havn't used it with anything I actively modified a lot.
23:12:21 <oerjan> Phantom_Hoover: what i recall is that in both hyperbolic and elliptic geometries the limit is the usual pi when you let the radius approach zero
23:12:42 <Phantom_Hoover> oerjan, sure, but it's not the case for *all* circles.
23:13:06 <oerjan> no, but i mean neither gives the possibility of anything _other_ than pi being special
23:14:39 <Phantom_Hoover> oerjan, OK, but is it possible to have a space where all circles have radius:circumference = k, k != pi?
23:14:53 <oerjan> hm if you do it around poles in the complex plane don't you get a multiple of pi... although that's just at that point
23:15:28 <oklofok> bleh, i know way too little about lesser mathematics to even *try* to construct such a space
23:15:33 <oklofok> sorry non-discrete mathematics
23:15:48 <oerjan> obviously i don't know the answer either
23:15:55 <oklofok> what's a circle?
23:16:03 <oklofok> i would certainly love to know the exact rules
23:16:09 <oklofok> we talking 2d manifold?
23:16:23 <Phantom_Hoover> oklofok, that's what I had in mind.
23:16:51 <oklofok> and then some metric for it k
23:16:57 <pikhq_> oklofok: Isn't it something like "a set of points equidistant from a given point in a given 2d product space" or some such?
23:17:07 <oklofok> what's a 2d product space?
23:17:11 <oklofok> you mean
23:17:11 <oerjan> i expect it must always be pi in the limit for a riemannian manifold
23:17:14 <oklofok> nono
23:17:21 <oklofok> don't be silly
23:17:27 <oklofok> not a product space
23:17:49 <oklofok> what's a riemannian manifold?
23:18:08 <oklofok> the problem is what's a circumference in general?
23:18:33 <oklofok> maybe the 1-dimensional measure of the radius 1 sphere
23:18:52 <oklofok> assuming its hausdorff dimension is 1
23:19:03 <oklofok> can you define something like that?
23:19:21 <oklofok> hmm
23:19:22 <oerjan> riemannian manifolds are obvious spaces in which you can at least define a circumference (because you have a metric and differentiation)
23:19:36 <oklofok> yeah
23:19:48 <oklofok> hausdorff measure can be supplied with a dimension right
23:19:53 <oerjan> mind you i don't know that much about them
23:20:09 <elliott> "a rational number is a quotient of two integers. 10 is not an integer."
23:20:34 <oerjan> iirc the hausdorff measure of a set is always 0 or infinite except for at most one dimension
23:20:49 <oklofok> oerjan: how can you define circumference based on a metric and differentiation?
23:20:56 <oklofok> is there a concept of angle?
23:21:06 <oerjan> "A Riemannian metric makes it possible to define various geometric notions on a Riemannian manifold, such as angles, lengths of curves, areas (or volumes), curvature, gradients of functions and divergence of vector fields.
23:21:15 <oerjan> (http://en.wikipedia.org/wiki/Riemannian_manifold)
23:21:49 <oklofok> "<oerjan> iirc the hausdorff measure of a set is always 0 or infinite except for at most one dimension" yes and circumferences should have dimension 1 and their length as the measure in the euclidean case
23:21:59 <oklofok> erm
23:22:01 <oklofok> spheres
23:22:04 <oklofok> *circles
23:22:32 <oklofok> oerjan: i don't see how that still necessarily lets you measure the length of a circle
23:23:41 <oerjan> it lets you measure the length of a differentiable curve
23:23:54 <oklofok> so... what curve do you measure?
23:24:16 <oklofok> we have a set
23:24:23 <oklofok> the set of points at a certain distance
23:25:06 <oerjan> ok i guess i don't know for sure whether that _does_ form a curve
23:25:39 <oklofok> for each point there is an r such that you get a curve out of the r-sphere or smaller i think
23:25:39 <oerjan> although i'm sure someone who actually knew this stuff could answer
23:25:50 <oerjan> that may be
23:25:57 <oklofok> because the metric is compatible with the topology and you need to have R^2 in some neighborhood
23:26:18 <oklofok> so you get something that's homeomorphic to the usual sphere for small enough radius (?)
23:26:20 <elliott> "In what year was your Gandi account created?" -- worst possible security question
23:26:33 <elliott> takes exactly /twelve/ tries to beat at most :D
23:26:38 <oklofok> blergh i don't know shit about this stuff
23:26:39 <elliott> wait no, eleven
23:28:52 <elliott> https://www.gandi.net/static/contracts/en/whois/pdf/ObfuscatedWhois_1_1.pdf
23:28:56 <elliott> someone read this for me, thnx
23:29:17 <oklofok> hmm actually i'm pretty sure a circle is a curve
23:29:22 <elliott> umm
23:29:23 <elliott> Resell
23:29:23 <elliott> yesno
23:29:23 <elliott> Our contract with ICANN requires that we sell our WHOIS database to any party that requests it. However, you have the right to refuse the sending of your personal data in such an event. Only click on YES and proceed to the next form if you accept that your personal data may be sold.
23:29:29 <elliott> does this mean that it won't let me go past if i don't say yes :D
23:29:58 <oklofok> in any manifold with a metric compatible with the topology, i think it's a path
23:30:13 <oklofok> hmm
23:30:34 <oklofok> well actually dunno, blergh
23:31:03 <oklofok> oerjan: hey btw recall that really interesting thing we proved the other day?
23:31:08 <oklofok> we generalized it yesterday!
23:31:12 <oklofok> now we know it for all chains
23:31:42 <oklofok> (and it seems it's not true for anything else by a simple counterexample)
23:31:51 <oerjan> O KAY
23:31:58 <oklofok> :D
23:32:13 <elliott> im a chain
23:33:31 <oklofok> basically it just becomes a question of homomorphism from S^n to S where S is a lattice. for chains these are just projection to one coordinate + homomorphism
23:34:05 <oklofok> but there's a nontrivial homo from D^2 to D for the diamond D
23:34:08 -!- copumpkin has joined.
23:34:32 <oklofok> *finding homomorphisms
23:36:43 <oklofok> so what i'm thinking is if you have a diamond (you do if it's not a chain) and take like a minimal one in some sense, then you might be able to homo the whole S^2 into that one diamond
23:37:23 <oklofok> well haven't given it thought really but sounds like it should be doable, solving the problem completely, in a sense
23:38:28 <oklofok> so as everyone here prolly already knows a subshift that's also a group is easily shown to be an SFT
23:38:43 <oklofok> a more recent result is that it is in fact a full shift (or conjugate to one at least)
23:39:06 <oklofok> so perhaps there is something similar for lattices
23:40:02 <elliott> oklofok: what's my telephone number
23:40:17 <oklofok> a non-trivial binary subshift that's a lattice always contains the all-0 and all-1 points (proof: it's obvious), and if there's a 0-finite or 1-finite point then it's the full shift
23:40:23 <oklofok> elliott: dunno.
23:40:49 <oklofok> but that's all we know so far
23:41:03 <oklofok> but i have a hunch it's really simple as well
23:42:17 <oklofok> like, take a point and shift it a bit, and and or it with itself, if you get something trivial then the point is periodic and otherwise maybe you get something interesting
23:44:26 <oklofok> (i don't actually know if it has to be periodic if what i said happens)
←2011-07-13 2011-07-14 2011-07-15→ ↑2011 ↑all