←2013-01-01 2013-01-02 2013-01-03→ ↑2013 ↑all
00:07:41 -!- sebbu2 has joined.
00:08:01 -!- sebbu2 has quit (Changing host).
00:08:01 -!- sebbu2 has joined.
00:09:24 -!- sirdancealot7 has quit (Remote host closed the connection).
00:10:58 -!- sebbu has quit (Ping timeout: 245 seconds).
00:18:47 -!- GreyKnight has quit (Ping timeout: 255 seconds).
00:22:19 -!- GreyKnight has joined.
00:35:39 -!- Nisstyre-laptop has quit (Read error: Connection reset by peer).
00:39:11 -!- GreyKnight has quit (Ping timeout: 252 seconds).
00:42:37 -!- Vorpal has joined.
00:44:07 -!- GreyKnight has joined.
00:53:12 -!- GreyKnight has quit (Ping timeout: 276 seconds).
00:53:27 <Sgeo> That's cool:
00:53:31 <Sgeo> "'2013' is non-prime in any base b: 2013_b = 2b + b + 3 = (b+1)(2b - 2b + 3)"
00:55:07 -!- GreyKnight has joined.
00:59:36 <oerjan> Sgeo: that's essentially the division by 11 test when the result is exactly 0 so doesn't need to be repeated
01:00:49 <hagb4rd> hi oerjan: thanks for the notes
01:00:56 <oerjan> yw
01:01:41 <hagb4rd> `run quote 652 > paste
01:01:42 <HackEgo> bash: paste: Is a directory
01:01:55 <hagb4rd> `bin/run quote 652 > paste
01:01:56 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/run: No such file or directory \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/run: cannot execute: No such file or directory
01:02:30 <oerjan> hagb4rd: actually understanding how shell commands work is also recommended :P
01:03:01 <elliott> `help
01:03:01 <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/
01:03:03 <elliott> `run echo hi
01:03:05 <HackEgo> hi
01:03:13 <elliott> oh
01:03:14 <elliott> `revert
01:03:17 <elliott> GreyKnight: you scoundrel
01:03:17 <HackEgo> Done.
01:03:23 <elliott> er
01:03:23 <elliott> Gregor:
01:03:50 <hagb4rd> just want to know if i can use pipe to output sth on the pastesite returning a link
01:04:02 <oerjan> `bin/run echo "i thought he said it wouldn't work anyway"
01:04:03 <HackEgo> i thought he said it wouldn't work anyway
01:04:16 <oerjan> hagb4rd: yes but > is not the correct syntax for that
01:04:22 <hagb4rd> lol
01:04:23 <hagb4rd> ok
01:04:28 <hagb4rd> you're right
01:04:33 <hagb4rd> is it just paste?
01:04:43 <elliott> oerjan: i convinced him it would
01:04:45 <hagb4rd> `bin/run quote 652 | paste
01:04:49 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22907
01:04:52 <hagb4rd> great
01:04:54 <GreyKnight> I didn't do nothing!
01:05:23 <hagb4rd> `bin/run quote 692 | paste
01:05:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26677
01:06:25 <oerjan> elliott: i meant the `bin/run thing
01:06:45 <oerjan> hagb4rd: you don't actually need the bin/ part, that was just part of an elliott experiment
01:07:16 <elliott> oerjan: yes i convinced him it'd be ok
01:07:34 <oerjan> `/bin/echo hi
01:07:35 <HackEgo> hi
01:08:12 <oerjan> elliott: yes but you played around with a lot of env stuff, because he said something about only alphanums, which apparently isn't true
01:08:22 <oerjan> you can just use absolute paths
01:09:02 <elliott> oerjan: ???
01:09:06 <elliott> i have no idea wtf you are talking about
01:09:12 <oerjan> ...which should be obvious anyway given the existence of `?
01:10:22 <oerjan> 21:07:29: <Gregor> But `/hackenv/run wouldn't work.
01:10:22 <oerjan> 21:07:33: <elliott> why not
01:10:22 <oerjan> 21:07:34: <Gregor> Because it's a-x
01:10:30 <oerjan> this is what i'm referring to
01:10:32 <hagb4rd> i'm not sure if hackego first tries to `run as builin function before looking up in /bin
01:10:38 <hagb4rd> i guess it does
01:10:51 <elliott> oerjan: ...do you know what a-x means
01:10:55 <oerjan> hagb4rd: it does, although they just discussed whether to change that
01:11:02 <oerjan> oh
01:11:07 <elliott> oerjan: (permissions)
01:11:13 -!- sirdancealot7 has joined.
01:12:18 <oerjan> elliott: i misunderstood what that was all about then, and you didn't help much by never actually testing `bin/run :P
01:12:29 <oerjan> which of course didn't make sense anyway. hm...
01:12:41 <oerjan> `run cp bin/run .
01:12:44 -!- sebbu has joined.
01:12:45 <HackEgo> No output.
01:13:00 <oerjan> `./run echo test
01:13:01 <HackEgo> test
01:13:05 -!- sebbu has quit (Changing host).
01:13:05 -!- sebbu has joined.
01:13:36 <fizzie> ais523: Speaking of those tape heatmaps, I told the hierarchical-cluster plot -- http://zem.fi/egostats/plot_cluster.png -- that used scores for distances to do the same thing except with Euclidean distance between normalized average (across duels, but not tape length/polarity) tape heatmaps, and it spit out http://zem.fi/egostats/plot_heatclust.png -- don't know if those are "more ...
01:13:42 <fizzie> ... appropriate" strategywise or anything.
01:13:43 <oerjan> oh hm
01:13:50 <oerjan> i was still misunderstanding
01:14:56 -!- GreyKnight has quit (Ping timeout: 255 seconds).
01:15:13 * oerjan _thinks_ he's got it now, but better keep his mouth shut :P
01:15:58 -!- sebbu2 has quit (Ping timeout: 245 seconds).
01:18:38 -!- nooga has quit (Ping timeout: 255 seconds).
01:18:46 -!- GreyKnight has joined.
01:19:14 <elliott> oerjan: if it's any consolation I understand less of what you say
01:19:23 <oerjan> yay!
01:21:06 <oerjan> elliott: i somehow managed to misinterpret the conversation to get into my head that ` commands couldn't contain '/' , which somehow seemed to fit the rest of your experimentation
01:21:18 <oerjan> (back earlier today)
01:21:23 <oerjan> *tonight
01:23:44 -!- GreyKnight has quit (Ping timeout: 252 seconds).
01:25:00 <elliott> mm
01:25:52 -!- GreyKnight has joined.
01:26:24 -!- GreyKnight has quit (Client Quit).
01:36:57 -!- Frooxius has quit (Ping timeout: 240 seconds).
01:40:13 -!- carado has quit (Ping timeout: 246 seconds).
01:40:42 -!- Nisstyre has joined.
01:41:28 <Sgeo> Hmm
01:41:40 <Sgeo> I am not amused by DrRacket saving files in an opaque way
01:41:40 <Sgeo> https://github.com/mflatt/scratchy/blob/master/scratchy/examples/fish.rkt
01:48:00 <hagb4rd> `fetch https://www.googleapis.com/customsearch/v1?key=AIzaSyBfdt4VN9qT_Y8LAl100TBRCWAOiSTaqSY&cx=009459769908964694922:yb5esesqxmg&q=robocop&searchType=image&fileType=jpg&imgSize=xlarge&alt=json&safe=off
01:48:03 <HackEgo> 2013-01-02 01:48:02 URL:https://www.googleapis.com/customsearch/v1?key=AIzaSyBfdt4VN9qT_Y8LAl100TBRCWAOiSTaqSY&cx=009459769908964694922:yb5esesqxmg&q=robocop&searchType=image&fileType=jpg&imgSize=xlarge&alt=json&safe=off [10585] -> "v1?key=AIzaSyBfdt4VN9qT_Y8LAl100TBRCWAOiSTaqSY&cx=009459769908964694922:yb5esesqxmg&q=robocop&searchType=image&fileTy
01:48:32 <hagb4rd> `fetch https://www.googleapis.com/customsearch/v1?key=AIzaSyBfdt4VN9qT_Y8LAl100TBRCWAOiSTaqSY&cx=009459769908964694922:yb5esesqxmg&q=robocop&searchType=image&fileType=jpg&imgSize=xlarge&alt=json&safe=off | paste
01:48:32 <HackEgo> https://www.googleapis.com/customsearch/v1?key=AIzaSyBfdt4VN9qT_Y8LAl100TBRCWAOiSTaqSY&cx=009459769908964694922:yb5esesqxmg&q=robocop&searchType=image&fileType=jpg&imgSize=xlarge&alt=json&safe=off%20%7C%20paste: \ 2013-01-02 01:48:32 ERROR 400: Bad Request.
01:49:02 <hagb4rd> `ls bin
01:49:04 <HackEgo> ​? \ @ \ WELCOME \ addquote \ allquotes \ anonlog \ calc \ define \ delquote \ etymology \ forget \ fortune \ frink \ google \ hatesgeo \ interp \ joustreport \ jousturl \ json \ karma \ karma- \ karma+ \ learn \ log \ logurl \ lua \ luac \ luarocks \ luarocks-admin \ macro \ maketext \ marco \ No \ pastaquote \ paste \ pastefortune
01:49:26 <oerjan> `run ls v*
01:49:28 <HackEgo> v1?key=AIzaSyBfdt4VN9qT_Y8LAl100TBRCWAOiSTaqSY&cx=009459769908964694922:yb5esesqxmg&q=robocop&searchType=image&fileType=jpg&imgSize=xlarge&alt=json&safe=off
01:50:01 <oerjan> `run mv v* robocop
01:50:05 <HackEgo> No output.
01:50:13 <oerjan> `file robocop
01:50:17 <HackEgo> robocop: ASCII English text, with very long lines
01:50:36 <ais523> fizzie: looking now
01:50:56 <ais523> err, hmm
01:51:00 <ais523> it's better in some places
01:51:02 <ais523> but worse in others
01:51:11 <oerjan> ^url robocop
01:51:19 <ais523> like, my turtles are correctly grouped close to each other
01:51:20 <oerjan> `url robocop
01:51:25 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/robocop
01:51:32 <ais523> but space_hotel is in there too and it works entirely differently
01:51:33 <hagb4rd> what the hell
01:52:00 <oerjan> i assume that's what they call json
01:53:18 <oerjan> hagb4rd: in any case you can use `url instead of paste when the file is already in HackEgo; paste doesn't do anything other than making a copy and giving the result of url on that
01:53:43 <hagb4rd> so the first command worked?
01:53:59 <oerjan> yes
01:54:13 <hagb4rd> how is it named robocop anyway?
01:54:33 <hagb4rd> i missed that point
01:55:18 <oerjan> hagb4rd: i just used mv
01:55:36 <hagb4rd> (or to put it this way: where do i find the result of `fetch..)
01:55:36 <hagb4rd> ok
01:55:47 <oerjan> `fetch gave it a long name containing everything after the last / in the url
01:56:19 <oerjan> and that's what HackEgo gave after the -> in the `fetch response
01:56:21 <shachaf> oerjan: what's the verdict on free monads
01:56:58 <oerjan> shachaf: free monads are cool, they feel more reified somehow
01:57:19 <hagb4rd> could we have an alias for that command taking 1 argument passed as query string? do we have any conventions on creating such aliases?
01:57:31 <shachaf> oerjan: what about cofree comonads
01:57:38 <oerjan> shachaf: no f idea
01:57:45 <shachaf> are the ol?
01:57:50 <shachaf> s/the/they/
01:58:04 <shachaf> oerjan: Cofree is just like Free except it uses (,) instead of Either.
01:58:11 <oerjan> hagb4rd: `fetch is a builtin command which can only be used alone
01:58:19 <shachaf> So Cofree f a = (a, f (a, f (a, f (...
01:58:36 <oerjan> hagb4rd: i.e. you cannot use it from within other HackEgo commands
02:00:08 <oerjan> hagb4rd: there _is_ a system for contacting a whitelist of web sites from within HackEgo commands, but it is currently broken
02:00:31 <hagb4rd> is that a convention to be satisfied`? l just would like to have some aliases binding to webservices.. which imho would be a nice method extending things ya know
02:00:50 <oerjan> hagb4rd: we used to have some
02:01:17 <oerjan> but the api's changed, so many of them broke again, and then the web proxy itself broke
02:01:28 <oerjan> only Gregor can fix it
02:02:21 <hagb4rd> `url https://www.googleapis.com/customsearch/v1?key=AIzaSyBfdt4VN9qT_Y8LAl100TBRCWAOiSTaqSY&cx=009459769908964694922:yb5esesqxmg&q=strawberry&searchType=image&fileType=jpg&imgSize=xlarge&safe=off | fetch
02:02:22 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/https://www.googleapis.com/customsearch/v1?key=AIzaSyBfdt4VN9qT_Y8LAl100TBRCWAOiSTaqSY&cx=009459769908964694922:yb5esesqxmg&q=strawberry&searchType=image&fileType=jpg&imgSize=xlarge&safe=off | fetch
02:02:44 <hagb4rd> ls v*
02:02:57 <hagb4rd> meh
02:04:57 <hagb4rd> `run ls v*
02:04:58 <HackEgo> ls: cannot access v*: No such file or directory
02:05:14 -!- WeThePeople has joined.
02:05:17 <hagb4rd> where is the output of url going to?
02:05:55 <hagb4rd> shouldn't be the stdout?
02:06:42 <oerjan> hagb4rd: url doesn't fetch anything, it takes a filename already existing in HackEgo and tells you where to browse it on Gregor's website
02:06:56 <oerjan> also, you cannot combine fetch with anything, i said
02:08:19 <oerjan> hagb4rd: basically url doesn't do anything other than prepending http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/ to its argument
02:08:59 -!- TeruFSX has joined.
02:10:15 <hagb4rd> so what is the bullshit fetch is sending to the stdout instead of the response?
02:10:35 <oerjan> basically fetch, like run and help, are builtin HackEgo commands that aren't looked up inside the sandbox. and unlike the two others fetch cannot be emulated fully.
02:10:52 <hagb4rd> can i just use wget instead?
02:11:01 <hagb4rd> or is it restricted too
02:11:41 <oerjan> hagb4rd: timestamp the://UrlYouGaveIt [size] -> theFileNameWhereItPutIt
02:12:06 <oerjan> wget would be restricted, and currently broken because the web proxy from inside the sandbox is broken
02:12:28 <oerjan> `run which wget
02:12:30 <HackEgo> ​/usr/bin/wget
02:12:49 <oerjan> `wget http://www.google.com
02:12:50 <HackEgo> ​--2013-01-02 02:12:50-- http://www.google.com/ \ Connecting to failed: Connection refused.
02:13:25 <oerjan> iirc google.com is in the whitelist, so should work if the proxy does
02:13:39 <shachaf> @quote Jafet
02:13:39 <lambdabot> Jafet says: <Jafet> Help, I'm trapped in this channel <Jafet> I tried to escape but ghc said occurs check
02:13:55 <hagb4rd> it would be SOOOO NICE to use REST services :(
02:14:31 <oerjan> hagb4rd: you'll just have to nag Gregor to get the proxy working again
02:15:44 <hagb4rd> i'll try too, if you share my opinion on that
02:16:02 <hagb4rd> which i think is the case
02:16:10 <oerjan> i think it would be nice to get some basic searches working
02:16:29 <hagb4rd> i'd like to go further
02:16:45 <oerjan> although lambdabot has a few relevant commands
02:17:10 <hagb4rd> and just be able to write my own services as embedded extensions
02:17:18 <hagb4rd> parked elsewhere
02:17:39 <hagb4rd> that was just a test in first case
02:18:03 -!- Vorpal has quit (Ping timeout: 245 seconds).
02:18:18 <hagb4rd> imagesearch is indeed not that relelvant in this channel
02:18:23 <hagb4rd> i think
02:18:24 <hagb4rd> :)
02:22:10 -!- zzo38 has joined.
02:22:43 <zzo38> If I have $z=12^xy^2$ in natural numbers, then what is an algorithm to figure out x and y when given z?
02:23:35 <zzo38> (Assume y is nonzero, but x is possible to be zero.)
02:24:12 <Fiora> you mean (12^x)(y^2) or 12^(xy)^2 or ...?
02:24:23 <elliott> Fiora: the former in tex
02:24:29 <Fiora> ah
02:24:43 <hagb4rd> this way we wouldn't need to have more bots joining the channel and so on.. just a clean interface as defined by a webservice.. the output goes to stdout and can be piped elsewhere.. but then we should agree on some conventions on alias/script names so we won't get lost (if we not already are)
02:25:24 <oerjan> zzo38: something like while (z % 12 == 0) { z /= 12; x++ } y = sqrt (z)
02:26:04 <zzo38> oerjan: I am not sure that works.
02:26:40 <oerjan> oh hm
02:27:12 <zzo38> And it is needed one for computers that doesn't have square root and division and so on
02:27:24 <oerjan> zzo38: well ok you get _one_ solution that way, others will be given by x - 2n and y*144^n
02:27:47 <zzo38> oerjan: Yes, OK
02:28:05 <oerjan> zzo38: oh hm right there's the question of whether x or x+1 makes the remaining z a square
02:28:15 <zzo38> Yes
02:28:20 <zzo38> That is what I meant.
02:28:48 <oerjan> zzo38: but anyway starting with the above, the rest is a matter of finding the square root of the remaining part of z or 12*z
02:29:41 <Fiora> int y;
02:29:41 <Fiora> int x = 0;
02:29:41 <Fiora> while(1)
02:29:41 <Fiora> { int s = isqrt(z); if(s*s == z) {y = s; break;} if(z%12 != 0) goto fail; x++; z /= 12;
02:29:44 <Fiora> }
02:30:27 <oerjan> Fiora: oh hm right, that would work to halt as early as possible instead
02:30:41 <oerjan> to give the _largest_ solution for y instead
02:31:33 <oerjan> Fiora: in fact you could improve that by only testing twice, since if it doesn't become a square after dividing by 12 and wasn't one already, then it never will become one
02:32:02 <Fiora> makes sense
02:34:00 <oerjan> zzo38: so if you don't have a solution with x==0 or x==1 then you don't have any at all
02:34:46 <oerjan> but if y is divisible by 12 you will get additional ones
02:35:45 <zzo38> oerjan: O, OK. I may need to change some things then, because I need to support at least up to x==2
02:36:43 <oerjan> if x==2, y==n are solutions, then x==0, y==12*n will also be
02:37:54 <zzo38> OK.
02:38:04 <zzo38> I can see that.
02:45:48 <shachaf> --help display this help and exit
02:45:49 <shachaf> --version output version information and exit
02:45:49 <shachaf> --bibliography output recommended readings and exit
02:46:09 <Bike> what program is that
02:46:24 <shachaf> pi
02:51:35 <oerjan> version 3.14159265358979
02:52:29 <quintopia> it is a program that outputs pi to a specified accuracy?
02:53:00 <ais523> is it TeX who uses successive approximations of pi as version numbers?
02:53:06 <shachaf> Yes.
02:53:14 <zzo38> Yes, TeX uses that.
02:53:26 <zzo38> I currently have TeX version 3.1415926.
02:53:31 <shachaf> zzo38: What does TeXnicard use?
02:53:44 <zzo38> When Knuth is dead, the final official version shall be updated to version $\pi$ exactly.
02:53:52 <zzo38> shachaf: Just ordinary version numbers.
02:54:05 <zzo38> METAFONT uses approximations of the base of natural logarithms.
02:54:26 <shachaf> I should write a program whose version number approximates 2.
02:54:35 <quintopia> zzo38: you don't just call it e?
02:55:01 <zzo38> quintopia: It is called e, yes.
02:55:06 <shachaf> > (exp.exp.exp.exp)1
02:55:08 <lambdabot> Infinity
02:55:24 <shachaf> monqy: what's the verdict on free monads
02:55:28 <monqy> hi
02:55:34 <shachaf> hi
02:55:51 <zzo38> Penrose uses upright rather than italic "e" for the base of natural logarithms and I agree with him; so it would be ${\rm e}$ in TeX.
02:55:55 <ion> > (exp.exp.exp.exp) 1 :: CReal
02:56:01 <lambdabot> mueval: ExitFailure 1
02:56:01 <lambdabot> mueval: Prelude.undefined
02:56:12 <zzo38> Same with imaginary unit, and derivative operator.
02:57:24 <zzo38> However, the lowercase Greek in Computer Modern is only italic, and I am not entirely sure how I might change them to be able to work with not italic lowercase Greek as well, for pi and so on, but I might be able to try.
02:57:32 <quintopia> zzo38: then you can just say e instead of "the base of natural logarithms" because we will know what you mean AND...you don't have to type as many words!
02:58:03 <zzo38> quintopia: I can type fast.
02:58:27 <quintopia> me too. "fast"
02:59:12 <shachaf> oerjan: Can you unkarma me?
02:59:23 <shachaf> The whole mwahahaha deal.
03:02:11 <shachaf> zzo38: Does TeXnicard support TeXnicolour?
03:02:39 <quintopia> shachaf--
03:02:51 <zzo38> I did play Dungeons&Dragons game today; making screaming fire and greasy floor did help to earn some time, a bit. I also put the wand I stole underneath the door they were going to break down, before teleporting to outside; therefore it activated when they broke the door.
03:03:24 <oerjan> ^ul ((@karma- shachaf)S:^):^
03:03:25 <fungot> @karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- shachaf@karma- s ...too much output!
03:03:25 <lambdabot> shachaf@karma-'s karma lowered to -1.
03:03:31 <oerjan> oops
03:03:32 <elliott> good job
03:03:44 <oerjan> ^ul ((@karma- shachaf )S:^):^
03:03:45 <fungot> @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @karma- shachaf @kar ...too much output!
03:03:45 <lambdabot> shachaf's karma lowered to 72.
03:03:56 <oerjan> er wait
03:04:03 <oerjan> ^ul ((shachaf-- )S:^):^
03:04:03 <fungot> shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shachaf-- shac ...too much output!
03:04:12 <oerjan> @karma shachaf
03:04:12 <lambdabot> shachaf has a karma of 40
03:04:13 <zzo38> shachaf: No; if reading a DVI file it will use its own commands to determine colours, or it will generate the nodes directly without reading an external DVI in which case it also uses its own commands for colors.
03:04:13 <elliott> i think you can decrease karma multiple times w/ one message using @@
03:04:39 <oerjan> elliott: well the last one worked
03:04:59 <zzo38> (Reading external DVI works (it calls TeX to typeset and then reads the created DVI); internal typesetting is not yet completely implemented but when it is, it will also be able to do that with many possible effects)
03:05:40 <shachaf> zzo38: dvi? hdmi is the future these days
03:06:28 <zzo38> shachaf: It is a different kind of DVI. (Anyways, HDMI is no good, so I prefer Digi-RGB, but this is not relevant here anyways.)
03:10:27 -!- fungot has quit (Ping timeout: 248 seconds).
03:10:38 -!- FireFly has quit (Excess Flood).
03:11:35 -!- FireFly has joined.
03:31:40 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
04:00:05 -!- oerjan has quit (Quit: Good night).
04:07:22 -!- FireFly has quit (Excess Flood).
04:08:21 -!- FireFly has joined.
04:09:16 <Sgeo> ...ponies are not just baby horses.
04:09:24 <shachaf> `quote ponies
04:09:26 <HackEgo> No output.
04:09:29 <shachaf> @quote ponies
04:09:29 <lambdabot> No quotes match. That's something I cannot allow to happen.
04:10:10 <zzo38> If you add "...ponies are not just baby horses." then it will match.
04:23:57 <kmc> "'Oompa Loompas' sought by police over Norwich assault"
04:26:34 <shachaf> They should add functions like http://msdn.microsoft.com/en-us/library/windows/desktop/aa366713(v=vs.85).aspx to glibc
04:27:06 <kmc> oompa loompa doopity dunction
04:27:11 <kmc> you do not talk about adding libc function
04:27:33 <shachaf> But how will I know if my pointers are valid?
04:29:59 <kmc> BOOL WINAPI DoesFunctionHaltExA(HFUNPTR fpFunctionToTellWhetherItHaltsOrNot)
04:30:52 <kmc> shachaf: you call fork() and dereference the pointer in a child process and then call wait() and see if the child died with SIGSEGV
04:30:55 <kmc> IT IS TRIVIAL
04:31:39 <shachaf> But then it isn't portable to Windows.
04:32:00 <shachaf> monqy: edwardk is generalizing all of lens :'(
04:32:12 <shachaf> +findOf :: (RepresentableProfunctor p, Profunctor q, Comonad (Rep p)) => Overloading p q (Accessor (Endo (Maybe a))) s t a b -> p a Bool -> q s (Maybe a)
04:32:16 <zzo38> Is it portable to Cygwin though?
04:32:41 <shachaf> How does Cygwin implement fork()?
04:32:48 <shachaf> I know it does something but now how well it works.
04:32:55 <zzo38> Slowly, I think.
04:37:42 <lightquake> shachaf: I have no clue if you're serious or not about that type signature
04:38:06 <shachaf> lightquake: That's currently in lens HEAD
04:38:10 <lightquake> D:
04:38:16 <shachaf> 20:37 <lensbot> lens/master 98245d6 Edward Kmett: more generalization, because that last patch wasn't general enough
04:38:29 <shachaf> Let's see what this latest one is.
04:38:33 <lightquake> that's an absolutely unreadable type signature
04:38:47 <shachaf> +imapMOf_ :: (Profunctor q, Monad m) => Overloading (Indexed i) q (Accessor (Sequenced m)) s t a b -> (i -> a -> m r) -> q s (m ())
04:38:50 <shachaf> +iconcatMapOf :: Profunctor q => Overloading (Indexed i) q (Accessor [r]) s t a b -> (i -> a -> [r]) -> q s [r]
04:38:54 <shachaf> +ifindOf :: Profunctor q => Overloading (Indexed i) q (Accessor (Endo (Maybe a))) s t a b -> (i -> a -> Bool) -> q s (Maybe a)
04:38:57 <shachaf> +itoListOf :: Profunctor q => Overloading (Indexed i) q (Accessor (Endo [(i,a)])) s t a b -> q s [(i,a)]
04:39:00 <shachaf> Not too bad.
04:39:32 <shachaf> lightquake: I'm assuming this is an "it'll get worse before it gets better" sort of thing.
04:39:37 <lightquake> I have no clue how to read those type signatures
04:39:41 * kmc screams in terror
04:39:59 <kmc> i can read them syntactically but i have no idea what all the classes and one-letter variables mean
04:40:12 <lightquake> yeah, that's what I meant
04:40:36 <shachaf> OK, the simple version is, uh...
04:40:45 <shachaf> Well, p and q are both just (->), normally.
04:40:53 <shachaf> Overloading is this one thing.
04:41:11 -!- hagb4rd has quit (Ping timeout: 252 seconds).
04:41:13 <shachaf> type Overloading p q f s t a b = p a (f b) -> q s (f t)
04:41:31 <shachaf> OK, you know what, this is hopeless.
04:41:45 <shachaf> In edwardk's defense, he has several "simple" versions of each type signature next to the "real" version.
04:42:01 <shachaf> -- 'findOf' :: 'Traversal'' s a -> (a -> 'Bool') -> s -> 'Maybe' a
04:42:16 <lightquake> yeah, but the errors would be awful
04:42:41 <shachaf> This is edwardk's "expansion" phase.
04:42:41 <kmc> that oompa loompa story is like some terrible crossover of Willy Wonka and A Clockwork Orange
04:42:53 <shachaf> Where he generalizes everything and later figures out what sticks.
04:43:38 <lightquake> the perils of a rapidly-developed library, I guess
04:43:59 <shachaf> lightquake: Do you understand lens signatures in general?
04:44:10 <lightquake> not in this general!
04:44:13 <shachaf> Like Applicative f => (a -> f b) -> (a,a) -> f (b,b)?
04:44:15 -!- hagb4rd has joined.
04:44:47 <lightquake> i understand that you use the functor context so that you can run it with both Identity and Const and combine a getter and a setter
04:44:50 <lightquake> but not much beyond that
04:45:20 <shachaf> Well, that signature is just like mapM for tuples, right?
04:45:21 <shachaf> @ty mapM
04:45:22 <lambdabot> Monad m => (a -> m b) -> [a] -> m [b]
04:45:40 <lightquake> right
04:47:45 <shachaf> So it's like that, except with Applicative.
04:48:03 <shachaf> Now we want to generalize that in various directions.
04:48:08 <lightquake> what does applicative get y ou?
04:48:08 <zzo38> Also seems, as if you have ((->) Bool) instead of []
04:48:23 <shachaf> lightquake: All you need is Applicative, so why require Monad?
04:48:32 <shachaf> (You can't make Const a Monad, anyway.)
04:48:40 <lightquake> right, i meant, why isn't functor enough
04:48:55 <shachaf> Functor is enough when you're traversing exactly one value.
04:48:56 <zzo38> Is mapM a functor?
04:49:06 <shachaf> But both traverses two values.
04:49:15 <shachaf> lightquake: Try to write the function. You need (<*>). :-)
04:49:22 <shachaf> both f (x,y) = (,) <$> f x <*> f y
04:49:54 <shachaf> Anyway, so one direction we can generalize this is that we want indexing.
04:50:11 <shachaf> For instance, mapMWithIndex :: (Int -> a -> f b) -> [a] -> f [b]
04:50:16 <shachaf> (For Applicative f.)
04:50:33 <shachaf> But that's not so great because it's not compatible with regular lenses.
04:50:55 <lightquake> so wait
04:51:10 <lightquake> obviously if f is Identity, that just turns into a plain mapWithIndex
04:51:16 <shachaf> Right.
04:51:17 <lightquake> what does it do if f is Const?
04:51:29 <shachaf> Oh, instance Monoid m => Applicative (Const m)
04:51:49 <shachaf> Where pure _ = Const mempty; Const mf <*> Const mx = Const (mf <> mx)
04:51:57 <zzo38> shachaf: You can also make instance Monoid m => Alternative (Const m)
04:52:02 <lightquake> oh, so you wind up accumulating the result
04:52:04 <shachaf> So when you use Const, it never actually rebuilds the structure.
04:52:19 <shachaf> But you can use a monoid to decide how to accumulate, right.
04:52:35 <shachaf> > foldOf both ("hello","there")
04:52:36 <lambdabot> "hellothere"
04:52:43 <shachaf> That uses the [] monoid instance.
04:53:02 <lightquake> right
04:53:14 <lightquake> > foldOf both (Add 2, Add 8)
04:53:15 <lambdabot> Not in scope: data constructor `Add'Not in scope: data constructor `Add'
04:53:19 <shachaf> Sum
04:53:22 <lightquake> ah
04:53:43 <shachaf> > getConst $ both (\x -> Const (Sum x)) (1, 2)
04:53:44 <zzo38> Instead of [] and Int perhaps you could make it a class of a type which can be indexable by some other type? Such as, indexable (x ->) by x
04:53:45 <lambdabot> Sum {getSum = 3}
04:53:57 <shachaf> So that's how both works.
04:54:10 <shachaf> Now, the trick with indexing is a little bit of overloading.
04:55:02 <shachaf> clsas Indexable i p where ...; indexedMapM :: (Indexable Int p, Applicative f) => p a (f b) -> [a] -> f [b]
04:55:08 <shachaf> Indexing has two instances.
04:55:18 <shachaf> One of them is (->); when you use that instance, it just works without the index.
04:55:40 <shachaf> The second is newtype Index i a b = Indexed { runIndexed :: i -> a -> b }
04:55:49 <shachaf> Er, newtype Indexed
04:56:08 <lightquake> slow down a bit
04:56:23 <lightquake> so you have an instane Indexable Int (->) that just ignores the index
04:56:30 <zzo38> But it is a category like (Kleisli ((->) i))
04:56:39 <shachaf> Right.
04:56:56 <lightquake> presumably this is actually Indexable i (->)
04:57:03 <shachaf> Yes.
04:57:05 <lightquake> then what's the instance for Indexed look like?
04:57:23 <shachaf> The class is actually class Indexable i p where indexed :: p a b -> i -> a -> b
04:57:43 <shachaf> So instance Indexable i (->) where indexed f i x = f x
04:57:44 <shachaf> I assume
04:58:18 <shachaf> That way any indexed traversal can degrade to a regular traversal.
04:58:28 <lightquake> and for Indexed, indexed = runIndexed
04:58:35 <shachaf> Right.
04:59:21 <lightquake> ok
04:59:40 <shachaf> So that's one generalization.
04:59:52 <shachaf> It turns out this "p" thing is actually pretty useful.
05:00:28 <shachaf> There's a class Profunctor p where lmap :: (a -> b) -> p b c -> p a c; rmap :: (b -> c) -> p a b -> p a c
05:00:45 <shachaf> I can explain that class further if you like. :-)
05:01:17 * elliott prefers the dimap presentation
05:01:19 <shachaf> Oh, so the way we write indexed both is both f (x,y) = (,) <$> indexed f 0 x <*> indexed f 1 y
05:01:28 <shachaf> OK, elliott has volunteered to take over.
05:01:30 * shachaf is out.
05:02:10 <lightquake> aw, come back
05:02:16 * shachaf is in.
05:02:20 <shachaf> But elliott has to explain it with dimap
05:02:34 <zzo38> Is there any relation to representable functor?
05:02:35 <elliott> I'll do that in ten years
05:02:59 <shachaf> zzo38: We have a lot of (co)representable profunctors.
05:03:48 <shachaf> lightquake: OK, does that class make sense?
05:03:53 <shachaf> (It probably doesn't.)
05:03:57 <lightquake> Profunctor? sort of
05:04:21 <shachaf> It's a thing which is covariant in one argument and contravariant in the other.
05:04:43 <shachaf> In a sense p a b "consumes" things of type a and "produces" things of type b
05:04:49 <elliott> rmap = fmap
05:05:00 <shachaf> (->) is the classic example.
05:05:01 <elliott> as in given (Profunctor p) you have (Functor (p a)) for all a (but you can't express this)
05:05:07 <zzo38> I can see that (->) fits
05:05:30 <zzo38> And (->) is a category
05:05:39 <zzo38> Is it related to being a category?
05:05:41 <shachaf> Not all instances of Profunctor are categories.
05:06:02 <lightquake> so what's another instance of Profunctor?
05:06:07 <shachaf> Indexed :-)
05:06:12 <zzo38> shachaf: It is what I thought.
05:06:15 <lightquake> figured :)
05:06:24 <shachaf> Also there are a bunch of others.
05:06:32 <shachaf> newtype Tagged a b = Tagged { unTagged :: b }
05:06:43 <shachaf> newtype Forget r a b = Forget { unForget :: a -> r }
05:06:59 <elliott> s/unForget/remember/
05:07:01 <shachaf> newtype UpStar f a b = UpStar { unUpStar :: a -> f b }
05:07:06 <shachaf> elliott: That's what I called it at first.
05:07:27 <zzo38> Can it be made, profunctors on other categories?
05:07:47 <lightquake> what's Tagged for?
05:07:47 <zzo38> UpStar is the same type as Kleisli though isn't it?
05:07:58 <shachaf> zzo38: Yes, but it's used for different things.
05:08:10 <shachaf> lightquake: Let's get to that in a moment. :-)
05:08:15 <lightquake> sure
05:08:20 <shachaf> So you can use profunctors to make this different representation of lenses.
05:08:30 <shachaf> Instead of (a -> f b), you write p a b
05:08:39 <shachaf> With various constraints on the p
05:08:53 <shachaf> ... p => p a b -> p s t
05:09:09 <shachaf> If you pick Profunctor as your constraint, what you get is an isomorphism.
05:09:33 <shachaf> Because the only way you can turn "p a b" to "p s t" (if you know almost nothing about p) is by lmapping (s -> a) and rmapping (b -> t)
05:09:42 * shachaf is probably not making sense again.
05:10:03 <zzo38> (Kleisli f) makes a category if f is a category. In what cases will it make a profunctor?
05:10:05 <lightquake> doesn't isomorphism imply that you can go back from p s t to p a b?
05:10:09 <lightquake> or am i misinterpreting
05:10:18 <zzo38> Is it if f is functor?
05:10:47 <shachaf> lightquake: It's saying that s ~ a and b ~ t
05:10:51 <shachaf> And it lets you go back and forth.
05:11:10 <elliott> lightquake: you can treat s = t, a = b usually
05:11:14 <lightquake> how's that follow? what if s -> a is an injection?
05:11:27 <elliott> blah :: Profunctor p => p (a,b) (a,b) -> p (b,a) (b,a)
05:11:31 <elliott> blah = lmap swap . rmap swap
05:11:31 <shachaf> Well, OK, let's put it differently:
05:11:44 <shachaf> (forall f. Profunctor f => p a b -> p s t) ~~ (s -> a, b -> t)
05:12:10 <shachaf> It's a very polymorphic function, so it knows almost nothing about which profunctor you're using.
05:12:25 <lightquake> ahhh
05:12:34 <zzo38> That is strange, it is f only in constraint
05:12:35 <lightquake> yeah, that makes more sense
05:12:56 <shachaf> Can you figure out a way to "extract" the isomorphism from that type?
05:12:59 <elliott> shachaf's p key is adjacent to his f key
05:13:02 <shachaf> Start with the (b -> t) direction.
05:13:44 <lightquake> it's the rmap of the profunctor
05:13:47 <shachaf> I give you foo :: forall p. p a b -> p s t
05:13:57 <shachaf> You have to give me bar :: (b -> t)
05:14:11 <shachaf> (This means that you have to pick some specific concrete profunctor to use.)
05:14:17 <lightquake> right, right
05:14:33 <lightquake> wait, isn't it just Tagged?
05:14:48 <lightquake> with some unTagged as well
05:14:49 <shachaf> Yep!
05:15:05 <shachaf> Usually we call this function review.
05:15:13 <lightquake> why review?
05:15:22 <shachaf> Because it's the opposite of the direction of view
05:15:28 <shachaf> review :: (Tagged a b -> Tagged s t) -> b -> t
05:15:28 <lightquake> ah
05:15:34 <shachaf> Write review :-)
05:16:48 <lightquake> review = \f -> unTagged . f . Tagged
05:17:06 <shachaf> Yep.
05:17:20 <shachaf> OK, next exercise: Get s -> a
05:17:49 -!- asiekierka has quit (Excess Flood).
05:17:50 <lightquake> Get?
05:17:56 -!- asiekierka has joined.
05:18:27 <elliott> retrieve s -> a from an iso in that form
05:18:38 <lightquake> oh, i thought Get was a type constructor
05:18:51 <shachaf> Ah. Nope.
05:18:54 <lightquake> my first guess would be Const
05:19:23 <shachaf> @kind Const
05:19:24 <lightquake> yeah, getConst . f . Const
05:19:25 <lambdabot> * -> * -> *
05:19:35 <shachaf> Oh, wait, it does have the right kind.
05:19:38 <shachaf> But it doesn't work.
05:19:44 <shachaf> Try to make it a Profunctor instance. :-)
05:19:52 <zzo38> How can you have (Get s -> a) unless Get is like Initialize?
05:19:53 <elliott> Const isn't contravariant in its first argument
05:19:57 <lightquake> oh, right
05:20:13 <shachaf> elliott: It's actually Constravariant
05:20:43 <lightquake> hmm, i'm not sure then
05:21:11 <shachaf> Well, as a hint, think about how you normally "get" things with (a -> f b) lenses.
05:22:04 <lightquake> with const, right?
05:22:14 <lightquake> er, Const
05:22:31 <shachaf> Right, but how does the full signature end up looking?
05:22:37 <shachaf> (a -> f b) -> s -> f t
05:22:53 <shachaf> How do you get (s -> a) from that?
05:23:10 <lightquake> with f = Const a
05:23:43 <lightquake> and with the argument being Const
05:23:45 -!- sebbu2 has joined.
05:23:53 <shachaf> OK, expand that out?
05:24:06 -!- sebbu2 has quit (Changing host).
05:24:06 -!- sebbu2 has joined.
05:25:07 <lightquake> goalFunc f s = getConst $ f Const s
05:25:08 <lightquake> ?
05:25:20 <shachaf> I meant the type. :-)
05:25:24 <lightquake> oh
05:25:46 <lightquake> i don't think that's right anyway, bah. anyway it's (a -> Const a b) -> s -> Const a t
05:26:10 <shachaf> OK, now reduce it one more step?
05:26:24 <lightquake> reduce it?
05:26:48 -!- sebbu has quit (Ping timeout: 245 seconds).
05:26:50 <shachaf> (a -> a) -> s -> a
05:26:54 <lightquake> ah
05:26:58 <lightquake> yeah
05:27:40 <shachaf> So pretty much the same trick works for profunctors.
05:27:42 <elliott> @type \f s -> getConst (f Const s)
05:27:43 <lambdabot> ((a1 -> Const a1 b1) -> t -> Const a b) -> t -> a
05:27:49 <elliott> that's right
05:28:26 <lightquake> so we have (forall f. Profunctor f => p a b -> p s t) and we want to get out s -> a
05:29:24 <lightquake> er, except with p instead of f
05:29:33 <lightquake> anyway. p = Const doesn't work because you don't get the right direction
05:30:34 <lightquake> so… hmm.
05:30:42 <lightquake> i'm not sure.
05:31:16 <elliott> lightquake: Forget is kind of like Const
05:32:13 <lightquake> hmm… Forget a?
05:33:11 <shachaf> Try it out!
05:33:37 <lightquake> yeah, I think forget a works, since it becomes Forget a a b -> Forget a s t, which is just (a -> a) -> (s -> a)
05:34:03 <shachaf> Yep.
05:34:09 <shachaf> It's pretty much the same trick.
05:34:41 <lightquake> neat
05:34:41 <shachaf> So view f = under _Forget f id
05:34:58 <shachaf> So that's the basic idea of profunctor lenses.
05:35:14 <shachaf> You can get everything that (a -> f b) lenses give you just by picking p a b = (a -> f b)
05:36:56 <lightquake> and you can also get indexed stuff using Indexed
05:37:12 <shachaf> Yep.
05:37:28 <shachaf> And you can define newtype Conidexed i a b = Coindexed { unCoindexed :: a -> (i,b) }
05:37:34 <hagb4rd> also forget about everything using a good programming language
05:37:38 <elliott> technically you need to separate the p
05:37:48 <elliott> instead of (p a b -> p s t) it becomes (p a b -> q s t) for Indexed
05:37:56 <elliott> because you don't want the (i ->) on the return side
05:37:58 <shachaf> Right.
05:38:08 <elliott> (i -> a -> f b) -> s -> f t, not (i -> a -> f b) -> i -> s -> f t
05:38:17 <shachaf> Where did this all start?
05:38:22 <shachaf> +ifindOf :: Profunctor q => Overloading (Indexed i) q (Accessor (Endo (Maybe a))) s t a b -> (i -> a -> Bool) -> q s (Maybe a)
05:38:39 <shachaf> So that becomes, uh, elliott wants to expand that for me.
05:38:52 * Sgeo ponders
05:39:15 <Sgeo> If I start really getting into Racket and writing macros, and switch back to Clojure, adjusting to the unhygienic macros might be "fun"
05:39:34 <elliott> shachaf: well, this isn't quite profunctor stuff directly
05:39:36 <monqy> good ponder ?
05:39:36 <Bike> the clear solution is to write the racket macro system in clojure.
05:39:42 <shachaf> elliott: True.
05:39:42 <elliott> because you have the functor jamming stuff back up due to the "compromise" we have in lens
05:40:14 <kmc> Raclojuractorcl
05:40:14 <Sgeo> Bike, I haven't looked for myself, but I think someone did that
05:40:43 <monqy> lsl
05:40:49 <shachaf> lightquake: In lens we use p a (f b) -> p s (f t) instead of p a b -> p s t
05:40:57 <shachaf> That gets you a different overloading:
05:41:30 <hagb4rd> sgeo: i don't believe you'll do, since you're changin paradigms quite as often as your underwear :P everyday a new adventure
05:41:46 <shachaf> Instead of, say, mapped :: p a b -> p [a] [b], which becomes just the regular map function when p = (->), we use mapped :: p a (Identity b) -> p [a] (Identity [b])
05:42:08 <shachaf> It's a bit more awkward but it gives us compatibility with the classic style of lens.
05:42:27 <elliott> (because you can just pick p = (->) and get something that fits the (a -> f b) -> s -> f t pattern directly)
05:42:34 <elliott> so they compose properly with lenses and the like
05:42:44 <shachaf> With twanvlenses.
05:42:46 <elliott> instead of "lmap f . rmap g" it becomes "lmap f . rmap (fmap g)"
05:42:57 <elliott> and an iso is (Profunctor p, Functor f) => p a (f b) -> p s (f t)
05:42:59 <shachaf> dimap f (fmap g)
05:43:31 <lightquake> ah, that makes sense
05:44:54 <elliott> so our indexed stuff is
05:45:05 <elliott> (Profunctor p, Indexable i p, Applicative f) => p a (f b) -> s -> f t
05:45:10 <elliott> for a traversal indexed in "i"
05:45:31 <elliott> that's just like (i -> a -> f b) -> s -> f t but it works as a plain traversal, composes properly with isomorphisms, etc.
05:46:19 <lightquake> uh-huh
05:46:44 * Sgeo is somewhat alarmed at all the pre-name-change code on PLaneT
05:46:44 <shachaf> But that's not enough because we want Coindexing!
05:47:14 <shachaf> So we get (Profunctor p, Indexable i p, Coindexable j q, Applicative f) => p a (f b) -> q s (f t)
05:47:25 * elliott thinks shachaf just gave up
05:47:37 <shachaf> ?
05:48:09 <elliott> (class Coindexable u q where coindexed :: (a -> (u, b)) -> q a b)
05:48:10 <shachaf> lightquake: By the way, we haven't figured out a use for coindexing yet.
05:48:18 <elliott> (i -> a -> f b) -> s -> f t
05:48:19 <elliott> vs.
05:48:23 <elliott> (a -> f b) -> s -> (u, f t)
05:48:35 <monqy> did you just add coindexing for fun
05:48:36 <elliott> one adds (i ->) to the p and the other (u,) to the q
05:48:46 <shachaf> elliott: Remember when you thought Coindexing was self-adjoint???????
05:48:58 <hagb4rd> it works pretty well when it comes to confusing everybody
05:49:02 <shachaf> That would be nice. :-(
05:49:08 <lightquake> permutations, obviously!
05:49:15 <Fiora> Sgeo: http://fioraaeterna.tumblr.com/post/39451893368/why-sollux-speaks-with-a-lisp
05:49:29 <shachaf> monqy: what's wrong with that.......
05:49:58 <Sgeo> Fiora, I was going to say I Thought That Was Obvious, but I didn't think of the parens thing
05:50:06 <Fiora> Yeah, that was the thing that really got me
05:50:30 <lightquake> you know why he likes aradia, right?
05:50:40 <lightquake> what programmer couldn't use more ram?
05:50:46 <Fiora> ......
05:51:31 -!- sebbu2 has quit (Read error: Connection reset by peer).
05:51:41 <Fiora> that's terrible
05:51:52 <shachaf> elliott: Fix pins :-(
05:51:55 -!- sebbu has joined.
05:51:55 -!- sebbu has quit (Changing host).
05:51:55 -!- sebbu has joined.
05:51:57 <Sgeo> <FrictionlessEmu> wouldn't he be frustrated by the unmatched parentheses
05:52:20 <kmc> lol parentheses lololololol
05:52:22 <elliott> shachaf: I've completely forgotten what pins even does
05:52:22 <lightquake> he modified his trollian to surround everything she says with parentheses
05:52:28 <Bike> he uses vi, how can he be a lisper
05:52:50 <shachaf> pins :: (Bizarre p q w, RepresentableProfunctor p) => q (w a b t) [Rep p a]
05:52:50 <shachaf> pins = getConst `rmap` bazaar (tabulatePro $ \ra -> Const [ra])
05:53:01 <shachaf> kmc makes a good point.
05:56:31 <kmc> thankschaf
06:03:48 <hagb4rd> @karma shachaf
06:03:48 <lambdabot> shachaf has a karma of 35
06:09:18 <hagb4rd> for(;;) fork();
06:10:23 -!- hagb4rd has quit (Quit: instant karma's gonna get you).
06:13:15 <kmc> #define ever (;;)
06:13:31 <kmc> #define you ()
06:13:57 <shachaf> elliott: Can you figure out a better way to do the HoleyMonoid thing?
06:14:01 <shachaf> I bet there's a better way.
06:14:01 <elliott> for you fork ever????
06:14:05 <elliott> that doesn't even make any sense kmc
06:14:14 <kmc> u have it backwards elliott
06:14:48 <elliott> kmc
06:14:52 <elliott> i'm very upset
06:15:26 <kmc> :(
06:15:43 <shachaf> kmc: don't worry about elliott he's "like that"
06:16:00 <kmc> const int main[] = { 14776, 3942977280, 247 };
06:16:46 <monqy> hi
06:16:56 <monqy> whats up??
06:17:40 <shachaf> monqy: can you make this nicer plz http://www.reddit.com/r/haskell/comments/14met7/oleg_typesafe_formatted_io/c7f8un6
06:17:55 <shachaf> edwardk pointd out that the type is "too big"
06:17:59 <shachaf> or maybe that was me
06:18:19 <monqy> uuuuuuuuuuuuuuuuuugh
06:18:21 <shachaf> Is there a way to get the type to be "just right"?
06:19:06 <kmc> unsafeCoerce
06:19:47 -!- sebbu has quit (Read error: Connection reset by peer).
06:20:10 -!- sebbu has joined.
06:20:11 -!- sebbu has quit (Changing host).
06:20:11 -!- sebbu has joined.
06:27:39 <Sgeo> My gf wrote a program that's apparently very useful for her.
06:27:57 <Sgeo> But it has a bug so she disables it when she plays her favorite game, and that causes problems
06:28:40 <monqy> oops
06:28:44 <monqy> (??????)
06:28:48 <monqy> (?????????????????????)
06:28:58 <shachaf> (?)
06:29:20 <zzo38> What program is that?
06:29:36 <Sgeo> A program to notify her when her laptop is off of the charge
06:30:11 <Sgeo> I keep telling her to fix it, she keeps getting distracted by the game
06:31:34 <shachaf> Perhaps rewriting it in Clojure would do the trick.
06:33:29 <monqy> what is the bug
06:34:17 <shachaf> monqy: the bug is, it doesn't work
06:34:42 <monqy> ah...
06:40:12 <Sgeo> It flashes or something in such a way that it stops the game from working
06:48:29 -!- augur_ has joined.
06:51:23 -!- augur has quit (Ping timeout: 245 seconds).
06:55:03 -!- Frooxius has joined.
07:05:50 -!- TeruFSX has quit (Ping timeout: 252 seconds).
07:20:07 <elliott> -alongside :: ALens s t a b -> ALens s' t' a' b' -> Lens (s,s') (t,t') (a,a') (b,b')
07:20:16 <elliott> +alongside :: (CorepresentableProfunctor q, Applicative (Corep q), Comonad (Corep q), Functor f) 321
07:20:19 <elliott> + => Overloading (->) q (Pretext (->) q a b) s t a b -> 322
07:20:21 <elliott> + Overloading (->) q (Pretext (->) q a' b') s' t' a' b' -> 323
07:20:24 <elliott> + Overloading (->) q f (s,s') (t,t') (a,a') (b,b')
07:20:27 <elliott> truly the image of progress
07:40:53 -!- Nisstyre-laptop has joined.
07:59:42 -!- Bike has quit (Quit: leaving).
08:01:18 <coppro> http://nrk.no/nordlandsbanen/
08:04:37 <fizzie> I remember seeing some ten-hour train video in YouTube a while ago.
08:32:05 -!- epicmonkey has joined.
08:39:32 -!- ais523 has quit.
09:07:11 -!- WeThePeople has quit (Quit: Leaving).
09:16:47 -!- zzo38 has quit (Remote host closed the connection).
09:59:59 <shachaf> Jafet: Do you use Sid? What version of libc do you have?
10:01:25 <Jafet> eglibc: libc6 2.13-37
10:01:36 <Jafet> That is possibly the most confusing software identifier ever
10:07:16 * shachaf tried to run a thing that needed 2.15 today.
10:07:30 <coppro> Jafet: have you seen CLC-INTERCAL?
10:07:58 <Jafet> Is it in sid?
10:08:21 <Jafet> shachaf: I'm curious to know what kind of software has a minor version dependency on libc
10:08:39 <coppro> Jafet: the most recent I can find is version 1.-94.-4.1
10:08:43 <coppro> no wait, not the most recent
10:08:46 <coppro> but the silliest
10:09:02 <Jafet> Eh, it doesn't even have "rc" after it
10:09:18 <shachaf> Jafet: Most software, I think
10:09:25 <shachaf> .13 vs .15 is pretty significant.
10:10:38 <Jafet> Well, they tend to depend on not having obsolete minor versions.
10:10:41 <coppro> Jafet: And C-INTERCAL has the major and minor versions backward
10:10:48 <coppro> 0.26 -> 1.26 (bugfix) -> 0.27
10:12:51 <Jafet> Push CLC-INTERCAL to debian, it might get 1:1.-94.-4.1rc-dfsg2-ng or something
10:14:33 <coppro> haha
10:15:38 -!- Taneb has joined.
10:16:26 <Sgeo> Oh hey Tcl 8.6 was released recently
10:16:49 <monqy> is that good
10:16:51 <Taneb> Things that annoy me but shouldn't:
10:17:00 <Taneb> People posting rugby in the Haskell tag on Tumblr
10:17:14 -!- copumpkin has quit (Ping timeout: 252 seconds).
10:17:19 <Sgeo> 8.6 has coroutines <3. Well, not as much <3 as I'd have for first-class continuations, but still
10:17:32 <shachaf> coroutines > continuations
10:17:45 <shachaf> continuations: the devil??
10:17:47 -!- copumpkin has joined.
10:18:03 <shachaf> monqy: tell me about continuations
10:18:12 <shachaf> (or don't)
10:18:13 <monqy> continuations have a funny problem where something about spaghetti
10:18:43 <shachaf> monqy: but wait, i read category theory will save you from spaghetti code because associativity
10:18:53 <monqy> :o
10:19:07 <shachaf> http://www.reddit.com/r/programming/comments/15q6lw/the_continuation_monad/c7p26jy
10:19:10 <shachaf> qed??
10:19:31 <Jafet> Lasagne programming
10:19:45 <coppro> `addquote < monqy> continuations have a funny problem where something about spaghetti < shachaf> monqy: but wait, i read category theory will save you from spaghetti code because associativity
10:19:52 <HackEgo> 892) < monqy> continuations have a funny problem where something about spaghetti < shachaf> monqy: but wait, i read category theory will save you from spaghetti code because associativity
10:20:07 <shachaf> Ugh.
10:20:16 <Deewiant> Insert whining about wrong quote formatting etc
10:20:25 <elliott> spaghetti quotes
10:20:29 <oklopol> i hate those whitespaces
10:20:33 <oklopol> before the name
10:20:35 <oklopol> alsdkfjdasjföldasjfldsaj
10:20:50 <oklopol> all else is fine.
10:21:08 <elliott> Deewiant: remember that time I asked you about whether a name was a real finnish name and stuff
10:21:15 <elliott> Deewiant: well it turns out they were lying and weren't finnish after all
10:21:16 <Deewiant> elliott: No but whatever
10:21:19 <Jafet> <@oklopol> I wish I had this quote
10:21:23 <Deewiant> elliott: Okay
10:21:27 <elliott> wow how could you not remember that vital turning point in each of our lives
10:21:30 <coppro> Deewiant: fix it then
10:21:44 <elliott> also they have disappeared for like months; possibly due to guilt at lying about being finnish?
10:21:49 <Deewiant> coppro: I don't know the commands and don't really care either
10:22:07 <coppro> Deewiant: you can `revert and then `addquote. How would you format it?
10:22:11 <Deewiant> elliott: Well to be honest I have a faint memory of something like that occurring but no details
10:24:11 <Deewiant> coppro: I think there's some kind of "standard" on this channel with putting two spaces between separate lines and enclosing nicks in <> but without the space; but like said I don't really care and as such I'm not sure about this either
10:24:13 <Deewiant> elliott: You know
10:25:04 <Deewiant> And I'm off for a bit -->
10:25:26 <Jafet> Go for a byte.
10:25:38 <elliott> imo we must find our own standards inside our hearts and then impose them ruthlessly on others for nothing but the joy of cruelty
10:25:46 <elliott> isn't that what IRC is all about
10:25:57 <coppro> why am I giving grammar advice at 3 am
10:26:21 <Taneb> If they made a diet version of coppro, what would they call it?
10:26:29 <Taneb> coppro-lite wouldn't be very good
10:26:55 <coppro> Taneb: it's a long o
10:27:10 <Taneb> Which o?
10:27:37 <coppro> the first one
10:28:05 <Taneb> "k-oh-pro"?
10:28:16 <Taneb> Rhymes with "go pro"?
10:28:34 <coppro> no
10:28:45 <coppro> maybe I'm mixing up vowel length again
10:28:51 <coppro> the two os are pronounced differently
10:28:57 <coppro> and not like the Greek "copros"
10:29:03 <Jafet> Obviously it's pronounced coooppro
10:29:28 <Taneb> ...Sounds like cobra?
10:29:53 <coppro> no
10:29:58 <coppro> like copper
10:30:28 <Taneb> So, the second o is a schwa?
10:31:24 -!- monqy has quit (Quit: hello).
10:39:14 <coppro> no, the second o is like in cobra
10:39:53 <Taneb> Ah
10:40:03 <Sgeo> o.O there's some controversy in the Scheme community about the best way to do macros
10:40:10 <Taneb> koh pro
10:40:21 <shachaf> Sgeo: What about the Clojure community?
10:40:45 * Sgeo swats shachaf
10:40:57 <shachaf> oerjan: uhhh..............
10:41:33 <Taneb> oerjan, why aren't you online
10:52:14 -!- Phantom_Hoover has joined.
11:03:11 <Fiora> http://en.wikipedia.org/wiki/Magnus_Carlsen highest ELO rating of all time now :o
11:03:48 -!- nooga has joined.
11:04:39 <Taneb> Electric Light Orchestra
11:04:42 <Taneb> ?
11:04:48 <Phantom_Hoover> yes
11:05:05 <Fiora> http://en.wikipedia.org/wiki/Elo_rating
11:05:09 <Taneb> :P
11:05:10 <Phantom_Hoover> he is the most electric light orchestra person ever
11:05:13 <Fiora> oh, it's not capitalized :P
11:06:48 -!- AnotherTest has joined.
11:14:39 -!- Frooxius has quit (Quit: ChatZilla 0.9.89-rdmsoft [XULRunner]).
11:19:13 -!- mrout has joined.
11:21:47 <mrout> Most ridiculously complex esolang?
11:22:01 <Taneb> CLCLC-Intercal, possibly
11:22:05 <Taneb> Or ORK
11:22:15 <elliott> bitwise cyclic tag
11:22:57 <Taneb> Or Glass
11:23:10 <Taneb> Or Malbolge
11:23:33 <Taneb> Cat program in Glass: {M[maI!bO!cA!dae.?<1>c(ne).?=/dac.?bo.?dae.?<1>c(ne).?=\]}
11:24:13 <mrout> ORK looks hilarious
11:24:20 <Taneb> It's object oriented
11:24:44 <Jafet> That might be shorter than the cat program in java
11:25:55 <Taneb> I know roughly what it does up to the first m
11:26:29 <mrout> Jafet: You could probably write a kernel in some languages in less code than you could write Hello World in Java
11:27:56 <Taneb> 99 bottles of beer in Malbolge: http://www.99-bottles-of-beer.net/language-malbolge-995.html
11:28:15 <Taneb> "good luck"
11:30:52 <Jafet> Is there a malbolge utm yet
11:31:12 <Taneb> I thought Malbolge was bounded-storage?
11:31:46 <mig22> How do you run Glass after you downloaded it?
11:32:15 <mrout> Taneb: it is, but someone managed it
11:32:58 <elliott> mig22: compiling the interpreter probably
11:33:10 <mrout> "I think Malbolge needs an update. I may write Visual M++ 2008 Extra Ultimate Edition if I'm feeling bored some weekend." - Ben Olmstead
11:34:20 <Taneb> elliott, do you happen to know what times trains to Newcastle are?
11:38:42 -!- Frooxius has joined.
11:39:38 <Taneb> I'll take that as a no...
11:56:13 -!- zzo38 has joined.
11:58:51 <Taneb> Well, I'm heading off nowe
11:58:53 -!- Taneb has quit (Quit: Leaving).
12:15:58 -!- epicmonkey has quit (Ping timeout: 245 seconds).
12:40:17 <Phantom_Hoover> why on earth would he want to go to newcastle
13:28:39 -!- boily has joined.
13:38:00 -!- DHeadshot has quit (Read error: Connection reset by peer).
13:38:16 -!- DHeadshot has joined.
13:39:30 -!- Phantom_Hoover has quit (Remote host closed the connection).
13:41:27 -!- Phantom_Hoover has joined.
13:47:24 <fizzie> Perhaps the princess is in the newcastle?
14:01:29 -!- mrout has quit (Quit: Screw you guys, I'm going home.).
14:02:05 -!- TeruFSX has joined.
14:03:21 -!- Sgeo has quit (Read error: Operation timed out).
14:04:50 -!- Sgeo has joined.
14:10:27 -!- carado has joined.
14:11:06 -!- hagb4rd has joined.
14:14:35 -!- carado has quit (Client Quit).
14:14:48 -!- carado has joined.
14:17:53 -!- WeThePeople has joined.
14:18:03 -!- DHeadshot has quit (Ping timeout: 245 seconds).
14:28:27 -!- Nisstyre-laptop has quit (Read error: Connection reset by peer).
14:49:09 -!- WeThePeople has quit (Quit: Leaving).
15:47:41 -!- augur_ has quit (Ping timeout: 244 seconds).
16:20:39 -!- mekeor has joined.
16:33:10 <kmc> today's xkcd is amusing, but i'm not sure why he felt the need to put a full explanation of what the joke is directly under the joke
16:34:11 -!- epicmonkey has joined.
16:40:03 -!- DHeadshot has joined.
16:45:56 <FreeFull> I just wrote my first successful quine
16:46:05 <FreeFull> main = putStrLn $ a ++ show a where a = "main = putStrLn $ a ++ show a where a = "
16:46:58 <shachaf> > text$ap(++)show"text$ap(++)show"
16:47:00 <lambdabot> text$ap(++)show"text$ap(++)show"
16:47:20 <boily> > :t text
16:47:22 <lambdabot> <hint>:1:1: parse error on input `:'
16:49:40 <shachaf> > run (now "x = " . later show . now ", y = " . later show) 4 16
16:49:42 <lambdabot> "x = 4, y = 16"
16:50:41 <FreeFull> :t text
16:50:42 <lambdabot> String -> Doc
16:50:48 <FreeFull> Wtf is Doc
16:51:20 <kmc> http://lambda.haskell.org/platform/doc/current/ghc-doc/libraries/pretty-
16:51:25 <FreeFull> :t ap
16:51:26 <lambdabot> Monad m => m (a -> b) -> m a -> m b
16:51:45 <shachaf> > run (now "what's up, " . later show . now "?") (typeOf (text "hi"))
16:51:47 <lambdabot> No instance for (Data.Typeable.Internal.Typeable
16:51:47 <lambdabot> Text.P...
16:51:49 <shachaf> Aw.
16:52:57 <shachaf> i love profunctors
16:53:00 <shachaf> they are so easy
16:53:57 <FreeFull> Is Text.PrettyPrint.HughesPJ included in Prelude though?
16:54:06 <kmc> no but it's imported by lambdabot
16:54:38 <shachaf> @ty (now,later,run)
16:54:39 <lambdabot> (Monoid a, Monoid m1, Monoid m) => (m -> ((m -> t1) -> t) -> (m -> t1) -> t, (t4 -> m1) -> ((m1 -> t3) -> t2) -> (m1 -> t3) -> t4 -> t2, (((a -> b) -> b) -> (a1 -> a1) -> t5) -> t5)
16:54:50 <shachaf> Still shorter than the average lens type. :-(
17:11:09 -!- Bike has joined.
17:11:41 <hagb4rd> hello fiet
17:47:29 -!- Nisstyre-laptop has joined.
18:03:34 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
18:08:39 -!- TeruFSX has quit (Ping timeout: 255 seconds).
18:15:12 <Sgeo> I should probably read this paper about keywords in Racket, rather than assuming the only benefit the byzantine keyword system has is a relatively minor one
18:16:01 <kmc> that's crazy talk
18:19:10 <Fiora> Sgeo: update?
18:19:26 <Sgeo> Fiora, yes
18:19:36 <Sgeo> Feel free to ping the people I usually ping
18:19:44 <shachaf> Fiora: For the first time in three months!
18:20:49 <Fiora> pff
18:24:16 <shachaf> (Well, it was.)
18:24:57 <Fiora> ?
18:31:18 -!- Phantom_Hoover has joined.
18:33:04 -!- asiekierka has quit (Excess Flood).
18:33:11 -!- asiekierka has joined.
18:34:25 -!- Nisstyre-laptop has quit (Quit: Leaving).
18:35:04 -!- Nisstyre-laptop has joined.
18:35:58 -!- Nisstyre-laptop has quit (Read error: Connection reset by peer).
18:38:28 -!- Nisstyre-laptop has joined.
18:46:14 -!- hagb4rd has quit (Ping timeout: 255 seconds).
19:06:08 <kmc> The 112th Congress: At Least Nobody Got Caned
19:14:43 -!- asiekierka has quit (Excess Flood).
19:16:16 -!- hagb4rd2 has joined.
19:18:44 -!- asiekierka has joined.
19:21:23 -!- DHeadshot has quit (Read error: Connection reset by peer).
19:24:26 -!- asiekierka has quit (Excess Flood).
19:24:33 -!- asiekierka has joined.
19:28:26 -!- oerjan has joined.
19:34:09 -!- DHeadshot has joined.
19:37:09 -!- Phantom__Hoover has joined.
19:40:19 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
19:43:41 -!- DHeadshot has quit (Read error: Connection reset by peer).
19:43:47 -!- DH____ has joined.
19:50:41 -!- asiekierka has quit (Excess Flood).
19:51:43 -!- asiekierka has joined.
20:06:13 <oerjan> <elliott> truly the image of progress
20:06:29 <oerjan> 2013, the year haskell collapsed into the kmett singularity
20:10:00 <oerjan> `quote 892
20:10:02 <HackEgo> 892) < monqy> continuations have a funny problem where something about spaghetti < shachaf> monqy: but wait, i read category theory will save you from spaghetti code because associativity
20:11:42 <shachaf> bad quote imo
20:11:46 <shachaf> I move to delete 892,
20:11:49 <shachaf> s/.$/./
20:11:56 <fizzie> VfD.
20:11:59 -!- AnotherTest has quit (Quit: Leaving.).
20:12:02 <oerjan> `run sed -i '892s/\( *\)< /\1\1</g' quotes
20:12:06 <HackEgo> No output.
20:12:09 <oerjan> `quote 892
20:12:11 <HackEgo> 892) <monqy> continuations have a funny problem where something about spaghetti <shachaf> monqy: but wait, i read category theory will save you from spaghetti code because associativity
20:12:22 <fizzie> I was about to vote for SPEEDY DELETE just because of the spacing.
20:12:28 <fizzie> Now you've gone and ruined (fixed) it.
20:12:36 <shachaf> I move to delete it.
20:13:11 <fizzie> I vote for MERGE WITH 492
20:13:17 <oerjan> `quote 492
20:13:18 <HackEgo> 492) <monqy> im hungary too...but cnnot eat until hours
20:13:24 <fizzie> Oh ho, how appropriate!
20:13:32 <shachaf> 492 is good
20:13:40 <fizzie> They're both about food and feature a monqy.
20:13:41 <shachaf> How about we delete 892?
20:13:52 <shachaf> monqy++
20:14:30 <oerjan> i vote against merge on the principle that spaghetti is italian, not hungarian
20:14:55 <fizzie> I can't argue with that. :/
20:15:01 <fizzie> (But now I'm hungry.)
20:15:09 <shachaf> OK, then we delete 892?
20:15:58 <fizzie> It seems that thou must.
20:16:36 <oerjan> fizzie: make some gulyás then
20:16:40 <olsner> go forth and swiftly the quote
20:17:12 <shachaf> hi oerjan
20:17:15 <shachaf> helloerjan
20:17:22 <shachaf> Did I hallucinate you earlier?
20:18:14 <shachaf> `quote
20:18:15 <HackEgo> 689) <monqy> kallisti: by ordered multiset did you mean: list??????
20:19:50 <boily> `quote
20:19:51 <HackEgo> 836) <oerjan> `welcome Rawlie * zzo38 has joined #esoteric <Rawlie> thank you <zzo38> You're welcome.
20:20:01 <shachaf> `quote
20:20:03 <HackEgo> 266) <zzo38> I also do not like that it should be disallow just because of too weird. They haveto make up more name so that not everyone has the same name!!!
20:20:22 * boily has a brain freeze
20:20:41 <olsner> `quote canada
20:20:43 <HackEgo> 377) <oerjan> as i was filled with zzo38 mystery at the moment i saw <zzo38> quintopia: I am at Canada. \ 680) <zzo38> When you die in Canada, you die in real life.
20:21:11 <boily> ooooh, canada.
20:21:39 <shachaf> I nominate 680 for deletion.
20:21:48 <olsner> but it's zzo
20:21:57 <oerjan> `quote 680
20:21:59 <HackEgo> 680) <zzo38> When you die in Canada, you die in real life.
20:22:19 <olsner> though that one is not actually like zzo38 at all
20:22:28 <shachaf> @google When you die in Canada, you die in real life.
20:22:29 <lambdabot> http://xkcd.com/180/
20:22:29 <lambdabot> Title: xkcd: Canada
20:23:11 <oerjan> `quote <
20:23:12 <olsner> but if you live in Canada, do you live in real life?
20:23:13 <HackEgo> 80) <fax> oklopol geez what are you doing here <oklokok> ...i don't know :< <oklokok> i actually ate until now, although i guess i also did other things... \ 141) <cpressey> < ais523> then running repeatedly until you get the right sequence of random numbers < ais523> and just completely ignoring the input <-- some people live their entire lives
20:25:10 <oerjan> `quote < *[a-z]
20:25:11 <HackEgo> 141) <cpressey> < ais523> then running repeatedly until you get the right sequence of random numbers < ais523> and just completely ignoring the input <-- some people live their entire lives this way, i reckon \ 198) <j-invariant> 22:55 < qfr> How am I supposed to develop software in Haskell if I can't even prepare my projects in UML?! It seems lik
20:25:40 <oerjan> tOO MUCH
20:25:48 -!- TeruFSX has joined.
20:25:50 <olsner> weird, whence the extra space before the nick?
20:26:02 <oerjan> obviously some client does it
20:26:08 <olsner> Obviously.
20:26:08 <shachaf> irssi does it by default
20:26:19 <shachaf> @quote oerjan
20:26:19 <lambdabot> oerjan says: i only do impractical things
20:26:23 <shachaf> @quote .*oerjan
20:26:23 <lambdabot> Tac-Tics says: oerjan: I tried, but his zombie lectures were hard to follow
20:26:27 <oerjan> ...my irssi includes no < before the nick
20:26:28 <shachaf> @quote .*oerjan.*
20:26:28 <lambdabot> Tac-Tics says: oerjan: I tried, but his zombie lectures were hard to follow
20:26:44 <shachaf> @quote <kmc>
20:26:45 <lambdabot> <kmc> says: but if you know the package, you can find it on Hackage; <kmc> it even rhymes
20:27:40 <kmc> irssi puts + or @ there for voice or oper, respectively
20:30:23 <olsner> aww, someone forgot to remove the <> when @remembering
20:33:26 <oerjan> <Phantom_Hoover> why on earth would he want to go to newcastle <-- to sell coal, naturally
20:36:27 <mroman> to watch the match.
20:37:57 <mroman> and to dink a brown ale
20:43:41 <shachaf> @quote <oerjan>
20:43:41 <lambdabot> No quotes match. Just try something else.
20:43:43 <shachaf> @quote sorear
20:43:44 <lambdabot> sorear says: <sorear> Unfortunately, Coq *cannot* prove that your program will terminate before the heat-death of the universe. <psnively> Right. That's a software engineering problem, not a
20:43:44 <lambdabot> computer science problem. ;-)
20:43:57 <shachaf> That's more of a psnively quote, I think.
20:44:00 <shachaf> @quote sorear
20:44:00 <lambdabot> sorear says: -f flags are so 2006
20:44:12 <shachaf> Oh well.
20:46:07 <olsner> I guess from 2007 and forward it's all -X flags
20:48:48 <shachaf> @quote olsner
20:48:48 <lambdabot> olsner says: I've always mostly equated coding perl and trolling
20:48:52 <shachaf> @quote olsner
20:48:52 <lambdabot> olsner says: a mind won't be enough, you need a comind to go with it
20:49:42 <olsner> @quote shachaf
20:49:42 <lambdabot> shachaf says: category-extras was so great until the antitrust lawsuit.
20:50:01 <shachaf> @quote monqy
20:50:01 <lambdabot> Plugin `quote' failed with: getRandItem: empty list
20:50:21 <olsner> oh, so monqy has had lambdabot quotes but lost all of them
20:50:57 <shachaf> Sad.
20:51:37 <olsner> one day I should figure out how to patch lambdabot
20:51:46 <olsner> to fix that getRandItem bug
20:51:50 <shachaf> It's easy.
20:52:55 <oerjan> <olsner> I guess from 2007 and forward it's all -X flags <-- YOU MEAN LANGUAGE PRAGMAS HTH
20:53:06 <kmc> fglasgow-exts for lyfe
20:53:18 <shachaf> {-# LANGUAGE -XGlasgowExts #-}
20:53:30 <olsner> {-# LANGUAGE EVERYTHING #-}
20:53:36 <oerjan> shachaf: that's not the correct syntax
20:54:04 <shachaf> -X{-# LANGUAGE -XGlasgowExts #-}?
20:54:15 * oerjan swats shachaf -----###
20:54:16 <shachaf> or is it -XLANGUAGE
20:54:41 <oerjan> i don't think GlasgowExts is a LANGUAGE pragma but i may be wrong
20:55:01 <shachaf> You aren't wrong.
20:55:10 <olsner> something like {-# OPTIONS_GHC -fglasgow-exts #-} iirc
20:55:15 <shachaf> We should implement that proposal where -O and -X and -W all behave the same.
20:55:33 <shachaf> So you can say -X1 to get standard extensions, -X2 to get reasonable extensions, -X3 to get crazy extensions.
20:56:06 <shachaf> And -OUnpackStrictFields, -WNoMissingSignatures
20:56:11 <olsner> or -X3 to force no extensions at all, mirroring that nice -O3 bug
20:56:26 <kmc> i'm sure this would in no way result in endless unhelpful bikeshedding about which extensions are "reasonable"
20:56:53 <shachaf> I suspect bickering was the hidden motivation of the proposal.
20:56:55 <oerjan> surely.
20:57:17 <shachaf> kmc: You know how GCC has optimizations that are hard-wired to check the -O level rather than individual flags? :-(
20:57:24 <kmc> yeah
20:57:26 <kmc> you told me that :(
20:57:51 <shachaf> Oh.
21:03:39 * oerjan thinks that ought to be easy to fix is someone wanted to...
21:03:45 <oerjan> *if
21:08:20 -!- augur has joined.
21:14:39 -!- mekeor has quit (Quit: g'night).
21:49:18 -!- epicmonkey has quit (Ping timeout: 245 seconds).
22:19:10 -!- Taneb has joined.
22:20:49 -!- Vorpal has joined.
22:22:46 -!- josue1 has joined.
22:23:03 -!- boily has quit (Ping timeout: 245 seconds).
22:23:06 -!- josue1 has quit (Read error: Connection reset by peer).
22:34:15 -!- WeThePeople has joined.
22:42:27 -!- augur has quit (Remote host closed the connection).
22:42:59 -!- augur has joined.
22:44:19 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
22:46:07 -!- Phantom_Hoover has joined.
22:55:01 <Sgeo> I should resume watching DS9 at some point
22:55:33 <shachaf> Is that a Scheme implementation?
22:55:51 <Sgeo> Also, does writing a BF derivative, solely with the goal of implementing BF, warrant a brain bricking? Because a tutorial I read did that
22:55:59 -!- Frooxius has quit (Ping timeout: 260 seconds).
22:55:59 <Sgeo> shachaf, no, no it is not.
22:56:42 <oerjan> deep scheme 9
22:57:27 <oerjan> it has no scheme but it does have a plot
22:59:09 <Phantom_Hoover> hey Sgeo you liked stargate right
22:59:22 <Taneb> There's a place to the east of here called Stargate
22:59:33 <Sgeo> Phantom_Hoover, yes
22:59:38 <oerjan> schemegate 1
22:59:45 <Phantom_Hoover> plz smack yourself in the face, thanks
23:00:04 <oerjan> O KAY
23:00:08 <oerjan> *ouch*
23:00:27 <Taneb> @quote field with cows
23:00:27 <lambdabot> No quotes for this person.
23:00:32 * oerjan did it literally, for the art
23:00:32 <Taneb> `quote field with cows
23:00:33 <HackEgo> 415) <Taneb> Look, I often walk my dog through a field with cows in it. And I punched myself in the face once.
23:00:58 <shachaf> I once stapled my thumb.
23:01:34 <shachaf> As I recall I said that it wouldn't hurt.
23:01:39 <shachaf> As I recall it hurt.
23:01:50 <oerjan> shachaf: science, it works!
23:02:00 <Phantom_Hoover> shachaf, why did you say it wouldn't hurt
23:02:13 <shachaf> Phantom_Hoover: Because I expected that it wouldn't.
23:02:17 <oerjan> it was his zero hurt hypothesis
23:02:55 <shachaf> I didn't staple it *to* anything, by the way.
23:03:05 <shachaf> Other than to the staple, I guess. If that counts.
23:06:54 <oerjan> why did shachaf cross the road
23:07:57 <Taneb> Because he didn't expect it would hurt
23:08:42 <Fiora> stapling your thumb sounds like a pretty terrible idea
23:08:59 <Fiora> unless like, you need to turn your thumb in with an assignment or something
23:10:30 <oerjan> assignments don't need that, as a rule of thumb.
23:11:19 <Fiora> that sounds like a useful pointer
23:11:20 <shachaf> I used to think the phrase was "rule of the thumb".
23:11:37 <shachaf> I wish people would say that because it sounds good.
23:12:06 <Taneb> We have toiled for centuries under the tyrannical rule of the thumb
23:13:33 <Fiora> one by one we thumb through all the possible puns
23:13:52 <Phantom_Hoover> that's not even a pun
23:13:58 <Phantom_Hoover> none of those were puns
23:14:04 <shachaf> I'm exempt from having to make puns.
23:14:27 <Phantom_Hoover> we should talk about thumbthing else
23:14:30 <Phantom_Hoover> ok that was shit
23:14:36 <shachaf> Phantom_Hoover: thats not a pun.............
23:14:45 <Taneb> That's just a lisp
23:15:01 <Phantom_Hoover> just let me express myself, even if you don't digit
23:15:08 <Phantom_Hoover> (pronounce w/ hard g)
23:15:17 <shachaf> I don't giddit.
23:15:35 <oerjan> people with lisps can express themselves, but only with parenthetical remarks
23:17:15 <Taneb> I know a couple of people with lisps
23:18:20 <oerjan> yeah i hear it's common
23:20:08 <Phantom_Hoover> especially in spain
23:20:28 <oerjan> no, that's rain
23:21:12 <shachaf> What does the noneuclidean rain do?
23:21:36 <oerjan> hyperbolic plain
23:22:17 -!- monqy has joined.
23:53:58 -!- Taneb has quit (Quit: goodnight).
←2013-01-01 2013-01-02 2013-01-03→ ↑2013 ↑all