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