00:00:01 -!- GOMADWarrior has quit (Read error: Connection timed out).
00:03:54 -!- monqy has quit (Quit: Lost terminal).
00:06:15 -!- monqy has joined.
00:06:32 -!- mroman has quit (Ping timeout: 255 seconds).
00:06:59 -!- elliott has quit (Ping timeout: 246 seconds).
00:07:17 -!- mroman has joined.
00:08:01 -!- sirdancealot7 has quit (Ping timeout: 246 seconds).
00:12:59 -!- elliott_ has joined.
00:23:14 <doesthiswork> I graphed the time between messages and found out that the majority of the time there is from 1 to 8 minutes between messages in this channel
00:24:23 <zzo38> doesthiswork: What percentage of the time is that?
00:25:06 <zzo38> Can you plot the time between messages on the X axis and then bars rising above on Y axis how often that is?
00:25:57 -!- nooga has quit (Ping timeout: 252 seconds).
00:26:24 -!- sirdancealot has joined.
00:27:24 <doesthiswork> http://s15.postimage.org/n5n38rmln/Rplot_page_1.jpg
00:27:48 -!- Frooxius has quit (Ping timeout: 264 seconds).
00:29:35 -!- nooga has joined.
00:30:16 -!- sirdancealot has quit (Excess Flood).
00:31:20 <Phantom_Hoover> <doesthiswork> I graphed the time between messages and found out that the majority of the time there is from 1 to 8 minutes between messages in this channel
00:31:50 <Phantom_Hoover> obviously there are going to be less long waits because you can't fit as many of them into a given day
00:32:12 <doesthiswork> it tells you how fast you should expect the conversation to go
00:33:11 <nooodl> you should run that on other channels you can get logs for
00:34:22 <nooodl> anyway. it is time........ to sleep
00:34:26 -!- nooodl has quit (Quit: Leaving).
00:34:32 <kmc> you should produce a sound file with one click per message
00:34:38 <kmc> at some multiple of realtime
00:36:54 -!- tswett_ has joined.
00:37:38 -!- tswett has quit (Quit: leaving).
00:38:40 -!- tswett_ has changed nick to tswett.
00:42:45 <doesthiswork> here's haskell's plot for yesterday http://s15.postimage.org/g6i80w1ez/Rplot_page_1.jpg
00:43:19 <kmc> needs better labels :(
00:43:42 -!- Phantom_Hoover has left ("Leaving").
00:43:45 -!- Phantom_Hoover has quit (Quit: Leaving).
00:47:36 <kmc> the problem of estimating a continuous-valued hidden parameter from interarrival times is important in neuroscience
00:47:41 <kmc> also probably in computer networking
00:50:05 * tswett Hey guys, mind if I test some stuff in here? No? Great, thanks.
00:50:18 -!- sirdancealot has joined.
00:51:02 * tswett So yes, I recently switched to a different IRC client. I'm trying stuff out.
00:51:16 <tswett> It's Quassel. It's sorta like an IRC client with a bouncer built in.
00:51:17 <Bike> what are you testing
00:51:21 <Bike> am i already being tested??
00:51:36 <Sgeo_> Does Quassel still freeze randomly?
00:51:37 <tswett> Your test results: lavender–grape.
00:51:46 <Bike> ...I'm ok with that.
00:51:49 <tswett> I don't know. It hasn't frozen on me yet.
00:51:58 <Sgeo_> Maybe I should try it again at some point
00:52:22 <tswett> Okay, it has an extremely minor bug: the descenders on some letters are cut off.
00:52:32 <quintopia> is rewriting a java chatbot in php an improvement if the original coder was shit?
00:52:55 <Bike> Is that a trick question
00:53:04 <doesthiswork> I think it's theoretically possible for php to be an improvement, maybe
00:53:06 <monqy> a better question may be why rewrite it in php of all things
00:53:13 <kmc> i hear good things about Quassel
00:53:28 <quintopia> obviously because the person who has the time to rewrite it is best in php
00:53:31 <kmc> i use irssi in screen on ec2 via mosh
00:53:33 <monqy> it's definitely possible for php code to be better than java code but
00:53:52 <tswett> Quassel seems pretty good so far.
00:54:42 <kmc> quintopia: yeah, free micro instance
00:54:46 <kmc> (free for a year, cheap after)
00:55:13 <tswett> Bug that is minor, but not extremely so: it doesn't seem to be possible to set the color of the topic bar, so it currently appears white-on-light-gray.
00:55:17 -!- sirdancealot has quit (Excess Flood).
00:55:21 <kmc> using EC2 as a plain always-on server is kind of silly
00:55:24 <kmc> yet everyone does it
00:55:36 <tswett> kmc: do you have a better plain always-on server suggestion?
00:55:46 <kmc> i don't really like their management tools or the way they have funny names for everything
00:55:50 <kmc> tswett: there are tons of VPS providers
00:56:06 <quintopia> the downside of my VPS is i can't run tor node on it
00:56:08 <kmc> i hear linode and prgmr are good, for example
00:56:24 <quintopia> i could with prgmr but i wouldn't get as much for the price there
00:56:44 <kmc> they might be cheaper than EC2 if you don't need the rapid scalability and API and the high availability stuff that doesn't actually work
00:57:25 <tswett> I think this micro instance is currently costing me $8 a month, though.
00:57:56 -!- DHeadshot has quit (Read error: Connection reset by peer).
00:57:59 <tswett> Maybe more. I might be using more than my quota of I/O requests.
00:58:02 -!- DH____ has joined.
00:59:05 <ais523> it took me a while to find a VPS provider which was compatible with me being lawful good
00:59:32 -!- sebbu has quit (Read error: Connection reset by peer).
00:59:59 -!- sebbu has joined.
00:59:59 -!- sebbu has quit (Changing host).
00:59:59 -!- sebbu has joined.
00:59:59 -!- sebbu has quit (Excess Flood).
01:00:24 -!- sebbu has joined.
01:00:24 -!- sebbu has quit (Changing host).
01:00:24 -!- sebbu has joined.
01:00:24 -!- sebbu has quit (Excess Flood).
01:00:41 -!- GOMADWarrior has joined.
01:00:49 -!- sebbu2 has joined.
01:00:49 -!- sebbu2 has quit (Changing host).
01:00:49 -!- sebbu2 has joined.
01:00:49 -!- sebbu2 has quit (Excess Flood).
01:01:15 -!- sebbu3 has joined.
01:01:15 -!- sebbu3 has quit (Changing host).
01:01:15 -!- sebbu3 has joined.
01:01:15 -!- sebbu3 has quit (Excess Flood).
01:01:31 <ais523> I'll temp-ban him if it continues
01:01:44 <ais523> but I think he's noticed something's wrong
01:01:52 -!- sebbu4 has joined.
01:01:52 -!- sebbu4 has quit (Changing host).
01:01:52 -!- sebbu4 has joined.
01:01:52 -!- sebbu4 has quit (Excess Flood).
01:02:28 -!- sebbu5 has joined.
01:02:28 -!- sebbu5 has quit (Excess Flood).
01:02:39 -!- ais523 has left ("<fungot> fizzie: it makes demons fly out of my window, washing the windows api").
01:02:39 <Sgeo_> There's a channel to point him to iirc
01:02:50 -!- ais523 has joined.
01:03:00 <ais523> hmm, the numbers keep increasing
01:05:31 -!- sirdancealot has joined.
01:07:35 -!- copumpkin has quit (Ping timeout: 260 seconds).
01:08:06 -!- copumpkin has joined.
01:08:10 -!- sebbu6 has joined.
01:08:10 -!- sebbu6 has quit (Excess Flood).
01:10:25 <ais523> bleh, it's slow enough at this point that it's not really problematic
01:10:30 <ais523> but I'm interested in why he keeps flooding
01:15:34 <pikhq> Responding to server ping with an infinite loop?
01:17:01 -!- monqy has quit (Quit: hello).
01:19:47 -!- sirdancealot has quit (Ping timeout: 246 seconds).
01:22:36 -!- sebbu6 has joined.
01:23:23 -!- sebbu6 has changed nick to sebbu.
01:23:36 -!- sebbu has quit (Changing host).
01:23:36 -!- sebbu has joined.
01:24:32 -!- Zerker has joined.
01:33:59 -!- sirdancealot has joined.
01:38:33 <Sgeo_> sebbu, are you here to stay?
01:42:56 <tswett> Sgeo_: hey, do you have any interest in perhaps participating in a nomic that takes place in multiple IRC sessions?
01:43:15 <Sgeo_> multiple IRC sessions?
01:43:24 <Sgeo_> Is this going to be different from Canada?
01:44:05 <tswett> I don't really remember Canada.
01:44:26 <tswett> I figure we would meet at a specific time once per week or something.
01:45:17 <Sgeo_> I don't know if I can force myself to be awake at a specific time regularly
01:45:45 <tswett> Does that mean that you don't know of a specific time at which you'll usually be awake?
01:46:23 -!- nooga has quit (Ping timeout: 260 seconds).
01:46:43 -!- Zerker has quit (Remote host closed the connection).
01:46:58 -!- Zerker has joined.
01:47:31 -!- zzo38 has quit (Remote host closed the connection).
01:47:50 -!- DH____ has quit (Read error: Connection reset by peer).
01:48:10 -!- DHeadshot has joined.
01:48:36 <Sgeo_> tswett, that seems accurate to say
01:50:01 -!- ais523 has quit.
01:51:15 <tswett> Think you'd be interested in playing anyway?
01:52:02 <Sgeo_> Probably, actually.
01:52:02 -!- DHeadshot has quit (Read error: Connection reset by peer).
01:52:12 -!- DH____ has joined.
01:54:20 -!- otro_viajero7 has quit (Ping timeout: 252 seconds).
01:56:15 <Sgeo_> Going to go eat now
02:06:18 -!- monqy has joined.
02:07:30 -!- Arc_Koen has quit (Quit: Arc_Koen).
02:47:48 -!- esowiki has joined.
02:47:48 -!- glogbot has joined.
02:47:49 -!- glogbackup has left.
02:47:52 -!- HackEgo has joined.
02:47:52 -!- EgoBot has joined.
02:47:52 -!- esowiki has joined.
02:47:53 -!- esowiki has joined.
02:49:03 -!- Gregor has joined.
02:49:25 -!- Zerker has quit (Quit: Colloquy for iPad - Timeout (10 minutes)).
02:49:27 -!- Gregor has changed nick to Guest32646.
03:03:49 -!- Guest32646 has changed nick to Gregor.
03:09:40 -!- GOMADWarrior has quit (Ping timeout: 256 seconds).
03:27:39 -!- upgrayeddd has quit (Ping timeout: 260 seconds).
03:40:10 <HackEgo> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
03:48:40 -!- upgrayeddd has joined.
04:42:53 <doesthiswork> these are the points near the tail end of the message frequency
05:14:31 -!- TeruFSX has quit (Ping timeout: 260 seconds).
05:19:35 -!- sebbu has quit (Ping timeout: 260 seconds).
05:20:01 <shachaf> kmc: Maybe I'd register shach.af if you registered miu.af.
05:20:20 <Bike> what is that, afghanistan
05:29:57 <kmc> shachafghanistan
05:43:28 -!- doesthiswork has quit (Quit: Leaving.).
05:48:35 -!- doesthiswork has joined.
05:59:17 -!- zzo38 has joined.
05:59:33 <zzo38> The special state is really the one that is not quantum entanglement, isn't it? Or, did I misunderstand something?
06:00:32 -!- sebbu has joined.
06:00:32 -!- sebbu has quit (Changing host).
06:00:32 -!- sebbu has joined.
06:01:27 <zzo38> I thought it is something like, if it is not quantum entangled then you can write it as the tensor product of simpler states, or something like that. But might it also differ depending on what reference they are on?
06:02:14 -!- doesthiswork has quit (Quit: Leaving.).
06:02:26 <tswett> Yeah, I think that whether a state is entangled or not depends on the basis you're writing it in.
06:05:57 <tswett> Like, suppose you have the state a + b, where a and b are orthogonal vectors... that's a meaningful concept, isn't it?
06:06:33 <tswett> You could say a = |00> and b = |01>, and then that's the unentangled state |0> (|0> + |1>). But you could also say a = |00> and b = |11>, and then you see it as an entangled state.
06:06:44 <tswett> But I feel like I'm talking out of my ass right now.
06:28:02 <tswett> Okay, lemme ponder continuation passing style out loud for a little while.
06:28:22 <tswett> So the idea is that "no function ever returns", is it?
06:28:44 <Bike> that is a way to put it, though i'm not sure it's a good one
06:28:49 <tswett> It seems like that would mean that you don't actually need to specify the return type of any function.
06:29:07 <tswett> Just have a type constructor F, so that "F a" means "a function taking an 'a'".
06:29:47 <tswett> The function (a -> b), then, just becomes something along the lines of F (a, F b).
06:31:06 <tswett> So what does application look like? It seems like the expression for application is the same as it's ever been—"f x"—except now that function doesn't return anything.
06:31:56 <tswett> And then it seems like to write a function taking a value x, all you'd need to write is "\x". What need is there to write the return value?
06:32:42 <tswett> All right, but I feel like the whole "eventual return value of the entire thing" is going to come into play here eventually.
06:33:29 <tswett> What's really happening, I suppose, is that first all function calls happen, and then all returns happen. Or something like that.
06:33:55 -!- epicmonkey has joined.
06:34:18 <tswett> So eventually, this weird stack of functions is going to return *something*. Let's call the thing that it returns "the buck", and we'll say it has the type @.
06:35:03 <tswett> Whenever you call a function, it returns the buck. The buck is the only thing any function ever returns.
06:35:20 <tswett> So when you're writing a lambda expression, you do need to have a buck on the right hand side.
06:35:47 <tswett> "F a" is a synonym of "a -> @".
06:37:13 <Bike> so how would you describe a function that takes one value and then doesn't call anything, forever
06:37:51 <tswett> I guess that would still be "F a", wouldn't it? That function would pretty much have to be \x -> undefined.
06:38:13 <tswett> So what would the "increment" function do? I guess it would take a number, and it would also take something that needs a number. It would take its number, increment it, give it to the new function, get the buck, and pass the buck down.
06:38:21 <tswett> So yeah. F (Integer, F Integer).
06:38:42 <tswett> \(x, cont) -> cont (x plus one).
07:05:41 <tswett> Suppose you've got an "F (a, F b)" and an "F (b, F c)", and you want an "F (a, F c)". What do you do?
07:05:42 -!- doesthiswork has joined.
07:07:55 <tswett> Say those two things are called f and g. Then I guess you go like \(x, cont) -> f (x, \y -> g (x, cont)).
07:15:10 -!- FreeFull has quit.
07:57:42 -!- sirdancealot has quit (Ping timeout: 252 seconds).
08:12:26 -!- sirdancealot has joined.
08:53:09 -!- Taneb has joined.
08:59:46 <mroman> quintopia: I can't give 1sec execution time
08:59:46 <lambdabot> mroman: You have 2 new messages. '/msg lambdabot @messages' to read them.
08:59:56 <mroman> quintopia: Because you could allocate all of my 80MB RAM in 1sec
09:00:11 <mroman> quintopia: And that'd crash other programs because I have no swap
09:00:52 <mroman> If you need more time you can use the online shell
09:00:59 <mroman> that has a higher timeout and a memory limit.
09:07:09 -!- monqy has quit (Quit: hello).
09:32:34 -!- Bike has quit (Quit: leaving).
09:32:43 -!- NuclearMeltdown has quit (Ping timeout: 276 seconds).
09:34:18 -!- NuclearMeltdown has joined.
09:37:49 <zzo38> Is excluded middle continuations sometimes useful?
09:41:31 <zzo38> I mean: Cont r (Either a (a -> Cont r b))
09:43:10 <shachaf> do { x <- emc; ...; case emc of (Right k) -> ... (k x) ...; Left y -> ... }
09:44:29 <shachaf> That way you can "return to the top" with an x when you find one.
09:44:41 <shachaf> (But the (a -> Cont r b) case should be Left, and the a case should be Right.)
09:45:27 <shachaf> Because it's more "failure"y.
09:45:29 <lambdabot> oerjan said 12h 26m 13s ago: I suspect blsqbot is not doing the take to limit output size inside the timeout, which makes it time out because of parts it would otherwise never evaluate
09:45:29 <lambdabot> oerjan said 12h 25m 17s ago: e.g. there's no reason why 1R@ should timeout
09:46:39 <zzo38> Well, with the Either monad, the Left side means to stop and Right means it can continue (regardless of any failure). (This doesn't necessarily mean a reason either; you could do in either order with the type I gave)
09:49:05 <mroman> > take 80 . reverse [1..]
09:49:06 <lambdabot> No instances for (GHC.Enum.Enum [a0], GHC.Num.Num [a0])
09:49:11 <mroman> > take 80 . reverse $ [1..]
09:49:53 <mroman> @tell oerjan The reason for that is you can't do take 80 . reverse [1..] in Haskell without ending in an endless loop
09:50:27 <mroman> @tell oerjan If I were to put the take 80 outside the timeout it loops forever
09:51:01 <shachaf> You don't need to @tell oerjan
09:51:40 <mroman> @tell oerjan actually the take 80 is outside the timeout now, but to prevent exactly that I use evaluate $!!
09:53:46 -!- NihilistDandy has joined.
09:59:36 -!- olsner has quit (Ping timeout: 252 seconds).
10:11:26 -!- olsner has joined.
10:36:05 -!- epicmonkey has quit (Ping timeout: 255 seconds).
10:42:26 -!- epicmonkey has joined.
10:43:45 -!- Frooxius has joined.
10:44:23 -!- NihilistDandy has quit (Quit: Textual IRC Client: www.textualapp.com).
10:58:05 -!- Phantom_Hoover has joined.
11:05:14 -!- nooga has joined.
11:18:47 <Taneb> I'm tempted to use a Cont monad
11:20:41 <shachaf> Phantom_Hoover: what are you doing here
11:20:50 <shachaf> all my channels are shifter by one
11:21:59 <Taneb> What have you closed
11:22:22 -!- oerjan has joined.
11:23:53 <lambdabot> mroman said 1h 34m ago: The reason for that is you can't do take 80 . reverse [1..] in Haskell without ending in an endless loop
11:23:53 <lambdabot> mroman said 1h 33m 26s ago: If I were to put the take 80 outside the timeout it loops forever
11:23:53 <lambdabot> mroman said 1h 32m 13s ago: actually the take 80 is outside the timeout now, but to prevent exactly that I use evaluate $!!
11:24:53 -!- doesthiswork has quit (Quit: Leaving.).
11:25:19 <shachaf> Phantom_Hoover: I hope not.
11:25:22 <oerjan> @tell mroman um i don't think you understand what i am saying. you _should_ put the take 80 inside the timeout, so that only what's _printed_ affects the evaluation length. that way you can still print the beginning of infinite lists without timing out.
11:27:04 <oerjan> @tell mroman *evaluation time
11:35:50 <oerjan> <tswett> Yeah, I think that whether a state is entangled or not depends on the basis you're writing it in. <-- to define entanglement, you need to have an idea of how the state divides into different objects. this limits the choice of basises, although you can still make different choices for each subobject, and afaiu it won't affect whether they're entangled
11:37:14 <oerjan> @tell tswett <tswett> Yeah, I think that whether a state is entangled or not depends on the basis you're writing it in. <-- to define entanglement, you need to have an idea of how the state divides into different objects. this limits the choice of basises, although you can still make different choices for each subobject, and afaiu it won't affect whether they're entangled
11:37:35 -!- DH____ has quit (Ping timeout: 260 seconds).
11:38:54 <zzo38> Is there any kind of Curry-Howard which is involving the halting problem?
11:40:54 <oerjan> @tell tswett <tswett> And then it seems like to write a function taking a value x, all you'd need to write is "\x". What need is there to write the return value? <-- you need to write the _continuation_ for the return value.
11:41:48 <oerjan> @tell tswett <tswett> What's really happening, I suppose, is that first all function calls happen, and then all returns happen. Or something like that. <-- note that with CPS, all the function calls are tail calls, so the returns all can be TCO'ed away
11:42:34 <oerjan> people being away is so annoying :P
11:43:29 -!- elliott_ has changed nick to elliott.
11:43:42 <oerjan> nice guy, not being away and everything
11:44:20 <elliott> caption: This Is My Fucking Nickname Goddammit
11:45:36 <oerjan> where do you get that list?
11:45:43 <elliott> guys plural going by the hostnames
11:45:52 <elliott> I get the list because nickserv messages me every time it happens
11:45:59 <elliott> you need to set the guard thing on your nick so people get booted off after 30 seconds
11:46:23 -!- elliott has changed nick to elliott__.
11:46:27 -!- elliott__ has changed nick to elliott.
11:46:30 <elliott> that was meant to be a whois
11:46:43 <oerjan> oh. well i guess that would only be annoying for me, seeing as no one ever steals my nickname anyway :P
11:47:00 <elliott> well I have my IRC client set up to auto-identify so it's immaterial in terms of annoying me :P
11:47:34 <oerjan> yeah irssi is set up that way but occasionally i cannot get to nvg and have to use webchat
11:48:29 <lambdabot> oerjan said 23m 7s ago: um i don't think you understand what i am saying. you _should_ put the take 80 inside the timeout, so that only what's _printed_ affects the evaluation length. that way you
11:48:29 <lambdabot> can still print the beginning of infinite lists without timing out.
11:48:29 <lambdabot> oerjan said 21m 25s ago: *evaluation time
11:49:42 <oerjan> mroman: also 100 microseconds is quite unusually low :P
11:50:47 <oerjan> mroman: someone suggested making some kind of queue instead, to limit the total and have a higher individual limit
11:51:54 <oerjan> also my first sentence above sounded grumpy, sorry.
11:55:42 <fizzie> 100 microseconds is somewhat likely to be lower than the underlying timer resolution, depending on the implementation. (I think based on the numbers printed in those 12345-and-8 pastes suggested a resolution of 10 milliseconds, at least for getCurrentTime.)
11:55:42 <lambdabot> fizzie: You have 1 new message. '/msg lambdabot @messages' to read it.
11:56:13 <oerjan> fizzie: it uses the timeout function. hm... let me look at the source of that.
11:58:06 <oerjan> fizzie: the timeout function _does_ take a microsecond argument.
11:58:34 <fizzie> oerjan: I followed that path to Control.Concurrent.threadDelay, and then to GHC.Event.Thread.threadDelay but then couldn't bother figuring out what getSystemEventManager -> registerTimeout will do.
11:58:50 <fizzie> oerjan: POSIX nanosleep takes a nanosecond argument, but it's not going to have a nanosecond resolution anywhere ever.
11:59:33 <mroman> Does the RTS have an option to limit memory usage?
11:59:38 <elliott> fizzie: What about if you power an ATOMIC CLOCK with LINUX?
11:59:40 <mroman> (for both stack and heap)
11:59:49 <mroman> Then I could increase the time limit.
12:00:54 <mroman> I know there's an option for the stack.
12:01:53 <Sgeo_> https://www.simple-talk.com/dotnet/.net-framework/10-reasons-why-visual-basic-is-better-than-c/
12:02:50 <oerjan> the RTS options seem hard to find in the manual...
12:03:08 <mroman> "This option does not put a limit on the heap size: the heap may grow beyond the given size as usual."
12:03:39 <mroman> -M : Set the maximum heap size
12:03:45 <mroman> -K : Set the maximum stack size
12:04:27 <oerjan> mroman: wouldn't that crash the whole bot though...
12:05:00 <mroman> The bot spawns the interpreter with readProcess
12:05:53 <mroman> (inside a catch, because else readProcess crashes if the process it executes crashes)
12:06:27 <Sgeo_> I still don't get how those functions exist in one .NET language but not another
12:08:53 <mroman> "It doesn’t matter if you disagree with everything else in this article: case-sensitivity alone is sufficient reason to ditch C#! "
12:09:09 <mroman> If somebody says that I stop reading immediately.
12:09:30 <shachaf> If it doesn't matter whether you disagree with the rest of the article, why read it?
12:10:33 <mroman> Also... he explains about symbols...
12:10:48 <mroman> so why does VB use & for concatenate and = for compare
12:11:03 <fizzie> mroman: Because it was designed by a real person.
12:11:05 <mroman> I'd want "Hello" concatenate "World" and 1 comparewith 1
12:11:07 <fizzie> mroman: Instead of an academic.
12:11:21 <mroman> But why don' just use words everywhere.
12:11:26 <mroman> Instead of mixing the two.
12:11:51 <mroman> Obviously he thought symbols are better to read than words
12:11:52 <elliott> fizzie: I think you need to add a smiley. Like so: :-)
12:11:56 <elliott> Otherwise people take you seriously.
12:12:15 <fizzie> elliott: Well, I mean, it was direct quotation from the article, and there's no smiley there.
12:12:28 <elliott> By the way why do we care about this terrible linkbait article that Sgeo_ linked for no apparent reason?
12:12:32 <fizzie> I might have added some quotation marks though.
12:12:45 <Sgeo_> Someone linked to it in another channel
12:12:52 <fizzie> I have to say I was kind of surprised by the "Calculates the annual mortgage payment for a loan" function.
12:13:38 <mroman> also he complains about C# IDE
12:14:05 <mroman> When people don't understand the distinction between C# and Microsofts IDE I usually also would stop reading
12:14:11 <mroman> if I had something better to do
12:14:44 <fizzie> I got sidetracked to the MSDN Visual Basic Function Reference.
12:14:56 <elliott> Sgeo_: is it one of those things where it says that if you don't pass it on to ten other channels you'll die in a week
12:14:57 <fizzie> It's amusing because it's just a flat list without any categories.
12:15:18 <Sgeo_> elliott, what's wrong with linking to horrible articles?
12:16:07 <fizzie> PPmt -- "Returns a Double specifying the principal payment for a given period of an annuity based on periodic fixed payments and a fixed interest rate" -- is there right beside e.g. Mid (aka substr) and QBColor -- "Returns an Integer value representing the RGB color code corresponding to the specified [QBasic?] color number." -- it's just such a random set.
12:16:09 <Phantom_Hoover> i hear mediawiki's 'parser' is a complete mess of regexes that nobody really knows how to fi
12:16:30 <fizzie> I've heard that too, and then I think I heard something about making a real parser?
12:16:30 <elliott> Phantom_Hoover: pretty much
12:16:36 <elliott> there are other parsers that are compatible though
12:16:41 <elliott> I think the plan is to rewrite it?
12:16:53 -!- Nisstyre has quit (Ping timeout: 255 seconds).
12:16:58 <Phantom_Hoover> i guess it's the perfect exemplar of PHP In The Real World then
12:17:14 <elliott> well the code structure isn't that awful
12:17:15 <fizzie> NPV: "Returns a Double specifying the net present value of an investment based on a series of periodic cash flows (payments and receipts) and a discount rate."
12:17:17 <mroman> I'd punch the author in the face.
12:17:22 <elliott> but administrating it just makes me want to die
12:17:37 <fizzie> That's right next to Print.
12:18:07 <Deewiant> I hear that those regexes are also essentially the spec for the "standard" input language
12:18:19 <fizzie> I would have expected there to have been some kind of a, I don't know, finance library/package/module/something.
12:18:29 <fizzie> MIRR: "Returns a Double specifying the modified internal rate of return for a series of periodic cash flows (payments and receipts)."
12:18:48 <elliott> fizzie: is that "[QBasic?]" in the official docs?
12:18:51 <Deewiant> You want your basic at-home accountant to be able to do things without any fuss
12:18:57 <fizzie> elliott: No, that's why I put it in [].
12:19:19 <Deewiant> Having to teach them about libraries/packages/modules/somethings will just result in lost sales
12:19:20 <elliott> I was hoping they were unsure about what they actually did.
12:20:51 <fizzie> Deewiant: It kind of reminds me of how SQLite has a soundex() function out of the blue, in its otherwise very sparse set of functions. (Though admittedly only if compiled with SQLITE_SOUNDEX.)
12:21:22 -!- ais523 has joined.
12:22:03 <fizzie> Yes, but you sort of expect that out of PHP.
12:22:07 <zzo38> Well, they are the default color numbers for PC; it is not specific with QBASIC, actually.
12:23:02 <Deewiant> fizzie: In SQLite that's quite a bit more surprising.
12:23:06 <fizzie> zzo38: Sure, I was just going by the function name.
12:23:54 <fizzie> Deewiant: The documentation says SQLITE_SOUNDEX is not set by default; but I'm sure there's a story behind it anyhow.
12:24:17 <ais523> zzo38: I find that those lists of colors sometimes mix up the red and blue channels
12:24:29 <ais523> so color 4 might be red, or blue, depending on the system you're using and the software stack behind it
12:25:02 <ais523> vanilla NetHack includes <curses.h> and uses it purely for the reason of discovering whether color 1 is red or blue, it ignores the whole of the rest of curses
12:26:33 <zzo38> ais523: Really? That is strange. The standard PC colors have 4 as red (although with VGA this can be changed).
12:26:46 <ais523> elliott: yeah, that was pretty wtf to me
12:28:30 <zzo38> But it is one of the problems RogueVM avoids; in RogueVM, 4 is always red (on a color display).
12:29:27 <ais523> what if it's a color display that doesn't have red as one of the colors?
12:29:37 <ais523> hmm… do those even exist?
12:29:51 <ais523> I've made color displays that could do red, yellow, and green (but no other colors)
12:30:11 <ais523> but don't think I've seen one without red, because it's the easiest color
12:30:12 <zzo38> ais523: I don't know, but if it is color display that doesn't have all the sixteen standard PC colors, then you have to use mono mode.
12:30:56 -!- Nisstyre has joined.
12:31:18 <zzo38> fizzie: I do think it was due to QBASIC, but QBASIC also just uses the PC color codes (actually, QBASIC uses bit4 as the flashing bit while PC uses bit7, so that is a difference)
12:32:18 <zzo38> And since colors in Visual Basic are not flashing colors, this is irrelevant.
12:33:58 <oerjan> Sgeo_: hey i already saw that
12:34:02 -!- ais523 has quit (Read error: Connection reset by peer).
12:34:04 -!- Arc_Koen has joined.
12:34:12 -!- ais523 has joined.
12:34:13 <shachaf> oerjan: And you didn't tell us?
12:34:35 <oerjan> i thought i saw it because someone here had used `olist
12:34:53 <shachaf> I didn't see any olist for 871.
12:35:16 -!- epicmonkey has quit (Ping timeout: 252 seconds).
12:35:39 <zzo38> I do think that SQLITE_SOUNDEX not set by default is good idea not to include it by default. Actually it probably would be better if you just use a separate program for soundex it can define that function using the SQLite commands to create a new function.
12:35:48 <shachaf> oerjan: um http://www.giantitp.com/comics/oots0871.html
12:36:45 <oerjan> shachaf: oh, i always go to the last one i have in my browser history, then press forward... and that didn't work, nor was it listed in the sidebar. huh now it is.
12:37:22 <shachaf> I suppose you went to a cached version.
12:37:35 <shachaf> Caching: The root of all everything?
12:37:37 <oerjan> goddammit the sidebar is different for that link, all the others have the previous one listed
12:37:58 <oerjan> shachaf: but the sidebar doesn't change when i force reload D:
12:37:58 <shachaf> Try reloading-without-cache.
12:38:10 <shachaf> For 870 and the front page etc.
12:38:34 <oerjan> i see 871 in its _own_ sidebar, but not in the sidebar of comics i've already seen
12:38:47 <ais523> perhaps there's caching issues at their end
12:38:55 <shachaf> I see it in every sidebar.
12:39:31 <Sgeo_> I see it same as shachaf
12:40:07 <oerjan> the "New" button in the main comics page, which i'm sure i haven't visited for ages, points at the previous comic D:
12:40:22 <oerjan> my cache is only 30 days
12:41:25 <oerjan> ok it's 871 on the erfworld page, i guess i must have visited the main page somehow anyway
12:49:50 -!- epicmonkey has joined.
12:51:08 <oerjan> it _could_ still be caching issues at their end, if pages send the wrong date for when they were last changed.
12:51:30 <oerjan> except force reload should take care of that. hm.
12:53:22 <fizzie> The RSS feed for it worked well, and did not even clutter #esoteric, hint hint.
12:53:39 <oerjan> it did not work well for me, when i tried it.
12:54:35 <elliott> fizzie: I believe the "list ship" has sailed.
12:54:52 * shachaf runs an RSS feed for olist that shows the actual comic inline rather than just a link.
12:54:56 <shachaf> Unfortunately I don't use RSS.
12:55:24 <fizzie> I used to have a Perl thing that made RSS feeds for webcomics that had no RSS feeds.
12:55:56 <fizzie> By regex-splonking an image out of a page, and "posting" a new "item" whenever it changed.
13:03:09 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ylist: not found
13:03:26 <oerjan> (yafgc started updating again. yay!)
13:04:43 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: elist: not found
13:04:54 <ais523> that's a list of people who want to be notified about new comments in #esoteric
13:04:58 <ais523> the problem with it is that once you do it
13:05:01 <ais523> you have to do it repeatedly, forever
13:05:07 <ais523> to notify people of the fact you did it
13:05:42 -!- epicmonkey has quit (Ping timeout: 252 seconds).
13:07:43 <mroman> ok since I'm going to change the bot I might as well add suggested stuff
13:08:01 <mroman> Any suggestions besides ng (Negate = -1?*)?
13:08:07 <ais523> I guess it's for the best that the elist is empty
13:11:55 -!- epicmonkey has joined.
13:12:49 <nooga> i dob't get this whole burlesque
13:13:27 <elliott> `run echo echo elliott >bin/elist; chmod +x bin/elist
13:14:03 <mroman> nooga: What's there not to get?
13:14:07 <ais523> I put you in charge of notifying people
13:14:21 <ais523> alternatively we could `revert it
13:14:32 <elliott> and since I now have op approval,
13:15:04 <elliott> ais523: you should kick yourself for this, btw
13:15:21 <ais523> elliott: I'm waiting to see when you get bored
13:15:22 <zzo38> elliott: No, you should kick yourself for this, btw.
13:15:31 <ais523> also you should be posting the `elist in bunches of five now because it grows with each comment
13:15:32 <elliott> if ais523 ops me I could do it
13:15:37 <elliott> ais523: I'm rate-limiting!
13:16:01 <elliott> ais523: OK, how about this: you op me, and I'll kick both of us
13:16:21 <ais523> that… seems like potentially a bad idea
13:16:55 <elliott> ais523: well, it's not a worse idea than `elist spam continuing, right?
13:17:15 <elliott> ais523: only for these diplomatic negotiations!
13:17:30 <oerjan> `run while 1; do elist; od
13:17:32 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
13:17:43 <oerjan> `run while 1; do elist; done
13:17:45 <HackEgo> bash: 1: command not found
13:17:55 <oerjan> `run while true; do elist; done
13:18:07 <elliott> ais523: OK, how about this: I put you on the elist so that it's even more annoying, thus making opping me so that I can kick both of us better in comparison
13:18:15 <oerjan> this seems not to work
13:18:18 <ais523> elliott: but the lists don't work like that
13:18:26 <HackEgo> elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \ elliott \
13:18:36 <elliott> ais523: well, I have no idea how the lists work any more
13:18:54 <oerjan> elliott: I DID AN INFINITE AMOUNT, IT'S OK NOW
13:19:30 <ais523> oerjan: but there have been fewer than infinity comments
13:19:30 <elliott> oerjan: no, you fool, now I have to run elist an infinite number of times to notify about the infinite messages
13:19:32 <ais523> now you have to delete some
13:20:11 <oerjan> elliott: no, it was just one comment, that was the clever bit
13:20:28 <blsqbot> {ERROR: Burlesque: (.*) Invalid arguments! {0 'N} ERROR: Burlesque: (.*) Invalid
13:20:30 <ais523> yeah, oerjan is correct here
13:21:13 <elliott> anyway I still maintain that I ais523 should op me so I can kick us, if only because I cannot disobey zzo38's order to kick myself
13:22:31 <oerjan> !blsq 1 2 3 4 #s^^bx++
13:22:39 -!- DHeadshot has joined.
13:22:47 <zzo38> If you cannot obey and you cannot disobey, then what is it?
13:22:57 <oerjan> !blsq 1 2 3 4 #s^^bx_+
13:23:46 <oerjan> zzo38: that's life, at least for me
13:24:21 <elliott> alternatively oerjan can do it.
13:24:28 <mroman> oh yeah. I wanted to add a tuple like command.
13:24:50 <mroman> if you'd want {{1 2}{1 2}} you'd need to box twices
13:24:55 <mroman> !blsq {1 2}bx{1 2}bx_+
13:25:55 <oerjan> oh hm this is wrong because it's reversed
13:26:22 <oerjan> mroman: i wasn't trying to do that, i wanted to see how to get a copy of the stack _without_ removing the rest.
13:26:48 <oerjan> !blsq 1 2 3 4 #s^^bx\/_+#S
13:27:15 <oerjan> !blsq 1 2 3 4 #s^^bx\/_+#S++#s
13:27:37 <mroman> Doesn't #s do exactly that?
13:27:52 <oerjan> no, #s removes the original stack afaiu
13:28:49 <oerjan> !blsq 1 2 3 4 #s 5 \/ #S#s
13:29:15 <mroman> blsqbot just prints the top element
13:29:44 <oerjan> how then _does_ one remove the whole stack?
13:29:48 <oerjan> except the top element
13:30:04 <mroman> http://eso.mroman.ch/cgi/burlesque.cgi?q=1+2+3+4%23s <- see here
13:31:03 <mroman> !blsq 1 2 3 4#s-]bx#S#s
13:31:09 <mroman> ^- deletes everything except the 4
13:31:21 <oerjan> oh wait #S _does_ delete the rest of stack?
13:31:31 <mroman> #S overwrites the stack, yes.
13:31:46 <oerjan> ok then i had them sort of backwards :P
13:32:04 <mroman> #s pushes the stack to the stack
13:32:14 <mroman> #S pops a block from the stack and replaces the _whole_ stack with it
13:34:00 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
13:34:02 <mroman> !blsq 1 2 3 4 bx{\/+]}{\/isn!}w!
13:34:24 <mroman> !blsq 1 2 3 4 bx{\/+]}{\/isn!}w![~
13:34:36 <mroman> ^- that would also delete everything except the top element
13:34:45 <oerjan> i think we discussed something resembling #Q for an underload variation
13:36:50 <mroman> It'd be interesting to see what #q #Q #q and #Q could do
13:37:38 <oerjan> !blsq 1 2 3 4bx#S"simpler, no?"vv
13:38:24 <mroman> Maybe #q#Q#s#S^^ are enough for tcness
13:39:34 <mroman> (see at the bottom of http://mroman.ch/burlesque/lref.html)
13:40:00 <oerjan> i'm a bit worried how #Q would be useful if you have no kind of tail operation
13:40:20 <nooga> mroman: do you have some sort of programming manual for blsq?
13:40:38 <mroman> nooga: Besides http://mroman.ch/burlesque/lref.html no. Not yet.
13:40:38 <oerjan> #S#S can be used for that
13:40:55 <mroman> http://mroman.ch/burlesque/tutorial.html
13:41:14 <nooga> i couldn't get there from the main page
13:41:24 <nooga> consider redesigning the page :D
13:42:42 <mroman> there is a link right there
13:42:52 <mroman> http://mroman.ch/burlesque
13:42:58 <mroman> Second link in the "Contents"
13:43:18 -!- DHeadshot has quit (Read error: Connection reset by peer).
13:43:34 -!- DHeadshot has joined.
13:46:40 <zzo38> How often are you writing a program that addition, bitwise OR, bitwise XOR, are always going to be the same result in that case? Furthermore, where subtraction, bitwise AND NOT, bitwise XOR?
13:46:54 <blsqbot> ERROR: (line 1, column 7):
13:46:59 <blsqbot> ERROR: (line 1, column 7):
13:47:25 <oerjan> mroman: i think #j = e! perhaps?
13:49:50 <oerjan> ...this is relevant how?
13:50:08 <mroman> inside an eval #Q only sees the code inside that eval
13:51:11 <mroman> i.e e! calls recursively the internal eval loop
13:51:25 <mroman> while #j modifies the code of the current eval loop
13:52:51 <mroman> !blsq {#Q5 5.+}#j5 6.+
13:52:55 <mroman> !blsq {#Q5 5.+}#j5 6.+#s
13:52:56 <blsqbot> {11 10 {5 5 .+ 5 6 .+ #s}}
13:53:01 <mroman> !blsq {#Q5 5.+}e!5 6.+#s
13:55:38 <mroman> !blsq #Q#Q#j#J#s#S#S#q
13:55:46 <mroman> !blsq #Q#5Q#j#J#s#S#S#q
13:55:46 <blsqbot> ERROR: (line 1, column 4):
13:55:52 <mroman> !blsq #Q5#Q#j#J#s#S#S#q
13:55:56 <mroman> !blsq #Q5#Q#j#J#s5#S#S#q
13:55:56 -!- ais523 has quit (Ping timeout: 252 seconds).
13:56:02 <mroman> !blsq #Q5#Q#j#J#s5#S#S#q#s
13:56:03 <blsqbot> {5 #Q #j #J #s 5 #S #S #q #s}
13:56:09 <mroman> !blsq #Q5#Q#j#J#s5#S#S#q#se!
13:56:10 <blsqbot> Ain't nobody got time fo' dat!
13:56:21 <mroman> !blsq #Q5#Q#j#J#s5#S#S#q#s#j
13:56:22 <blsqbot> Ain't nobody got time fo' dat!
13:56:36 <mroman> I haven't gotten the hang of it yet :)
13:56:48 <oerjan> mroman: anyway ^^{}#j are TC by my previous underload :()^ experiments (j# and e! are equivalent in that case)
13:58:45 <mroman> It was already known that you can translate underload to burlesque
14:00:02 <oerjan> i know, it's also on the wiki
14:01:03 <oerjan> also i'm pretty sure i was around when the translation was developed
14:01:52 <oerjan> back then burlesque was much simpler, iirc
14:02:38 <oerjan> then it went off in a completely different direction
14:09:01 -!- carado has joined.
14:11:59 -!- boily has joined.
14:24:00 <zzo38> Does anyone have the "addition and then inverting the high bit" instruction?
14:38:24 <oerjan> hm #s reverses but #q doesn't
14:50:23 -!- oklopol has joined.
14:52:39 <oerjan> !blsq {#s}#S 1 2 3 4#s
14:53:00 <oerjan> !blsq {#s}#S 1 2 3 4#s #q
14:55:48 <boily> the more I see you all playing with burlesque, the more it reminds me of ursala: lists and numbers and cryptic tense manipulations on them.
15:00:18 -!- NihilistDandy has joined.
15:00:26 -!- epicmonkey has quit (Remote host closed the connection).
15:04:45 -!- oerjan has quit (Quit: leaving).
15:12:14 <zzo38> I want this statement to be false.
15:12:48 <coppro> I hope for your sake that it was
15:13:34 -!- epicmonkey has joined.
15:18:24 <blsqbot> Ain't nobody got time fo' dat!
15:18:27 <blsqbot> {"b" "i" "l" "o" "y" "bo" "il" "ly" "oi" "boi" "ily" "oil" "boil" "oily" "boily"
15:18:45 <blsqbot> "biloyboillyoiboiilyoilboiloilyboily"
15:19:53 <blsqbot> {"fo" "of" "fo" "oo" "oo" "of" "fo" "oo"}
15:20:00 <mroman> !blsq "foo"su\[2CO\[su\[
15:20:00 <blsqbot> Ain't nobody got time fo' dat!
15:20:25 <Taneb> Having fun, mroman?
15:22:19 <quintopia> oh neat a list all substrings command. no end of possibilities for golfing that
15:25:34 <boily> zzo38: which statement?
15:27:22 -!- cuttlefish has joined.
15:30:20 -!- aloril has quit (Ping timeout: 276 seconds).
15:32:08 <Taneb> What was that bijection between pairs of naturals and naturals that I knew a long time ago...
15:32:32 -!- GOMADWarrior has joined.
15:32:48 <zzo38> boily: I mean the "I want this statement to be false" statement.
15:33:22 <Taneb> zzo38, either you do, which means it isn't which is bad
15:33:30 <Taneb> Or you don't, which means it is, which is meh
15:33:33 <quintopia> zzo38: no matter how much you want it to be false, it will still be true
15:34:04 <quintopia> however, perhaps if you stop wanting it to be false, it might be false, but then you don't want it to be, so who cares?
15:34:34 <zzo38> I realized all that stuff
15:34:50 <boily> Taneb: something to do with the cardinality of rationals?
15:34:52 <quintopia> did you stop wanting it to be false
15:35:01 <quintopia> or do you still want it to be false
15:36:19 <zzo38> quintopia: Actually I don't care, I just wanted to write such a statement.
15:38:43 <quintopia> aha! so you have succeeded! it is false!
15:44:23 -!- aloril has joined.
15:52:05 <quintopia> parsing confusing statements quiz #1: rephrase the statement "The running time of algorithm A is at least O(n^2)." in your own words.
15:53:56 <oklopol> durr, the algorithm A, on an input of size n, takes at least at most n^2 steps
15:57:04 -!- aloril has quit (Ping timeout: 256 seconds).
15:57:26 <oklopol> more precisely, there exist C, n_0 > 0 such that on an input of size n > n_0, the algorithm takes at least m steps for some m < C*n.
15:58:17 <oklopol> which is probably useful in theoretical obfuscation contests
15:58:28 <coppro> oklopol: I believe you mean C * n^2
15:58:35 <quintopia> i still like my interpretation better
15:58:39 <oklopol> they are equivalent though
15:59:04 <coppro> oklopol: hardly equivalent
15:59:11 <coppro> oklopol: you described O(n)
15:59:24 <oklopol> i thought i described that the algorithm takes any amount of steps
15:59:35 <coppro> I mean that your definition was of O(n)
15:59:54 <quintopia> "the best upper bound we can place on algorithm A's running time is quadratic in n, but we don't know whether the upper bound is actually worse than that"
16:00:06 -!- nooodl has joined.
16:00:11 <coppro> quintopia: what does that mean?
16:00:36 <oklopol> coppro: the joke is O(n^2) is an upper bound. so saying at least O(n^2) doesn't make any sense usually.
16:00:39 <coppro> oklopol: yeah, what you said makes no sense
16:00:53 <oklopol> i thought that was quintopia's point
16:00:56 <coppro> quintopia: big-O isn't the best upper bound
16:01:00 <coppro> oklopol: Probably. I missed it
16:01:16 <oklopol> \Omega(n^2) is at least, up to a constant
16:01:42 -!- epicmonkey has quit (Ping timeout: 252 seconds).
16:01:54 <quintopia> coppro: something like "we found a special type of input where the algorithm is guaranteed to take quadratic time, but the algorithm is really complicated, and there might be some other kind of input that takes cubic time or worse. so, we don't actually have an upper bound, but when we do, we know it will be O(n^2) or worse"
16:01:57 <coppro> No, Omega is a lower bound
16:02:02 <coppro> you need \Theta for that
16:02:31 <coppro> \Theta is the least upper bound and also the greatest lower bound
16:02:39 <coppro> since they are its actual asymptotic behaviour
16:02:44 <oklopol> quintopia: that's \Omega(n^2) essentially
16:02:56 <oklopol> i dunno if there's a compact way to say that
16:04:08 <oklopol> "not O(n^(2-\epsilon)) for any \epsilon > 0"?
16:04:33 <oklopol> i think people say things like that
16:05:44 <oklopol> that means there is a constant C such that there are inputs of arbitrarily large size n such that the algo takes more than C*n^2 steps on them
16:10:15 -!- aloril has joined.
16:23:15 <Taneb> I seem to recall it had something to do with the triangle numbers
16:33:43 <Taneb> http://en.wikipedia.org/wiki/Cantor_pairing_function#Cantor_pairing_function
16:34:23 -!- c00kiemon5ter has joined.
16:36:37 <Sgeo_> Just remembered a bit of norn cruelty I wanted to do but haven't gotten around to
16:37:15 <Sgeo_> Something that messes up their brain so much that it's practically scrambled
16:37:21 <Sgeo_> I forget the details of how it would work though
16:38:48 <Sgeo_> Actually, I think I have dabbled with that a bit
16:49:33 <Taneb> Okay, this is probably the oddest SK calculus interpreter I've written
16:56:18 <Taneb> SKK is encoded as 740
17:10:42 -!- sirdancealot has quit (Read error: Connection reset by peer).
17:23:34 <Taneb> Heh, it's reached Double-y errors
17:23:41 -!- FreeFull has joined.
17:24:40 <Taneb> Okay, I don't need Double
17:27:55 -!- sirdancealot has joined.
17:29:35 <Taneb> Okay, there is a bug in this program that means that it doesn't work for big numbers or something
17:33:13 -!- zzo38 has quit (Remote host closed the connection).
17:53:53 <boily> Taneb: I am intrigued by your SKing.
17:56:39 -!- DHeadshot has quit (Read error: Connection reset by peer).
17:56:44 -!- DH____ has joined.
18:03:12 -!- variable has changed nick to constant.
18:05:24 -!- augur has quit (Read error: Connection reset by peer).
18:06:46 -!- NihilistDandy has quit (Quit: Computer has gone to sleep.).
18:11:10 <Taneb> boily, let me write a parser
18:16:45 <nortti> why is fungot not here?
18:18:20 <Taneb> boily, http://hpaste.org/83052
18:18:28 <Taneb> It's my usual standard of code, I'm afraid
18:24:33 <boily> fizzie: FUNGOOOOOOOOT! *with cute eyes and a pretty please*
18:26:27 <boily> the code is fine. the actual computation is esoterically cringeworthy, with an aftertaste not unlike a good hot sauce with balanced seasoning and smoked peppers.
18:27:40 <tromp_> Taneb, you're not using code 0 :-(
18:27:58 <Taneb> tromp_, leads to problems with pair/unpair
18:28:03 <Taneb> Because pair 0 0 is 0
18:30:07 <nooodl> wow that parseSK function looks like magic
18:30:25 <tromp_> you can use code(S)=0, code(K)=1, code (M N) = pair (code(M),code(N)) + 2 ?!
18:31:19 <Taneb> I'd rather not, tromp_
18:31:46 <Taneb> nooodl, I can't tell whether you're being sarcastic, don't know the parsec library, or it actually is magic
18:32:07 <tromp_> or use bitstring as codes, then all simplifies to code(S)=00, code(K)=01, code (M N) = 1 code(M) code(N
18:32:30 <nooodl> but it looks different from most parsec things i've seen
18:32:48 <Taneb> nooodl, that may be because it's stupidly simple and also written by me
18:33:07 <Taneb> tromp_, that doesn't feel right to me
18:34:22 <tromp_> that feels great to ne, it leads to much smaller codes for unbalanced expressions, like SSSSSSSSSSSS
18:34:28 <Taneb> Or at least not in the spirit of this design
18:34:39 <Taneb> (it is designed to be ridiculous)
18:35:03 <tromp_> your codes will be of exponential size in that case
18:35:30 <boily> tromp_: I don't see any impediments caused by that :p
18:35:36 -!- NihilistDandy has joined.
18:36:26 <tromp_> it's just funny that you end up using bitstrings to represent the necessary bignums:)
18:37:01 <boily> that reminds me I had this not quite optimal meteorological parsec abuse lying around on my drive: http://hpaste.org/83054
18:37:01 -!- KingOfKarlsruhe has joined.
18:37:10 -!- NihilistDandy has quit (Client Quit).
18:37:12 <boily> s/parsec/attoparsec/
18:37:23 <kmc> nooodl: maybe you're unfamiliar with the applicative operators like (*>)
18:37:36 <kmc> anyway that's a nice concise parser :)
18:38:37 <Taneb> tromp_, in theory, the actual low-level implementation could be on a ternary or decimal computer
18:38:40 <quintopia> what's a lightweight easy-to-install ftp server
18:38:41 <nooodl> i'm not familiar with (*>) but i somewhat understand Applicative
18:39:02 <Taneb> (*>) is (>>) but for Applicatives
18:39:06 <Taneb> They are actually the same
18:39:34 <Taneb> Assuming ap = (<*>) and non-stupid Monad and Applicative instances
18:39:41 -!- AnotherTest has joined.
18:40:15 <quintopia> boily: what is attoparsec in feet please
18:40:51 <boily> 1 attoParsec = 0.101236141 feet (17⁄32 inch)
18:40:51 <elliott> Taneb: p *> q = (\x y -> y) <*> p <*> q
18:41:02 <elliott> Taneb: p *> q = (\x y -> y) <$> p <*> q
18:41:05 <elliott> nooodl: p *> q = (\x y -> y) <$> p <*> q
18:41:28 <cuttlefish> Software description: a fast Haskell library for parsing ByteStrings (Haskell).
18:41:30 <nooodl> and p <* q = (\x y -> x) <$> p <*> q?
18:41:49 <quintopia> boily you are off by almost .004!!!!!!!!!
18:42:07 <elliott> nooodl: so p *> q <* r does p then q then r and returns the result of q
18:42:13 <Taneb> Not quite, it's p <* q = (\x y -> y) <$> q <*> p
18:43:02 <nooodl> is (p <* q) == (q *> p)
18:43:16 <boily> quintopia: not my fault, I blindly was reporting what google said. and, as the great tetrachromatic logo in the sky said, Google is the Truth®
18:43:27 <elliott> The other methods have the following default definitions, which may be overridden with equivalent specialized implementations:
18:43:30 <elliott> u *> v = pure (const id) <*> u <*> v u <* v = pure const <*> u <*> v
18:44:00 <nooodl> @let p <** q = (\x y -> y) <$> q <*> p
18:44:23 <elliott> nooodl: (<*) is not flip (*>), no
18:44:27 <nooodl> > [Just 3 <* Nothing, Just 3 <** Nothing, Just 3 <* Just 4, Just 3 <** Just 4]
18:44:31 <elliott> because (p *> q) and (p <* q) both do p first
18:44:38 <elliott> they differ in which result they take
18:45:11 <Taneb> > [("hello", 1) <* ("world" 1), ("hello", 1) <** ("world", 1)]
18:45:14 <lambdabot> The function `"world"' is applied to one argument,
18:45:22 <Taneb> > [("hello", 1) <* ("world", 1), ("hello", 1) <** ("world", 1)]
18:45:24 <lambdabot> [("helloworld",1),("worldhello",1)]
18:45:50 -!- augur has joined.
18:46:05 -!- DH____ has quit (Read error: Connection reset by peer).
18:46:09 <nooodl> (there's an Applicative instance for (,) a? huh)
18:46:28 -!- DHeadshot has joined.
18:46:35 <Taneb> If a is a Monoid, yeah
18:46:37 <nooodl> also looks like a needs to be a monoid
18:46:50 <Taneb> > (Sum 2, 1) *> (Sum 3, 1)
18:47:02 <elliott> (a,f) <*> (b,x) = (a <> b, f x)
18:47:12 <elliott> also a monad, the writer monad
18:47:23 <elliott> join (a,(b,x)) = (a <> b, x)
18:47:32 <nooodl> i was thinking this kinda looked like writer
18:47:35 <elliott> (a,x) >>= k = let (b,y) = k x in (a <> b, y)
18:47:42 <elliott> (,) w = Writer w, just like (->) r = Reader r
18:47:43 <nooodl> but i wasn't sure; writer is the chapter where i last stopped reading lyah
18:47:54 <elliott> you can use it e.g. for logging
18:49:11 <nooodl> sometimes i give up on lyah because i'm dumb. i keep having to reread everything about Applicatives and Monads
18:49:21 <nooodl> at some point in time i understood them fairly well though!
18:50:05 <nooodl> i remember reading a thing about how lyah would get exercises at some point in time, which would be really useful. however they're still not there, and i doubt they'll ever be
18:50:48 <Taneb> Isn't the text of LYAH some Creative Commons license?
18:51:21 <boily> Taneb: it's under a CC-BY-NC-SA 3.0.
18:51:48 <nooodl> man, i wonder if i would've had an easier time learning haskell concepts if it was my first programming language
18:52:36 <Taneb> You woudn't realise you needed to learn them
18:59:10 <kmc> NC licenses :(
19:00:09 <kmc> the definition of "commercial" is super slippery and is enough to scare off many reasonable uses
19:00:22 <kmc> people apply NC as a "don't sell this thing i also want to sell" clause and don't realize what they're getting into
19:01:34 <nooodl> what's the issue with NC licenses
19:01:49 <kmc> can i use drawings from LYAH in a talk at a conference which costs money to attend? can I use excerpts of LYAH on my blog where I also make money from ads?
19:01:50 <Taneb> Maybe you can write a "Less Commercial" clause and send it to the CC people
19:01:53 <kmc> (not my blog, but hypothetical)
19:01:56 <kmc> Taneb: IANAL
19:02:11 <kmc> the answers to these questions may well be "yes", and you can certainly ask the author for special permission
19:02:30 <kmc> but the actual licenses text is vague enough to provide serious stop energy to such uses
19:02:55 <AnotherTest> mroman: is there any place where I can download the burlesque bot?
19:03:11 <kmc> only rarely is the ground truth of a judge's ruling invoked. mostly contract law affects the world through various lawyers reading it and making judgements about the relative degree of risk of this or that clause
19:03:20 <nooodl> hmm, the "money from ads" example is interesting
19:03:29 <kmc> and the lawyers are paid to cover asses
19:03:41 <mroman> AnotherTest: My repository
19:03:55 <mroman> blsqirc.hs and blqsirci.hs
19:03:56 <kmc> so maybe I can read the CC-NC text and claim it clearly allows publishing on a blog with ads, but $BIGCORP lawyer probably won't, and honestly they're the expert and not me
19:04:03 <kmc> programmers often fail to appreciate that this is how contract law works
19:04:13 <mroman> and blsqirci.hs is the interpreter the bot calls
19:04:18 <kmc> "You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation."
19:04:59 <kmc> so now a lawyer has to think about whether it's worth risking the chance that their use is later determined to be "primarily intended for or directed toward commercial advantage"
19:05:09 <kmc> it's really about uncertainty more than anything else
19:05:32 <kmc> the less certain a license's terms are, the more it will prevent use
19:06:35 <boily> "I remember when legal used to mean lawful, now it means some kind of loophole." -- Leo Kessler (Charles Whiting)
19:08:03 <AnotherTest> http://stackoverflow.com/questions/15070881/logical-relational-expression-optimization/
19:08:44 <AnotherTest> as if that optimization is 1) even worth it 2) even an actual optimization
19:09:15 <nooodl> why would you write that, jesus
19:09:40 <elliott> well the optimisation saves a branch
19:09:43 <kmc> "Optimization is not from the compiler's point of view."
19:09:45 <kmc> what... does that mean
19:09:47 <elliott> though perhaps it makes branch prediction worse
19:10:34 <kmc> well at least the accepted answer looks at actual assembly output by an actual compiler
19:10:43 <mroman> Shouldn't any compiler just generate one branch?
19:10:46 <kmc> unlike the third answer which is more like "pulled out of ass" assembly
19:11:03 <mroman> ok probably not should but could
19:11:05 <nooodl> I'd use this: a > max(b,c) – MatheusOl
19:11:05 <kmc> so they're only committing two of the 3 cardinal sins of C optimization
19:11:14 <AnotherTest> kmc: yeah, but it would be more optimal to use the asm keyword right?
19:11:23 <kmc> most optimalerest
19:11:33 <elliott> i don't see why the stdin is relevant
19:11:45 -!- monqy has joined.
19:12:48 <AnotherTest> I really wonder what kind of people go on stack overflow answering questions with crap like that
19:12:56 <nooodl> i'm planning to rewrite the whole thing
19:13:01 <nooodl> and make it "compiled"
19:13:06 <elliott> i don't see how the accepted answer is crap
19:13:09 <monqy> i support rewriting...
19:13:13 <Fiora> a>max(b,c) .... cmp, cmov, cmp, jmp
19:13:17 <elliott> it proposes some code that answers the question asked and gives evidence to support the code
19:13:34 <Fiora> 4 uops, while the accepted answer is also 4
19:13:37 <elliott> perhaps it is not actually an optimisation for some reason but I see no reason it's a crap answer even if it's a wrong one
19:13:42 <Fiora> so, about the same I guess?
19:13:48 <nooodl> Fiora: that's also wrong though (it's (a > b) && (a > c))
19:14:15 <AnotherTest> elliott: Yes, you may have a point there. The question is probably the worst part of the whole thing.
19:14:21 * ion reads the Stack Overflow page and laughs.
19:14:31 <elliott> yes the question is pretty awful
19:14:46 <nooodl> someone answer "(a > b) || (a > c)"
19:14:54 <elliott> perhaps I am biased from having answered worse ones
19:15:10 <AnotherTest> I'm surprised it didn't get down-voted actually
19:15:29 <kmc> (the three sins are: assuming C is "close to the machine", assuming the machine is an in-order single-unit processor with no cache, and NOT FUCKING RUNNING THE FUCKING THING)
19:15:30 <nooodl> i don't want to downvote it, it feels rude
19:15:43 <nooodl> i don't have enough SO rep for that it feel Just
19:16:52 <nooodl> (what's that a response to)
19:17:00 <FreeFull> 19:14:46 < nooodl> someone answer "(a > b) || (a > c)"
19:17:27 <nooodl> oh no we're talking about this SO post where someone asked "optimize (a>b)||(a>c) for me"
19:18:40 <nooodl> now i'm reading shitty SO questions...
19:18:42 <nooodl> http://stackoverflow.com/questions/15074624/how-can-i-make-a-program-determine-whether-or-not-the-input-is-an-int-in-python
19:19:15 <boily> nooodl: I'm not even clicking on that. sounds painful.
19:19:23 <FreeFull> nooodl: In haskell I'd do it with a fold
19:19:35 <nooodl> boily: you should see the example code...
19:19:36 <FreeFull> No idea about what the idiomatic thing is in python, list comprehension?
19:19:43 <FreeFull> Can python list comprehensions do folds?
19:19:57 <nooodl> reduce(), sum(), any(), all()
19:20:00 <kmc> python has a 'reduce' function which is a fold
19:20:10 <FreeFull> Reduce apparently isn't idiomatic
19:20:17 <boily> nooodl: can you say "shmuck bait".
19:20:31 <kmc> FreeFull: python community is terrified of basic functional programming
19:20:36 <kmc> guido actually just does not understand it
19:20:52 <kmc> he said that Python isn't a functional language because 'map' is a library function, not like in Haskell where it's special magical built in compiler primitive
19:21:29 <nooodl> well, list comprehensions are basically map. and *also* zipWith
19:21:36 <kmc> and filter
19:21:40 <FreeFull> Isn't everything in Haskell that isn't a keyword or doesn't have a # not a built in
19:21:54 <FreeFull> Well, and lists and strings are built in of course
19:22:08 <kmc> so first of all the # names are not part of Haskell
19:22:10 <kmc> they are a GHC extension
19:22:16 <FreeFull> nooodl: List comprehensions are the list monad but pansier
19:22:34 <kmc> there are a few different kinds of 'built in'
19:22:40 <FreeFull> kmc: Ok, so State# isn't an actual thing
19:22:48 <kmc> Int and (IO t) and such are abstract data types
19:23:04 <kmc> standard Haskell doesn't tell you what their constructors are, or let you pattern-match on them
19:23:17 <kmc> FreeFull: State# is a horrible abomination and any attempt to understand IO thorugh it is doomed to massive confusion
19:23:20 <kmc> hope that helps
19:23:31 <nooodl> i like how Bool isn't "special"
19:23:39 <kmc> Lists aren't special except that they have special syntax
19:23:49 <kmc> functionally equivalent to data List a = Nil | Cons a (List a)
19:24:43 <FreeFull> kmc: Well I did mean the syntax
19:25:22 <kmc> anyway there are at least three kinds of 'built in'
19:25:37 <kmc> - thing the standard says is abstract, but it's a library in GHC and you can peek at the internals
19:25:54 <kmc> - thing that looks like a library function but is implemented in GHC.Prim and so there are no Haskell internals to peek at
19:25:57 <kmc> - actual special syntax
19:26:11 <AnotherTest> mroman: I hope I will be able to run this through a socks proxy so I can have it run through greenhouse.
19:26:18 <kmc> iirc GHC's source code actually contains the line "data [] a = [] | a : [a]" somewhere
19:26:27 <AnotherTest> mroman: Don't worry though, it should work
19:26:40 <FreeFull> As well as [stuff] and "stuff"
19:26:41 <kmc> because it's convenient for every data type to be associated with a particular declaration on a particular line of a particular file
19:26:46 <kmc> but it's not generally allowed syntax
19:27:16 <Sgeo_> Idris has any type with the constructors Nil and (:) (I think) to use [] syntax
19:27:19 <FreeFull> GHC.Prim seems to have # stuff and ->
19:27:20 <kmc> as for unboxed types like Int#, not only are they not in standard Haskell but the language semantics of standard Haskell wouldn't allow them
19:27:32 <kmc> for example Haskell doesn't have any way to deal with the fact that [Int#] is illegal
19:27:51 <kmc> in Haskell every type can be used as a type argument to a polymorphic thing, but in GHC this is not true for unboxed types
19:28:23 <kmc> list of unboxed integers...
19:28:53 <kmc> a list where every (:) closure contains a machine int and a pointer to another such closure
19:28:58 <kmc> you can write this type
19:29:14 <kmc> data UIntList = Cons Int# UIntList | Nil
19:29:22 <AnotherTest> mroman: "readProcess "blsqirci.exe" ["--ircbot",p] """ - that looks windows
19:29:25 <FreeFull> But it'd mean the list nodes would have different sizes depending on the type
19:29:39 <kmc> if your implementation used a spare bit to tag pointers vs. words, you might allow this
19:29:51 <FreeFull> I think each list node ends up as two pointers, assuming the list doesn't get optimised away?
19:29:53 <AnotherTest> mroman: should that give any problems, considering my haskell knowledge
19:29:56 <kmc> but in general you don't want to, because you want to be able to emit polymorphic code that treats everything uniformly as heap pointers
19:30:23 <kmc> FreeFull: in C++ you can do the equivalent of [Int#] because templates, rather than emitting polymorphic code, are a kind of glorified macro system that emits code specially for each type where used
19:30:40 <kmc> so it's no problem that list<int> and list<double> have different element sizes
19:30:52 <FreeFull> It also makes for horrific error messages
19:31:05 <kmc> that's... tangentially related at best
19:33:54 -!- Bike has joined.
19:34:30 <Sgeo_> What languages have implementations that give really good error messages?
19:34:39 <kmc> clang is supposed to be very good
19:35:01 <kmc> it will spit your code back at you with the problematic part highlighted and unerlined
19:35:08 <kmc> i always wanted a badass type error debugger for Haskell
19:35:37 <kmc> which would give you a slick way to visualize the type equations produced for your terms, and why unification fails on them
19:35:40 <AnotherTest> What packet gives me Web.Encodings for Haskell?
19:35:59 <elliott> probably no debian package
19:36:13 <AnotherTest> Oh so I need to use the haskell installer thingy?
19:36:19 <monqy> haskell-web-encodings-thank-you-debian
19:36:51 <elliott> kmc: have you heard of type error slicing?
19:36:54 <elliott> e.g. http://www.macs.hw.ac.uk/ultra/skalpel/
19:37:34 <AnotherTest> "libghc6-webkit-dev - Binding to the Webkit library" probably not?
19:38:20 <kmc> go to hackage.haskell.org
19:38:26 <elliott> kmc: I hear edwardk wrote one for Haskell once
19:38:28 <kmc> and find the hackage package name using search
19:38:36 <kmc> and then it's probably libghc6-whatever-dev if it exists
19:38:45 <kmc> this is more likely to work than random guessing
19:39:22 <AnotherTest> http://hackage.haskell.org/package/web-encodings
19:39:35 <elliott> I was reading an interesting article about monad, 'pipes' and being a 'red pipe'. From what it seems it is saying function parameters or classes are types of pipes to make sure everything fits. Then it goes about being a red pipe and must always be a red pipe and purity. This part I didn't understand
19:39:40 <elliott> Why can't a 'red pipe' become a 'blue pipe'? Can a red pipe be converted to a plain pipe? What does this have to do with purity? and can I think of this being something like class RedPipe: PlainPipe { /* same interface and implementation here*/ } ?
19:40:01 <kmc> elliott: gas up my murdering chainsaw
19:40:28 <kmc> make sure it's the right one and not the hedge trimming chainsaw or the juggling chainsaw
19:40:40 <kmc> they're all selected for the purpose
19:40:44 <kmc> right tool for the right job you know
19:41:02 <kmc> elliott: where's that from
19:41:09 <nooodl> You might not have all required modules. 'cabal install split web-encodings haskeline mtl regex-compat parsec digits statistics' should fix that.
19:41:13 <elliott> kmc: http://stackoverflow.com/questions/15068648/monads-red-pipe-different-from-type
19:42:18 <nooodl> it's easier to just run that entire line
19:42:22 <nooodl> it'll skip over the ones you already have
19:42:29 <AnotherTest> abal: cannot configure mtl-2.1.2. It requires transformers ==0.3.*
19:42:36 <FreeFull> This is the first time I've heard about pipes having colours
19:42:48 <AnotherTest> nooodl: For the dependency on transformers ==0.3.* there are these packages:
19:42:48 <AnotherTest> transformers-0.3.0.0. However none of them are available.
19:42:52 <elliott> Great answer but I have a few more questions. Does State and IO () have a special meaning or are they user/library defined types? If i had to guess State means it modifies global variables (which I don't understand because I thought everything was read only/pure) and IO() means the data will not be the same even if the same parameters are called repeatedly. But I'm not sure why there are () after the IO. Is IO a type and () have a meaning? – Brute
19:43:15 <kmc> elliott: owww
19:43:23 <kmc> make it stop
19:43:28 <FreeFull> elliott: I believe State is library-defined
19:43:29 * Bike watches kmc's temperature increase worryingly
19:43:33 <elliott> FreeFull: ..................
19:43:36 <FreeFull> And could be defined by an user just fine
19:43:41 <olsner> elliott: at least it's not phrased in the pipe metaphor
19:43:45 <nooodl> this person is learning about monads lets make fun of them
19:43:50 <elliott> FreeFull: .............................................................................................................................
19:43:50 <Bike> psst freefull he's quoting someone
19:44:02 <elliott> nooodl: not sure what is going on there is learning
19:44:05 <AnotherTest> nooodl: luckily there is a libghc6-transformers-dev
19:44:07 <FreeFull> That's why you use quotation marks
19:44:08 <olsner> "Does this mean State is a blue pipe and IO is a red pipe? Is () the drain?"
19:44:13 <kmc> it's not the beginner's confusion that frustrates me, so much as the plethora of bad explanations that confused him/her to get to this point
19:44:30 <FreeFull> You supply an IRC Message type to me and I take it as a message
19:44:38 <kmc> the way that bad explanations by people who are beginners themselves drown out the people who actually know what they're talking about
19:44:58 <elliott> i like not using quotation marks around quotations
19:45:10 <Bike> --- abraham lincoln
19:45:15 <nooodl> maybe "cabal update" AnotherTest?
19:45:29 <kmc> it's much of why i left #haskell
19:45:36 <kmc> thereby exacerbating the problem but o well
19:45:55 <kmc> also it's not like i or anyone else there actually knows what's a good explanation empirically
19:46:00 <nooodl> remember when i accidentally did that... in #haskell... a week or two ago, elliott
19:46:01 <kmc> we all just have our pet theories and shout them at each other
19:46:01 <elliott> kmc: imo you should join #haskell again
19:46:03 <FreeFull> But beginners don't seem to go there
19:46:06 <AnotherTest> I'm sort of scared of Haskell for some reason
19:46:06 <kmc> elliott: is it worse
19:46:08 <FreeFull> I wonder if there is a correlation
19:46:08 <elliott> nooodl: yes i yelled at you
19:46:16 <elliott> kmc: i guess yes but also better in some ways?
19:46:19 <kmc> better how
19:46:25 <nooodl> it was just nooodl......................................
19:46:42 <elliott> where's your sense of adventure
19:46:51 <elliott> where's your adventurous sense
19:47:02 <kmc> what a grand adventure to join a room full of annoying people and get angry and leave
19:47:26 <nooodl> it's the grandest adventure you'll have on irc
19:47:36 <elliott> shachaf is an op now so how can it be bad
19:47:40 <kmc> no they're not
19:47:49 <nooodl> it's even Grander when you join more annoying channels
19:48:18 <olsner> they made shachaf an op?
19:48:20 <monqy> tbf #haskell is pretty annoying
19:48:57 <elliott> 19:48:21 * hackagebot Nomyx 0.1.0 - A Nomic game in haskell, featuring automatic, machine-executed rules written by the players http://hackage.haskell.org/package/Nomyx-0.1.0 (CorentinDupont)
19:49:01 <elliott> 19:48:23 * hackagebot Nomyx-Rules 0.1.0 - Language to express rules for Nomic http://hackage.haskell.org/package/Nomyx-Rules-0.1.0 (CorentinDupont)
19:49:02 <FreeFull> That's why I ask all my haskell questions in here
19:49:04 <elliott> you get exciting package announcements like this
19:49:11 <FreeFull> AnotherTest: PHP is pretty annoying
19:49:24 <Bike> i wonder how a sense could be adventurous
19:49:33 <nooodl> that's like an elliott christmas present
19:49:34 <Bike> sounds like material for a very surreal novel
19:49:35 <AnotherTest> Especially if you're looking for questions like "what does $a = 1+1; do in PHP?"
19:49:50 <kmc> probably a SQL injection
19:50:01 <elliott> nooodl: no that would be @
19:50:09 <elliott> did anyone ever tell you 'bout @
19:50:12 <nooodl> anyway the thing that bothers me the most in ANY irc channel is,
19:50:36 <FreeFull> People not finishing their sentences?
19:50:39 <nooodl> when people come in and ask "can i ask a question about ... here?"
19:50:53 <FreeFull> Can I ask a question about lasagna here?
19:50:54 <nooodl> and there's some asshole who's like, don't ask to ask!!!
19:51:10 <nooodl> instead of just typing, like, "sure"
19:51:19 <Bike> what if they say "sure, and you don't need to ask to ask"
19:51:26 <nooodl> monqy: yes that twist was intentional
19:51:29 <olsner> this pipe monad metaphor is really horrible
19:51:36 <FreeFull> What if they say "sure, always feel free to ask questions about ..."
19:51:40 <monqy> nooodl: it's too bad i was already spoiled!!!
19:51:55 <nooodl> did i tell you about this once :(
19:52:07 <elliott> monqy: can you tell nooodl about @
19:52:15 <FreeFull> Pipes isn't a good name anymore
19:52:19 <nooodl> this sounds like a job for the ~secret channel~
19:52:40 <AnotherTest> failure-0.1.2 failed during the building phase. The exception was:
19:52:41 <AnotherTest> split-0.2.1.2 failed during the configure step. The exception was:
19:52:41 <AnotherTest> web-encodings-0.3.0.9 depends on failure-0.1.2 which failed to install.
19:52:43 <elliott> do you mean #esoteric-minecraft thats not very secret!!
19:52:44 <olsner> it oges something like: programs are pipes, haskell makes the "plumber worldwide association" introduce a rule that plumbers never touch naked pipes, monads are red wrappers around pipes
19:52:59 <elliott> also the whole channel has to learn about @
19:53:06 <Bike> AnotherTest: that's some deep shit
19:53:28 <AnotherTest> Should I just apt-remove cabal && apt-install cabal
19:53:39 <FreeFull> olsner: That does sound really stupid
19:53:44 <monqy> nooodl: in summary, vapourware to end all vapourware
19:54:22 <elliott> appointing olsner as new @splainer
19:54:29 <olsner> "The pipes goes inside another premise we don’t have the control over our pipework anymore. While inside the premise, another plumber decide to modify our pipe, insert a special water cleaner and then “re-inject” the water inside the old pipe system."
19:54:31 <nooodl> what's the @ssence of @
19:54:53 <FreeFull> olsner: I have no idea what that's saying
19:54:54 <monqy> elliott: in the spirit of elliott i was going to make a joke about initial/terminal object in the category of vapourware but i didn't feel up to explaining it
19:55:00 <Bike> olsner: is this person high
19:55:06 <monqy> elliott: and i couldn't figure out which would be punchier
19:55:11 <monqy> elliott: which way do the arrows go???
19:55:12 <elliott> olsner: i like how that sounds like just regular plumbing talk
19:55:14 <olsner> FreeFull: me neither, but it has something to do with monads, supposedly
19:55:23 <AnotherTest> nooodl: how long should cabal install cabal take?
19:55:48 <monqy> how long is your internet connection
19:55:57 <Bike> why would you move the water
19:55:59 <FreeFull> olsner: Obviously monads are actually burritos
19:56:10 <nooodl> i'm not sure... i installed it as part of the haskell platform
19:56:11 <boily> monqy: what's a henway.
19:56:15 <Bike> this sounds like a surgical operation rather than plumbing
19:56:18 <Bike> is the house alive?
19:56:30 <monqy> boily: is this some sort of joke
19:56:37 <olsner> AnotherTest: I think cabal is not supposed to be installed through cabal in general
19:56:51 -!- augur has quit (Read error: Connection reset by peer).
19:57:00 -!- augur has joined.
19:57:06 <nooodl> maybe that updates cabal?!
19:57:22 <Bike> cabal install 'cabal install cabal'
19:57:36 <elliott> kmc: you like burrito jokes right
19:57:39 <olsner> to make things more or less confusing: cabal the binary comes from the package cabal-install, not from Cabal (which is a library)
19:57:39 <AnotherTest> I'm really considering Crtl + C and reinstalling cabal through debian
19:57:47 <kmc> elliott: burrito jokes are like burritos
19:57:48 <boily> monqy: robbing you of any will of making vapoury punchlines.
20:00:15 <elliott> if you upgraded the cabal library, congrats! your installation is now even more broken
20:02:49 <Taneb> elliott, did you see and subsequently become very ashamed of my existence because of my SK-calculus implementation
20:03:33 <nooodl> i just realized i can finally ask this question because i know #esoteric exists:
20:03:50 <nooodl> are there any good esolangs based on lambda calculus that are still easily writable
20:04:02 <nooodl> (i.e. lambdas, not sk combinators)
20:04:04 <AnotherTest> It is a common myth that #esoteric actually exists.
20:04:12 <olsner> "Imagine that we have our pipe perfectly sealed, with all the junctions perfectly aligned. If you think about this, this is something we could achieve also in an imperative language and, being provocative, also in Scala!"
20:04:20 <Taneb> Real Fast Nora's Hair Salon Three Shear Disaster Download
20:04:54 <Taneb> http://esolangs.org/wiki/Real_Fast_Nora%27s_Hair_Salon_3:_Shear_Disaster_Download nooodl
20:05:19 <monqy> http://esolangs.org/wiki/Binary_lambda_calculus totally readable
20:05:32 <monqy> http://esolangs.org/wiki/Backslash_Calculus totally readable
20:06:04 <elliott> nooodl i have your esolang
20:06:17 <nooodl> i just need a lambda calculus interpreter basically
20:06:20 <monqy> http://esolangs.org/wiki/MIBBLLII Combinatory Logic But Its Not SK
20:06:31 <Bike> that's like five lines of anything nooodl
20:06:33 <nooodl> but ideally it'd come with some thingies for input/output/chars
20:06:37 <monqy> have you considered: a scheme implementation
20:06:47 <coppro> nooodl: what is an inout/output char in lambda calculus?
20:06:48 <monqy> or do you need nonstrict semantics
20:07:06 <Bike> also backslash calculus is entirely lambda calculus with de bruijin, perfect
20:07:51 <Taneb> Bike, so is Real Fast Nora's Hair Salon 3: Shear Disaster Download
20:07:56 <elliott> imo tailcalled invented backslash calculus so don't use it
20:08:22 <monqy> nooodl: what do you want this thing for
20:08:26 <monqy> nooodl: for what do you want this thing
20:08:26 <Taneb> Except Real Fast Nora's Hair Salon 3: Shear Disaster Download uses real words instead of crummy symbols, and hence is MUCH more readable
20:08:28 <Bike> Real Fast Nora's Hair Salon 3: Shear Disaster Download it is then, elliott
20:08:33 <Phantom_Hoover> i have it in my head that one of them is ok and the other bad
20:08:55 <AnotherTest> I think internet relay programming can do lambda calculus really easy
20:09:07 <nooodl> does that still exist AnotherTest
20:09:24 <nooodl> i've read the wiki article but i assumed the channel would just be empty or something
20:09:42 <monqy> nooodl: http://esolangs.org/wiki/Lambda_calculus "an esolang"
20:09:45 <elliott> it exists and it's like the worse version of #esoteric
20:09:50 <elliott> except it's mostly dead i think?
20:09:51 <Taneb> Just popped on it and it has 22 people other than me
20:10:13 <olsner> I guess we should make a "red pipe/blue pipe" language now where you somehow program with monad metaphors
20:10:22 <Phantom_Hoover> nooodl, fwiw lazy k comes with a scheme library for translating from the lambda calculus
20:10:54 <Vorpal> <monqy> i avoid #irp <-- last I looked it was pretty dead
20:10:56 <nooodl> olsner: couldn't you just make aliases for some haskell types
20:10:57 <Vorpal> so nothing to avoid really
20:11:28 <elliott> monqy doesn't like dead things
20:11:50 <elliott> its because monqy lives in an abandoned stinky orphanage
20:11:58 <nooodl> rat story!! i like the rat story
20:12:01 <tromp_> noodle, Binary_lambda_calculus has interpreters in C and Haskell
20:12:16 <tromp_> including an obfuscated one
20:12:16 <elliott> nooodl: @ is an English-language macro expanding to the name I will give @ in the future when I decide on one
20:12:26 -!- zzo38 has joined.
20:12:35 <monqy> Phantom_Hoover: did friendship mouse die in your ceiling and stink up your room for week(s)
20:12:44 -!- AnotherTest has quit (Quit: Leaving.).
20:12:48 <monqy> Phantom_Hoover: and also die under your floor shortly before that
20:12:59 <Bike> elliott: uh why are you not using vau calculus instead of macros??
20:13:03 <nooodl> do you mean, the name itself is a macro
20:13:03 <monqy> im not seeing very many parallels here
20:13:15 <elliott> Bike: good q.......................
20:13:18 <monqy> well there were probably two rats
20:13:21 <olsner> nooodl: aliases for haskell types are not metaphors, besides what would I use aliases of types for?
20:13:24 <elliott> Bike: does english support those
20:13:36 <elliott> nooodl: what do you mean by "the name itself"
20:13:39 <elliott> "@" is an English-language macro
20:13:49 <elliott> but @ is, just nobody knows what it is yet
20:13:59 <nooodl> is this your "feather"
20:14:06 <elliott> but the symbol "'@'" is a macro
20:14:09 <Bike> elliott: yes you just say that every word appearing before @ is an operator
20:14:10 <elliott> nooodl: its not really like feather at all
20:14:19 <elliott> Phantom_Hoover: more than a week!
20:14:25 <Bike> what's feather
20:14:28 <Bike> what's elliott
20:14:32 <nooodl> it sounds a lot like it; what's @
20:14:35 <Taneb> I remember friendship mouse
20:14:46 <elliott> nooodl: it's an operating environment for computers
20:14:48 <Bike> what if it turns out that "@" expands into "butts"
20:14:59 <Bike> "butts" is an English-language macro
20:15:01 <nooodl> http://esolangs.org/wiki/@tention! thanks wiki
20:15:14 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.90 [Firefox 19.0/20130215130331]).
20:15:33 <elliott> Bike: it's going to be pretty good when I replace all occurrences of "@" with the name in the logs
20:15:42 <zzo38> Does any music made using oneshot square waves?
20:15:52 <nooodl> zzt title screen music
20:16:01 <elliott> nooodl: anyway for most of its existence @ has been an #esoteric joke about @
20:16:08 <elliott> but before that it was a different thing
20:16:10 <Phantom_Hoover> elliott, remember when you were still just trying to do lisp machines on modern architectures
20:16:19 <nooodl> i wish i could import all #esoteric logs into my brain
20:16:23 <elliott> Phantom_Hoover: that was you!
20:16:39 <zzo38> nooodl: Do you mean the percussion notes 012456789 of ZZT?
20:16:45 <Bike> ha ha lisp machines
20:16:52 <elliott> why are you laughing Bike....
20:17:01 <elliott> lisp machines are pretty great!
20:17:02 <nooodl> the notes themselves are also just squarewaves
20:17:03 <Bike> why indeed elliott
20:17:13 <nooodl> i guess it depends on what you mean by "oneshot"
20:17:19 <zzo38> nooodl: Yes, it is PC Speaker.
20:17:22 <elliott> ok i admit lisp machine fetishists are unbearable on some level
20:17:27 <elliott> but you can't deny they're pretty great
20:17:32 <Bike> but seriously have you ever looked at cdr coding
20:17:37 <Bike> like really looked, at cdr coding
20:17:43 <zzo38> But what I mean by the "one shot" square waves is a square wave which triggers a monostable circuit at the frequency of the note.
20:17:48 <Bike> it's like your hands man
20:17:56 <monqy> this is reminding me of ursala
20:18:03 <monqy> hey Sgeo_ did you ever look at ursala
20:18:12 <Bike> the OSs are kinda cool but i mean people go on about the hardware and
20:18:16 <Bike> i just, i uuuuugh
20:19:22 <nooodl> zzo38: so just... no volume changes, no vibrato, etc?
20:19:35 <nortti> found this in 9front fortune file: The "do one thing well" philosophy underlying UNIX is best realized in a fully object-oriented environment. - some Linux guy
20:19:35 <elliott> Bike: come on genera is pretty great
20:19:50 <elliott> nooodl: anyway do you have any more questions about @
20:19:55 -!- oerjan has joined.
20:20:11 <nooodl> i want to see how far the implementation got
20:20:34 <zzo38> nooodl: Well, not exactly what I mean; I mean that the duty is not a percentage but rather a fixed time being high regardless of the note.
20:21:06 <zzo38> (So that high notes have a high duty percentage, and low notes have a low duty percentage)
20:21:08 <elliott> nooodl: it didn't because it was never intended to be implemented in the state it was in
20:21:13 <elliott> and I never claimed I was in the process of implementing it
20:21:24 <nooodl> is there a "ref", is it a "programming language"
20:21:28 <Phantom_Hoover> hey now i think i was poking around with nasm at the time
20:21:58 <Phantom_Hoover> it is possible that at some point code was written with @ at least partly in mind
20:22:11 <Bike> @ turns out to expand to the full text of A Programming Language
20:22:19 <elliott> Phantom_Hoover: sure I wrote a bootloader
20:22:22 <Bike> #esoteric logs bloat, explode, covering elliott and his lisp machines in vomit
20:22:36 <elliott> Bike: I don't have any lisp machines because the shipping to the UK would cost too much
20:22:49 <elliott> nooodl: what do you mean by "ref"
20:23:05 <zzo38> nooodl: Do you know of any like that?
20:23:21 <elliott> nooodl: what do you mean by language reference
20:23:51 <nooodl> elliott: i'm not answering that question, this is retarded
20:24:31 <nooodl> (the "depends on what you mean by x!!" chain thing)
20:26:25 -!- doesthiswork has joined.
20:28:24 <Phantom_Hoover> did you use my damn blaze rod to make that ender chest
20:28:27 <oerjan> <Taneb> What was that bijection between pairs of naturals and naturals that I knew a long time ago... <-- well one i've discussed on this channel before is f(m,n) = (m+n)*(m+n+1)/2 + m
20:28:33 <nooodl> yes, but i got a new blaze rod
20:28:39 <Taneb> oerjan, I found it in the end
20:28:41 <nooodl> it's in my inventory i think
20:28:59 <Bike> what about the good ol' cantor functon
20:29:15 <Bike> which is what you just said fuck
20:29:53 <oerjan> Bike: possibly the same?
20:31:26 <oerjan> it's counting by minor diagonals, anyway
20:34:14 <oerjan> also, for n-tuples it generalizes to comb(n1+...+nk+1,k) + comb(n1+...+n(k-1)+1,k-1) + ... + com(n1+n2+1,2) + n1, (modulo any off-by-one errors)
20:34:25 -!- augur has quit (Read error: Connection reset by peer).
20:34:52 -!- augur has joined.
20:35:20 -!- augur has quit (Read error: Connection reset by peer).
20:35:38 -!- sirdancealot has quit (Quit: KEEP SPARKS. FLAME AWAY.).
20:35:39 -!- augur has joined.
20:44:28 -!- augur has quit (Remote host closed the connection).
20:46:47 <oerjan> hm fizzie is idle and fungot is missing
20:48:03 <Taneb> Did fungot kill fizzie and flee
20:51:25 <oerjan> hm in http://hpaste.org/83052 have you considered that the 1,2,3,5 values are also themselves pairs?
20:52:13 <olsner> @ask fungot did you kill fizzie and flee?
20:52:51 <Taneb> They're chosen because they're the smallest 4 such that they can't be constructed from pairing eachother and aren't zero
20:52:53 <oerjan> 1 = (1,0), 2 = (0,1), 3 = (2,0), 5 = (0,2)
20:53:14 <oerjan> basically, because they have 0 as a part
20:53:33 <Taneb> The next two would be 6 and 9
20:54:03 <Taneb> There appears to be a pattern
20:54:11 <Taneb> Of course there's a pattern
20:55:05 <mroman> @tell Anothertest If you're using linux you might wanna change that to ./blsqirci instead of blsqirci.exe
20:55:31 <Taneb> And parseSK is one of the prettiest parsers I have ever written
20:55:37 <Taneb> Perhaps because it is so basic
20:56:11 <oerjan> Taneb: x *> pure y == y <$ x , btw
20:56:26 -!- augur has joined.
20:57:49 <elliott> (<$) is neater since only Functor constraint
20:58:04 <Taneb> elliott, but the third choice needs it to be an Applicative
20:58:16 <elliott> well why don't you use (>>) then!!
20:58:21 <oerjan> all Applicatives are Functors
20:58:47 <lambdabot> Could not deduce (GHC.Num.Num (a0 -> b0))
20:59:24 <lambdabot> Could not deduce (GHC.Num.Num (a0 -> b0))
20:59:27 <oerjan> pair <$ char '`' <$> parseSK <*> parseSK
20:59:39 <oerjan> assuming they all chain left to right
20:59:47 <oerjan> FreeFull: see http://hpaste.org/83052
20:59:59 <Taneb> They're all infixl 4
21:00:11 <oerjan> * pair <$ char '`' <*> parseSK <*> parseSK
21:01:47 <oerjan> i suppose using *> with all of them has an elegance
21:01:55 -!- azaq23 has joined.
21:02:10 -!- azaq23 has quit (Max SendQ exceeded).
21:03:55 <Taneb> And I know about line 32
21:06:20 <oerjan> pair `flip` b `fmap` step a maybe
21:06:34 <Taneb> For a start, `fmap` is <$>
21:06:43 <elliott> pretty sure oerjan knows that
21:06:54 <Taneb> And infix flip feels wrong to me
21:07:29 <Taneb> If there were more brackets about I'd be tempted
21:08:37 <lambdabot> (?a::a1 -> a -> b, ?b::f a1, ?c::a, Functor f) => f b
21:08:58 <oerjan> they removed caleskell flip but it still exists as lens ??
21:09:59 <oerjan> Taneb: so, pair <$> step a ?? b , although you need to import ?? from lens >:)
21:10:12 <lambdabot> Functor f => f (a -> b) -> a -> f b
21:10:37 <oerjan> it really should be in Data.Functor though
21:10:40 <lambdabot> Functor f => (a -> b) -> f a -> f b
21:11:22 -!- epicmonkey has joined.
21:11:41 <Taneb> oerjan, I'm avoiding lens, because it is really overkill
21:11:47 <Bike> so if i can't say lambdabot is running caleskell what can i say it's running? caleslens??
21:11:57 <oerjan> Taneb: yeah it has heaps of dependencies
21:12:08 <oerjan> Bike: there's plenty of cale left
21:12:10 <monqy> Bike: well (++) and (.) are still caleskell
21:12:19 <boily> some day, my bot will overthrow lambdabot.
21:12:27 <Taneb> oerjan, you are aware that I know about lens, quite a lot?
21:12:39 <oerjan> Taneb: anyway, it's just f ?? x = fmap ($ x) f
21:12:44 <Taneb> boily, what's the prefix for your bot?
21:13:25 <oerjan> @hoogle Functor f => f (a -> b) -> a -> f b
21:13:26 <lambdabot> Prelude fmap :: Functor f => (a -> b) -> f a -> f b
21:13:26 <lambdabot> Data.Functor fmap :: Functor f => (a -> b) -> f a -> f b
21:13:26 <lambdabot> Control.Monad fmap :: Functor f => (a -> b) -> f a -> f b
21:13:31 <Bike> :t (+ 1) . (+ 1)
21:13:57 <lambdabot> `$' (imported from Data.Function), `$!' (imported from Prelude),
21:14:41 <oerjan> except it's not symmetric to <$
21:15:17 <cuttlefish> --- Possible commands: dice, duck, echo, eval, fortune, metar, ping, yi
21:15:22 <Taneb> ~eval (1, 2) ^. _1
21:15:42 <elliott> oerjan: ($>) would be flip (<$), no?
21:16:16 <boily> weird, Control.Lenses is there...
21:16:20 <oerjan> elliott: i was looking for a good name for ?? if it were put into Data.Functor, ?? doesn't really fit with the rest of the Functor/Applicative naming scheme
21:16:40 <oerjan> and no, it's not flip (<$)
21:16:48 <Taneb> ~eval (1, 2) & fst
21:16:56 <Taneb> ~eval (1, 2) ^. _2
21:16:59 <elliott> put strength in while you're at it :P
21:17:02 <Taneb> ~eval (1, 2) ^. _1
21:17:21 <Taneb> ~eval (1, 2) & both .~ negate & _1 +~ 2
21:17:22 <cuttlefish> Error (1): No instance for (GHC.Show.Show (a0 -> a0))
21:17:22 <cuttlefish> arising from a use of `M9092509914124073958.show_M9092509914124073958'
21:17:22 <cuttlefish> add an instance declaration for (GHC.Show.Show (a0 -> a0))No instance for (GHC.Num.Num (a0 -> a0))
21:17:22 <cuttlefish> add an instance declaration for (GHC.Num.Num (a0 -> a0))
21:17:33 <Taneb> ~eval (1, 2) & both .~ negate & _1 +~ 2
21:17:34 <cuttlefish> Error (1): No instance for (GHC.Show.Show (a0 -> a0))
21:17:34 <cuttlefish> arising from a use of `M5854169526931405235.show_M5854169526931405235'
21:17:34 <cuttlefish> add an instance declaration for (GHC.Show.Show (a0 -> a0))No instance for (GHC.Num.Num (a0 -> a0))
21:17:35 <cuttlefish> add an instance declaration for (GHC.Num.Num (a0 -> a0))
21:17:48 <Taneb> ~eval (1, 2) & both %~ negate
21:17:49 <boily> monqy: you didn't see nothing there. move along.
21:17:58 <Taneb> ~eval (1, 2) & both %~ negate & _1 +~ 2
21:18:11 <nooodl> who's cuttlefish. is cuttlefish lambdabot's evil twin
21:18:13 <oerjan> in fact i think the most logical name for ?? would have been <$ ... it takes a Functor on the left and an ordinary value on the right...
21:18:21 <boily> that reinforces my belief that yes, lenses tend to be completely overkill.
21:18:43 <oerjan> and then <$> should have been $>
21:18:45 <cuttlefish> Error (1): Could not deduce (Data.Profunctor.Choice p0)
21:18:45 <cuttlefish> arising from the ambiguity check for `e_14'
21:18:46 <cuttlefish> (p a2 (f b) -> p (Data.Maybe.Maybe a2) (f (Data.Maybe.Maybe b)))),
21:18:47 <cuttlefish> bound by the inferred type for `e_14':
21:19:05 <Taneb> ~eval 4 ^. re _Just
21:19:09 <boily> nooodl: my cuttlefish is not lambdabot's twin yet. for now, it's just evil.
21:19:38 -!- fungot has joined.
21:19:39 <cuttlefish> Software description: mirror of darcs repo (Haskell).
21:19:56 <boily> woohoo! the one and only fungot is back!
21:19:56 <fungot> boily: damn your mother!
21:19:56 <lambdabot> fungot: You have 1 new message. '/msg lambdabot @messages' to read it.
21:20:02 <Taneb> ~eval (Left 3, Right 4) ^? _1._Left.to negate
21:20:10 <boily> ok. never saw that one coming.
21:20:22 <lambdabot> olsner asked 28m 10s ago: did you kill fizzie and flee?
21:20:26 <boily> fungot: why so mean?
21:20:27 <fungot> boily: ( waaay to much mutation, though; i want an irc client
21:20:40 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
21:20:48 <elliott> `addquote * fungot has joined #esoteric <boily> woohoo! the one and only fungot is back! <fungot> boily: damn your mother! <boily> ok. never saw that one coming.
21:20:48 <fungot> elliott: i just dont want to do for about fnord generations now....
21:20:52 <HackEgo> 968) * fungot has joined #esoteric <boily> woohoo! the one and only fungot is back! <fungot> boily: damn your mother! <boily> ok. never saw that one coming.
21:20:55 <elliott> not sure if that last line is good or bad to include
21:21:03 <olsner> hmm, fungot doesn't trigger when lambdabot tells it about messages?
21:21:04 <fungot> olsner: it has nothing to do and not too specific to scheme.
21:21:19 <elliott> fizzie: pls make fungot @messages
21:21:19 <fungot> elliott: i would assume quite a lot of contrast. i believe they are not
21:21:21 <fungot> FreeFull: is there a bfm tutorial anywhere or documentation or at least that's the case in hand...
21:21:23 <oerjan> elliott: in fact hm the perfect naming would have been: $> = current <$>, <$> = current <*>, <$ = current ??
21:21:23 <monqy> fungot has an "ignore's list"
21:21:24 <fungot> monqy: anyway infinite loop then is easy to write the code
21:21:31 <nooodl> fungot nethack style??
21:21:31 <fungot> nooodl: f is applied to it, as if it were reliable. unfortunately it means we don't know
21:21:37 <elliott> oerjan: i think ski has proposed something like that
21:21:57 <boily> Phantom_Hoover: ha ha ha :D
21:22:00 <monqy> Phantom_Hoover................................
21:22:14 <elliott> oerjan: however I am not sure that is perfect because ideally a mirrored operator should be the flip of the non-mirrored one :P
21:22:28 <fungot> Selected style: c64 (C64 programming material)
21:22:52 <fungot> nooodl: in boolean algebra, the word if is followed by ready. the video display matrix, does which represent data during statement execution. therefore, if you are communicating with other applications that require large amounts of each routine in rom)
21:23:04 <monqy> well that's already broken with *> and <* isn;t' it
21:23:23 <elliott> monqy: right which is the `imperfectness'
21:23:41 <elliott> oerjan: also (<$>) is an even worse name than (<*>) because it's even more bulky :(
21:23:42 <nooodl> : isn't the flip of : !!!
21:24:12 <Taneb> ~eval flip (:) "hello" '_'
21:25:25 <nooodl> i feel like haskell learnin'
21:26:26 <oerjan> <boily> monqy: you didn't see nothing there. move along. <-- i suggest you remove line breaks in your bot output somehow, it's really verbose
21:26:32 <nooodl> things i've considered reading about: arrows, lenses, parsec, "which is more important"
21:27:27 <boily> oerjan: one of the top priorities for the next version.
21:27:27 <monqy> arrows are dumb but "easy"
21:27:32 <monqy> lenses are easy and good
21:27:37 <monqy> parser combinators too
21:27:57 <boily> I'd suggest parsers, as they are the most practicalest.
21:28:05 <elliott> lenses are practical..........
21:28:10 <nooodl> but it has an operator called (&&&)
21:28:29 <monqy> > (succ &&& pred) 5
21:28:39 <boily> arrows are interesting if you want to completely break your mind, viz. ArrowLoop.
21:28:44 <nooodl> but it has an operator called (***)
21:28:51 <monqy> > (succ &&& pred) (1, 2)
21:28:53 <lambdabot> No instance for (GHC.Enum.Enum (t0, t1))
21:29:00 <monqy> > (succ *** pred) (1, 2)
21:29:08 <nooodl> that's a cute function
21:29:16 <nooodl> are arrows ever something that isn't tuples
21:29:29 <nooodl> i mean. the answer is obviously "yes",
21:29:29 <Taneb> > (succ +++ pred) (Left 1)
21:29:36 <Taneb> > (succ +++ pred) (Right 1)
21:29:55 <Taneb> > (succ ||| pred) (Left 1)
21:30:01 <Taneb> > (succ ||| pred) (Right 2)
21:30:02 <boily> nooodl: you can do interesting things with arrows and streams. let me find that blog article again...
21:30:16 <monqy> nooodl: the answer is no, actually. taneb's showing off arrowchoice. really the thing that varies with arrows is it's not always with normal ol functions (->)
21:30:25 <monqy> nooodl: arrows are dumb
21:30:29 -!- epicmonkey has quit (Remote host closed the connection).
21:30:43 <Taneb> nooodl, parsers are fun
21:30:45 <nooodl> i really can't imagine ever needing arrows from what i've heard about them
21:30:45 -!- epicmonkey has joined.
21:30:57 <elliott> arrows are really bad seriously
21:31:02 <Taneb> nooodl, Control.Arrow has a few handy functions in it
21:31:06 <monqy> some of the arrow combinators are sort of useful sometimes but just because you want those functions on (->)
21:31:15 <nooodl> parsers in haskell are magic...
21:31:17 <elliott> edwardk has better versions of those functions!!
21:31:29 <nooodl> does lens have (***) (&&&)
21:31:29 <Taneb> elliott, what's the better version of (|||)
21:31:31 <boily> nooodl: https://github.com/leonidas/codeblog/blob/master/2012/2012-01-08-streams-coroutines.md
21:31:52 <boily> I mainly use arrows for pointless programming.
21:32:22 <nooodl> arrows are pointy though
21:33:15 <Bike> arrows always make me think of psephology
21:33:17 <Bike> bad association y/n
21:33:22 <monqy> nooodl: what is it you want to learn about parser combinators, just how to use parsec or?
21:33:26 <cuttlefish> Psephology is a branch of political science which deals with the study and scientific analysis of elections.
21:33:44 <monqy> what does that mean...
21:33:50 <boily> nooodl: imho, I think attoparsec is the best out there. easy, well documented, and up to date.
21:33:56 <nooodl> i don't know! what does "parser combinators" mean
21:34:04 <monqy> use trifecta clearly
21:34:14 <FreeFull> Arrows are good for shooting people with
21:34:18 <boily> ~duck parser combinator
21:34:18 <cuttlefish> In functional programming, a parser combinator is a higher-order function which accepts several parsers as input and returns a new parser as its output.
21:34:26 <Bike> you know like arrow's impossibility theorem
21:34:48 <elliott> nooodl: it means building parsers out of combinators
21:34:53 <elliott> attoparsec is really bad for general parsing
21:34:58 <elliott> since it doesn't handle unicode at all last i checked
21:35:00 <elliott> and gives bad error messages
21:35:01 <boily> class Arrow a => Zeno a where { halfMore :: a -> a } ?
21:35:02 <shachaf> ⇄ not so impossible now are you
21:35:04 <nooodl> god, i could've actually deduced that definition from "parser" + "combinator"
21:35:07 <elliott> it's really intended for binary file format parsing
21:35:48 <boily> elliott: what about the Text version of Attoparsec?
21:35:48 <shachaf> monqy: are profunctors dumb
21:35:59 <Bike> how about: instead of specifying rules in some warped BNF derivative, you build up a function that parses your language out of simpler functions called "combinators". disclaimer this may be completely wrong
21:36:08 <boily> shachaf: profunctors are time-traveling evil monstrosities.
21:36:15 <shachaf> monqy: what about profunctor + strong + choice + category
21:36:41 <elliott> error mesage problem is still there, though
21:37:14 <shachaf> profunctor + strong + category
21:37:51 <monqy> at least profunctor+strong+category has better foundations than arrow it's built from not stupid things "i think???" .............................. maybe strong is stupid
21:37:55 <monqy> (is strong stupid)
21:38:15 <monqy> ((i dont remember the definition of strong))
21:38:23 <FreeFull> I messed a bit with profunctors but didn't see how to use them to make something useful
21:38:35 <shachaf> (((monqy: strong gives you first' :: forall a b c. p a b -> p (a, c) (b, c))
21:39:06 <lambdabot> Eat maggoty hardtack, ye unkempt, jenny frequentin', son of a gun.
21:39:24 <boily> ~eval A.parseOnly (string "é") "é"
21:39:25 <cuttlefish> `A.string' (imported from Data.Attoparsec.Text),
21:39:25 <cuttlefish> `storing' (imported from Control.Lens),
21:39:33 <boily> ~eval A.parseOnly (A.string "é") "é"
21:39:34 <cuttlefish> Error (1): Couldn't match expected type `Data.Text.Internal.Text'
21:39:34 <cuttlefish> with actual type `[GHC.Types.Char]'Couldn't match expected type `Data.Text.Internal.Text'
21:39:43 <cuttlefish> Error (1): <hint>:1:1: parse error on input `data'
21:39:52 <boily> argh fscking dammit stupid not overloaded strings!
21:41:01 <boily> you're borking my weechat. stop that.
21:41:42 <boily> shachaf: looks like that's monqy's fault.
21:41:44 <Bike> combining double breve below? seriously?
21:42:00 <shachaf> Bike: you gotta problem with that
21:42:23 <boily> ~eval A.parseOnly (A.string $ T.pack "é") $ T.pack "é"
21:42:36 <boily> elliott: yeah. attoparsec does do utf-8 correctly.
21:44:33 <Taneb> > parse (Text.Parsec.Char.char '') "" ""
21:44:33 <lambdabot> mueval: recoverEncode: invalid argument (invalid character)
21:45:06 <Bike> btw why does mueval not do unicode
21:45:26 <shachaf> lambdabot did Unicode fine before The Upgrade.
21:45:28 <lambdabot> mueval: recoverEncode: invalid argument (invalid character)
21:45:31 <Bike> what's going on there
21:45:38 <Taneb> ~eval Text.Parsec.parse (Text.Parsec.Char.char '') "" ""
21:45:39 <cuttlefish> Error (1): Not in scope: `Text.Parsec.parse'Not in scope: `Text.Parsec.Char.char'
21:45:48 * Bike pokes lambdabot
21:46:01 <shachaf> lambdabot both uses ByteStrings to represent text and Strings to represent bytes.
21:46:25 <shachaf> I'm surprised anything works at all.
21:46:46 <Taneb> That... seems bizarre
21:47:09 -!- Taneb has quit (Quit: Leaving).
21:50:53 -!- GOMADWarrior has quit (Ping timeout: 252 seconds).
21:53:42 -!- blume has joined.
21:55:25 <ion> Cats http://youtu.be/YyHUNKV5Ouw http://youtu.be/0xvHEdqwSjY
21:55:32 -!- wareya has quit (Read error: Connection reset by peer).
21:56:32 -!- wareya has joined.
22:02:08 <HackEgo> 857) <olsner> FireFly: oh, did you see ion's police reindeer? that was ... at least as on-topic as this discussion
22:02:36 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: fusermount: not found
22:02:46 <olsner> not sure if relevant, but it had ion and animals
22:05:00 <Bike> `quote psephology
22:05:04 <Bike> `quote cybernetics
22:05:21 <HackEgo> 855) <shachaf> Bike: Your client colours people? <Bike> it would be pretty boring to see everyone as white, i get that enough in real life \ 858) <Bike> "damn, my port of ghc to php isn't properly taking javascript booleans into account" \ 878) <kmc> i bet a blog post complaining about ");});});" syntax in JavaScript and comparing it unfavorably t
22:05:45 <Bike> `quote shachaf
22:05:46 <HackEgo> 539) <shachaf> elliott: GHC bug? Come on, it's the parentheses. <shachaf> The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed. \ 580) <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough. \ 614) <shachaf> VMS Mosaic? <shachaf> I hope that's no
22:06:01 <HackEgo> *poof* <shachaf> Real Tar is GNU tar. <shachaf> You just ignore whichever features don't make you feel superior enough.
22:06:02 <HackEgo> 878) <zzo38> There is Haskell program "pandoc" to convert formats, so I make "panchess" which is the similar thing but for chess.
22:06:13 <HackEgo> 877) <kmc> i bet a blog post complaining about ");});});" syntax in JavaScript and comparing it unfavorably to Lisp would get approximately one billion comments on hacker news <Bike> but at what cost? your very soul, kmc!
22:06:20 <Bike> oh now it gets the formatting right
22:08:10 <HackEgo> 627) <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot.
22:08:26 <HackEgo> 627) <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot. \ 670) <oklopol> in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death)
22:08:29 <HackEgo> 627) <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot. \ 826) <Phantom_Hoover> unfortunately df is not yet able to simulate norway
22:08:40 <HackEgo> 627) <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot. \ 728) <shachaf> Free as in unregistered, not free as in lunch or speech.
22:09:09 <olsner> looks like it has at least one quote each for every topic
22:09:24 <boily> no one's from norway here, aren't they?
22:09:44 <shachaf> elliott: It's a bad quote.
22:10:13 <olsner> shachaf: issue resolved, bot useful
22:10:18 <shachaf> "Free as in unregistered"? What does that even mean?
22:11:23 <olsner> shachaf: you should know, you said it!
22:11:49 <nooodl> like when you get the free version of some piece of software
22:11:54 <nooodl> and it's worse, but free!
22:12:22 <nooodl> me and shachaf switched people soon after that quote
22:13:10 <olsner> hmm, so now nooodl == nooodl and shachaf == shachaf, but for different values of nooodl and shachaf?
22:13:30 <shachaf> nooodl is always == nooodl
22:13:42 <shachaf> unless you have a race condition
22:13:51 <nooodl> flipped values for nooodl and shachaf even
22:15:57 <shachaf> Let's apply the standardised test.
22:16:05 <HackEgo> 627) <shachaf> `quote themselves <HackEgo> No output. <shachaf> `quote norway <HackEgo> No output. <shachaf> `quote lunch <HackEgo> No output. <shachaf> Useless bot. \ 826) <Phantom_Hoover> unfortunately df is not yet able to simulate norway
22:16:16 <HackEgo> 942) <elliott> ~eval 1+2 <cuttlefish> Error (127): <elliott> this is a great bot boily i love it
22:16:26 <nooodl> that's a good quote about cuttlefish
22:17:05 -!- boily has changed nick to groily.
22:17:06 <nooodl> someone should look for the one where i go '!gs2 "2 2+"' and gs2bot spams like 20 lines to the channel
22:17:15 <Bike> wasn't that yesterday
22:17:23 <olsner> first a venus flytrap-looking spatial anomaly, then they get out of it after 2 minutes and go to the holodeck, and it hasn't even started malfunctioning? something's WRONG with this star trek episode
22:17:29 <shachaf> http://www.youtube.com/watch?v=14xcsz43Kuw
22:17:49 <Bike> ah yis neverhood
22:18:44 <shachaf> btw that's a sad movie so don't watch it unless you like sad movies
22:18:49 <olsner> neverhood is like the best thing ever made
22:19:07 <shachaf> At last olsner is talking some sense?
22:19:24 <olsner> what, why would I ever?
22:19:35 <groily> I stand by the argument that fungot is the one making the most sense in this channel.
22:19:35 <fungot> groily: there are vectored routines which begin at location 53265 ( d011 in hex) is set to a logical file
22:19:59 <fungot> Available: agora alice c64* ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
22:20:07 <olsner> oh, 53265 *is* d011 in hex
22:20:38 <fungot> Selected style: pa (around 1200 transcribed Penny Arcade comics)
22:20:38 -!- DHeadshot has quit (Read error: Connection reset by peer).
22:20:42 <shachaf> fungot: tell me more about there are vectored returns
22:20:43 <fungot> shachaf: fan 3: why no love for rogues!
22:20:48 <fungot> Selected style: qwantz (Dinosaur Comics transcriptions 2003-2011)
22:20:59 <fungot> Selected style: c64 (C64 programming material)
22:21:19 <groily> fungot: vectors, matrices, tensors, knuckles, dimples, hubbub.
22:21:19 <fungot> groily: shown below. for a note has started playing will begin putting data onto the stack pointer is placed into the sprite enable register is located starting at 43 ( 2b) reveals that the ctrl key or until the spaces. stepping 3 positions at
22:21:33 <shachaf> fungot: is it because of your mother that you put data onto the stack pointer
22:21:34 <fungot> shachaf: you probably asked yourself, " if it's time to send output to return to the right edge of the character rom in and out of the program is run, the
22:21:58 <fungot> Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal)
22:21:59 -!- epicmonkey has quit (Read error: Operation timed out).
22:22:11 -!- groily has changed nick to hoily.
22:22:13 <shachaf> fungot: tell me about the oracle
22:22:14 <fungot> shachaf: they say that everyone knows why medusa stands alone in the nest without answering, for a heavy statue is really good. the styx could be made to shrink in size and power. trolls they were, as bright as ever. the deceased's next- of-kin would place it carefully in a shop.
22:22:19 <nooodl> fungot: hi how are you
22:22:19 <fungot> nooodl: keep your weaponry away from rust. ( buffy the vampire slayer, episode 5.03, " go and sting the men of xibalba." old tom was the celtic ( continental european and irish) fertility goddess.
22:22:30 <nooodl> it has the comments...
22:22:41 <fungot> shachaf: fog cloud to oz. in the evening has no effect on dragons. i am. ( the fox-horse, from the gods, by diana wynne jones)
22:22:59 <shachaf> fungot: what is the one thing every adventurer must know before going into the dungeon
22:22:59 <fungot> shachaf: this release contains 10% recycled material. this is very embarrassing. do you bow before me?' ( rikki-tikki-tavi, by the two towers, by herbert spencer robinson and knox wilson)
22:23:11 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack* pa qwantz sms speeches ss wp youtube
22:23:51 <oerjan> `addquote <groily> I stand by the argument that fungot is the one making the most sense in this channel.
22:23:51 <fungot> oerjan: thoth: the blindfolding was performed by binding a piece of iniquity, stealing away from the cave; the ferocious fear the only time conan ever saw such an expression of dubiosity on their bodies were jet-black and mostly the size of a warrior tradition, by robert e. howard, bjorn nyberg, and just missed the bunch. turning round again with a touch of his seed unto molech; he shall surely be put to death.
22:23:55 <HackEgo> 969) <groily> I stand by the argument that fungot is the one making the most sense in this channel.
22:24:15 <HackEgo> oerjan: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
22:24:30 <fungot> olsner: want to know what cram is, of the blade itself gleamed like a regularly erupting geyser.
22:24:31 <HackEgo> fungot cannot be stopped by that sword alone.
22:24:34 <shachaf> Did someone change `welcome?
22:24:55 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
22:25:00 <olsner> shachaf: looks the same to me?
22:25:08 <hoily> I'd like to know what cram is, please fungot.
22:25:09 <fungot> hoily: asmodeus: it is a painfully slow process. the other time when cursed holy water wasn't water.
22:25:21 <hoily> maybe I didn't want to know after all.
22:25:36 <HackEgo> shachaf: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
22:26:13 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wercome: not found
22:26:20 -!- zzo38 has quit (Remote host closed the connection).
22:26:26 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: rainbow: not found
22:26:34 <HackEgo> #!/bin/sh \ welcome "$@" | colorize
22:26:52 <kmc> `echo $RANDOM | colorize
22:26:53 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?r: not found
22:27:03 <HackEgo> kmc: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
22:27:10 <kmc> `sh -c "echo $RANDOM | colorize"
22:27:15 <kmc> fucucufuuk
22:27:23 <kmc> `run echo $RANDOM | colorize
22:27:41 <kmc> 9 is pretty small for a random number
22:27:42 <kmc> `run echo $RANDOM | colorize
22:27:51 <olsner> `run seq 1 $RANDOM | colorize
22:28:04 <kmc> `run echo $(seq 1 100) | colorize
22:28:06 <HackEgo> 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 17 18 19 20 21 22 23 2 25 26 27 28 29 3 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 5 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 6 69 70 71 72 73 74 5 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
22:28:32 <HackEgo> cat: colorize: No such file or directory
22:28:40 <shachaf> did some things get colorized invisible
22:28:42 <HackEgo> cat: /bin/colorize: No such file or directory
22:29:24 <HackEgo> #!/bin/sh \ python -c "import random; w=raw_input(); p=list('x'*len(w)+'C'*int((350-len(w))/3+1)); random.shuffle(p); i=(c for c in w); print ''.join(i.next() if c=='x' else chr(3)+str(random.randrange(2,15)) for c in ['C']+p)"
22:30:09 <monqy> shachaf: it has to do with how the color thingy works....with numbers...you know....
22:30:13 <oerjan> <shachaf> did some things get colorized invisible <-- oh hm i suspect the digit got swallowed by the color code number
22:30:19 <monqy> "what oerjan said"
22:30:32 <shachaf> monqy: right i remember now
22:30:37 <nooodl> you can easily fix that
22:30:38 <shachaf> monqy: look im not good at irc ok
22:30:41 <hoily> that's not a bug, that's an invisible one.
22:30:47 <shachaf> (or at anything else?? :'( )
22:30:49 <nooodl> str(random.randrange(2,15)) -> '%02d' % random.randrange(2,15)
22:31:59 <shachaf> `run base64 /dev/urandom -w 200 | head -n1 | colorize
22:32:01 <HackEgo> /6d2Q76doel7Wp8WP7OvdrJ9rccw0r217o4pNmr8xTcukp+71tofYJbTzbUK+mS4rHjW//2vVOKo5zdquC3hbumeC4b4KqLCUkXoHd7LVjC/rZfmJ1zBhu+2FZBeqHYUUbW4jfwQPghEjk2INrxhkBQlq7wFGlURwM0WqnhNvuyYAg6bkFuu76iSPqfqJU4y7N
22:32:18 <shachaf> `run base64 /dev/urandom -w 100 | head -n1 | colorize
22:32:20 <HackEgo> fOBYYKrtgvHwnJI4wbOAreqJifDecK1sS6Bwhh26JQXxvprrGGfYbBa3G+6n6/DycnAh2q63XMFZMD1IPYG+jQ/LeknkS
22:32:51 -!- blume has quit (Ping timeout: 260 seconds).
22:32:53 <oerjan> `run sed -i 's/str[^ ]*/'\''%02d'\'' % random.randrange(2,15)/ bin/colorize
22:32:54 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `'' \ bash: -c: line 1: syntax error: unexpected end of file
22:32:57 <shachaf> `run base64 /dev/urandom -w 50 | head -n1 | colorize
22:32:59 <HackEgo> FdnErKI4+44HWvUOd1aaJQEYei7ejYgHEnUDXALoVvkV
22:33:42 <olsner> nooodl: shame on you, apologize to sed now
22:33:42 <oerjan> `run sed -i 's/str[^ ]*/'\''%02d'\'' % random.randrange(2,15)/' bin/colorize
22:33:57 <oerjan> `run echo $(seq 1 100) | colorize
22:33:59 <HackEgo> 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
22:34:23 <shachaf> did you break the length checking
22:34:31 <shachaf> it only went up to 98..........
22:34:53 <oerjan> `run echo $(seq 1 100) | colorize
22:34:55 <HackEgo> 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
22:35:14 <shachaf> It's trickier to do the length checking this way, of course.
22:35:23 <nooodl> `run echo $(seq 90 110) | colorize
22:35:25 <HackEgo> 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 11
22:35:52 <oerjan> shachaf: um shouldn't it be easier now that they're all the same length?
22:35:55 <monqy> colorful 108 there tho
22:36:04 <shachaf> oerjan: Well, if you want to be *inefficient* about it.
22:36:19 <nooodl> i don't see how it's possible for it to break
22:36:22 <shachaf> But it shouldn't always addd the extra character.
22:36:38 <nooodl> what is this code even doing jesus
22:36:54 -!- augur has quit (Read error: Connection reset by peer).
22:37:01 <shachaf> oerjan: We want it to only add the extra character if it's strictly necessary.
22:37:23 -!- augur has joined.
22:37:29 <Bike> these things are important
22:37:44 <HackEgo> #!/bin/sh \ python -c "import random; w=raw_input(); p=list('x'*len(w)+'C'*int((350-len(w))/3+1)); random.shuffle(p); i=(c for c in w); print ''.join(i.next() if c=='x' else chr(3)+'%02d' % random.randrange(2,15) for c in ['C']+p)"
22:37:58 <elliott> iirc there is no way to reliably colorise sequences of numbers with pure mirc colours.
22:38:22 <Bike> well mirc colors are terrible
22:38:41 <Bike> yeah but they're how colors work anyway
22:38:49 <oerjan> elliott: um it seemed to work to pad it to two...
22:38:49 <Bike> because irc is "well standardized"
22:38:50 <nooodl> it's perfectly reliable.
22:38:58 <shachaf> Bike: Clearly you should learn the rules of chess.
22:39:07 <HackEgo> 411) <oklopol> interestingly enough, go is a second player win <oklopol> chess is also first player win <oklopol> tennis, interestingly enough, is always a draw. \ 879) <zzo38> There is Haskell program "pandoc" to convert formats, so I make "panchess" which is the similar thing but for chess.
22:39:31 <Bike> shachaf: figuring that you've got checkmate is uncomputable!!!
22:39:35 <olsner> shachaf: you remember the wall of text? http://members.chello.nl/~r.gebhard1/nvrhd.txt
22:39:47 <oerjan> !run sed -i 's/350/344/' bin/colorize
22:39:57 <oerjan> `run sed -i 's/350/344/' bin/colorize
22:40:06 <shachaf> "This document is written by Gray (grayincarnation@hotmail.com) and may not be reproduced in any form without permission. Furthermore, this document may not be altered, edited, or sold without approval. If these terms are violated, proper legal action will be taken."
22:40:06 <oerjan> `run echo $(seq 1 100) | colorize
22:40:08 <HackEgo> 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 10
22:40:16 <Bike> what the hell is a "webmaster"
22:40:17 <monqy> im trying to figure out how it goofed
22:40:18 <oerjan> `run sed -i 's/344/343/' bin/colorize
22:40:23 <oerjan> `run echo $(seq 1 100) | colorize
22:40:25 <HackEgo> 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 10
22:40:39 <coppro> why do you think you can't colorize numbers with mirc colors?
22:40:40 <oerjan> `run sed -i 's/343/342/' bin/colorize
22:40:45 <shachaf> Bike: They're the people who have to suffer legal consequences.
22:40:46 <coppro> I mean, mirc colors are stupid and basically the worst spec ever
22:40:47 <oerjan> `run echo $(seq 1 100) | colorize
22:40:49 <HackEgo> 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 10
22:40:54 <coppro> but they are far from ambiguous
22:40:59 <shachaf> Bike: Every time there's a legal consequence, a webmaster suffers.
22:41:18 <HackEgo> #!/bin/sh \ python -c "import random; w=raw_input(); p=list('x'*len(w)+'C'*int((342-len(w))/3+1)); random.shuffle(p); i=(c for c in w); print ''.join(i.next() if c=='x' else chr(3)+'%02d' % random.randrange(2,15) for c in ['C']+p)"
22:41:19 <elliott> coppro: IIRC there was no way with the original spec.
22:41:25 <oerjan> `run sed -i 's/342/341/' bin/colorize
22:41:33 <oerjan> `run echo $(seq 1 100) | colorize
22:41:35 <HackEgo> 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
22:41:52 <nooodl> `run echo hello | colorize
22:42:47 -!- hoily has changed nick to boily.
22:42:51 <elliott> here: http://www.ircle.com/colorfaq.shtml
22:43:08 <oerjan> `run echo -n hm | colorize
22:43:12 <oerjan> `run echo -n hmm | colorize
22:43:16 <oerjan> `run echo -n hmmm | colorize
22:43:22 <oerjan> `run echo -n hmmmm | colorize
22:43:24 <quintopia> `run echo "i wonder whether sean is colorblind" | colorize
22:43:26 <HackEgo> i wonder whether sean is colorblind
22:43:33 <boily> `run echo -n hmmmm | colorize
22:43:46 <oerjan> just testing if it works for all lengths (mod 3)
22:44:28 * oerjan notes the curiosity that it will always fill up the line with color codes, no matter how short the message
22:44:45 <nooodl> is there a way to make lambdabot print '\x3'
22:45:16 <lambdabot> lexical error in string/character literal at character '\\'
22:45:39 <lambdabot> <hint>:1:3: parse error (possibly incorrect indentation)
22:45:53 <lambdabot> <hint>:1:3: lexical error at character '\ETX'
22:46:35 <coppro> elliott: mirc color numbers max out at two digits
22:46:41 <coppro> so you can pad with a leading zero if needed
22:46:50 <boily> ow. oooooooow. my eyes.
22:47:09 <elliott> coppro: did you read the page I linked?
22:47:11 <boily> (custom rxvt colorscheme. L*a*b* balanced. that's nasty.)
22:47:26 <coppro> elliott: missed it due to wifi drop
22:47:30 <elliott> http://www.ircle.com/colorfaq.shtml
22:50:49 <coppro> elliott: the mirc one is only ambiguous if you do not assume background color; you can otherwise just use the 4-digit version
22:51:15 * elliott still doesn't think you read the whole page...
22:51:38 <elliott> including the quote starting "If you use color numbers" and the following paragraph?
22:51:49 <elliott> it seems clear that the original mIRC colour design did not allow this workaround
22:51:59 -!- TeruFSX has joined.
22:52:21 <coppro> elliott: yes, but that's not what gets used
22:52:22 <elliott> and there's still ambiguity in case of commas
22:52:34 <coppro> no, because then you just specify a background color
22:52:49 <elliott> you don't have that luxury, because you are implementing a client
22:52:52 <elliott> wrong side of the power equation
22:53:10 <elliott> you don't know whether ^Cff,bbx is ff-coloured ",bbx" or ff,bb-coloured "x"
22:53:27 <oerjan> ...so colorize can still break with commas followed by numbers in the text?
22:53:28 <elliott> yes, picking that is a way to resolve the ambiguity
22:53:37 <coppro> but it's well-defined and unambiguous
22:53:38 <elliott> but it's not obvious from the protocol, you have to see what clients do in practice
22:53:47 <coppro> no, because that's what the protocl is defined as
22:53:49 <elliott> and I suspect many of them will emit an ff-coloured ,bbx as ^Cff,bbx
22:53:50 <nooodl> what if you WANT ff-coloured ",bbx"
22:53:52 <elliott> which will break your guess
22:53:55 <nooodl> you can't add a "dummy" background color
22:54:08 <olsner> `run echo $(seq -s, 1 100) | colorize
22:54:09 <coppro> elliott: that's a client problem
22:54:10 <HackEgo> 1,2,3,5,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,86,87,88,89,90,92,934,95,96,97,98,99,100
22:54:10 <nooodl> some people don't use black as their default bg color (including me)
22:54:26 <oerjan> ...what did you do now
22:54:35 <boily> hm. 0 isn't black.
22:54:53 <elliott> coppro: the spec given at http://www.mirc.co.uk/colors.html is not remotely precise enough to determine this unambiguous implementation that every client differing from must therefore be in error for, really
22:55:11 <elliott> nooodl: colour 99 works as "dummy"
22:55:23 <elliott> according to that spec. let's take bets on how many clients that are not mIRC implement that part.
22:55:36 <Bike> oh god i'm blind
22:55:39 <boily> elliott: 99 here gives a green background.
22:55:46 <nooodl> xchat supports it just fine...
22:56:16 <boily> 0,101with three-digit...
22:56:28 <boily> coppro: purple and green.
22:56:36 <elliott> so as you can see, this comma ambiguity is not resolvable in practice, in a client-portable way
22:56:46 <elliott> so colorize must inherently be broken
22:57:01 <coppro> can we take mirc out back and shoot it yet?
22:57:17 <monqy> unbreak colorize by detecting where it'll break and not do stuff there????
22:57:30 <coppro> let's just go with ctcp colors
22:57:42 <monqy> olsner's suggestion is good too
22:57:42 <olsner> broken = fun, correct = boring
22:58:39 <nooodl> imo not supporting the mirc spec correctly isn't colorize's fault
22:58:52 <shachaf> is there a fancy unicode character that combines . and ˙ in the same glyph
22:59:02 <nooodl> and if you don't follow the mirc spec for mirc colours what are you even following??
22:59:06 <shachaf> that would be great for smileys
22:59:10 <olsner> the spec is not in agreement with colorize, what can we do? it's not our spec
22:59:14 <FreeFull> This is much better and less eyehurty
22:59:46 <nooodl> omg i found a good way to bypass it
23:00:23 <oerjan> y'all don't break things too much, ok? :(
23:00:25 <coppro> olsner: kill mirc with fire
23:00:27 <boily> is mirc still alive?
23:00:36 <nooodl> ['\x3', '0', '5', ',', '1', '2']
23:00:48 <coppro> mirc is a piece of shit
23:01:02 <nooodl> ['\x3', '0', '5', ',', '\x3', '0', '5', '1', '\x3', '0', '5', '2']
23:01:03 <Bike> shit is full of life, boily.
23:01:38 <nooodl> maybe i shouldn't've used [] notation in retrospect but basically, repeat the colors for every char, so comma's are followed by \x3 and can't get converted into some funky background color thing
23:03:54 <coppro> nooodl: you are aware that this cuts the line limit by a factor of 4?
23:05:13 <elliott> well you only have to do it in specific situations
23:05:45 -!- kiwi_93423 has joined.
23:06:08 <oerjan> the simple shuffle algorithm for placing colors won't work with being clever about this, though
23:06:57 <oerjan> nooodl: colorize is written to only add as many color codes as will fit within HackEgo's line limit
23:08:34 <oerjan> hm i suppose a simple solution to just turn badly placed C's into x's after shuffling, it might remove some but it is simpler than trying to find a new place for them
23:09:11 <oerjan> i'm sure someone proficient in python could do that.
23:10:44 <elliott> clearly rewrite it in haskell
23:11:32 <shachaf> elliott: um it's trivial in haskell
23:11:39 <shachaf> so we don't actually need to write it
23:12:04 <cuttlefish> Your divination: "Persevering" to "Sprouting"
23:12:33 <boily> from random colourizations, green text will appear. my bot divination algo is working!
23:13:19 <cuttlefish> Your divination: "Small Accumulating" to "Centre Confirming"
23:13:27 <ion> shachaf: Gay evening to you, too, sir.
23:13:29 <Bike> why is it always a sex thing
23:13:52 <boily> Bike: ancient chinese wisdom. I don't have nothing to do with it.
23:14:31 <oerjan> `run echo $(seq -s, 100 200)
23:14:32 <HackEgo> 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,18
23:15:11 <ion> `welcome kiwi_93423
23:15:13 <HackEgo> kiwi_93423: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
23:19:41 -!- hagb4rd|lounge has joined.
23:21:34 -!- nooodl_ has joined.
23:22:45 -!- sirdancealot7 has joined.
23:23:54 -!- nooodl has quit (Ping timeout: 252 seconds).
23:24:10 -!- augur has quit (Remote host closed the connection).
23:26:57 <nooga> shachaf ~ kiwi_93423?
23:44:26 <impomatic> Hi, has anyone got a copy of Artificial Life by Steven Levy handy? I just wanted to check something and I haven't got my copy here.
23:57:26 -!- augur has joined.
23:57:39 -!- zzo38 has joined.
23:59:01 -!- Arc_Koen has quit (Quit: Arc_Koen).
23:59:29 -!- boily has quit (Quit: Poulet!).
23:59:34 -!- cuttlefish has quit (Remote host closed the connection).