←2011-08-27 2011-08-28 2011-08-29→ ↑2011 ↑all
00:00:47 <evincar> An iterator-based model seems to be a reasonable approximation for parser combinators proper.
00:01:52 <CakeProphet> as an input source, sure.
00:01:57 <CakeProphet> > [1..]
00:01:58 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
00:02:00 <CakeProphet> hey look it's an iterator.
00:17:01 <Gregor> AWWW I HAS KITTY
00:18:58 <Vorpal> Gregor, a foul-smelling neighbour's tomcat that wakes you up with noise outside your window in the middle of the night and sleep on your garden furniture?
00:19:13 <Vorpal> night →
00:22:29 <monqy> is the neighbour foul-smelling or is that his tomcat
00:22:33 <monqy> both??
00:23:32 -!- Vorpal has quit (Ping timeout: 240 seconds).
00:25:45 -!- sllide has quit (Ping timeout: 260 seconds).
00:27:51 <oerjan> i'll hazard a guess that tiamat is neither the neighbor's nor a tomcat. the foul-smelling part is plausible, though.
00:28:07 <Gregor> She smells like kitty
00:28:25 <Gregor> And considering that she sleeps next to me every night, I wouldn't let her get away with smelling too bad :P
00:29:14 <oerjan> oh i'm sure she _fnarfs_ like a kitty
00:29:32 * oerjan runs away
00:30:09 <Gregor> X-D
00:30:30 <Gregor> That being said, fnarf is the /taste/-equivalent, not /smell/-equivalent, I don't eat my cat :P
00:30:53 <oerjan> ah. what is the smell-equivalent then.
00:31:20 <oerjan> !simplename
00:31:29 <EgoBot> FYP.
00:31:34 <elliott> fyp.
00:31:40 <oerjan> so it appears.
00:31:46 <elliott> does she fyp like a kitty
00:39:40 <zzo38> Composition becomes (<=<) and applying functions becomes (=<<) and morphisms (x) becomes (return . x) and values (x) becomes (return x), is this correct? I don't know for sure
00:40:48 <Gregor> oerjan: There is no smell-equivalent. Fnarf is taste when one has no sense of smell :P
00:41:16 * Phantom_Hoover → sleep
00:41:39 -!- Phantom_Hoover has quit (Quit: Leaving).
00:42:14 <elliott> Gregor: Try licking your cat. Report back on your findings.
00:42:25 <elliott> Also, videotapei t.
00:42:27 <elliott> videotape it.
00:42:52 * Gregor uploads "Licking pussy" to youtube
00:42:57 * Gregor watches it get removed.
00:43:46 <monqy> give it a lewd thumnail and watch the views go up
00:43:52 <monqy> thubmnale
00:43:55 <monqy> thubmlain
00:43:58 <monqy> thunmail
00:44:02 <monqy> hlep
00:44:22 <elliott> thunmail
00:44:26 <Gregor> No custom thumbnails for me :P
00:44:28 -!- GreaseMonkey has joined.
00:44:28 -!- GreaseMonkey has quit (Changing host).
00:44:28 -!- GreaseMonkey has joined.
00:44:41 <elliott> Gregor: just do it the oldfashioned way (a second or two in the middle of the video)
00:44:50 <elliott> you can then adjust it I think :P
00:46:05 -!- Patashu has joined.
00:46:33 <zzo38> Don't put on Youtube. Then, it will not get removed from Youtube. You can use different format such as Vorbis/Theora.
00:46:43 <zzo38> And host it yourself so that Youtube will not damage it.
00:48:08 <elliott> Gregor: A perfect plan.
00:48:21 <zzo38> But I am not sure why a video is even necessary.
00:49:06 <pikhq_> zzo38: That's even halfway reasonable what with HTML5 video being supported most places.
00:49:49 <pikhq_> Though, unfortunately, you'll still need to encode to multiple formats, courtesy of stupid people going "ZOMG FREE CODEC BAD".
00:50:14 <pikhq_> Or, if you prefer blaming *them*: courtesy of MPEG being made of money-grubbing bastards.
00:57:25 <zzo38> How can I install Cabal packages? The people in #haskell channel kept tolding me things that don't go. I told them there is no cabal but they told me the same thing anyways. I do have lib/Cabal-1.10.1.0 but there is no executable program.
00:57:36 <elliott> You need cabal-install.
00:57:56 <elliott> http://hackage.haskell.org/package/cabal-install, http://www.haskell.org/haskellwiki/Cabal-Install, http://hackage.haskell.org/trac/hackage/wiki/CabalInstall.
00:58:09 <elliott> zzo38: If you install the Haskell Platform you get cabal-install.
00:58:22 <elliott> That's easier than bootstrapping it which is only offered as a Unix shell script to my knowledge.
00:58:35 <zzo38> But cabal is also cabal
00:58:40 <elliott> zzo38: What?
00:58:48 <elliott> No, cabal-install provides the "cabal" command-line tool.
00:58:52 <zzo38> I did install the Haskell Platform it has no cabal.
00:59:00 <elliott> It does, it just isn't in your PATH variable.
00:59:04 <elliott> Find out where cabal.exe is.
00:59:04 -!- MDude has joined.
00:59:05 <zzo38> It only has that directory but has no executable.
00:59:22 <elliott> it's probably in C:\Program Files\blah blah blah for some blah blah blah
00:59:42 <zzo38> O! I found it. It is: F:\Program Files2\Haskell_Platform\lib\extralibs\bin\cabal.exe
01:00:01 <zzo38> I typed dir cabal.exe /b/s from the directory I installed Haskell and that worked.
01:00:14 <elliott> Right, so add that directory to your PATH.
01:00:19 <zzo38> OK
01:00:48 <elliott> zzo38: Then do "cabal update"; you likely want to edit the configuration file it creates.
01:00:52 <elliott> (It tells you where.)
01:00:55 <zzo38> OK
01:01:33 <zzo38> Oops it says failed
01:01:33 <elliott> Specifically, you want to look for a line that looks like "-- documentation: False" and change it to "documentation: True", or it won't install the documentation for the libraries you install. You might also want to change the line mentioning library-profiling to "library-profiling: True", so that it installs profiling versions of libraries you install.
01:01:42 <elliott> (The packages that come with the Haskell Platform all have documentation and profiling.)
01:01:49 <elliott> zzo38: What does it say?
01:02:00 <zzo38> It says "cabal: failed"
01:02:04 <elliott> That's it?
01:02:21 <zzo38> But it did also tell where the config file is and created it.
01:02:50 <elliott> Is the only error "cabal: failed"?
01:03:04 <elliott> You need an internet connection to do it, if you're running it on a network-less box.
01:03:07 <zzo38> It has other messages too but not error messages.
01:03:16 <zzo38> I do have internet obviously I am connecting to IRC
01:03:19 <elliott> Well, the other messages are probably relevant to the failure.
01:03:22 -!- azaq231 has joined.
01:03:23 <elliott> zzo38: You could be doing it on another computer. :p
01:03:59 <zzo38> "Config file path source is default config file. Config file not found. Writing default configuration. Downloading the latest package list from hackage.haskell.org. cabal: failed"
01:04:02 -!- azaq23 has quit (Ping timeout: 250 seconds).
01:04:44 <elliott> Hmm.
01:04:53 <elliott> Are you able to download the file http://hackage.haskell.org/packages/archive/00-index.tar.gz?
01:05:07 <zzo38> It says "world-file: F:\Documents and Settings\user\Application Data\cabal\world" but there is no such file. Is that what is wrong?
01:05:36 <zzo38> Is that the file I need? If so, where do I install it?
01:05:40 <elliott> No, it'll create that when it needs to.
01:05:54 <elliott> That failure looks like it's failing to download http://hackage.haskell.org/packages/archive/00-index.tar.gz. Is there anything abnormal about your setup?
01:05:59 <zzo38> Where do I install the 00-index.tar.gz file?
01:06:44 <elliott> I don't know, but I'm just asking to see if you _can_. If you can't, that's the problem.
01:06:49 <elliott> If you can, then the problem is something else. :p
01:06:49 <zzo38> I don't think there is any abnormal stuff that would cause that to fail
01:07:31 <zzo38> Yes I can download it
01:08:07 <oerjan> perhaps try cabal update once more?
01:08:10 <zzo38> OK
01:08:19 <zzo38> No, it still failed
01:10:20 <elliott> hmm
01:10:24 <elliott> zzo38: try cabal -v update
01:10:28 <elliott> that should give more information
01:10:37 <zzo38> No, it is exactly the same
01:10:45 <elliott> huh
01:10:48 <oerjan> could http://www.haskell.org/pipermail/haskell-cafe/2011-August/094883.html be relevant?
01:10:50 <elliott> it says Downloading the latest package list from hackage.haskell.org
01:10:50 <elliott> Downloaded to
01:10:50 <elliott> /home/elliott/.cabal/packages/hackage.haskell.org/00-index.tar.gz
01:10:50 <elliott> for me
01:10:59 <elliott> does it not say something similar? then I guess the problem is with the downloading
01:11:00 <elliott> oh, hmm
01:11:09 <elliott> zzo38: can you try and find a curl.exe or wget.exe in the Haskell Platform tree?
01:11:13 <elliott> maybe it is expecting to find one in PATH.
01:11:17 <elliott> even though it uses the HTTP package...
01:11:38 <elliott> oerjan: unlikely, since -v didn't produce a message about the file being downloaded
01:12:04 -!- CakeProphet has quit (Read error: Operation timed out).
01:12:05 <zzo38> OK I will try what that says
01:12:06 <oerjan> ok it's just a cabal error i saw discussed recently
01:12:16 <zzo38> elliott: I have wget.exe and curl.exe in my PATH.
01:12:44 <elliott> hmm
01:13:15 <elliott> zzo38: I'd say ask #haskell quoting the output of cabal (you probably want to pastebin it), unfortunately I haven't the expertise to help further
01:13:25 <zzo38> Not any ones that might have been part of Haskell Platform, though. But I don't know how that would make a difference.
01:21:59 <oerjan> hm i think when installing the haskell platform, it asks whether you want to set PATH. did you confirm that?
01:22:33 <zzo38> oerjan: I told it not to set anything so that I can set it manually, which I did.
01:23:01 <oerjan> aha. maybe you are still missing some PATH element it needs, then.
01:23:42 <elliott> oerjan: no, it's a proxy problem.
01:23:47 <zzo38> oerjan: How would that cause it to try to use a proxy? I tried -v3 and it says it is using proxy 0.0.0.0:0
01:23:48 <oerjan> oh
01:23:49 <elliott> (as discovered in #haskell)
01:23:56 <oerjan> ok then
01:24:09 <elliott> zzo38: I don't suppose the config file says anything about proxies?
01:24:21 <zzo38> elliott: Yes I did look and the config file says nothing.
01:45:05 -!- copumpkin has quit (Ping timeout: 260 seconds).
01:45:30 -!- copumpkin has joined.
02:12:09 -!- augur has joined.
02:31:18 -!- pikhq has joined.
02:31:20 -!- pikhq_ has quit (Ping timeout: 260 seconds).
02:47:50 <pikhq> XD
02:47:56 <oerjan> "At a mere 21 million light-years from Earth, a relatively small distance by astronomical standards, the supernova is still getting brighter, and might even be visible with good binoculars in ten days’ time, appearing brighter than any other supernova of its type in the last 30 years.
02:48:11 <oerjan> http://newscenter.lbl.gov/feature-stories/2011/08/25/supernova/
02:48:41 <pikhq> I *think* it's theoretically possible to do 32TiB of space on x86_32 code. Running on an x86_64 processor. With segmentation.
02:49:17 <elliott> oerjan: pretie
02:51:01 <pikhq> It'd be something kinda like an unreal mode. But more an unlong mode.
02:51:19 <GreaseMonkey> with PAE you can have 64GB... if you're cheeky with segmentation + ISR handling that could work quite well
02:52:02 <GreaseMonkey> can you access the 64-bitness of the registers in 32-bit mode?
02:52:07 <pikhq> No.
02:52:13 <GreaseMonkey> poop.
02:52:26 <pikhq> And you can't do segmentation in 64-bit mode.
02:52:32 <pikhq> Not that you'd want to.
02:52:39 <GreaseMonkey> i know about THAT...
02:52:51 <GreaseMonkey> iirc 64-bit mode requires paging to be enabled
02:53:02 <GreaseMonkey> i've never done 64-bit though, only up to 32-bit
02:53:12 <GreaseMonkey> not sure if i ever pulled off unreal mode
02:55:53 <pikhq> More than that. What you do to enter long mode is you enable long mode through a couple of added real mode instructions, and then enable paging.
02:56:17 <pikhq> Enabling paging takes you into long mode.
02:56:49 <GreaseMonkey> hmm...
02:57:16 <pikhq> And then jump into the 64-bit segment.
02:57:23 <GreaseMonkey> s/segment/page/ ?
02:57:25 <pikhq> (so you're not in compatibility mode)
02:57:27 <pikhq> No.
02:57:30 -!- evincar has quit (Ping timeout: 246 seconds).
02:57:33 <GreaseMonkey> segment 0?
02:57:38 <pikhq> The vestiges of segmentation exists.
02:57:43 <pikhq> s/exists/exist/
02:58:03 <GreaseMonkey> echo cat | sed statement
02:59:29 <pikhq> The segment table exists on x86_64, but *only* for the purpose of the rings, and marking long mode vs. compatibility mode.
02:59:44 -!- evincar has joined.
03:00:03 <GreaseMonkey> i take it rings 1 and 2 don't serve much purpose?
03:00:44 <pikhq> Actually, they *can* serve purpose if you want your OS to have more flexibility than "this is kernel, this is not-kernel".
03:00:49 <GreaseMonkey> (not like they did after the 286... they really cocked that up)
03:00:52 <GreaseMonkey> hmmkay
03:00:54 <pikhq> An obvious use of them at present is Xen.
03:01:09 <GreaseMonkey> i thought xen was more of a hypervisor thing
03:01:19 <elliott> it is.
03:01:26 <pikhq> The guest kernels run in ring 1.
03:01:38 <pikhq> The Xen hypervisor runs in ring 0.
03:02:06 <GreaseMonkey> does it catch SGDT?
03:02:14 <GreaseMonkey> and yes i mean SGDT
03:02:40 -!- zzo38 has left.
03:03:01 <pikhq> Unless you're running using the hardware virtualisation extensions, what happens there is precisely the same as what happens when a userspace process does that.
03:03:32 <pikhq> If you *are* running with those, what happens instead is the system call gets trapped and the hypervisor emulates it.
03:03:41 <GreaseMonkey> sweet
03:04:06 <GreaseMonkey> i've never seen any info on how to use the hypervisor (i know there's the AMD and Intel variants)
03:04:30 <GreaseMonkey> oddly enough i did once read about how SMI works
03:04:33 <GreaseMonkey> erm, SMM
03:05:15 <pikhq> I'm not clear on the details, either.
03:06:37 <pikhq> I just know they make x86 meet the the Popek & Goldberg requirements.
03:11:43 -!- zzo38 has joined.
03:14:22 <zzo38> Do you know the books "Science Made Stupid" and "Cvltvre Made Stvpid"? On page 19 there is examples of effective use of statistics including: 50% of the U.S. population has a sub-median standard of living. The average mortality rate among people who jog is 100%. People who buy paperback humor books are less likely to be eaten by crocodiles than population in general.
03:14:55 -!- azaq231 has quit (Ping timeout: 260 seconds).
03:18:03 <evincar> How droll.
03:21:01 <zzo38> There is "PRONUNCIATION SYMBOLS USED IN THIS BOOK", none of which are actually used in the book. It includes "b" in "dumb", "e" in "home", "g" in "align", "k" in "know", etc
03:21:03 <oerjan> that last one needs a citation.
03:21:35 <zzo38> OK.
03:21:39 -!- azaq23 has joined.
03:21:58 <oerjan> (about the paperback crocodiles.)
03:22:15 <zzo38> OK.
03:24:21 <zzo38> There is a future invention checklist. Some of the things on that list have happened since the book was published, including: flat-screen TV, flat-screen 3D TV, first black president, and new joke invented.
03:25:34 <evincar> oerjan: I think it's just saying P(buy paperback humour books AND eaten by crocodile) < P(eaten by crocodile).
03:26:07 <zzo38> evincar: Possibly, although I am unsure.
03:26:46 <zzo38> There is a test to score yourself on to see if you are a neanderthal. Question #13 is not worth any points, though. ("Have you ever felt like bashing a postal clerk with a club? You are normal--no points.")
03:27:41 <oerjan> evincar: that's not a reasonable interpretation.
03:27:42 <Sgeo> evincar, <=, surely/
03:27:59 <Sgeo> Interpretation of what?
03:28:14 <oerjan> "People who buy paperback humor books are less likely to be eaten by crocodiles than population in general.
03:28:17 <oerjan> "
03:28:31 <zzo38> It doesn't seem to me like it is saying what evincar says it is, but I am unsure.
03:29:31 <oerjan> P(eaten by crocodile|buy paperback humour books) <= P(eaten by crocodile).
03:29:37 <oerjan> is my interpretation.
03:30:15 <oerjan> (P(Q|R) = P(Q AND R)/P(R) as usual)
03:31:18 <zzo38> oerjan: I also interpreted it in that way
03:33:08 <zzo38> It has periodic table of elements made up, the columns are now labeled: 1A, 2B, NOT 2B, 3D, 4F, and R2-D2. Elements include lint (Li), scum (Sc), irony (Feh), pandemonium (Pd), etc
03:35:46 <oerjan> istr mentioned that's been done also by "look around you"
03:36:35 <elliott> I don't know if Look Around You had a fake periodic table but it DOES have a fake everything else :P
03:37:12 <oerjan> it's the third google suggestion
03:38:04 <oerjan> http://www.bbc.co.uk/comedy/lookaroundyou/series1/periodic.shtml
03:38:54 <zzo38> I have also seen the Star Trek periodic table of elements.
03:39:44 -!- hagb4rd has joined.
03:40:53 <zzo38> The Look Around You periodic table is very different though.
03:43:16 <Sgeo> istr _mentioned_?
03:43:41 <oerjan> on reddit, probably
03:43:45 <Sgeo> <3 Look Around You
03:43:56 <Sgeo> I thought istr==I seem to recall
03:44:14 <Sgeo> I haven't watched the second season except for the music episode though
03:44:17 <oerjan> yes
03:44:46 <oerjan> as in i recall seeing some link to it
03:46:01 <zzo38> "If the surface area of the well is 750,000 cubic fluorometers..." Does that mean anything?
03:46:29 <oerjan> is that from the same book? if so probably not.
03:47:39 <zzo38> That is from Look Around You.
03:51:32 -!- Lymia has joined.
03:51:36 -!- Lymee has quit (Disconnected by services).
03:51:38 -!- Lymia has changed nick to Lymee.
03:52:32 <evincar> Sgeo: <= naturally, but < is what the sentence said.
03:56:41 <oerjan> then even more probably not.
04:00:35 -!- oerjan has quit (Quit: Good night).
04:07:57 -!- GreaseMonkey has quit (Read error: Operation timed out).
04:54:58 -!- GreaseMonkey has joined.
04:54:58 -!- GreaseMonkey has quit (Changing host).
04:54:58 -!- GreaseMonkey has joined.
04:58:43 <zzo38> Today is the only time I figured out the correct response for Final Jeopardy. It was something about the Earl of Chester or whatever, and the 18th century, I don't know anything about those things. But I said the correct response as soon as the clue was revealed, anyways.
04:59:20 <zzo38> I don't know why, but I understood it that time.
05:02:07 <zzo38> I want LLVM and Haskell to be ported to Glulx, can they ever do that?
05:02:34 <zzo38> And C.
05:05:08 <zzo38> Currently, as far as I know, the only programming language that compiles to Glulx is Inform. But it should have other programming languages too, such as C.
05:05:41 <evincar> I was thinking about targeting TinyVM or one of its cousins.
05:05:56 <evincar> Simply because that's a project that deserves some attention.
05:05:59 <zzo38> What is TinyVM or one of its cousins?
05:06:41 <evincar> zzo38: https://github.com/GenTiradentes/tinyvm
05:06:44 -!- elliott has quit (Ping timeout: 252 seconds).
05:07:56 <zzo38> Why can numbers not be specified in octal?
05:09:23 <zzo38> I also would like LLVM to target MMIX. And also for Haskell for target MMIX. I believe GCC already targets MMIX.
05:09:26 -!- derrik has joined.
05:12:32 -!- azaq231 has joined.
05:15:15 -!- azaq23 has quit (Ping timeout: 260 seconds).
05:18:32 <zzo38> TinyVM seems to be very simple
05:19:49 <evincar> I'm currently looking up how you do anything useful with it.
05:19:53 <zzo38> I understand why there is no "break" after case 0x17 but why is there none after case 0x18?
05:20:08 <zzo38> It does not seem you can do much useful with it, except for a simple experiment.
05:20:19 <zzo38> It does not even have input.
05:21:05 -!- MDude has changed nick to MSleep.
05:21:11 <evincar> I presume you can add hooks somewhere.
05:21:21 <evincar> Or, say, an "int" instruction of your own.
05:21:32 <evincar> Even just one point of customisation would be fine.
05:21:59 <zzo38> The "int" instruction seems to do nothing as far as I can tell from the tvm.c source file.
05:23:07 <zzo38> It also does not appear very well designed, but at least it will work and has simplicity and so on.
05:24:11 <evincar> I found it interesting, at least.
05:24:17 <evincar> In concept, primarily.
05:24:24 <evincar> "Here is a very small VM."
05:24:37 <evincar> I might fork it and clean it up somewhat.
06:08:53 <zzo38> Yes. It is interesting in that way.
06:08:55 -!- zzo38 has quit (Remote host closed the connection).
06:35:17 -!- azaq231 has quit (Ping timeout: 240 seconds).
06:36:42 -!- azaq23 has joined.
06:49:52 -!- jcp has quit (Ping timeout: 250 seconds).
06:50:53 -!- jcp|other has quit (Read error: Operation timed out).
06:54:02 -!- jcp|other has joined.
06:54:14 -!- jcp has joined.
06:54:36 -!- wetneb has quit (Quit: Leaving.).
07:24:22 -!- jcp|1 has joined.
07:26:16 -!- jcp has quit (Ping timeout: 258 seconds).
07:26:26 -!- jcp|other has quit (Ping timeout: 252 seconds).
07:27:14 -!- jcp has joined.
07:54:50 -!- Slereah has joined.
07:55:44 -!- CakeProphet has joined.
07:55:44 -!- CakeProphet has quit (Changing host).
07:55:44 -!- CakeProphet has joined.
07:56:11 -!- GuestIceKovu has quit (Ping timeout: 240 seconds).
08:09:33 <CakeProphet> hi my name is CakeProphet
08:09:50 <monqy> ok
08:10:19 <CakeProphet> okay so I am probably now going to switch to a parser combinator library.
08:10:24 <CakeProphet> upon realizing that I must also parse infix operators.
08:11:37 <CakeProphet> starting over with nothing: the joys of programming.
08:13:00 <olsner> don't underestimate the value of knowing how not to do it
08:15:49 <evincar> CakeProphet: You could use a Pratt parser.
08:15:58 <evincar> If you don't feel like switching.
08:16:54 <evincar> Although from the sound of it, your code could use it?
08:17:03 <evincar> That is, a change.
08:18:13 <CakeProphet> yes.
08:21:17 <CakeProphet> so I guess it's time to find one for Python. If I can't find one then I'll just use yacc.
08:22:13 <olsner> oh, you're writing it in python?
08:22:19 <monqy> google told me the python version of parsec is called pysec
08:22:36 <monqy> not sure how easy it will be to find
08:22:46 <monqy> or how good it is
08:29:47 -!- Patashu has quit (Ping timeout: 258 seconds).
08:53:32 <CakeProphet> a commonly used package is called pyparsing
08:53:35 <CakeProphet> that uses similar techniques.
08:56:26 <CakeProphet> @hoogle (<+>)
08:56:26 <lambdabot> Control.Arrow (<+>) :: ArrowPlus a => a b c -> a b c -> a b c
08:56:26 <lambdabot> Text.PrettyPrint.HughesPJ (<+>) :: Doc -> Doc -> Doc
08:56:26 <lambdabot> Language.Haskell.TH.PprLib (<+>) :: Doc -> Doc -> Doc
08:58:43 -!- derrik has quit (Quit: gone).
09:02:30 -!- EgoBot has quit (Ping timeout: 252 seconds).
09:02:38 -!- EgoBot has joined.
09:05:52 -!- BeholdMyGlory has joined.
09:06:48 -!- Phantom_Hoover has joined.
09:08:11 -!- Taneb|Kindle has joined.
09:08:19 <Taneb|Kindle> Hello
09:09:25 <evincar> Taneb|Kindle: Hello.
09:10:06 <Taneb|Kindle> How is the world of esoteric programming today?
09:10:59 <evincar> Question: in a postfix language, should "cadr" mean "car cdr" like its name indicates, or "cdr car" so it works the way it does in Lisp?
09:13:15 <evincar> I'm going with the by-name one.
09:13:20 <evincar> At the risk of confusing myself.
09:14:02 <Deewiant> If you want it the other way around you can always call it "rdac"
09:14:34 -!- Taneb|Kindle has quit (Ping timeout: 252 seconds).
09:15:23 <evincar> Or car=head, cdr=rest, cadr=headrest, cdar=resthead, etc.
09:21:49 <Sgeo> xkcd came true >:<
09:22:45 <Sgeo> http://xkcd.com/937/
09:23:05 -!- derrik has joined.
09:23:06 <monqy> evincar: no need to do that if you have composition
09:25:12 <CakeProphet> monqy the functional purist.
09:25:22 <monqy> always and forever
09:25:49 <evincar> monqy: Naturally. I was just talking about names.
09:26:14 <evincar> (cdr car) "cadr" def versus (car cdr) "cadr" def.
09:26:31 <monqy> evincar: you missed my point; you don't even have to name them
09:26:43 <monqy> evincar: unless they're so extensively used and composition is so verbose that they really need them
09:26:50 <evincar> It's for concision.
09:26:52 <evincar> That's all.
09:27:02 <evincar> Composition is just juxtaposition.
09:27:10 <monqy> then there's even less reason
09:27:29 <evincar> It was a passing curiosity.
09:28:50 <CakeProphet> Sgeo: huh, these new ones are a little better quality than usual.
09:29:02 <CakeProphet> let's hope it's a steady comeback.
09:29:36 <CakeProphet> though he definitely already used the wedding setting in the "known someone too long to ask their name" comic.
09:29:50 <CakeProphet> (re: latest comic)
09:31:04 <CakeProphet> or maybe the quality has just gotten so long that if I find anything slightly amusing it's a sign of a "comeback"
09:31:09 <CakeProphet> s/long/low/
09:37:11 -!- CakeProphet has quit (Ping timeout: 260 seconds).
09:39:52 -!- CakeProphet has joined.
09:39:52 -!- CakeProphet has quit (Changing host).
09:39:52 -!- CakeProphet has joined.
09:40:23 -!- azaq23 has quit (Quit: Leaving.).
09:48:50 -!- Vorpal has joined.
09:48:57 -!- Vorpal has quit (Changing host).
09:48:57 -!- Vorpal has joined.
09:52:00 -!- derrik_ has joined.
09:52:29 -!- derrik has quit (Ping timeout: 264 seconds).
09:52:41 -!- derrik_ has changed nick to derrik.
09:54:26 -!- derrik has quit (Client Quit).
09:54:49 -!- derrik has joined.
10:01:31 -!- ptyyy has joined.
10:03:01 -!- ptyyy has left.
10:08:10 -!- FireFly has joined.
10:12:17 -!- GreaseMonkey has quit (Quit: The Other Game).
10:23:23 -!- Patashu has joined.
10:24:36 -!- evincar has quit (Quit: Sleeping through the hurricane.).
10:31:08 <itidus20> So a hd image has about 2 million pixels. Looking at such an image, a regular human couldn't identify the x,y coordinate of an arbitrarily selected black pixel on a white background or a white pixel on a black background, and yet we presume to understand the pixel.
10:31:46 <Phantom_Hoover> what
10:32:00 <itidus20> oh.. i will break down what i said
10:32:27 <itidus20> A 1920x1080 (HD) image has about 2 million pixels.
10:32:57 <itidus20> We could fill this image all black #000000 or all white #FFFFFF
10:33:28 <itidus20> And having filled the image, we could mark a single pixel in the inverse colour.
10:33:58 <itidus20> So if we filled the image all black, we could select a random pixel to make white
10:34:10 <itidus20> And if we filled the image all white, we could select a random pixel to make black
10:34:50 -!- MSleep has quit (Read error: Connection reset by peer).
10:35:08 <Phantom_Hoover> AHA WE SHALL FIND THE AMERICAN SPIES IN OUR MIDST
10:35:09 -!- MSleep has joined.
10:35:36 <itidus20> And yet, if we asked a casual human observer to tell us the (x,y) coordinate of that single pixel just by looking at it, most likely they could not
10:35:48 <itidus20> even given a signifigant amount of time
10:35:54 <monqy> Phantom_Hoover: hm?
10:36:02 <itidus20> it is highly likely they would be off by at least a pixel
10:36:03 <monqy> Phantom_Hoover: I'm in usa but apparently on a french server
10:36:16 <Phantom_Hoover> You cunning bastard.
10:36:26 -!- pikhq has quit (*.net *.split).
10:36:32 -!- chickenzilla has quit (*.net *.split).
10:36:32 -!- myndzi has quit (*.net *.split).
10:36:32 -!- atehwa has quit (*.net *.split).
10:36:32 -!- aloril has quit (*.net *.split).
10:36:32 -!- augur has quit (*.net *.split).
10:36:32 -!- itidus20 has quit (*.net *.split).
10:36:32 -!- fungot has quit (*.net *.split).
10:36:32 -!- clog has quit (*.net *.split).
10:36:32 -!- fizzie has quit (*.net *.split).
10:36:32 <monqy> I guess some people might try to connect to servers near themselves
10:36:32 <Phantom_Hoover> itidus20, yesyesyes I get all that I just have no idea what the hell you're talking about.
10:36:41 <monqy> bye itidus20
10:36:56 <Phantom_Hoover> Oh, wait, he was a SUBVERSIVE CAPITALIST PIGDOG
10:37:02 -!- pikhq has joined.
10:37:02 -!- augur has joined.
10:37:02 -!- chickenzilla has joined.
10:37:02 -!- myndzi has joined.
10:37:02 -!- itidus20 has joined.
10:37:02 -!- atehwa has joined.
10:37:02 -!- fungot has joined.
10:37:02 -!- aloril has joined.
10:37:02 -!- clog has joined.
10:37:02 -!- fizzie has joined.
10:37:10 -!- EgoBot has quit (*.net *.split).
10:37:14 <Phantom_Hoover> fizzie, YOUR TRUE COLOURS ARE REVEALED
10:37:38 -!- EgoBot has joined.
10:37:50 -!- coppro has quit (*.net *.split).
10:38:06 -!- coppro has joined.
10:38:22 -!- yorick has quit (*.net *.split).
10:38:41 -!- yorick has joined.
10:38:59 -!- FireFly has quit (*.net *.split).
10:38:59 -!- copumpkin has quit (*.net *.split).
10:39:00 -!- shachaf has quit (*.net *.split).
10:39:20 -!- derrik has quit (*.net *.split).
10:39:30 -!- FireFly has joined.
10:39:31 -!- copumpkin has joined.
10:39:31 -!- shachaf has joined.
10:39:34 -!- FireFly has quit (Quit: FireFly).
10:39:37 -!- derrik has joined.
10:39:40 -!- CakeProphet has quit (*.net *.split).
10:39:42 -!- monqy has quit (*.net *.split).
10:39:42 -!- olsner has quit (*.net *.split).
10:40:06 -!- Patashu has quit (*.net *.split).
10:40:08 -!- mycroftiv has quit (*.net *.split).
10:40:08 -!- Zetro has quit (*.net *.split).
10:40:08 -!- twice11 has quit (*.net *.split).
10:40:18 -!- FireyFly has joined.
10:41:03 -!- Patashu has joined.
10:41:03 -!- mycroftiv has joined.
10:41:03 -!- Zetro has joined.
10:41:03 -!- twice11 has joined.
10:41:18 -!- CakeProphet has joined.
10:41:18 -!- monqy has joined.
10:41:18 -!- olsner has joined.
10:44:20 -!- Slereah has quit (*.net *.split).
10:44:35 -!- Slereah has joined.
10:45:27 -!- monqy has quit (Quit: hello).
11:40:35 -!- FireyFly has changed nick to FireFly.
12:01:53 -!- oerjan has joined.
12:03:45 -!- augur has quit (Remote host closed the connection).
12:57:52 -!- hagb4rd has quit (Ping timeout: 252 seconds).
13:36:18 -!- sllide has joined.
13:46:14 -!- Sgeo has quit (Ping timeout: 245 seconds).
13:48:41 -!- Sgeo has joined.
13:49:00 -!- Patashu has quit (Ping timeout: 240 seconds).
13:54:59 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
13:55:07 -!- oerjan has quit (Quit: leaving).
13:59:44 -!- copumpkin has quit (Ping timeout: 250 seconds).
14:00:09 -!- copumpkin has joined.
14:05:44 -!- augur has joined.
14:22:25 -!- derrik has left.
14:22:48 -!- Wamanuz2 has joined.
14:25:33 -!- Wamanuz has quit (Ping timeout: 252 seconds).
14:59:41 -!- augur has quit (Remote host closed the connection).
16:38:47 <fizzie> Phantom_not_here_Hoover: I no gets it.
16:40:23 <Gregor> Every battle in the history of video games has been between The Order of Those who Walk Right, and The Cult of Those who Walk Left.
17:25:22 -!- zzo38 has joined.
17:35:52 -!- MSleep has changed nick to MDude.
17:45:10 -!- zzo38 has quit (Remote host closed the connection).
17:52:20 -!- Phantom_Hoover has joined.
17:55:21 -!- elliott has joined.
18:15:14 <elliott> Gregor: So does mudem work now?
18:17:18 <Gregor> elliott: In theory :P
18:17:39 <elliott> Gregor: Does it still have that nasty bug that made HackEgo unreliable? :P
18:17:56 <Gregor> elliott: In theory :P
18:18:25 <elliott> Gregor: That's annoying and restricts my plans for world domination :P
18:20:36 <Lymee> :t fix
18:20:37 <lambdabot> forall a. (a -> a) -> a
18:20:38 <Lymee> :t ($)
18:20:39 <lambdabot> forall a b. (a -> b) -> a -> b
18:20:50 <Lymee> > fix ($)
18:20:51 <lambdabot> Overlapping instances for GHC.Show.Show (a -> b)
18:20:51 <lambdabot> arising from a use of `...
18:21:03 <Lymee> :t fix ($)
18:21:04 <lambdabot> forall a b. a -> b
18:43:41 -!- yorick has quit (Quit: Poef!).
19:13:10 -!- sllide has quit (Read error: Connection reset by peer).
19:13:36 -!- sllide has joined.
19:13:52 -!- oerjan has joined.
19:24:28 <Sgeo> Gregor, how's work on Plof?
19:25:23 <elliott> Sgeo: http://codu.org/projects/fythe/hg/
19:25:49 <Sgeo> ty
19:26:20 <elliott> Sgeo: That was sarcasm. There is no current version of Plof 4 at all.
19:26:38 -!- zzo38 has joined.
19:26:52 <Sgeo> Oh >.>
19:27:06 <Gregor> elliott: That's technically not quite true :P
19:27:17 <Gregor> I've got a few files which may or may not be part of Plof 4 on my computer.
19:27:28 <elliott> The last thing that happened was me pestering Gregor about various language changes that I'd like after trying to use the previous evrsion, realising that it was far too bitrotten and incomplete to actually use, and then devoting my energy to making Fythe good enough to implement what I would want Plof to be, which then stopped when I got number keys :P
19:27:32 <elliott> Gregor: Fair enough.
19:27:37 <elliott> s/got/lost
19:27:38 <elliott> /
19:28:44 <elliott> Gregor: By "technically", do you mean that the files are a hundred lines long, last edited a year ago, and with syntax errors, or something more than that :P
19:29:12 <zzo38> Is there any proposal for restrictive classes in Haskell, such as having a monad that is only allowed to contain types of a certain class? (I would think it might also be necessary to have the monad type itself follow the same restriction so that "join" has a valid type on that monad)
19:30:02 <elliott> class Functor f a b | f -> a b where fmap :: (a -> b) -> f a -> f b
19:30:10 -!- pikhq has quit (Ping timeout: 246 seconds).
19:30:13 <Gregor> -rw-r--r-- 1 gregor gregor 8059 Jul 30 18:36 plof_g.plof
19:30:22 <elliott> class Applicative f a b | f -> a b where ... blah blah blah
19:30:25 <Gregor> $ wc -l plof_g.plof
19:30:25 <Gregor> 237 plof_g.plof
19:30:44 <elliott> Gregor: .plof? So nothing that can actually run then X-D
19:31:10 <oerjan> zzo38: there are classes generalizing Monad in that way, aka parametrized monads. they don't become instances of the ordinary Monad though.
19:31:27 <Sgeo> elliott, your nuber keys work now?
19:31:33 <Sgeo> number, too
19:31:50 <elliott> Sgeo: What makes you think that?
19:32:01 <Gregor> elliott: No, plof_g.plof is a Fythe file.
19:32:22 <Sgeo> Oh, I missed <elliott> s/got/lost
19:32:22 <Sgeo> <elliott> /
19:32:24 <elliott> Gregor: Good file extension :P
19:32:58 <oerjan> zzo38: they can still be used with do notation if you use the proper language extension
19:33:48 <oerjan> http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#rebindable-syntax
19:34:11 <zzo38> oerjan: O, that's how it works. But I think it would be useful sometimes to generalize any class in that way by specifying restrictions on instances; maybe you need to be able to specify restrictions on => specifications or whatever... maybe Template Haskell could make new classes but then you need to have members of the same name
19:34:23 <zzo38> I do know about rebindable syntax.
19:34:39 <zzo38> And I do not mean specifically monads or do-notation
19:37:15 <zzo38> Another possibility could be class-based pattern matching, where you could specify the purpose of functions based on their class.
19:37:25 <oerjan> well, this subject tends to come up whenever someone wants to make Set into a Monad :P
19:37:48 <zzo38> Yes, that is one of the purposes of what I am mentioning; it allows you to make Set into a Monad.
19:37:55 <oerjan> (because you cannot use it unless there is an Ord instance for the elements)
19:38:16 <oerjan> or at least Eq
19:39:07 <zzo38> The implementation of Set requires an Ord instance, although I suppose you could make up SlowSet with less capability of Set but only requires Eq not Ord
19:39:26 <oerjan> yeah
19:39:38 <Gregor> <elliott> Gregor: Good file extension :P
19:39:44 <Gregor> elliott: Oh, I'm sorry, I thought this was the year 2011 and I wasn't using DOS. I'd better rename it to PLOF_G.FYT
19:40:49 <elliott> Gregor: OBVIOUSLY I was referring to the fact that it was more than three characters, not the fact that you named a Fythe file .plof instead of .fythe :P
19:41:02 <elliott> Which you then subconsciously corrected to make the DOS dig :P
19:41:03 <Gregor> But there's no distinction
19:41:17 <Gregor> Unless you'd like all Plof files named .fythe.
19:41:36 <elliott> It's only coincidence that Fythe files are valid Plof, isn't it
19:41:37 <Gregor> Instead, I have made an executive decision that, since there is in fact no distinction, all files which are part of the Plof project will be .plof.
19:41:52 <Gregor> No, it's no coincidence at all; the Plof bits build Fythe into Plof.
19:41:58 <Gregor> There's no distinction because there is no Fythe language.
19:42:04 <Gregor> (Except when there is)
19:42:06 <elliott> Yes there is :P
19:42:19 <elliott> It's just coincidence that Plof happens to want to use "fythe {...}" to enclose Fythe bits :P
19:42:31 -!- ais523 has joined.
19:42:45 <Gregor> plof_g.plof in fact has no fythe {} bits, it has grammar {} and transform {} bits.
19:42:55 <CakeProphet> --potential employer
19:42:56 <Gregor> Ohnowait, I lied, there are a few fythe {} bits X-P
19:43:03 <CakeProphet> ....wat. WHY DIDN'T IT POST.
19:43:10 <Gregor> CakeProphet: Because of SATAN.
19:43:10 <elliott> I didn't know such bits existed, are they new?
19:43:20 -!- CakeProphet has quit (Quit: Reconnecting).
19:43:21 <Gregor> elliott: They've been in for months :P
19:43:30 <Gregor> elliott: They're implemented by fythecore.
19:43:37 -!- CakeProphet has joined.
19:43:37 -!- CakeProphet has quit (Changing host).
19:43:37 -!- CakeProphet has joined.
19:44:57 <elliott> Gregor: Oh, I ignored fythecore :P
19:45:36 <Gregor> Dood, cfythe is /basically/ done.
19:45:43 -!- pikhq has joined.
19:46:30 <elliott> Gregor: Except for all the bignum imperfections that are the only things I concern myself with :P
19:49:08 <zzo38> How do I do if I want to define a monad in terms of unit/fmap/join or in terms of Kleisli composition?
19:49:31 <Vorpal> `addquote <elliott> Gregor: Except for all the bignum imperfections that are the only things I concern myself with :P
19:49:36 <HackEgo> 631) <elliott> Gregor: Except for all the bignum imperfections that are the only things I concern myself with :P
19:49:37 <elliott> m >>= f = join (fmap f m)
19:49:46 <elliott> zzo38: return = pure; m >>= f = join (fmap f m) for example
19:49:54 <elliott> Vorpal: that's not funny or interesting?
19:50:00 <Vorpal> elliott, it is typical of you
19:50:11 <elliott> Vorpal: so are most things I say
19:50:18 <Vorpal> elliott, this more than most
19:50:22 <Vorpal> elliott, and I find it funny
19:50:25 <elliott> not really, no
19:50:31 <Phantom_Hoover> elliott, like half my DF quotes?
19:50:44 <elliott> Phantom_Hoover: Those are funny assuming you don't know what DF is.
19:50:51 <elliott> I guess mine might be funny if you don't know what bignums are? But actually not really.
19:51:05 <Vorpal> elliott, it is funny if you don't know who elliott is
19:51:08 <Vorpal> maybe
19:51:19 <elliott> Considering you said that the humour is derived from its typicality, that's a contradiction.
19:51:20 <zzo38> elliott: OK. That can use unit/fmap/join (which is the most common way in category theory, I think), but there is also Kleisli composition can it be defined in that way?
19:51:39 <Vorpal> elliott, I was joking about the last thing.
19:52:06 <Gregor> `addquote <Vorpal> elliott, it is typical of you <elliott> Vorpal: so are most things I say
19:52:08 <HackEgo> 632) <Vorpal> elliott, it is typical of you <elliott> Vorpal: so are most things I say
19:52:10 <elliott> zzo38: Well, (f >=> g) x = do fx <- f x; g fx
19:52:12 <elliott> ?undo do fx <- f x; g fx
19:52:12 <lambdabot> f x >>= \ fx -> g fx
19:52:24 <Vorpal> Gregor, "that's not funny or interesting"
19:52:27 <elliott> so (f >=> g) x = f x >>= g, obviously
19:52:28 <Vorpal> (it is)
19:52:38 <elliott> Gregor: Let's keep that one and ditch the other.
19:52:39 <elliott> `delquote 631
19:52:41 <HackEgo> ​*poof*
19:53:07 <elliott> zzo38: yeah, I think (m >>= f) = (const m >=> f) ()
19:53:14 <elliott> :t \m f -> (const m >=> f) ()
19:53:15 <lambdabot> forall (m :: * -> *) b c. (Monad m) => m b -> (b -> m c) -> m c
19:53:18 <elliott> yeah
19:53:32 <Vorpal> brb, moving bouncer to a different computer
19:53:40 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
19:54:15 -!- Vorpal has joined.
19:56:15 <elliott> 36 hours agoHackBot<ais523> addquote <CakeProphet> monqy: help how do I use lambdabot to send messages to people. [...around half an hour later...] <CakeProphet> @messages <lambdabot> quicksilver said 1y 2m 18d 19h 54m 29s ago: you use @tell
19:56:19 <elliott> ais523: thanks, I forgot to logread
19:56:36 <ais523> elliott: I considered even @telling you about it, it was so amazing
19:56:36 <oerjan> (g >=> f) x = f x >>= g = join (fmap g (f x))
19:56:45 <ais523> but decided you were probably going to notice it when going through quotes
19:56:57 <oerjan> :t join . fmap ?g . ?f
19:56:57 <lambdabot> forall (m :: * -> *) a a1 (f :: * -> *). (Monad m, ?g::a1 -> m a, Functor m, ?f::f (m a1), Functor f) => f (m a)
19:57:20 <oerjan> thank you, caleskell
19:57:23 <elliott> :D
19:57:28 <oerjan> :t join P.. fmap ?g P.. ?f
19:57:29 <lambdabot> Couldn't find qualified module.
19:57:32 <oerjan> argh
19:57:39 <oerjan> :t join Prelude.. fmap ?g Prelude.. ?f
19:57:40 <lambdabot> forall a a1 (f :: * -> *) a2. (Monad f, ?g::a1 -> f a, Functor f, ?f::a2 -> f a1) => a2 -> f a
19:57:45 <zzo38> I suppose it is then easy to just reverse them in order to define it in terms of (<=<) instead of (>=>) since (<=<) is matching category theory better, I think. Is it?
19:57:51 <oerjan> eek
19:58:19 -!- Sgeo has quit (Ping timeout: 245 seconds).
19:58:55 <oerjan> both >=> and <=< are valid category theory compositions
19:59:13 -!- monqy has joined.
19:59:52 <oerjan> for opposite categories
20:00:22 <zzo38> Yes, I did read about the opposite categories in Wikipedia.
20:01:07 -!- Sgeo has joined.
20:01:56 <oerjan> also i vaguely recall not all category theorists agree on which order to compose things
20:02:09 <elliott> ais523: um, hmm, I didn't see that quote, maybe I forgot to logread /yesterday/
20:02:40 <ais523> elliott: it was early morning yesterday
20:02:51 <ais523> just before I went to bed far too late
20:03:00 <elliott> oh no, it looks like evincar discusses languages before that quote
20:03:05 <zzo38> oerjan: Is that the caes? It seem to me that <=< is the one that matches the order of composition of ordinary morphisms in the Hask category when making them used in the monad
20:03:08 <monqy> elliott: oh no
20:03:11 <coppro> yeah, composition can go backwards to some category theorists
20:03:30 <elliott> >=> is much nicer than <=<
20:03:36 <elliott> backwards composition is... backwards
20:03:39 <elliott> (same goes for (.) really)
20:03:42 <monqy> I use <=< in some cases
20:03:52 <elliott> unfortunately the only standard name for (flip (.)) is (>>>) from Control.Category
20:03:55 <elliott> which is too verbose
20:04:00 <elliott> |> is what F sharp uses, IIRC, that's quit enice
20:04:02 <elliott> quite nice
20:04:07 <oerjan> zzo38: well it's the order which corresponds to ., yes.
20:04:10 <monqy> hm
20:04:29 -!- myndzi has quit (Remote host closed the connection).
20:04:51 <elliott> otoh, /application/ is arguably backwards in Haskell :)
20:04:53 <elliott> and thus Factor was invented
20:04:55 <oerjan> |> isn't flip (.), though, but flip ($)
20:04:55 <zzo38> oerjan: Yes, that is what I meant.
20:04:59 <elliott> oerjan: oh, it is?
20:05:07 <elliott> oerjan: is (.>) flip (.)
20:05:09 <oerjan> iirc
20:05:10 <elliott> I forget what the operator actually is
20:05:13 <elliott> .> is quite nice
20:05:15 <oerjan> elliott: i don't know
20:05:20 <elliott> (.) would be the nicest name, but it's taken ;-)
20:05:22 <oerjan> i've just barely heard of |>
20:05:24 -!- Sgeo has quit (Ping timeout: 245 seconds).
20:05:31 <zzo38> elliott: I can understand very well why it can be considered backwards
20:05:52 -!- pikhq has quit (Remote host closed the connection).
20:06:43 <elliott> 07:46:37: <CakeProphet> my favorite question to receive from someone who knows nothing about programming: "why are there so many programming languages? why not just have one."
20:06:43 <elliott> i think this a lot, too
20:06:47 <elliott> it would lower my stress levels considerably
20:06:59 <elliott> it would have to be a good one though
20:07:10 -!- Sgeo has joined.
20:07:14 <ais523> because different languages are good in different situations
20:07:49 <monqy> elliott: watch out, soon after, evincar will be stupid about it, iirc
20:08:16 <monqy> I guess it's probably too late
20:08:28 <zzo38> Of course you use different programming language for different purpose, is good idea.
20:09:04 <elliott> browser tabs scale so terribly :(
20:09:26 <monqy> it's all too frequent that I get so many tabs that I can't see any of the icons
20:09:32 <monqy> I guess firefox has a better time with that...
20:09:37 <elliott> what happens with me is
20:09:40 <elliott> not only do i get too many tabs
20:09:42 <elliott> i also get too many windows
20:09:50 <elliott> because i start new windows as a vague organisational method
20:09:52 <monqy> oh I keep myself to one window
20:09:54 <elliott> but then they just kind of... inbreed
20:10:12 <elliott> monqy: have i told you yet about my Perfect Tab replacements, they're totally perfect, one day i will implement them and be happy
20:10:18 <zzo38> On my computer I don't use the icons and each tab becomes as long as possible, so it becomes easier to watch. I also hardly ever open a large amount of tabs like many other people do.
20:10:42 <monqy> one of my problems is that I keep tabs alive forever as a note to self or a thing to read or investigate
20:11:03 <monqy> so I have a bunch of ancient tabs that I'm not paying any attention to that are a big clutter
20:11:15 <zzo38> You can use bookmarks isn't it?
20:11:33 <monqy> managing bookmarks like that would be a bit much for me
20:11:36 <elliott> monqy: you have not, asked me you should ask me
20:11:40 <monqy> elliott: ask
20:11:53 <elliott> monqy: ok so mine unifies history, bookmarks and tabs
20:12:07 <monqy> zzo38: if I made a special bookmarks place for those sorts of bookmarks it might be okay, but I dunno I'm too lazy
20:12:11 <elliott> monqy: instead of being horizontal it's vertical because the list is practically infinite (I'll get to this)
20:12:21 <elliott> monqy: basically,
20:12:30 <elliott> monqy: from a tab-less point of view -- i.e. only ever clicking links linearly on a page --
20:12:48 <monqy> is it just icons, are the names colapseable, or does it take up a lot of space :(
20:12:48 <elliott> monqy: it would be (either top-to-bottom or bottom-to-top, it's irrelevant) a list from most recently-visited page to least
20:12:51 <elliott> i.e., a history list
20:13:10 <elliott> monqy: it shouldn't take more than a hundred or two horizontal pixels which is not much these days, and it pays off in usability
20:13:13 <elliott> but yeah, listen,
20:13:37 <monqy> my horizontal space is valuable, what with tiling and all :(
20:13:42 <elliott> yes yes yes but listen
20:13:45 <elliott> monqy: now, obviously you have a cache, so if you click a page that's close enough to the current pages, it'll load instantly
20:13:51 <elliott> but further away ones might have to reload
20:13:53 <elliott> this is basically just gc
20:14:07 <elliott> monqy: now, clicking a page lower down obviously moves it to the top, because you re-visit it
20:14:23 <elliott> monqy: Ctrl+T just opens a new blank tab at the top and forks the history
20:14:24 <elliott> that is
20:14:34 <elliott> say you visit A->B->C, Ctrl+T, go to D->E->F
20:14:37 <elliott> if you omitted the Ctrl+T
20:14:39 <elliott> the list would look like
20:14:42 <elliott> A, B, C, D, E, F
20:14:44 <elliott> but with the Ctrl+T
20:14:45 <elliott> it looks like
20:14:50 <elliott> A, B, D, E, C, F
20:15:03 <elliott> because the most recent pages in each "tab" (fork) are at the bottom
20:15:05 <elliott> with the history above
20:15:46 <elliott> monqy: bookmarking something is just starring it; it moves around in the history like normal and you can bring up a list of all starred pages
20:15:58 <elliott> monqy: and also: tabs automatically unload if you ignore them for long enough
20:16:02 <elliott> because history = tabs
20:16:15 <elliott> (you can set tabs not to unload if you think a resource might expire; that just saves it to disk)
20:16:16 <monqy> unless they're starred I hope?
20:16:27 <monqy> oh good
20:16:31 <elliott> monqy: well, do you keep all your bookmarks open all the time? (assuming you used bookmarks)
20:16:33 <elliott> probably not
20:16:37 <elliott> but if you think it might expire you can hold it, yes
20:16:56 <elliott> so basically this is a vertical list, roughly in visitation order, organised with forks to keep relevant stuff near the bottom
20:16:59 <monqy> oh by unload I mistook you for meaning they get cleaned up forever :'(
20:17:05 <elliott> no, they just get GC'd
20:17:06 <monqy> im still tired
20:17:12 <elliott> to save memory
20:17:29 <monqy> would there be any way to organise starred tabs
20:17:29 <elliott> something nice would be if you hover over an entry it shows a little screenshot poking out from the list so you can easily distinguish pages by rolling your mouse around
20:17:49 <elliott> monqy: anyway, it does take horizontal space, but you could pretty much just dedicate a workspace to your browser, or use a vertical split in your WM :P
20:17:59 <monqy> ew vertical split :(
20:18:08 <monqy> er
20:18:09 <elliott> but really, horizontal space is pretty cheap
20:18:14 <elliott> erm, horizontal split
20:18:15 <elliott> you KNOW WHAT I MEAN
20:18:17 <monqy> yeah
20:18:22 <elliott> monqy: you could probably just give them notes, which would just be an arbitrary string of text, and you could fuzzy-search that
20:18:23 <monqy> I knew what you meant
20:18:25 <elliott> you could use them like tags if you wanted
20:18:27 <monqy> which confused me
20:18:39 <elliott> and a page title/url would count towards the notes I guess
20:18:45 <elliott> and obviously if you typed into the address bar it'd search notes as well as everything else
20:19:37 <zzo38> Would there be any use to have a kind ** for classes? And why is the proposal for type level natural numbers using Nat as its kind rather than using ## as its kind?
20:19:50 <elliott> because words are nicer than symbols
20:20:38 <zzo38> But all the other kinds use symbols
20:20:53 -!- Sgeo has quit (Ping timeout: 240 seconds).
20:21:39 <zzo38> Including * # (#) ? ?? ->
20:21:58 <elliott> that's the fault of those kinds :P except for maybe (->) and *
20:23:27 -!- myndzi has joined.
20:24:04 <zzo38> I don't think so. I think it makes sense to use symbols for the kinds since the words are used for type specifications and other stuff instead, so that you can use these symbols for specifying kinds.
20:24:06 -!- myndzi has quit (Client Quit).
20:24:15 <elliott> well, oerjan has a lot of opinions on this, so I'll hand it over to him
20:24:22 <elliott> monqy: ok pledge dedication to my amazing tab replacement scheme thanks
20:24:45 <elliott> monqy: oh and I guess if you don't use a fork's latest page much it moves to be after its history rather than with all the current forks?
20:24:53 <elliott> probably need that to keep the history part actually useful
20:25:32 <oerjan> `addquote <elliott> well, oerjan has a lot of opinions on this, so I'll hand it over to him
20:25:34 <HackEgo> 632) <elliott> well, oerjan has a lot of opinions on this, so I'll hand it over to him
20:25:54 -!- myndzi has joined.
20:26:00 <elliott> oerjan: i feel that may lose something out of context :P
20:26:34 <oerjan> no, not really. have you not learned anything about me :P
20:28:02 <Phantom_Hoover> oerjan, we all know that the only stupid quotes allowed are ones elliott adds of me.
20:28:03 <zzo38> They all lose everything out of context
20:28:13 <elliott> Phantom_Hoover: Bawww.
20:28:41 <oerjan> anyway my opinion if any is that using symbols is fine when there are only a few kinds, but that the more are added the more they need to switch to something more readable/mnemonic.
20:28:49 <zzo38> Actually I think (#) kind should be renamed to ## and natural number kinds should be +
20:29:00 <Phantom_Hoover> elliott, what the hell does 'baaaaw' mean?
20:29:06 <elliott> oerjan: they're adding Nat
20:29:16 <oerjan> so you said.
20:29:19 <elliott> Phantom_Hoover: I don't know but I didn't say that.
20:29:22 <elliott> oerjan: no, zzo38 said that >:)
20:29:43 <Phantom_Hoover> OK, 'Bawww'.
20:30:14 <elliott> Phantom_Hoover: It's the noise a sheep makes if it's really bad at making proper sheep noises.
20:30:16 <elliott> I think.
20:30:29 <zzo38> Maybe they should have a pragma to use named kinds and use symbols otherwise; I think Perl does something similar with other stuff
20:30:51 <Phantom_Hoover> elliott, you're a crappy sheep, in other words?
20:31:07 <elliott> Phantom_Hoover: Yes. :(
20:31:20 <oerjan> yes, perl's use english
20:32:07 <oerjan> :k (->)
20:32:07 <lambdabot> ?? -> ? -> *
20:33:17 <Phantom_Hoover> What does k do?
20:33:24 <Phantom_Hoover> :k (.)
20:33:24 <lambdabot> parse error on input `.'
20:33:25 <oerjan> shows the kind of a type
20:33:30 <Phantom_Hoover> Oh, right.
20:33:35 <Phantom_Hoover> :k Maybe
20:33:35 <lambdabot> * -> *
20:34:11 <Lymee> :k IO
20:34:11 <lambdabot> * -> *
20:34:32 <Lymee> :k data A b c = B b b c c
20:34:33 <lambdabot> parse error on input `data'
20:34:34 <oerjan> afaik (->) is the only common one i know that's very interesting
20:34:53 <CakeProphet> baaaawwing is what people do on the internet
20:34:54 <Phantom_Hoover> Instead of *s it has... QUESTION MARKS
20:34:57 <CakeProphet> when they are butthurt
20:35:03 <CakeProphet> yes, these are technical terms.
20:35:04 <Phantom_Hoover> And bawwwing?
20:35:13 <oerjan> because it needs to work with unboxed values as well
20:35:45 <CakeProphet> ?? literally means "the type allowed as arguments to functions" which basically means "everything but unboxed tuples"
20:35:45 <lambdabot> literally means "the type allowed as arguments to functions" which basically means "everything but unboxed tuples"
20:35:49 <Phantom_Hoover> Boxed?
20:35:54 <CakeProphet> I think it's the only place ?? is used.
20:35:55 <oerjan> :k State#
20:35:56 <lambdabot> Not in scope: type constructor or class `State#'
20:37:01 <CakeProphet> ? is any type, ?? is anything but unboxed tuples (# or *), (#) is unboxed tuples, # is unboxed types, * is boxed types.
20:37:48 <CakeProphet> boxed as in "has pointers and stuff" or is there a more technical definition? :P
20:37:54 <oerjan> boxed types are implemented as uniformly sized pointers to values, so they can be moved around without knowing more precisely what type they are, important for polymorphisms
20:38:05 <oerjan> *-s
20:38:26 <CakeProphet> yes, oerjan's explanation sounds much better.
20:38:35 <Phantom_Hoover> Seems inelegantly low-level for Haskell.
20:38:45 <oerjan> boxed non-strict types in addition have the option that the pointer goes to a not yet evaluated thunk
20:38:56 <CakeProphet> Phantom_Hoover: I believe it's a GHC thing
20:39:11 <CakeProphet> but, uh, it's useful to be able to deal with low-level details when you need to.
20:39:14 <oerjan> iirc all non-strict types are boxed, but there are exceptions the other way
20:39:15 <elliott> Phantom_Hoover: You would prefer it be slow?
20:40:01 <oerjan> Phantom_Hoover: all the kinds other than * are basically in order for ghc to be able to do things low-level for efficiency
20:40:14 <elliott> apart from Nat :)
20:40:21 <Lymee> :k Nat
20:40:21 <elliott> that's for Oleg
20:40:22 <lambdabot> Not in scope: type constructor or class `Nat'
20:40:25 * Lymee ?
20:40:49 <oerjan> Lymee: Nat will be a kind, and is just being added so i hear (above)
20:41:10 <oerjan> presumably the kind for types of the form 0, 1, 2 ...
20:41:28 <oerjan> which will be useful for type system calculations
20:41:39 <oerjan> :k 1
20:41:40 <lambdabot> *
20:41:50 <oerjan> :k 0
20:41:51 <lambdabot> Only unit numeric type pattern is valid
20:41:56 <oerjan> huh
20:41:57 <oerjan> :k 2
20:41:58 <lambdabot> Only unit numeric type pattern is valid
20:42:13 <Phantom_Hoover> Nat is a kind?
20:42:30 <oerjan> Phantom_Hoover: that's what this discussion started with, it will be
20:42:38 <elliott> <oerjan> Lymee: Nat will be a kind, and is just being added so i hear (above)
20:42:38 <Phantom_Hoover> How does that work?
20:42:40 <elliott> <Phantom_Hoover> Nat is a kind?
20:42:47 <elliott> Phantom_Hoover is practicing his Vorpal
20:43:08 <Phantom_Hoover> *practising
20:43:13 <ais523> oerjan: is Haskell getting dependent types, then?
20:43:17 <Phantom_Hoover> ais523, no.
20:43:28 <ais523> that's the most obvious reason to put a natural number in a type
20:43:31 <elliott> no it isn't
20:43:40 <ais523> hmm, what more obvious reasons are there?
20:43:41 <Phantom_Hoover> elliott, I was just asking circuitously how it works.
20:43:44 <elliott> class Vec n a where Nil :: Vec 0 a; Cons :: a -> Vec n a -> Vec (S n) a
20:43:46 <elliott> erm
20:43:47 <elliott> data Vec n a where Nil :: Vec 0 a; Cons :: a -> Vec n a -> Vec (S n) a
20:43:49 <elliott> not class
20:43:52 <Phantom_Hoover> Is it just the 0 | S n one?
20:43:55 <elliott> you can do this already obviously, s/0/Z/ and data Z; data S n
20:44:07 <elliott> GHC is just adding special support for it to make it less terrible to use
20:44:17 <ais523> hmm, I'd think of that like a primitive sort of dependent typing
20:44:27 <elliott> so would many people who have no idea what dependent typing really is :)
20:44:30 <Phantom_Hoover> ais523, it's not
20:44:33 <elliott> that's not dependent typing, that's literally just typing
20:44:44 <elliott> I suppose you could see all types as a kind of dependent typing but that's silly
20:44:50 <ais523> I suppose so
20:44:59 <Phantom_Hoover> Dependent typing requires they be arbitrary values.
20:45:04 <elliott> Phantom_Hoover: no
20:45:11 <elliott> Omegamega lets you do that with any type and is not dependent.
20:45:16 <ais523> it requires operations other than just "successor", I imagine
20:45:19 <ais523> but probably other things too
20:45:21 <elliott> Dependent typing is when values break through the :: barrier, that's it.
20:45:42 <Phantom_Hoover> That's what I meant.
20:45:48 <elliott> Well, right.
20:46:19 <oerjan> :k Maybe 1
20:46:20 <lambdabot> *
20:46:35 <oerjan> :t undefined :: 1
20:46:36 <lambdabot> Unit
20:46:41 <Phantom_Hoover> Is 1 the same as ()?
20:46:44 <oerjan> huh
20:47:00 <oerjan> :t undefined :: Unit
20:47:01 <lambdabot> Unit
20:47:02 <Phantom_Hoover> :t Identity
20:47:02 <elliott> Phantom_Hoover: why would it be?
20:47:03 <lambdabot> forall a. a -> Identity a
20:47:05 <oerjan> :t undefined :: ()
20:47:05 <lambdabot> ()
20:47:11 <elliott> :t undefined :: 99
20:47:12 <lambdabot> Only unit numeric type pattern is valid
20:47:14 <oerjan> elliott: unit is the name of () in ML
20:47:17 <Phantom_Hoover> elliott, because what is it, then?
20:47:23 <elliott> oh right, that unit numeric type pattern stuff
20:47:24 <elliott> that makes no sense
20:47:25 <Phantom_Hoover> 1 suggests a type with one element.
20:47:36 <elliott> Phantom_Hoover: no it doesn't
20:47:40 <elliott> it does in type and set theory
20:47:41 <elliott> but not in Haskell
20:47:43 <Phantom_Hoover> elliott, yes, it does.
20:47:49 <elliott> no.
20:47:51 <Phantom_Hoover> It *isn't*, but it certainly suggests that.
20:47:59 <elliott> no it doesn't :P
20:48:13 <elliott> modulo _|_s, the obvious type-nat representation has one value per type.
20:48:13 <oerjan> > undefined :: 1
20:48:13 <lambdabot> No instance for (GHC.Show.Show GHC.Generics.Unit)
20:48:14 <lambdabot> arising from a use of ...
20:48:21 <oerjan> hm Generics
20:48:21 <elliott> hmm, I wonder how many it has taking _|_s into account
20:48:24 <Phantom_Hoover> Yes, this is an objectively measurable thing.
20:48:25 <elliott> data Z = Z, so _|_ and Z
20:48:27 <elliott> data S n = S n
20:48:37 <elliott> (S Z) has _|_, S _|_, S Z, so three
20:48:45 <elliott> S (S Z) has _|_, S _|_, S (S _|_), S (S Z)
20:48:51 <elliott> so it's n+two, I think
20:48:58 <Phantom_Hoover> 1 suggests — without prior knowledge — a type with a single element.
20:49:13 <Phantom_Hoover> This does not mean it *is* a type with a single element, just that it's a reasonable guess.
20:49:25 <oerjan> elliott: you don't need anything more than _|_ in those types do you?
20:49:36 <oerjan> could just as well be just data Z
20:49:45 <elliott> oerjan: no, but that's not valid haskell ninety-eight :P
20:49:46 <Phantom_Hoover> oerjan, I thought empty data declarations dodn't work.
20:49:51 <elliott> yes they do
20:49:55 <oerjan> Phantom_Hoover: it's an extension
20:49:56 <elliott> it's haskell twentyten
20:49:57 <elliott> no
20:49:59 <elliott> it's in the report.
20:50:05 <oerjan> right
20:50:11 <Phantom_Hoover> You just love picking people apart on minor details, don't you?
20:50:18 <elliott> oh my god stop whining
20:50:28 <elliott> the minor detail was you saying they "don't work", oerjan saying it's an extension, which is patently untrue, it is in the report
20:50:39 <elliott> stfu if you're going to whine to simple answers to your implicit question
20:50:49 <elliott> oerjan: you could do newtype Z = Z Z, newtype S n = S (S n) but that's a rather non-obvious representation
20:50:54 <oerjan> well there's a language flag for it >:)
20:51:08 <Phantom_Hoover> Well, if you're in that mood, I can't be bothered interacting with you at all.
20:51:28 <elliott> you're interacting with an IRC channel
20:51:51 <elliott> you may be unusually irritable but that isn't going to stop me correcting factual errors when I can
20:52:05 <elliott> oerjan: yeah, but there's a language flag for Haskell98 too :P
20:53:17 -!- ChanServ has set channel mode: +o oerjan.
20:53:32 -!- oerjan has set channel mode: -b *!*ubuntu@*.vodafone-net.de.
20:53:39 -!- oerjan has set channel mode: -o oerjan.
20:53:41 <Phantom_Hoover> noooooooooo
20:53:47 <elliott> today on "bad op decisions"...
20:54:11 <Phantom_Hoover> Now open, sweepstakes on how long until he realises.
20:54:22 <Phantom_Hoover> Prize is a kitten.
20:54:24 <ais523> who was banned there?
20:54:28 <oerjan> ais523: cheater
20:54:29 <elliott> cheater
20:54:32 <ais523> ah, and why?
20:54:37 <elliott> trolling
20:54:39 <oerjan> he said something particularly rude to elliott
20:54:40 <ais523> (I mean, what in particular)
20:54:49 <ais523> ("trolling" was a pretty good guess in general)
20:54:50 <oerjan> well, about
20:54:52 -!- Sgeo has joined.
20:54:57 <elliott> oerjan: out of curiosity, what makes you believe that cheater has reformed?
20:55:35 <oerjan> elliott: nothing
20:56:06 <elliott> oerjan: so, umm, is the intent really to let a troll back in so that they can continue trolling?
20:57:20 <fizzie> I can take partial (if not full) blame of the alleged "bad op decision" here, since I did in fact suggest making it a ban that does time out.
20:57:54 <fizzie> Back when the SHADY CABAL was having it's SECRET DISCUSSIONS behind CLOSED DOORS.
20:58:03 <zzo38> I think the kind for natural numbers should be called + not Nat
20:58:07 <elliott> oerjan: if you don't intend to reply to my question, it'd be good if you could say so, so that i could stop checking
20:58:42 <zzo38> While (#) should be renamed to ## to not get mixed up with the parentheses
20:58:46 <monqy> cheater respected member of the #esoteric community
20:58:51 <monqy> "welcome back"
20:59:22 <elliott> oerjan: or not, anything goes
21:00:31 <zzo38> Would the natural numbers in types proposal allow making something such as this (but not necessarily using this syntax): data T 0 = X Int; data T n = Y (n-1) (n-1);
21:00:57 <CakeProphet> 17:01 < CakeProphet> what would be the easiest way to construct an AST with pyparsing?
21:01:11 <monqy> CakeProphet: hi
21:01:20 <oerjan> elliott: imo he was not banned for trolling, but for being particularly impolite. your stfu comment above reminded me that if i'm going to keep him banned i am surely going to have to ban you too eventually just for fairness.
21:01:25 <CakeProphet> 17:01 < mythmon> CakeProphet: what's an AST?
21:01:31 <CakeProphet> #python
21:01:38 <monqy> #python
21:02:00 <oerjan> and fizzie also advised against that >:)
21:02:55 <elliott> oerjan: you really think an off-hand comment to someone being testy is comparable to unprovoked yelling at someone in another channel just for joining it and then complaining loudly in here about not "controlling your pets"?
21:04:09 <monqy> why does cheater hate elliott anyway
21:04:38 <elliott> because everyone else keeps it to themselves when they notice him trolling
21:04:50 <ais523> he doesn't always troll, just usually
21:05:07 <ais523> I think he's genuinely interested in esolangs and related things, but has too much of a habit of trolling to not troll for long enough to find out more
21:05:10 <elliott> he would have to be an amazingly stellar contributor to make up for the 90 percent
21:05:23 <elliott> maybe if he was cpressey the ten percent of the time
21:06:09 <fizzie> At the ban-time I did a "grep cheater" against the August 2011 log, and there was a surprisingly high percentage of more or less reasonable content.
21:07:08 <elliott> fizzie: after I try and point out his trolling behaviour he usually holds off for a few weeks for obvious reasons. I would have better data on this, but I was too busy doing other things the last time it happened, and I figured it was pointless doing so after he was banned.
21:10:42 <elliott> I used to think he was just particularly bad at trolling for the blatantness of it but actually it's pretty good because by the time anyone goes to investigate it there'll only be pseudo-productive contributions.
21:11:50 <zzo38> Is it possible to make Haskell cabal have multiple servers?
21:11:58 <elliott> oerjan: I take it you're not responding?
21:12:29 <oerjan> elliott: i seem to be lost in a web of meta-thoughts. at best.
21:13:06 <elliott> Fine
21:15:05 <fizzie> I have also written and subsequently discarded approximately seven replies by now, so best not expect much from this front either.
21:15:12 <oerjan> XD
21:15:46 <fizzie> These are some deep waters; larger-than-life questions; after all, it's a matter of an IRC channel.
21:16:09 <elliott> Well, if nothing else I've come to expect complete non-action from matters involving cheater, so it is not exactly a soul-crushing surprise.
21:17:07 <CakeProphet> weeee parser combinators.
21:17:21 <zzo38> How to modify the parser in haskell-src-exts? It looks like happy and I do not know how to add stuff?
21:17:25 <elliott> It's surprising enough that he got banned for doing something blatantly trolly even by his standards, so I guess expecting a miracle is unreasonable.
21:18:02 <elliott> I do wonder why cheater gets far more leeway as far as behaviour that doesn't incur op warnings goes than anyone else, though, considering he stirs shit on a regular basis.
21:18:06 <oerjan> zzo38: i don't know precisely but happy is iiuc a LALR(1) parser like yacc/bison?
21:18:06 <elliott> And that's all I'll say.
21:18:52 <zzo38> The file InternalParser.hs says things such as happyIn14 :: (PExp L) -> (HappyAbsSyn ) happyIn14 x = unsafeCoerce# x
21:18:58 <oerjan> um who else is getting op warnings :P
21:19:12 <zzo38> But I do not know how to do that
21:19:12 <fizzie> All I'll say is that you "got" made an equally discarded eight, ninth and tenth reply with that.
21:19:21 <ais523> oerjan: is that when ops are warned about something?
21:19:24 <ais523> or when people are warned about ops?
21:19:32 <oerjan> ais523: ...no.
21:20:17 * CakeProphet tries to be polite most of them, and realizes that he has occasionally failed to do this.
21:20:21 <elliott> fizzie: It would be nice if I could get one undiscarded reply so that I at least have some sort of idea of the logic behind this. oerjan: Very few people, but very few people do the kinds of things cheater does.
21:20:37 <monqy> am i polite? sometimes maybe
21:20:50 <Gregor> Is there a lossless compressed 64-bit floating point audio format?
21:21:02 <Gregor> Other than .<whatever>.{gz,bz2,xz} :P
21:21:12 <CakeProphet> monqy: yes you are very polite. You even greet me!
21:21:19 <zzo38> FLAC is lossless compressed audio, but I do not know about floating point or 64 bits I don't know
21:21:31 <Gregor> zzo38: No float.
21:21:33 <fizzie> elliott: If you insist, but it's going to be a pretty low-quality reply, otherwise I wouldn't keep discarding them. A moment and I'll combine a few.
21:21:44 <monqy> me greeting people may have many possible meanings depending on context
21:21:56 <CakeProphet> c....context?
21:21:58 <zzo38> Why do you want it with floating point?
21:22:02 <oerjan> zzo38: oh probably that file is generated _by_ happy, and the real source file is somewhere else?
21:22:02 * CakeProphet scratches his head.
21:22:20 <monqy> irc isnt a programming language........no need to be so elegant
21:22:29 <elliott> fizzie: It may surprise you, but I'm not exactly expecting a highly-convincing reply of amazing logical quality, and not for reasons relating to yourself.
21:22:36 <CakeProphet> monqy doesn't know about irp, obviously.
21:22:57 <CakeProphet> Dear #esoteric, pease provide documentation for Internet Relay Programming.
21:23:28 <oerjan> http://www.esolangs.org/wiki/IRP
21:23:31 <CakeProphet> (irp uses a similar system to Intercal, where you must be polite to the interpreter/compiler)
21:23:40 <CakeProphet> otherwise it will just yell at you.
21:24:04 <oerjan> food ->
21:24:24 <CakeProphet> food -> OerjanState?
21:24:37 <CakeProphet> no, food -> OerjanState -> OerjanState
21:24:41 <zzo38> oerjan: The identification at the top says "Language.Haskell.Exts.Annotated.Parser" (although this module is actually called "Language.Haskell.Exts.InternalParser"), and there is no such file as far as I can tell the module says
21:25:19 <ais523> food -> OerjanState ()
21:25:52 <elliott> food -> cmd
21:25:53 <CakeProphet> pyparsing is a pretty good library, though the documentation could be somewhat better, and it's all in one massive file
21:25:55 <elliott> did i get your anguage right ais523 :(
21:26:06 <CakeProphet> so it literally takes like 2 minutes of holding page down to get to the bottom.
21:26:10 <ais523> elliott: I don't get it
21:26:17 <ais523> oh, ICA?
21:26:18 <elliott> ais523: I thought cmd and exp and bit and a....heplp
21:26:20 <zzo38> What is anguage?
21:26:27 <elliott> zzo38: i'm not sure
21:26:43 <ais523> I've actually forgotten what the abbreviation for "command" is, but cmd seems plausible
21:27:01 <ais523> I've been using exp$0 recently, as it's how the compiler treats it internally ("0-bit integer with possible side effects")
21:27:14 <fizzie> Here goes nothing. My timed-ban quasi-recommendation was possibly a two-pronged thing. Firstly, I have really not progressed much in my cheater studies, so I went with that cursory log-inspection and a lack of any specific firm opinion. Secondly, I advocate the TCP exponential backoff algorithm for channel ban times; it achieves in-practice indefinite bans in a finite number of iterations, yet theoretically never gives up hope. Anyhow, "rebanning" has a lower thr
21:27:37 <zzo38> Is there a version of haskell-src-exts that is using Parsec instead?
21:27:40 <elliott> fizzie: "has a lower th"
21:27:45 <ais523> most forums use exponential backoff
21:27:50 <ais523> elliott: it's "has a lower thr" for me
21:27:54 <fizzie> -- threshold than "banning". Maybe.
21:27:56 <ais523> presumably, as my nick is one character shorter than yours
21:28:18 <ais523> or something to do with the length of the names of the servers we're connected to
21:28:29 <fizzie> ais523: Server names, maybe; that's in the :prefix.
21:28:59 <fizzie> Does Freenode still do that "add a registered/unregistered indicator to all messages if the client asks for it" thing, or was that on the previous server?
21:29:00 <elliott> fizzie: Very well, but considering that cheater was successfully regularly bothersome and personally insulting for the better part of a year before getting banned, and even then only because he did two things in quick succession (bothered me in the channel and then complained here about it), I'll mark down ten years or so ahead on my calendar.
21:29:22 <ais523> "barjavel" vs. "sendak" is two char's difference
21:31:52 <ais523> elliott: he seems to grate on you much more than on other people; I'm not sure if that's because he's trolling you in particular, or some sort of huge personality mismatch
21:32:23 <elliott> ais523: There are others who he grates on in similar amounts, they just aren't public about it.
21:32:38 <elliott> Considering the kind of shit he gives me, I can't blame them.
21:33:04 <Gregor> Man, I'm ashamed that floating point saved me here.
21:33:09 <Gregor> FLOATING POINT IS ALWAYS WRONG
21:33:28 <CakeProphet> parser combinators in Python are pretty annoying without that lazy evaluation stuff.
21:34:19 <CakeProphet> to implmenet recursion in this library, you have to assign the recursive parser as a Forward object
21:34:26 <CakeProphet> then you say recursiveTerm << expr
21:34:28 <CakeProphet> later
21:34:44 <CakeProphet> once you've already used it
21:57:08 <oerjan> zzo38: http://code.haskell.org/haskell-src-exts/src/Language/Haskell/Exts/InternalParser.ly may be the happy source file
21:57:43 <zzo38> oerjan: Yes I found that file already
22:04:54 -!- BeholdMyGlory has quit (Remote host closed the connection).
22:10:24 <CakeProphet> what is mac's line ending again?
22:10:32 <CakeProphet> just \r?
22:10:45 <elliott> \n.
22:10:51 <CakeProphet> oh, good.
22:10:51 <elliott> OS X is Unix.
22:11:12 <elliott> It was \r in the classic days which have been gone for ten years.
22:11:17 <CakeProphet> I thought they (Windows,Mac,Unix) were each different for some reason.
22:11:19 <CakeProphet> ah okay.
22:11:26 <CakeProphet> that must have been why I thought that.
22:11:33 <Deewiant> Windows = Mac + Unix
22:11:34 <elliott> monqy: Hey learn how to play DF.
22:11:40 <monqy> elliott: I forgot about that
22:11:41 <elliott> monqy: We're going to invade Hell.
22:11:46 <elliott> monqy: Well unforget.
22:11:48 <CakeProphet> elliott: I was actually thinking about doing just that.
22:11:58 <ais523> elliott: it will not end well :)
22:12:00 <elliott> CakeProphet: sorry you are not a cool enough kid to invade hell.
22:12:07 -!- zzo38 has left.
22:12:08 <elliott> ais523: Hey we're actually planning this. :p
22:12:16 <CakeProphet> dude I have a Dave record shirt. I am beyond cool.
22:12:20 <monqy> I guess I will need something to do now that I've finished my monster
22:12:21 <ais523> elliott: it will /still/ not end well
22:12:23 <CakeProphet> all I need now are some shades.
22:12:24 <elliott> ais523: I think we can do it, modulo about two decades of preparation.
22:12:31 <elliott> ais523: Weeell, we could trivially do it, with cave-ins.
22:12:33 <elliott> But that's wimpy.
22:12:36 <ais523> in-game decades, or real-life decades?
22:12:38 <elliott> In-game.
22:12:50 <CakeProphet> endline = Literal("\r\n") | Literal("\n")
22:12:51 <CakeProphet> wheeeeee
22:12:59 <elliott> ais523: The plan is to deal with the first swarm of demons, then build a wall around the edges of the hell in our map (so that demons spawning can't get in), and then put our trade depot in there.
22:13:20 <ais523> what would putting a trade depot in there do?
22:13:26 <ais523> also, can demons get through walls?
22:13:34 <elliott> ais523: Force traders to descend into the unfathomable depths of hell just to trade.
22:13:40 <elliott> We really hate traders.
22:13:41 <CakeProphet> this game sounds amazing.
22:13:42 <elliott> Mostly elves.
22:13:49 <elliott> ais523: No, they can't.
22:13:49 <ais523> elliott: how could they get there, though?
22:13:59 <ais523> if the demons can't get out, surely the traders can't get in?
22:14:01 <elliott> ais523: Umm, because we'll have broken open the adamantine shaft to hell?
22:14:07 <CakeProphet> expr << operator | stringLiteral | variable | stackIndex | command
22:14:11 <elliott> ais523: They only spawn at the edges of the hell map.
22:14:17 <CakeProphet> does this look like a sane alternative ordering for an expression?
22:14:21 <elliott> Phantom_Hoover knows more than me about hell. Maybe.
22:14:28 <elliott> But I'm fairly sure that they won't just spawn ANYWHERE.
22:14:28 <ais523> elliott: oh, so you're going to lock the demons to the edge of hell
22:14:32 <elliott> That would be ridiculous.
22:14:38 <ais523> and put a trading point in the centre, where the traders can actually get to
22:14:44 <elliott> ais523: Right.
22:14:54 <elliott> ais523: We'll have some sort of way to kill the demons that congregate around the edges every now and then.
22:15:06 <elliott> ais523: The hard part will be building the wall, because masons are going to have to work there while demons are spawning.
22:15:12 <elliott> So it's going to require heavy military guard.
22:15:28 <elliott> <CakeProphet> this game sounds amazing.
22:15:30 <elliott> CakeProphet: It is.
22:15:49 <ais523> CakeProphet: indeed, it's awesome
22:15:59 <ais523> (disclaimer: I don't actually play it, just listen to other people play it)
22:16:12 <CakeProphet> I'm not really sure how pyparsing's operator precedence thing work, especially recursively
22:16:12 <quintopia> how long do you think it will take before fortresscraft is as awesome?
22:16:17 <CakeProphet> but... I guess I'll find out.
22:17:20 <elliott> quintopia: you are kidding, right?
22:17:55 <quintopia> elliott: the author intends to make it more dwarf fortressy in the long run. it was original inspired by DF after all.
22:18:34 <elliott> FortressCraft is the one where they hired someone known solely for being a huge asshole on the internet to be their "PR" and call anyone who dared suggest it might be nearly identical to Minecraft without any interesting innovation various homophobic crap, right?
22:19:40 <quintopia> how would i know? it is true that it is a similar game to minecraft (on purpose) but it does have interesting innovation and will likely have more so in the future.
22:19:47 <elliott> Frankly though, I doubt anyone who isn't Toady One could make a game that tries to do the same thing as DF and succeeds with such aplomb who (a) isn't Toady One and (b) hasn't spent at least ten years on it.
22:20:14 <elliott> quintopia: I dunno, generally when people bring up random games out of the blue and suggest that they're gonna be totally as cool as DF they tend to know at least something about them.
22:20:28 <quintopia> i know something about the game
22:20:35 <quintopia> i don't know anything about the politics
22:21:14 <CakeProphet> program = ZeroOrMore(statement) + endString
22:21:18 <CakeProphet> weeeeeeee, combinators
22:21:27 <quintopia> but i doubt they are going to try to do the same thing as DF. just do lots of things inspired by it.
22:21:35 <ais523> elliott: most games aren't totally as cool as DF
22:21:48 <elliott> quintopia: Considering it's a first-person game, no, no they're not.
22:21:59 <CakeProphet> which is more readable: top-down or bottom-up?
22:22:05 <CakeProphet> for arranging the parser bits.
22:22:06 <ais523> (I've been playing more humble bundle games, but haven't found anything particularly inspiring in the latest batch; also, one of the .debs appears to have a dependency on an nvidia library, which is suspect as I don't have an nvidia graphics card)
22:22:20 <elliott> ais523: probably CUDA
22:22:33 <CakeProphet> well, nevermind. this is Python. I have to write it bottom-up
22:22:36 <quintopia> elliott: but they are currently working on independent commandable "slave" agents, so you can expect to be able to tell them to go craft and build stuff for you, DF style
22:22:43 <ais523> elliott: it wasn't, and besides CUDA only works on nvidia cards
22:23:28 <elliott> ais523: yes it does; your point?
22:23:47 <ais523> that I'd be very surprised if a computer game was specific to a particular brand of graphics card
22:23:50 <oerjan> CakeProphet: um parser tokens are usually mutually recursive?
22:23:54 <elliott> quintopia: that's a really shallow idea of what DF is
22:23:59 <elliott> ais523: fair enough
22:24:10 <elliott> quintopia: go play the real thing before comparing anything to it
22:24:15 <CakeProphet> oerjan: yes, there's a workaround for that in this library.
22:24:36 <ais523> even elliottcraft (my version thereof) will have agents that go off and build stuff for you, but it's nothing like DF
22:24:41 <Phantom_Hoover> elliott, isn't that basically elliottcraft in a nutshell?
22:24:43 <quintopia> elliott: it is a thing that DF has in it. therefore, incorporating the same idea is doing something inspired by DF.
22:24:45 <CakeProphet> oerjan: or are you saying there is no such thing as "bottom-up"?
22:24:48 <ais523> rather, the skill is in arranging them so that they do, puzzle-game-style
22:25:00 <elliott> quintopia: DF also has: pixels
22:25:01 <quintopia> doesn't have to be anything like DF to be inspired by it
22:25:07 <Gregor> Today I learned from quintopia: DF is slave labor
22:25:09 <elliott> Doom has pixels, so I guess it's inspired by DF
22:25:10 <quintopia> or to be as awesome
22:25:21 <elliott> Gregor: Yes, yes it is
22:25:25 <CakeProphet> needs moar sci-fi text-based games.
22:25:35 <oerjan> CakeProphet: well that too, but mostly your comment about python
22:25:39 <elliott> Gregor: Except that the slaves are idiots, terrible at following orders, ignore them half the time, and you still have to keep them happy
22:26:00 <CakeProphet> oerjan: oh right, yeah there's a fix for that. Basically there's a Forward object that acts as a placeholder, and then you fill in the logic later.
22:26:05 <Gregor> Today I learned: elliott is racist.
22:26:14 <elliott> Dorf is a species not a race dammit.
22:26:21 <quintopia> elliott: it is called fortresscraft because it is inspired by DF. therefore, you can expect that anywhere it contains DF-like ideas, it is because DF did it first.
22:26:25 <ais523> CakeProphet: as in text adventure, or as in tty-graphics roguelike?
22:26:29 <elliott> (I like to believe "dorf" is a horrible slur used only by us uncaring human overseers.)
22:26:34 <CakeProphet> ais523: either really.
22:26:34 <quintopia> (afaik, Doom was not named after DF)
22:26:39 <elliott> quintopia: lol
22:26:43 <Phantom_Hoover> elliott, well, they do what they're told — what am I saying, I spent ten minutes trying to get them to leave all the fortress' crap in a particular place.
22:26:43 <Gregor> Doom Fortress
22:26:53 <CakeProphet> ais523: but yes rogue-like would be nice.
22:26:53 <Phantom_Hoover> Gregor, that's redundant.
22:27:01 <Phantom_Hoover> If it's not a doom fortress, you're doing something wrong.
22:27:16 <CakeProphet> ais523: I use the term MUD but that refers to the online version, and has a more limited interface due to being telnet-based.
22:27:26 <Phantom_Hoover> There needs to be at least one crime against the laws of god and man.
22:27:26 <CakeProphet> *telnet-based with no fucking standardized anything.
22:27:45 <ais523> CakeProphet: have you seen ZAPM? it's a scifi roguelike that isn't horrible (although isn't as good as most of the better known roguelikes)
22:27:49 <quintopia> Phantom_Hoover: murder is one, no?
22:27:50 <elliott> Gregor: IMO the merging of Adventure and Fortress mode is inevitable in the long-term; that would lead to awesome things like storming a fortress all by yourself
22:27:54 <elliott> and then taking it over
22:28:00 <elliott> That enough like Doom for you?
22:28:03 <CakeProphet> ais523: sure haven't.
22:28:18 <CakeProphet> I would like DF-complexity-with-sci-fi-setting
22:28:21 <ais523> I'm, umm, not sure where you can get it, but presumably search engines know
22:28:26 <ais523> it's far from DF complexity, unfortunately
22:28:38 <ais523> but then, roguelikes tend to be single-player, which cuts down the complexity a lot
22:28:42 <elliott> Phantom_Hoover: also how awesome would it be if you had to climb up the pecking order to become fortress overseer.
22:28:55 <elliott> ais523: DF Adventure mode would tend to disagree
22:28:56 <Gregor> elliott: Enough like Doom? Sounds like Doom just ripped off DF.
22:29:01 <elliott> ais523: actually, Fortress mode is more like 0-player
22:29:08 <ais523> elliott: is the adventure mode as complex as fortress mode?
22:29:13 <ais523> and, umm, I mean single controllable actor
22:29:36 <Lymee> You could have only one directly controllable actor.
22:29:36 <elliott> ais523: it's set in the exact same world with the exact same monsters and algorithms and the like, it just only passes time explicitly, like single-stepping in fortress mode, and you have a restricted view radius, making it a Roguelike
22:29:46 <elliott> ais523: there isn't quite as much to do right now
22:29:52 <ais523> elliott: and how do you do combat, etc?
22:29:54 <elliott> ais523: but the actual interactions involved as certainly as complex, because they're the same
22:29:58 <elliott> ais523: well, by combatting :)
22:30:07 <Phantom_Hoover> elliott, BtW, it's not too hard to make your fortress a goblin stronghold.
22:30:08 <elliott> http://df.magmawiki.com/index.php/DF2010:Adventurer_mode#Combat
22:30:09 <ais523> I mean, do you order a whole load of dwarves to become soldiers and hope they fight?
22:30:15 <elliott> ais523: it's _Adventurer_ mode
22:30:16 <Phantom_Hoover> Just leave them in cages and abandon.
22:30:19 <elliott> ais523: that means you play it yourself
22:30:25 <ais523> elliott: ah, that's the fundamental difference I was getting at
22:30:32 <ais523> and I thought that was true, but then you implied I was wrong
22:30:44 <elliott> ais523: right, but, I mean, a swarm of goblin enemies will act just the same as in fortress mode
22:31:00 <oerjan> CakeProphet: hm i think if you have mutual recursion, you can still define bottom up as "everything except possibly the top (last) element is used by something later", and vice versa for top down
22:31:51 <CakeProphet> oerjan: yes, it makes a far amount of intuitive sense that there is still a bottom and top to the arrangement of parsers.
22:31:57 <CakeProphet> even with mutual recursion.
22:32:04 <elliott> ais523: still, I'd say that Adventurer mode is easily the most complex roguelike in existence, by orders of magnitude as far as world complexity goes
22:32:22 <elliott> ais523: it's probably not the most fun, though, at least not yet, but it's been developed more recently
22:32:36 <elliott> I don't think there's any way to win; most people just seem to try and genocide everything else
22:32:46 <ais523> elliott: it's more player-visible complexity I'm talking about
22:33:01 <elliott> ais523: I'd say the complexity of the DF world is obvious from a player level
22:33:02 <ais523> the rest of the world existing is pointless if you don't interact with it
22:33:14 <elliott> you can walk around the whole thing, so...
22:33:44 <elliott> FAQ
22:33:44 <elliott> [edit]How do I get past NPCs which are in my way?
22:33:44 <elliott> Press s to sit, then move to crawl between their legs. Once you're done press s to stand again.
22:33:45 <elliott> DF, I...
22:34:03 <quintopia> lul
22:34:27 -!- FireFly has quit (Quit: FireFly).
22:34:27 <monqy> that's amazing
22:34:39 <Gregor> And what if that NBC is a blob monster?
22:34:49 <quintopia> blobs have legs too!
22:35:00 <CakeProphet> I would assume it would already be attacking you
22:35:05 <CakeProphet> in which case sitting is probably not a good idea.
22:35:14 <Gregor> What if it's a friendly blob monster?
22:35:33 <quintopia> or maybe in that case "press s to turn sideways, move to squeeze past it gelatinous mass, then when you're done, press s to turn straight again"
22:36:07 <ais523> what drawbacks are there to going around in s-mode all the time
22:36:13 <elliott> ais523: probably tons
22:36:20 <ais523> indeed, I imagine so too
22:36:22 <ais523> which is why I asked
22:36:30 <elliott> ais523: I imagine it's slower to move around, your combat is probably incredibly impaired... I don't actually know though, I imagine you'd have to try it
22:36:34 <quintopia> you wear out your knees quicker
22:36:49 -!- cheater has joined.
22:36:56 <elliott> ais523: It's unlikely anybody knows all the disadvantages, considering that DF is long past the point where most of its interactions surprise Toady
22:37:33 <quintopia> totally emergent
22:39:44 <CakeProphet> source code plz?
22:40:04 <elliott> CakeProphet: you can look at and modify the raws; the engine is flexible enough that that lets you make all kinds of behaviour
22:40:09 <elliott> the source itself is closed, though
22:40:28 <CakeProphet> I am sad face. :(
22:40:37 <ais523> closed-source games are less fun, because messing with the source is part of the fun
22:40:47 <elliott> ais523: CakeProphet: Raws are basically a fairly-ugly DSL for describing creatures, objects, and interactions; the majority of the game is defined in them
22:40:52 <elliott> So it's "mostly" open
22:41:02 <elliott> people have done all kinds of stuff only by editing the raws
22:41:13 <ais523> but not, say, changed the size of the arena in arena mode
22:41:22 <elliott> Arena mode isn't much of a game :-P
22:45:37 <CakeProphet> elliott: Haskell text game?
22:45:52 <CakeProphet> is that a thing, we could do?
22:45:56 <elliott> Define "we".
22:46:11 <CakeProphet> uh, willing members of #esoteric
22:46:19 <CakeProphet> probably meeting some kind of Elliott Inclusion Principle
22:47:01 <CakeProphet> the CakeProphet Inclusion Pricinple is const True
22:47:16 <monqy> monqy doesn't have a well-defined inclusion principle
22:47:20 <monqy> yet
22:47:35 <CakeProphet> const undefined is probably going to be problematic.
22:47:47 <elliott> a haskell text adventure sounds no more interesting than any other text adventure project
22:47:57 <CakeProphet> perhaps we could have an Elliott-CakeProphet Meta-Inclusion Principle
22:48:03 <CakeProphet> to decide who gets inclusion principles.
22:48:04 <elliott> haskell does not really have much to offer apart from the ease in defining a relevant well-typed DSL, but there are already perfectly good declarative languages for this
22:48:35 <CakeProphet> elliott: what if we used STM to make everything concurrent?
22:49:09 <elliott> ...
22:49:20 <CakeProphet> THINK ABOUT IT
22:49:46 <CakeProphet> obviously active beings would like... have some notion of reaction time. so everything isn't instantaneous.
22:50:08 <elliott> sounds like DF. except that stm is really irrelevant
22:50:38 <CakeProphet> concurrency is relevant though, with STM being one of the better means of implementation out there.
22:50:52 <elliott> No, it's not really relevant at all.
22:51:03 <CakeProphet> okay fine it's not.
22:51:07 <elliott> There is no shared state involved, it's more of a CA-style world interaction scenario.
22:51:22 <CakeProphet> absolutely no shared state? none? are you sure?
22:54:25 <CakeProphet> if every entity is operating in tandem then there should be a way to regulate simultaneous interactions, no?
22:54:28 * Phantom_Hoover → sleep
22:54:41 -!- Phantom_Hoover has quit (Quit: Leaving).
22:54:42 <ais523> anyone here know French? is http://esolangs.org/wiki/User:JarvisCo spam?
22:54:58 <elliott> Google knows French
22:54:59 <ais523> I'm guessing yes
22:55:04 <elliott> I realize I'm About rapidly but quickly growing tired of unsolicited e-mails I get every day find regarding the new enhancement pill, cream or product unit. But it is limited for this kind of anonymous emails. Currently I have to watch out for you to enjoy or even tune in to hear those same hours on major TV shows as well as with the radio. Just what's more we should be generating cash income, or even that they would not still be on the air for w
22:55:04 <elliott> eeks just after day, month after month.
22:55:13 <elliott> maybe Google is trying to frame poor ol' JarvisCo
22:55:22 <ais523> that's good enough for me
22:55:44 <CakeProphet> !perl print qw(yes no)[int(rand(2))]
22:55:46 <EgoBot> no
22:56:01 <CakeProphet> perl disagrees, though I'm not sure I trust the decision making process.
22:56:55 <ais523> !c int main(void){srand(time(NULL)); printf("%c\n","yn"[rand()/(4294967296U/2)]);}
22:57:02 <ais523> err
22:57:05 <ais523> !c int main(void){srand(time(NULL)); printf("%c\n","yn"[rand()/(4294967296U/2)]);}
22:57:07 <ais523> double err
22:57:10 <ais523> !c int main(void){srand(time(NULL)); printf("%c\n","yn"[rand()/(4294967295U/2)]);}
22:57:26 <CakeProphet> throw in a "return 0" for good measure.
22:57:28 <ais523> the Perl is easier :)
22:57:31 <ais523> !c int main(void){srand(time(NULL)); printf("%c\n","yn"[rand()/(4294967295U/2)]); return 0;}
22:57:50 <ais523> CakeProphet: not needed in C99; although admittedly declarations for srand and time would be, and a declaration for printf is needed anyway but I know it works in gcc even without one
22:57:54 <elliott> surely rand()%2 is fair?
22:57:57 <elliott> if the distribution is uniform
22:58:08 <CakeProphet> ais523: do you need an include for any of that?
22:58:10 <ais523> elliott: historical UNIX rand used to alternate odd and even
22:58:18 <elliott> heh
22:58:28 <Deewiant> That wasn't very random then now was it
22:58:54 -!- Sgeo_ has joined.
22:59:38 <CakeProphet> I wish every language had qw
22:59:44 <CakeProphet> and q
22:59:56 <CakeProphet> in some way or another.
23:00:04 <CakeProphet> not necessarily identical syntax.
23:00:12 <CakeProphet> but still convenient syntax nonetheless.
23:00:21 <elliott> haskell does
23:00:24 -!- Sgeo has quit (Ping timeout: 245 seconds).
23:00:29 <ais523> what's haskell's syntax for qw?
23:00:34 <CakeProphet> elliott: via TH you mean?
23:00:44 <elliott> http://hackage.haskell.org/package/string-qq, http://hackage.haskell.org/package/string-quote, http://hackage.haskell.org/package/interpolatedstring-perl6, http://hackage.haskell.org/package/interpolatedstring-qq
23:00:54 <CakeProphet> oh my/
23:00:55 <elliott> there are more, but they're more templating languages than simple perl-style ""
23:01:19 <CakeProphet> nifty
23:01:29 <CakeProphet> no qw though.
23:01:38 <CakeProphet> unless that's part of the packages somewhere.
23:01:50 <monqy> what is qw
23:01:54 <CakeProphet> qw(a b c) == ("a", "b", "C")
23:01:59 <monqy> oh that would be easy to make
23:02:02 <monqy> like
23:02:03 <monqy> real easy
23:02:05 <monqy> the easiest
23:02:07 <CakeProphet> yes.
23:02:11 <oerjan> > words"a b c"
23:02:11 <lambdabot> ["a","b","c"]
23:02:17 <monqy> with quasiqoters
23:02:28 <CakeProphet> also..
23:02:34 <CakeProphet> qw#a b c# == ("a", "b", "C")
23:02:38 <elliott> > let qw=words in qw[q|...|]
23:02:39 <lambdabot> A section must be enclosed in parentheses thus: (q |...|)Not in scope: `|.....
23:02:48 <CakeProphet> though it's not quite as useful in qw as it is in q and qq
23:02:48 <elliott> CakeProphet: "C"?
23:02:59 <CakeProphet> oh *c
23:03:10 <CakeProphet> yeah it randomly uppercases the last element of the list.
23:03:21 <elliott> that's perl for you
23:04:37 <CakeProphet> !perl my $test = "c"; print qw(a b $test)
23:04:38 <EgoBot> ab$test
23:04:43 <CakeProphet> no interpolation apparently
23:04:54 <elliott> qqww
23:04:57 <CakeProphet> !perl my $test = "c"; print qqw(a b $test)
23:04:57 <EgoBot> Can't locate object method "a" via package "b" (perhaps you forgot to load "b"?) at /tmp/input.23546 line 1.
23:05:07 <CakeProphet> heh.
23:05:30 <monqy> ok i finally got so far into df to pick a site I hope it is a good site
23:05:46 <ais523> I suspect qqw exists in Perl 6
23:05:55 <ais523> although it'd probably be written qq:w or something like that
23:05:56 <CakeProphet> !perl my $test = "c"; print (qw(a b),$test)
23:05:57 <EgoBot> abc
23:06:07 <CakeProphet> that's TWO whole extra characters.
23:06:08 <elliott> monqy: um read the quickstart
23:06:10 <ais523> oh, ofc, it's written «»
23:06:11 <CakeProphet> come on perl.
23:06:14 <monqy> elliott: yes i am
23:06:14 <elliott> monqy: you want to start somewhere pretty easy for your first fort
23:06:16 <elliott> monqy: oh okay
23:06:18 <ais523> (with <> being a perl5-style qw)
23:06:28 <monqy> i spent a lot of time and effort trying to find somewhere easy :(
23:06:46 <oerjan> !perl my $test = "c"; print qw"a b $test"
23:06:46 <EgoBot> ab$test
23:06:52 <oerjan> bah
23:07:01 <elliott> monqy: you'll probably think your fortress is going to go perfectly then die of something really stupid but it is okay it gETS BETER....
23:07:02 <CakeProphet> oerjan: so much for "do what I mean" :P
23:07:06 <oerjan> !perl my $test = "c"; print qqww"a b $test"
23:07:07 <elliott> (after a few...hundred tries....)
23:07:21 <elliott> http://wtfjs.com/2011/06/27/min-less-max ;; oh come on, this is desirable behaviour, I'm annoyed that Scheme doesn't mandate this
23:08:34 <CakeProphet> !perl my $test = "c"; print qw(a b),$test #lulz
23:08:35 <EgoBot> abc
23:09:02 <CakeProphet> !perl print qqqsupq
23:09:19 <elliott> !perl perl print qqxhix
23:09:20 <EgoBot> syntax error at /tmp/input.31635 line 1, near "perl print"
23:09:25 <monqy> oh no it is all snowy i thought it said it was temperate what have i done
23:09:29 <elliott> !perl print qqxhi\nx
23:09:33 <elliott> monqy: screenshot
23:09:41 <monqy> of what
23:09:46 <elliott> monqy: df
23:09:52 <CakeProphet> elliott: I guess alphas are not allowed
23:09:58 <CakeProphet> probably because that would be a terrible choice
23:10:09 <elliott> monqy: also -minecraft is our main df discussion hub i can try and help you in there to avoid annoying CakeProphet and his perl fun
23:10:23 <CakeProphet> oh yeah I'm furious.
23:10:42 <CakeProphet> topic today: Perl fun
23:10:46 <CakeProphet> all other topics not allowed.
23:11:19 <CakeProphet> actually I might try DF myself after I get done with this parser business.
23:11:34 <CakeProphet> which requires that I stop getting distracted by perl..
23:11:50 <oerjan> CakeProphet: istr that '' as delimiters turns off interpolation and thought maybe "" turned it on
23:12:00 <oerjan> but nah
23:12:05 <CakeProphet> yeah the '' is the only special case.
23:12:18 <CakeProphet> unless you count ()[]{} being a special case.
23:12:33 <ais523> and <> and «»
23:12:44 <ais523> together with all the other bracketlike characters in Unicode
23:13:05 <CakeProphet> I've never tried any of those so I wasn't sure if they worked like that or not
23:13:44 <CakeProphet> also, does sed or awk have those quoting constructs?
23:14:05 * CakeProphet is wondering where they originated.
23:22:36 <oerjan> " vs. ' is shell, of course...
23:24:14 <ais523> and «» vs <> follows the same pattern
23:26:11 <CakeProphet> but what about q, qq, qw, and such
23:26:30 <CakeProphet> does awk and sed allow arbitrary delimeters for m/.../ and s/.../.../?
23:27:16 <elliott> yes
23:27:18 <elliott> well, near-arbitrary
23:27:52 <oerjan> `run echo test | sed 's=e=oa='
23:27:55 <HackEgo> toast
23:30:37 <CakeProphet> `run echo test | sed 'q/.../'
23:30:39 <HackEgo> sed: -e expression #1, char 2: extra characters after command
23:35:12 <ais523> you probably didn't mean q there
23:35:28 <CakeProphet> no I did I was testing if sed had such a thing.
23:35:46 <ais523> in sed, all commands are single characters
23:35:51 <ais523> and the 'q' command doesn't take an argument
23:36:11 <ais523> it /does/ have such a thing
23:36:16 <ais523> (see oerjan's test)
23:39:34 -!- cheater has quit (Remote host closed the connection).
23:41:58 <monqy> oh hey cheater was here
23:42:00 <monqy> I didn't even notice
23:44:54 <ais523> he didn't say anything, I don't think
23:49:02 -!- yorick has joined.
23:55:34 -!- cheater has joined.
←2011-08-27 2011-08-28 2011-08-29→ ↑2011 ↑all