00:08:51 > ((1,4,3),(2,9,5),(8,6,7)) & partsOf (each.each) %~ sort 00:08:54 ((1,2,3),(4,5,6),(7,8,9)) 00:10:54 -!- boily has joined. 00:20:46 Stupid trailing whitespace 00:47:26 -!- augur has joined. 00:47:36 -!- Bicyclidine has joined. 00:53:19 -!- Sorella has joined. 00:54:09 -!- Sorella has quit (Changing host). 00:54:09 -!- Sorella has joined. 00:54:15 -!- dianne has joined. 01:07:20 -!- oerjan has quit (Quit: Natta). 01:24:41 -!- boily has quit (Quit: FUNNEL CHICKEN). 01:40:25 helloerjan 02:01:26 -!- augur has quit (Remote host closed the connection). 02:07:17 -!- Bicyclidine has quit (Ping timeout: 260 seconds). 02:11:39 -!- not^v has joined. 02:15:22 -!- tlvb has quit (Ping timeout: 240 seconds). 02:21:20 -!- Bicyclidine has joined. 03:01:43 Hmm, the pdf of Knuth that someone linked earlier, is a scan with "Simon Plouffe 1985" scrawled on the half-title. Autographed warez. 03:04:52 lol 03:10:40 oh hey, the BBP dude 03:15:00 -!- shikhin has joined. 03:18:13 -!- shikhout has quit (Ping timeout: 260 seconds). 03:34:08 What is the best way to generatea random number in a not too much slow, but still of pretty good quality, way? 03:37:04 mersenne? 03:38:11 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)). 03:42:11 xorshift, depending on what you consider good quality? 03:44:45 So, apparently, in Objective-C, nil responds to all messages with nil. Are most messages in Cocoa arranged such that blindly acting on having gotten a nil will usually behave sensibly, ala the the example in a blog post: if ([name isEqualToString:@"Steve"]) { ... } ? 03:45:03 Where name can be nil and it will still act properly? 03:45:10 http://nshipster.com/nil/ 03:47:53 -!- variable has changed nick to constant. 04:00:55 -!- augur has joined. 04:01:23 -!- FreeFull has quit (Ping timeout: 272 seconds). 04:03:57 -!- dianne has quit (Ping timeout: 260 seconds). 04:04:39 -!- dianne has joined. 04:08:30 Is Objective-J/Cappuchino any good? 04:13:24 Oh, Objective-C's normal libraries does that annoying thing of sending messages to objects that the objects really shouldn't have deep control over 04:17:14 -!- not^v has quit (Quit: http://i.imgur.com/Akc6r.gif). 04:34:12 -!- MoALTz has quit (Ping timeout: 260 seconds). 04:35:09 -!- MoALTz has joined. 04:44:09 -!- Bicyclidine has quit (Quit: leaving). 04:50:59 -!- dianne has quit (Ping timeout: 258 seconds). 04:52:51 -!- FreeFull has joined. 05:11:01 whoa, nooodl hasn't been around in a while 05:12:58 -!- lambdabot has quit (Read error: Connection reset by peer). 05:17:12 -!- lambdabot has joined. 05:19:37 Is GNUstep going anywhere? 05:22:33 I don't know? 06:44:41 -!- MoALTz has quit (Quit: Leaving). 07:31:57 -!- drdanmaku has quit (Quit: Connection closed for inactivity). 07:35:13 Perl is dying. I like that. 07:35:19 also it's dieing. 07:35:39 but mostly dying. 07:35:50 @messages-load 07:35:50 oerjan said 8h 34m 17s ago: http://mroman.ch/ngbl/ <-- It's -> Its hth 07:36:09 @tell oerjan thx. 07:36:09 Consider it noted. 07:36:51 -!- S1 has joined. 07:38:24 "like a dying duck in a thunderstorm" 07:38:27 o_O 07:39:53 (http://news.dice.com/2014/10/09/5-programming-languages-marked-for-death/) 07:39:59 `? perl 07:39:59 perl? ¯\(°​_o)/¯ 07:45:15 So they're saying that perl based CGI scripts are dying. Fine, fine... 07:48:41 :) 07:51:33 -!- `^_^v has quit (Ping timeout: 272 seconds). 08:05:18 -!- `^_^v has joined. 08:05:21 -!- S1 has changed nick to S0. 08:34:38 -!- conehead has quit (Quit: Computer has gone to sleep). 08:40:36 -!- Melvar has quit (Ping timeout: 260 seconds). 08:41:12 -!- idris-bot has quit (Ping timeout: 250 seconds). 08:57:24 -!- password2 has joined. 09:03:48 haha, this comment seems inconsistent: "Please crawl back under your stone and get in touch with reality" 09:07:45 -!- password2 has quit (Ping timeout: 260 seconds). 09:09:19 -!- password2 has joined. 09:10:33 Is this Patrick? 09:11:32 mroman_: a comment by "tux" on that languages-the-author-wishes-to-die link. 09:12:36 where the author obviously is a VB6 programmer 09:12:54 Some perl lover, "Perl6 indeed took a long journey to get into the “I could use it” phase. Maybe too long, but it is getting in shape to make a whole lot of young programmers very happy. It addresses all the dislikes people find in other – now popular – languages." 09:13:52 I have to ask: Does it address any of the things that people dislike about Perl? 09:14:39 "You may discard my opinion, but your article sucks." 09:14:56 [dynamic types, useless $ signs, scalar vs. list contexts, implicit $_ variable (a blessing and a curse)...) 09:14:56 -!- shikhout has joined. 09:14:57 is "your article sucks" also a discardable opinion? 09:15:04 s/)/]/ 09:15:09 mroman_: yes 09:15:49 criticism should be justified, and ideally be constructive, though that's not always possible. 09:16:27 [disclaimer: I only know a very small fragment of Perl] 09:17:56 -!- shikhin has quit (Ping timeout: 260 seconds). 09:18:26 -!- Frooxius has quit (Quit: *bubbles away*). 09:19:02 -!- Phantom_Hoover has joined. 09:19:04 -!- Phantom_Hoover has quit (Changing host). 09:19:05 -!- Phantom_Hoover has joined. 09:19:54 I know Perl has $_ 09:19:57 that's all I know 09:20:22 Delphi XE7 isn't free though 09:20:43 oh well. 09:20:50 It's only 5000 CHF 09:21:58 The Borland^WInprise^WBorland Object Pascal seems to me to be the most likely candidate to actually die, in the "no new projects will be using it" sense. 09:22:15 -!- shikhout has changed nick to shikhin. 09:25:55 Although I don't really know much about Pascal Delphi 09:26:01 there are so many variants of things 09:26:02 And judging by other comments even that is unlikely. 09:26:06 Object Pascal, FreePascal, Delphi 09:26:10 probably Objective Delphi? 09:26:20 Modula, Oberon 09:26:35 (I think those are Pascal-ish but not really Pascal?) 09:26:46 I've never used Delphi, I did use Borland's "Pascal with Objects" in the mid-90s, when the keyword for those was still "object" rather than "class". 09:28:13 Modula adds a module system to Pascal, hence the name. [Borland's pascal also had modules, called "units"] I've never looked at Oberon, does it have OO? 09:28:57 -!- password2 has quit (Quit: Leaving). 09:29:20 yeah, I know, programming sucked back then, nothing was standardized, and we had to program in nine inch snow uphill both ways 09:29:36 Oberon has OOP, yes 09:29:50 objects with virtual methods didn't yet store the vtbl pointer inside them, but instead every pointer to them had the vtbl pointer in it 09:29:51 b_jonas: nah, programming was much simpler back then. 09:30:09 and we had to do all that on bad quality crt monitors 09:30:33 of some sort 09:30:38 never used Oberon myself though 09:30:46 but it has type bound methods or something like that 09:31:01 Oh yes, Monitors were indeed awful. I don't miss those one bit. 09:31:05 s/M/m/ 09:31:14 keyboards were good though 09:31:24 Type-bound procedures serve to implement abstract data types with dynamically bound operations. An abstract data type is a user-defined type which encapsulates private data together with a set of operations that can be used to manipulate this data. In Modula-2 or in Oberon an abstract data type is implemented as a record type and a set of procedures. 09:32:10 I miss the time back when PC motherboards worked fine with AT keyboards plugged in with an AT-PS2 converter. 09:32:16 int-e: at least Smalltalk isn't dying. 09:32:20 would be a shame if it did. 09:32:26 It's so productive and widely used. 09:32:36 and it's good . 09:32:41 good keyboards still exist, but they are hard to find among all those cheap crappy lightweight plastic things, and the we-fit-200-extra-useless-buttons "gaming" and "multimedia" keyboards. 09:33:03 .oO (Does int-e have a steal keyboard) 09:33:09 *steel 09:33:11 int-e: exactly. 09:33:36 mroman_: no, just a Cherry G80. It's sturdy enough. 09:34:33 (even those are getting worse, and they didn't bother to change the model number) 09:34:34 int-e: sounds nice 09:34:48 what? they don't chagne the model number? 09:34:55 eww 09:35:04 Not the marketable part of it. 09:35:15 I should buy a better keyboard 09:35:29 I just need something that's easier on my wrists and hands. I'm starting to get serious pain issues with my right arm. 09:35:29 G80-3000LQCEU-0 <-- I can't remember all of this. 09:35:56 int-e: is some of that telling the layout and the labels on the keycaps? 09:36:12 I seriously considered getting a Model M, but I've heard good things about that new MS ergo keyboard. 09:36:32 b_jonas: right, and some of it encodes the key characteristics (click, curve of force while pressing the key) 09:36:47 J_Arcane: quite possible, because at least some of the MS mice are quite good 09:37:12 The original MS ergo was quite lovely once you got used to it. 09:38:01 A new pointing device wouldn't go amiss either; if it weren't for gaming I'd probably use a trackball. 09:38:36 J_Arcane: you could buy both if you do gaming and other sort of work 09:39:05 "programming languages are tools to solve a problem but one tool may not solve every problem. a hammer or saw or drill cannot do everything." 09:39:12 ^- this guy is clearly not creative enough. 09:39:44 he's bought the wrong drill 09:40:08 Indeed. :D Should've bought a dremel. ;) 09:40:09 also this comparison doesn't make sense with programming languages 09:40:10 nah, he needs a bigger hammer. 09:40:18 Assembly can do everything 09:40:20 so....? 09:40:26 err 09:40:32 "in principle" 09:40:43 As well as in practice. 09:40:57 If ASM where the hammer 09:41:04 -!- password2 has joined. 09:41:06 then every other tool like the saw would be implemented using hammers. 09:41:27 If I had to write any big program in assembly language I'd write a compiler :/ 09:41:30 ASM is a smelting oven. ;) 09:41:31 I'd like to see you build a pump only with hammers. 09:42:05 It's just too tedious to always take care of all the small details (like which value is currently in which register) oneself. 09:42:25 Right. But you'd have to write the compiler in assembly first 09:42:39 It'll pay dividends quickly.; 09:43:11 Yeah; personally, I've never been great at that kind of low-level thinking. I just can't get my head around it. I understand the very basics, but making my brain go to the place where shuffling numbers does things is trickier. :P 10:07:12 -!- oerjan has joined. 10:07:59 @messages- 10:07:59 mroman_ said 2h 31m 49s ago: thx. 10:21:43 I wrote my first z80 golf entry the other day. (It's not especially golfed, I suppose, but still.) 10:22:27 fizzie: nice 10:23:01 The most complicated bit of asm code I have ever written was the self-modifying "Hello, World" I wrote for the MicroMini examples. 10:23:42 -!- boily has joined. 10:25:15 in anagolf, where it lists the submitted valid solutions, what do question marks in the statistics columns mean? I have them next to my entries 10:25:36 it means you didn't check the statistics button when submitting 10:25:46 so the actual numbers are hidden 10:25:49 oh, I hvae to check that? ah 10:25:58 yes, it's a bit annoying 10:39:07 `? monad 10:39:07 Monads are just monoids in the category of endofunctors. 10:39:17 `? group 10:39:17 group? ¯\(°​_o)/¯ 10:42:40 -!- Melvar has joined. 10:42:46 `? monoid 10:42:47 Monoids are just categories with a single object. 10:44:04 Monoids are semigroups with an identity element. Semigroups are magmas whose operation is associative. Magmas are sets equipped with a binary operation. 10:44:29 yeah 10:47:49 Stats should be on by default 10:50:30 `? categorie 10:50:31 categorie? ¯\(°​_o)/¯ 10:50:39 `? category 10:50:40 Categories are just a special case of bicategories. 10:50:47 `? bicategory 10:50:48 Bicategories are just categories where composition is only associative up to an isomorphism. 10:50:55 `? isomorphism 10:50:55 isomorphism is isomorphic to Phantom_Hoover up to isomorphism. 10:52:19 `? Phantom_Hoover 10:52:19 Phantom Michael Hoover is a true Scotsman, hatheist, and completely out of the loop. 10:52:33 `learn groups are just loops with the property of associativity 10:52:35 I knew that. 10:52:59 `? loop 10:53:00 loop? ¯\(°​_o)/¯ 10:53:22 `? hipchat 10:53:23 hipchat? ¯\(°​_o)/¯ 10:53:29 `run echo "loop: see loop" > wisdom/loop 10:53:31 No output. 10:53:36 `? loop 10:53:36 loop: see loop 10:53:57 `? categorical product 10:53:58 categorical product? ¯\(°​_o)/¯ 10:54:05 `? direct product 10:54:06 direct product? ¯\(°​_o)/¯ 10:54:08 `? outer product 10:54:09 outer product? ¯\(°​_o)/¯ 10:54:11 :( 10:54:18 `learn hipchat is a chat where you can communicate solely by using meme-emoticons but shouldn't. 10:54:19 I knew that. 10:54:22 Tanelle. long time no see. 10:54:27 :) 10:54:37 I haven't been speaking in channel much lately 10:54:38 what does it call categorical product? 10:54:52 I suddenly found myself to have a social life 10:55:01 a categorical product is when you're very sure of the end result. 10:55:06 * boily gasps! 10:55:07 `? social life 10:55:08 social life? ¯\(°​_o)/¯ 10:55:17 Taneb: how's the social life going on? 10:55:31 Pretty good 10:55:35 A lot of tabletop games 10:56:31 Tonight I've got a board games night 10:57:32 ah, another one who succumbed into the ranks of the Boardgaming Sect :D 10:57:37 which ones are you gonna play? 10:57:50 Whatever people bring 10:57:58 We play Mansions of Madness quite a lot 10:59:12 b_jonas: we don't want product wisdoms to start multiplying hth 11:00:01 Taneb: never tried, but from the pictures on BGG it looks quite interesting. 11:02:19 `define categorical product is like when you have two category elements A and B then their product is element C iff there are two morphisms p:C->A and q:C->B such that for every element X and morphisms u:X->A and v:X->B there is a morphism w:X->C such that u=wp and v=wq. 11:02:20 Failed to connect to socket 2. \ \ Looking up 127.0.0.1:3128 \ Making HTTP connection to 127.0.0.1:3128 \ Sending HTTP request. \ HTTP request sent; waiting for response. \ Alert!: Unexpected network read error; connection aborted. \ Can't Access `http://google.com/search?q=define:%63%61%74%65%67%6f%72%69%63%61%6c%20%70%72%6f%64%75%63%74%20%69%73% 11:02:24 huh 11:02:57 `learn categorical product is like when you have two category elements A and B then their product is element C iff there are two morphisms p:C->A and q:C->B such that for every element X and morphisms u:X->A and v:X->B there is a morphism w:X->C such that u=wp and v=wq. 11:02:58 I knew that. 11:03:01 good 11:04:29 `define road 11:04:30 Failed to connect to socket 2. \ \ Looking up 127.0.0.1:3128 \ Making HTTP connection to 127.0.0.1:3128 \ Sending HTTP request. \ HTTP request sent; waiting for response. \ Alert!: Unexpected network read error; connection aborted. \ Can't Access `http://google.com/search?q=define:%72%6f%61%64' \ Alert!: Unable to access document. \ \ lynx: Can't 11:04:37 broken I guess 11:08:32 oh fungot. another wisdom entry with mathematicalities... 11:08:52 `? categorical 11:08:53 categorical product is like when you have two category elements A and B then their product is element C iff there are two morphisms p:C->A and q:C->B such that for every element X and morphisms u:X->A and v:X->B there is a morphism w:X->C such that u=wp and v=wq. 11:09:16 `run mv wisdom/categorical{, product} 11:09:16 mv: cannot stat `wisdom/categorical{,': No such file or directory 11:09:22 time to cleanse myself with softly parfumed soap, and void my memories of CT. 11:09:31 `run mv wisdom/categorical{," product"} 11:09:33 No output. 11:09:35 -!- boily has quit (Quit: ALTOID CHICKEN). 11:09:40 `? categorical product 11:09:40 categorical product is like when you have two category elements A and B then their product is element C iff there are two morphisms p:C->A and q:C->B such that for every element X and morphisms u:X->A and v:X->B there is a morphism w:X->C such that u=wp and v=wq. 11:10:23 i wish HackEgo supported knowing who submitted a command so i could have `learn censor people who obviously don't know how to use it. 11:11:56 also, that entry is far too accurate for wisdom/, i think. 11:12:26 actually, i think there is an obvious solution. 11:12:32 `url bin/learn 11:12:33 http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/bin/learn 11:15:18 boily, Mansions of Madness is great fun :) 11:15:19 `run sed -i '6cecho "Learned '"'"'$topic'"'"': $stuff"' bin/learn 11:15:19 No output. 11:15:44 wat 11:16:07 First exercise sheet of the academic year, on Group Theory 11:16:08 `run echo sed -i '6cecho "Learned '"'"'$topic'"'"': $stuff"' bin/learn 11:16:08 sed -i 6cecho "Learned '$topic': $stuff" bin/learn 11:16:38 `run sed '6cecho "Learned '"'"'$topic'"'"': $stuff"' bin/learn 11:16:38 ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." 11:17:34 `run sed '6cecho "Learned *$topic*: $stuff"' bin/learn 11:17:35 ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." 11:17:57 `run sed '6cecho Argh' bin/learn 11:17:58 ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." 11:18:50 `run sed '6c\echo "Learned '"'"'$topic'"'"': $stuff"' bin/learn 11:18:51 ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." 11:20:17 `run sed '6c \boo' bin/learn 11:20:17 ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." 11:20:35 `run sed "6c \\\nboo" bin/learn 11:20:35 ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." 11:20:55 `run sed '6s/.*/Boo!' bin/learn 11:20:56 sed: -e expression #1, char 10: unterminated `s' command 11:21:02 `run sed '6s/.*/Boo!/' bin/learn 11:21:03 ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that." 11:21:16 ok something is ridiculously wrong 11:21:26 `run sed '1,5d' bin/learn 11:21:27 No output. 11:21:29 Hmm, how about: A product is the limit of a discrete diagram. 11:21:45 `wc bin/learn 11:21:46 ​ 5 17 130 bin/learn 11:23:34 I'm beginning to wonder if the way I learn programming languages is anything like the way most books seem to want to teach programming languages, or even if I should bother with books at all ... 11:23:52 int-e: dunno, feel free to fix that entry 11:24:14 wait wat 11:24:49 argh stupid IE 11:25:46 what happened was that when i pasted the result from `url into the address bar, it noticed that it was a prefix of bin/learn_append which i'd already visited, so it auto-completed it :( 11:26:50 so i've been trying to sed based on the wrong file contents all this time 11:26:50 I'm not sure that's the correct definition anyway, but it's something close. 11:28:41 `run sed '4c\echo "Learned '"'"'$topic'"'"': $1"' bin/learn 11:28:42 ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "Learned '$topic': $1" 11:28:50 `run sed -i '4c\echo "Learned '"'"'$topic'"'"': $1"' bin/learn 11:28:52 No output. 11:29:12 `learn Hi there 11:29:13 Learned 'hi': Hi there 11:29:23 `revert 11:29:23 Done. 11:30:08 `? hi 11:30:10 hi? ¯\(°​_o)/¯ 11:30:45 once again, a `revert doesn't show up in the repository 11:31:11 seems to happen whenever the `revert deletes a file 11:32:01 @tell Gregor it seems to me that the HackEgo repository doesn't pick up any edits that consist solely of file deletions 11:32:01 Consider it noted. 11:32:39 `rm bin/learn 11:32:41 No output. 11:32:56 `revert 11:32:57 Done. 11:33:20 @tell Gregor *reverts 11:33:20 Consider it noted. 11:34:11 ...it says I need to do 1 part x 11:34:16 Question one goes up ti ix 11:34:21 ix < x 11:34:28 > "ix" < "x" 11:34:29 True 11:37:25 `sed -i '6cecho -n "Learned '"'"'$topic'"'"': ;cat "wisdom/$topic" 11:37:26 Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... \ \ -n, --quiet, --silent \ suppress automatic printing of pattern space \ -e script, --expression=script \ add the script to the commands to be executed \ -f script-file, --file=script-file \ add the contents of script- 11:37:29 argh 11:37:40 `sed -i '6cecho -n "Learned '"'"'$topic'"'"': ;cat "wisdom/$topic"' bin/learn_append 11:37:41 Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... \ \ -n, --quiet, --silent \ suppress automatic printing of pattern space \ -e script, --expression=script \ add the script to the commands to be executed \ -f script-file, --file=script-file \ add the contents of script- 11:37:50 ff 11:38:11 `sed -i '6cecho -n "Learned '"'"'$topic'"'"': ";cat "wisdom/$topic"' bin/learn_append 11:38:12 Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... \ \ -n, --quiet, --silent \ suppress automatic printing of pattern space \ -e script, --expression=script \ add the script to the commands to be executed \ -f script-file, --file=script-file \ add the contents of script- 11:39:00 `echo sed -i '6cecho -n "Learned '"'"'$topic'"'"': ";cat "wisdom/$topic"' bin/learn_append 11:39:01 sed -i '6cecho -n "Learned '"'"'$topic'"'"': ";cat "wisdom/$topic"' bin/learn_append 11:39:13 oh hm right 11:39:47 `run sed -i '6cecho -n "Learned '"'"'$topic'"'"': "\'"\n"'cat "wisdom/$topic"' bin/learn_append 11:39:49 No output. 11:40:08 dammit 11:41:06 `revert 11:41:07 Done. 11:42:10 `echo sed -i '6cecho -n "Learned '"'"'$topic'"'"': "\'"\n"'cat "wisdom/$topic"' bin/learn_append 11:42:11 sed -i '6cecho -n "Learned '"'"'$topic'"'"': "\'"\n"'cat "wisdom/$topic"' bin/learn_append 11:42:34 argh escapes 11:42:39 also brain 11:43:49 `run sed -i '6cecho -n "Learned '"'"'$topic'"'"': *cat "wisdom/$topic"' bin/learn_append 11:43:51 No output. 11:44:25 `run sed -i '6s/[*]/"\n/' bin/learn_append 11:44:27 No output. 11:44:45 `learn hi there 11:44:47 Learned 'hi': hi there 11:44:55 `learn_append hi shmere 11:44:56 Learned 'hi': hi there shmere 11:45:19 `rm wisdom/hi 11:45:21 No output. 11:45:55 this might suffice. 11:54:50 -!- S0 has quit (Quit: S0). 12:00:20 what's the haskell analogue for factories? 12:00:39 functions hth 12:00:47 http://codepad.org/sM6qv7TJ <- is obviously bullshit 12:01:26 (mainly because you can't create a Storage m a) 12:02:09 wat 12:02:21 -!- password2 has quit (Remote host closed the connection). 12:02:23 * oerjan doesn't really know what factories are, anyway 12:02:25 -!- GeekDude has joined. 12:02:42 The idea is that you can choose at runtime whether to use InMemStorage or FileStorage 12:02:47 which you can't using this approach 12:03:47 http://codepad.org/hgsHD9ov <- you can't implement chooseStorage 12:04:52 you need some type quantification. 12:05:05 by which time you can just as well drop the classes. 12:06:59 I tried forall s. s => Storage IO s -> String -> Storage IO s 12:07:02 but that doesn't work 12:08:56 mroman_: http://codepad.org/eO6Utx42 12:09:13 much simpler 12:09:45 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds). 12:10:18 except that it doesn't compile 12:10:53 fixed typo http://codepad.org/lUBrpKfU 12:11:35 hm type error 12:11:49 yep 12:11:51 type error 12:11:56 in chooseStorage 12:12:07 Couldn't match type ‘IORef String’ with ‘IO (IORef a1)’ 12:13:17 oh hm 12:13:57 oh 12:14:00 IORef needs an a 12:14:04 a -> IO (IORef a) 12:14:28 yep 12:14:28 newIORef, right 12:14:32 r <- newIORef "" 12:15:08 fixed http://codepad.org/DQEngwnh 12:15:26 btw MVars, unlike IORefs, can be empty fwiw 12:19:05 anyway the main lesson here is that classes are often overkill in haskell, and can actually make it _harder_ to make things dynamic. 12:19:49 while a data type with functions in it can work better 12:25:16 oerjan: Thx. 12:25:23 I didn't know that. But this looks pretty powerful. 12:26:03 I intend to use that for my emulator 12:26:13 so I can switch easily between different implementations for memory 12:31:57 such data types are actually classes :D 12:32:06 on some level 12:32:39 they're dictionaries. and ghc's internal representation of classes uses them. 12:33:13 sometimes you need a bit of type quantification in addition. 12:46:40 -!- Frooxius has joined. 12:47:55 -!- Frooxius has quit (Client Quit). 12:49:01 -!- Frooxius has joined. 13:03:14 > [1..]>>=($"123").replicateM 13:03:15 ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",... 13:03:56 > [1..]>>=(`replicateM`"123") 13:03:57 ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",... 13:04:14 hm i guess it's the same length 13:04:45 yes. but "import Control.Monad" is too long anyway. :) 13:05:05 ic 13:06:53 -!- Froox has joined. 13:08:31 > [1..]>>=($"123").mapM id.replicate 13:08:32 Couldn't match type ‘a0 -> [a0]’ with ‘[[GHC.Types.Char] -> b]’ 13:08:32 Expected type: GHC.Types.Int -> [[GHC.Types.Char] -> b] 13:08:32 Actual type: GHC.Types.Int -> a0 -> [a0] 13:08:34 oops 13:09:01 @src replicateM 13:09:01 replicateM n x = sequence (replicate n x) 13:10:08 -!- drdanmaku has joined. 13:10:37 -!- Frooxius has quit (Ping timeout: 244 seconds). 13:10:41 > [1..]>>= \n->mapM id$[1..n]>>"123" 13:10:43 Couldn't match type ‘[b]’ with ‘GHC.Types.Char’ 13:10:43 Expected type: [[b]] 13:10:43 Actual type: [GHC.Types.Char] 13:10:59 wtf is with you 13:11:14 > [1..]>>= \n->mapM id$[1..n]>>["123"] 13:11:15 ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",... 13:14:18 > [1..]>>= \n->mapM(\_->"123")[1..n] -- also same length 13:14:19 ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",... 13:15:24 um no? 13:15:40 that's 7 chars longer 13:16:00 what is all this nonsense going on 13:17:16 I guess golfing? 13:17:40 > [1..]>>= \n->mapM(>>["123"])[1..n] 13:17:41 No instance for (GHC.Enum.Enum [a0]) 13:17:41 arising from the arithmetic sequence ‘1 .. ’No instance for (GHC.Num.Num [... 13:17:43 a program that lists all sequences of 1,2, and 3? 13:17:53 I was comparing to [1..]>>= \n->mapM id$[1..n]>>"123" 13:18:17 > do n<-[1..];mapM id$[1..n]>>"123" 13:18:18 Couldn't match type ‘[b]’ with ‘GHC.Types.Char’ 13:18:19 Expected type: [[b]] 13:18:19 Actual type: [GHC.Types.Char] 13:18:21 well that was buggy 13:18:27 oh, right. 13:18:32 i guess you could call that "counting in quaternary" 13:18:56 well no 13:19:08 "counting in ternary with the wrong digits" 13:19:17 > do n<-[1..];mapM(\_->"123")[1..n] 13:19:18 ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",... 13:19:44 yes, hello hello world still annoys me. 13:20:27 what is it 13:20:53 http://golf.shinh.org/p.rb?hello+hello+world 13:21:38 > mapM id`map`iterate("123":)[] 13:21:40 [[""],["1","2","3"],["11","12","13","21","22","23","31","32","33"],["111","1... 13:21:42 oops 13:21:54 > mapM id=< ["","1","2","3","11","12","13","21","22","23","31","32","33","111","112","11... 13:22:13 > iterate("123":)[]>>=sequence -- right. mapM id == sequence 13:22:14 ["","1","2","3","11","12","13","21","22","23","31","32","33","111","112","11... 13:22:31 mapM id is slightly shorter 13:22:55 So it is. I can't count. 13:25:31 incidentally this is _still_ counting the wrong way for the problem. 13:25:57 I know! 13:27:24 !blsq 15{3B!}GO 13:27:24 {"1" "2" "10" "11" "12" "20" "21" "22" "100" "101" "102" "110" "111" "112" "120" 13:28:14 -!- Patashu has quit (Ping timeout: 272 seconds). 13:28:43 !blsq "123"3cb 13:28:43 {"1" "2" "3" "11" "12" "13" "21" "22" "23" "31" "32" "33" "111" "112" "113" "121 13:30:40 oerjan: yeah looks like the output is standard ternary counting order yeah? 13:30:52 yes 13:31:17 starting at 0 13:31:18 -!- Froox has quit (Quit: *bubbles away*). 13:31:28 int-e: no, starting at 1 13:31:49 nope, 0 13:31:50 i'm surprised the shortest answer is 48 13:31:59 wat 13:32:23 oerjan: we're talking hello hello world right 13:32:31 oerjan: burlesque 13:32:40 right 13:32:41 quintopia: oerjan and I are competing on the Haskell one 13:33:06 hence all the (irrelevant, but topically related) Haskell snippets above 13:33:15 (they're actually more relevant to the latest problem) 13:33:45 oh there are new ones 13:33:53 well plenty of time 13:34:17 quintopia: It's very possibly not the shortest, just not many people have given it a go. 13:34:18 still working on the obeliks 13:36:21 when considering trailing whitespace, int-e starts looking hard to beat. 13:38:22 -!- Frooxius has joined. 13:39:31 I still don't even know what the logic of obeliks was. 13:40:05 * oerjan cackles evilly 13:40:27 it's actually really simple 13:41:35 but the fact that all except one of the columns in the example skew into a straight line might deceive you. 13:41:41 *examples 13:41:50 *test cases 13:42:08 there's just three test-cases you have to hard-code 13:42:13 why would there have to be logic? 13:42:18 b_jonas: there is. 13:42:27 sure there is, but it's not important 13:43:37 oh well, maybe hard-coding would be shorter. 13:43:45 surely for _some_ languages. 13:47:16 oerjan: I'm a bit annoyed that the easy problems run for 14 days and the harder "count the overlap" one only for a week 13:47:49 heh 13:47:51 48 for what? 13:48:12 mroman_: Burlesque for hello hello world. 13:48:38 gs2 has 36B for it 13:49:24 hm 13:49:25 is it 13:49:29 !blsq {0 1 2}3cb 13:49:30 {{0} {1} {2} {0 0} {0 1} {0 2} {1 0} {1 1} {1 2} {2 0} {2 1} {2 2} {0 0 0} {0 0 13:49:45 !blsq {0 1 2}3cb{"world hello world!"wdjsi}m[ 13:49:45 {{"world"} {"hello"} {"world!"} {"world" "world"} {"world" "hello"} {"world" "wo 13:49:56 nope 13:50:15 !blsq {0 1 2}3cb{"world hello !"wdjsi}m[ 13:50:16 {{"world"} {"hello"} {"!"} {"world" "world"} {"world" "hello"} {"world" "!"} {"h 13:51:00 It would be 0 1 2 10 11 12 20 21 22 100 101 ..., i.e. just ternary count with no trailing zeros except for 0 itself. 13:51:28 ah ok 13:51:43 !blsq 15{3B!}cb 13:51:43 ERROR: Burlesque: (cb) Invalid arguments! 13:51:47 !blsq 15{3B!}GO 13:51:47 {"1" "2" "10" "11" "12" "20" "21" "22" "100" "101" "102" "110" "111" "112" "120" 13:51:50 like that then 13:51:55 !blsq 15{3B!}GZ 13:51:55 {"0" "1" "2" "10" "11" "12" "20" "21" "22" "100" "101" "102" "110" "111" "112" " 13:52:04 Yes. 13:52:22 !blsq 15{3B!riXX}GZ{"world hello world!"wdjsi}m[ 13:52:22 {{"world"} {"hello"} {"world!"} {"hello" "world"} {"hello" "hello"} {"hello" "wo 13:54:18 45B 13:54:20 k 13:55:04 fizzie: I think you mean leading zeros, hth 13:55:12 44B 13:55:29 int-e: YES 13:56:11 fizzie: you might enjoy http://golf.shinh.org/p.rb?print+numbers+reversed though *ducks* 13:57:42 41B 13:59:12 -!- brandons1 has joined. 13:59:32 mroman_: I didn't even know you can XX an integer, my 48B one was kind of a 3B!XX plus [-ri ... j!! kinda thing on each individual digit. 14:00:35 oh 14:00:38 :) 14:00:45 then you might get <41B by using XX on an integer? 14:01:00 Probably not, that's already 7 characters shorter. 14:02:13 -!- brandonson has quit (Ping timeout: 260 seconds). 14:02:21 It did make for an obvious 48->46, though. 14:02:49 I don't think you can compress "world hello world!" 14:03:18 or maybe you can 14:03:46 nah 14:03:46 In my Haskell snippets, sometimes you can, sometimes you can't... 14:03:47 I tried, but couldn't. 14:03:48 too short already 14:04:15 let's wait for teebee to make his move 14:04:17 :D 14:05:43 btw {f}GZ{g}m[ is the same as {fg}GZ 14:05:59 (map f . map g == map (f . g)) 14:08:15 39B 14:11:06 !bf_textgen hello 14:14:37 !blsq 0 3dg 14:14:37 {} 14:14:39 this sucks 14:14:39 -!- kcm1700_ has quit (Remote host closed the connection). 14:14:40 -!- kcm1700 has joined. 14:14:41 if this were {0] 14:14:43 {0} 14:14:47 it would be soo much shorter 14:17:45 I noticed that too. In fact, my initial attempts built on 3dg and trying to handle the 0 separately, but they were all longer. 14:18:07 `! bf_txtgen hello 14:18:11 51 +++++++++++++[>++++++++>>><<<<-]>.---.+++++++..+++. [161] 14:18:12 ion: ^ 14:18:16 Thanks 14:19:56 I can get 43B with 3dg 14:20:05 but handling the 0 is really tedious 14:24:29 it requires a "world"Q at the end of my program 14:24:52 -!- spiette has joined. 14:25:17 either that or some crazy Pp pP shit 14:25:20 which is also 43B 14:26:02 hm 14:26:02 wait 14:31:05 but 60B 14:31:05 wth 14:31:11 Even my crappiest solution so far is 49B 14:33:33 -!- oerjan has quit (Quit: leaving). 14:33:49 it can be made less crappy to 48B though 14:33:52 but still pretty crappy 14:33:55 it uses M- 14:33:58 no way, I've written crappier I think 14:34:01 let me check 14:34:14 {bx{3B!riXXsw}.+}m[M-uN 14:34:34 http://golf.shinh.org/p.rb?hello+hello+world says I wrote 583 bytes 14:34:41 in what language? 14:34:44 perl 14:34:46 oh well 14:34:50 ok, that's bad, let me replace it with a real solution 14:34:52 I can't say anything about Perl 14:35:12 a few minutes, let me write one 14:35:25 I think that one basically encoded the whole output or something 14:36:25 I've heard Perl is dying 14:36:31 So I'm not gonna start golfing in it. 14:37:01 I might not make it the golfiest, but 583 is riddiculously long 14:37:05 I'll write something more decent 14:37:17 mroman_: I suppose you *can* say anything about Perl. 14:38:00 rip in peace 14:38:33 I didn't say that 14:38:36 I've heard that 14:38:59 but I treat it as a reliable source for my own convenience since I hate perl 14:40:07 It doesn't even have arguments 14:41:31 it has this ugly @_ thingy 14:41:49 -!- mihow has joined. 14:42:16 there, 78 bytes 14:42:36 much better 14:43:29 now let me see if I can cut a few bytes 14:44:29 can so 14:44:33 75 bytes 14:44:55 ais is leading with 72 bytes 14:45:24 ah duj 14:45:39 72 me too 14:45:51 ok, now the difficult part, how can I cut it more 14:47:11 use a knife. 14:47:32 it doesn't accept extra spaces in the lines 14:53:03 also, I could compress world world! 14:53:21 I had to write world only once in the source 14:54:10 I think I wanna do a golfLisp at some point, with 1 character keywords a la Pilot and Mouse. 14:54:57 ah 14:55:00 you could just define some macros in lisp-of-your-choice. 14:55:12 being the author of burlesque I can say to you: There's no point doing that 14:55:17 sure the programs will be shorter 14:55:26 but what about the soul 14:55:30 exactly 14:55:38 i.e. if you map lisp commands to 1bytes 14:55:40 it's still lisps 14:55:43 *LISP 14:55:47 it's shorter.. but it's still LISP 14:55:51 so might as well just golf in LISP 14:56:14 i.e. it doesn't provide additional fun 14:56:28 Bike: This is true. But I've a couple books in my queue on writing Lisps, so it might be doable to kill two birds with one stone. ;) 14:57:08 and as for "as short as possible" 14:57:11 though, it's true as well that as a Scheme/Racket fan I actually kinda like the verbosity of that flavor. 14:57:13 gs2 is pretty damn good at that 14:57:47 better than golfscript, flogscript and burlesque 14:57:54 it seems that compressing world world! saved 3 bytes 14:57:59 in old editions of chaitin's Algorithmic Information Theory he used a lisp that used the apl character set 14:58:15 or maybe only 2 14:58:17 dunno 14:58:50 and implicit parens. it's horrifying 15:00:01 Bike: Dear god, it sounds it. 15:00:18 it's also compiled to diophantine equations 15:00:20 sounds like a joke 15:15:05 -!- shikhout has joined. 15:17:52 -!- shikhin has quit (Ping timeout: 240 seconds). 15:19:06 `unicode CURLY LETTER R 15:19:07 No output. 15:19:51 I guess this does not have some search heuristics? 15:20:28 `unicode THAT WEIRD SYMBOL USED IN MAIL ADDRESSES USUALLY IN THE MIDDLE 15:20:29 No output. 15:20:45 `cat :-( 15:20:46 ​☹ 15:26:01 "Hijack do-notation for Applicative " 15:26:03 mroman_, it is the name of the character I think 15:26:07 Why is that an evil Haskell tip? 15:26:44 `unicode LATIN SMALL LETTER SIDEWAYS TURNED M 15:26:45 ​ᴟ 15:27:22 `unicode ROMAN NUMERAL NINE 15:27:22 ​Ⅸ 15:27:53 `unicode TURNED M 15:27:53 U+019C LATIN CAPITAL LETTER TURNED M \ UTF-8: c6 9c UTF-16BE: 019c Decimal: Ɯ \ Ɯ (ɯ) \ Lowercase: U+026F \ Category: Lu (Letter, Uppercase) \ Bidi: L (Left-to-Right) \ \ U+026F LATIN SMALL LETTER TURNED M \ UTF-8: c9 af UTF-16BE: 026f Decimal: ɯ \ ɯ (Ɯ) \ Uppercase: U+019C \ Category: Ll (Letter, Lowercase) \ Bidi: L (Left-to-Ri 15:27:56 ah 15:27:57 ok 15:28:02 `unicode LETTER R 15:28:02 U+0052 LATIN CAPITAL LETTER R \ UTF-8: 52 UTF-16BE: 0052 Decimal: R \ R (r) \ Lowercase: U+0072 \ Category: Lu (Letter, Uppercase) \ Bidi: L (Left-to-Right) \ \ U+0072 LATIN SMALL LETTER R \ UTF-8: 72 UTF-16BE: 0072 Decimal: r \ r (R) \ Uppercase: U+0052 \ Category: Ll (Letter, Lowercase) \ Bidi: L (Left-to-Right) \ \ U+0154 LATIN CA 15:28:15 `unicode LETTER CURLY 15:28:16 No output. 15:28:18 hm 15:28:30 `unicode R MATH 15:28:31 No output. 15:28:46 `unicode ROMAN NUMERAL FIFTY 15:28:46 ​Ⅼ 15:28:52 `unicode ROMAN NUMERAL THOUSAND 15:28:54 No output. 15:28:58 `unicode ROMAN NUMERAL 15:28:58 `unicode MATHEMATICAL BOLD FRAKTUR CAPITAL R 15:28:59 U+2160 ROMAN NUMERAL ONE \ UTF-8: e2 85 a0 UTF-16BE: 2160 Decimal: Ⅰ \ Ⅰ (ⅰ) \ Lowercase: U+2170 \ Category: Nl (Number, Letter) \ Numeric value: 1 \ Bidi: L (Left-to-Right) \ Decomposition: 0049 \ \ U+2161 ROMAN NUMERAL TWO \ UTF-8: e2 85 a1 UTF-16BE: 2161 Decimal: Ⅱ \ Ⅱ (ⅱ) \ Lowercase: U+2171 \ Category: Nl (Num 15:28:59 ​𝕽 15:29:28 `unicode SCRIPT CAPITAL R 15:29:28 ​ℛ 15:30:00 `unicode DOUBLE-STRUCK CAPITAL R 15:30:01 ​ℝ 15:31:16 I wonder if I could cut one more character with some trick 15:31:42 b_jonas, from what? 15:35:26 hmm, I could actually use the pid trick here 15:35:29 that could save three chars 15:35:36 Taneb: http://golf.shinh.org/p.rb?hello+hello+world 15:39:23 hmm, I don't see how to save one character this way, unless I use the pid trick to safe three characters right 15:39:39 is that evil? 15:39:48 there must be some other ways to save 15:42:02 there, I used the pid trick. now I'm evil 15:42:28 no wait, it failed 15:43:53 there 15:44:43 -!- dianne has joined. 16:10:46 -!- nycs has joined. 16:12:20 -!- `^_^v has quit (Ping timeout: 260 seconds). 16:15:58 -!- AnotherTest has joined. 16:32:09 -!- MoALTz has joined. 16:40:29 -!- tlvb has joined. 16:47:02 [wiki] [[Talk:Polyglot]] http://esolangs.org/w/index.php?diff=40597&oldid=39879 * 91.127.56.175 * (+302) /* Minimal languages for polyglot quine */ new section 16:48:55 -!- idris-bot has joined. 16:54:14 -!- Phantom_Hoover has joined. 16:54:39 puhun vähän suomea. 16:54:52 also why doesn't windows have Dvorak International 16:54:53 or does it 16:56:31 also where the hell can I change it on Windows 8.1 16:57:28 mroman_: change stuff in windows 8.1? isn't that like unconfigurable because they know better what you want than you do? 16:57:38 no it's just hidden everywhere 16:57:45 some things you can change through the metro thingy 16:57:55 others through the regular control pannel 16:58:05 windows is pretty configurable... 16:58:16 and some stuff looks metro but is actually just a fullscreen window in the normal desktop environment 16:58:42 it's confusing if it pops up 16:58:49 hm? I don't think there is such a distinction 16:58:52 and you think it's metro so you press the windows key to switch back to the desktop 16:59:15 but since it's still on the desktop pressing the windows key will switch to the metro homepage thingy 16:59:52 elliott_: you can open metro applications while being on the desktop 17:00:00 and they are displayed fullscreen 17:00:08 but it's not considered to be in "metro" mode 17:00:23 (i.e. like I said pressing the windows key won't get you the desktop back) 17:00:30 you have to close the fullscreen window 17:00:36 before you can see your desktop again 17:01:31 Do anti-virus manufacturers still distinguish between spyware and other stuff? 17:01:43 Why would I need spyware protection if I have malware protection? 17:01:56 does malware protection not protect against malware spying on me? 17:02:10 or is this just to lure innocent people into paying for something they don't need 17:24:44 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)). 17:24:46 I think ALT+F4 and ALT+TAB and stuff are still the same for Metro and non-Metro though. 17:27:26 And did you see if WIN+D still works to bring back the desktop screen? 17:36:19 -!- GeekDude has joined. 17:43:31 -!- FreeFull has quit. 17:47:53 -!- shikhout has changed nick to shikhin. 17:49:16 -!- glogbackup has quit (Remote host closed the connection). 17:58:59 -!- conehead has joined. 17:59:05 -!- conehead has quit (Changing host). 17:59:05 -!- conehead has joined. 18:01:03 -!- glogbackup has joined. 18:05:13 -!- glogbackup has quit (Remote host closed the connection). 18:21:19 -!- Vorpal_ has changed nick to Vorpal. 18:21:29 HI 18:21:34 Hi* 18:25:13 hI 18:26:31 !blsq "hH""iI"cpwD 18:26:31 hi hI Hi HI 18:27:36 [ ,'hH',"0/'iI' 18:27:37 b_jonas: hihIHiHI 18:27:46 [ ,' ','hH',"0/'iI' 18:27:47 b_jonas: hihIHiHI 18:27:51 [ ,' ',.'hH',"0/'iI' 18:27:51 b_jonas: hihI HiHI 18:27:56 [ ,' ',"1'hH',"0/'iI' 18:27:56 b_jonas: hi hI Hi HI 18:29:30 [ ;{' ';'hH';'iI' 18:29:31 b_jonas: hi hI Hi HI 18:30:15 !blsq "hi"XX{JZZ_+}MPcpwD "there's probably a better way to do that so that it doesn't include repeating"vv 18:30:16 hi hI Hi HI 18:41:57 -!- drdanmaku has quit (Quit: Connection closed for inactivity). 18:54:12 -!- spiette has quit (Quit: :qa!). 19:08:15 terve vorpal 19:08:26 Hm? 19:08:49 or something like that 19:09:02 or was it Hei 19:09:03 kay 19:09:08 I guess it was Hei? 19:09:10 What language? 19:09:13 Finnish? 19:09:17 No idea 19:09:19 oh 19:09:25 somebody set me up then saying you speak it 19:09:32 No, I speak Swedish 19:09:49 So... Hej! 19:10:44 oh 19:10:45 ok 19:10:59 maybe I thingie swedish with finnish 19:11:30 confused 19:11:36 mroman_, fizzie, Deewiant and oklopol speak Finnish though at least 19:11:41 Not sure who else 19:11:45 damnit my english skills are worsening. 19:11:49 Probably forgot someone 19:13:21 deteriorating, diminishing 19:13:45 mroman_, devolving? 19:14:17 devolve is negative? 19:14:31 The Finn-listing in the logs was quite complete and correct (you did forget a couple). 19:14:44 fizzie, oh? Where in the logs? 19:14:53 -!- Sorella has quit (Ping timeout: 260 seconds). 19:17:49 When mroman_ asked around about this last. 19:19:40 Ah 19:20:11 -!- nycs has changed nick to `^_^v. 19:20:27 It's a bit mixed up in there with other discussion, though. 19:20:40 I don't want to nickping people so I'll omit it anyway. 19:21:22 Or maybe I could mangle the names. 19:21:40 or craft a link 19:21:51 The fruits of my evening: (define (s f l) (match l ['() '()] [(cons h t) (append (s f (filter (curry (negate f) h) t)) `(,h) (s f (filter (curry f h) t)))])) 19:21:54 But the problem is, there's no complete list. 19:22:11 so. fizzie, Deewiant, oklopol and nortti 19:22:25 Also ate_hwa, inei_ros. 19:22:35 (I don't want to remember how to type a zero-width space.) 19:22:58 And J__Arcane (see what I did there) lives here but is not native, I think that was well-established. 19:23:12 Yes, I am indeed a resident. 19:23:14 Oh, and i_on is one too, I believe. 19:23:41 Or maybe they are Swedish with just a very Finnish-y name. 19:23:53 Ah 19:23:59 And we all know that sha_chaf is nominally Finnish. 19:24:19 hi fizzie 19:24:31 I put an underscore in your name you're not supposed to notice. 19:24:32 do we all know that sha_chaf has /hilight on chaf\b 19:24:39 We don't all know that. 19:24:58 ^scramble shachaf 19:24:59 I looked in /usr/share/dict/words and everything! 19:25:02 why would shac_haf do that? 19:25:04 Hey, where's fungot. 19:25:13 Oh, right, there was that power outage. 19:25:44 There are no words in /usr/share/dict/words that ends in chaf. All the entries matching "chaf" in fact starts with it 19:25:55 Exactly. 19:26:26 The main reason is that people keep misspelling the beginning of my name. 19:26:33 I guess "sachaf" happens often enough 19:26:42 shachaf, why? wouldn't they tab complete it? 19:26:43 what about sahchaf? 19:26:46 "schachaf" is very common 19:26:48 I type sh 19:27:01 -!- fungot has joined. 19:27:08 ^style 19:27:08 Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp youtube 19:27:08 Vorpal: You should set your IRC client to tab-complete with : rather than ,. 19:27:09 fungot: Hi there 19:27:10 mroman_: ( sum-ec ( :list x l)) nl)) is equivalent to set! a ( cond ( f 1) 19:27:15 shachaf, why? 19:27:22 ^style alice 19:27:22 Selected style: alice (Books by Lewis Carroll) 19:27:28 fungot: Are you quite sure about that? They don't look similar at all! 19:27:28 fizzie: " what a deal of teaching oo wants! she washes it little by fnord she begins at the other side. " did they box his ears for nothing? a precious pet!" 19:27:34 It looks like part of a sentence rather than part of a protocol this way. 19:27:37 fungot, does that include bruno and sylvie? 19:27:37 int-e: ' oh, ever so much more than that!' cried the poor queen groaned out: ' the man, oo know. if oo walked at it, oo'd go right froo!" 19:27:39 I don't like it. 19:27:43 shachaf! I don't see a reason to do so 19:28:00 fungot: tell us about bread 19:28:00 int-e: ' a little fnord we go and meet him and then we sing this song for your fnord!" thundered the vice-warden. " why, i thought, " in real life, is to deduce conclusions from workable premisses, and would hardly come out again ( so alice explained it afterwards), and they gave him three cheers, while he got out a dish and fnord. 19:28:08 I should totally set it to ! or ? 19:28:11 I used ; as the tab-separator a long time ago. 19:28:23 fizzie, why 19:28:36 It's a compromise between , and :, obviously. 19:28:41 Ah 19:28:44 The worst of both worlds. 19:28:55 ^scramble shachaf 19:28:55 sahfach 19:28:59 Not best= 19:29:02 s/=/?/ 19:29:04 At any rate, I'll try to remember to use sahfach next time. 19:29:33 fizzie: what are you trying to do @hi HI Hi? 19:29:51 I guess the "vice-warden" is from Sylvie and Bruno (and I did get that title wrong) indeed. 19:29:56 mroman_: Nothing at all, just there were three out of four on the channel already by that time. 19:30:17 The "launch EFI shell" option in the "BIOS" settings screen refuses to work on my desktop hrrm 19:30:39 !blsq "HhiI"2cb 19:30:39 {"H" "h" "i" "I" "HH" "Hh" "Hi" "HI" "hH" "hh" "hi" "hI" "iH" "ih" "ii" "iI" "IH 19:30:41 !blsq "HhiI"2CB 19:30:42 {"HH" "Hh" "Hi" "HI" "hH" "hh" "hi" "hI" "iH" "ih" "ii" "iI" "IH" "Ih" "Ii" "II" 19:30:50 a hollow shell, hmm 19:30:53 !blsq "HhiI"2CB:U_ 19:30:54 {"Hh" "Hi" "HI" "hH" "hi" "hI" "iH" "ih" "iI" "IH" "Ih" "Ii"} 19:31:14 int-e, nah "shell not found" even though I placed it in the designated location 19:31:45 -!- Sgeo_ has quit (Ping timeout: 246 seconds). 19:32:00 mroman_: I keep forgetting about the ) and the : and such. 19:32:47 What language is !blsq? 19:32:55 Burlesque. 19:32:59 Ah 19:33:15 that weird bloaty language ;) 19:33:36 I wrote one Befunge entry to anagolf too, the other day. 19:34:09 The weirdest thing is that they say they're using the reference interpreter, yet it seems to strip trailing newlines from lines when outputting numbers with . even though that's not part of what the reference interpreter does. 19:34:38 the interpreters it uses are in its source repo I think 19:35:17 fizzie, they don't have befunge98 though, that is annoying 19:36:15 They do. 19:36:19 It runs on CCBI. 19:36:28 It might be a new addition. 19:37:04 up to three maps using ) is better 19:38:15 Vorpal: Apparently since Aug 31, this year. 19:39:05 -!- AnotherTest has quit (Ping timeout: 260 seconds). 19:41:21 Hmm. The be/srv/s/bef script just does "exec /golf/local/befunge -i -q $1" (which doesn't strip newlines if I run the thing the "language version info" page links to, locally) and I didn't see the actual interpreter in the GitHub repo, though I might've missed it -- it's not part of the "fetched" things in be/Makefile either. 19:41:32 Oh well, it's not important. Just curious. 19:43:51 Deewiant: Speaking of which, how is it with CCBI and source file encodings, does it load things as bytes or UTF-8 or what? 19:44:36 Bytes 19:44:47 'k. 19:46:39 I guess it doesn't matter for fingerprint-loading anyway (the reason why I was wondering about it) since there's a multi-byte encoding built right in ( anyway, and it's even more efficient than UTF-8. 19:47:09 fizzie, ah cool 19:47:25 -!- AnotherTest has joined. 19:48:12 fizzie, I wonder, would a wchar_t befunge-98 be standard compliant 19:48:22 Or would it need to be an extension 19:48:26 It would be 19:48:44 Deewiant, really? That is 4 byte per character on Linux 19:48:49 The standard doesn't say anything about file encodings (or if it does, not much, IIRC) 19:49:05 Should add such an option to cfunge maybe, just for fun 19:49:23 I was going to implement the UTF-foos in CCBI but never got around to it 19:49:33 Well UTF is annoying 19:49:37 Maybe there are some hypothetical fingerprints that could be loaded shorter with 'X1( than "ab"2( where X is a two-byte UTF-8 encoding -- the ones from 0x1ff to 0x7ff, that is. 19:49:38 UCS4 is reasonable though 19:50:27 Er, I obviously mean from 0x100. 19:52:55 "Funge-98 source files are made up of Funge characters. The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.)" 19:53:12 That's a curious limitation, given that the funge-space cells are not limited to anything. 19:53:43 -!- Bicyclidine has joined. 19:58:07 fizzie, that is 2^31-1 19:58:09 Weird 20:03:35 fizzie: they're limited to the cell size, aren't they? 20:04:04 elliott_: He meant that the cell size limit can be arbitrarily large 20:04:41 Yes. Of cells it says: "What size exactly is left up to the implementer. 32 bits is typical. 16 bit and 8 bit versions are discussed as separate variations on Funge-98. More than 32 bits is just fine." 20:05:02 But of characters in the source file it gives that "no greater than 2^31-1" statement. 20:05:28 maybe they thought of extending it past 32 bits after writing that part. 20:06:39 Maybe they wanted "typical" implementations to be capable of loading any file (on systems they support) 20:11:54 fizzie, and of course bignum cells is poorly supported 20:11:57 Like efunge has 20:12:34 I seem to remember that some test program fails on it at least due to trying to get a cell size from y (which efunge iirc returns -1 on) 20:14:41 -!- dianne has quit (Quit: byeanne). 20:15:30 Well, UTF-8 can be used to store up to 36-bits character codes and it also is compatible with ASCII, so it could be used. (Trying to interpret it as Unicode can fail though, depending on which characters are used, because of different spacing.) 20:16:25 I might do UCS4, that is all 20:17:31 -!- dianne has joined. 20:17:49 bbl 20:31:07 -!- AnotherTest has quit (Remote host closed the connection). 20:46:45 -!- FreeFull has joined. 21:02:22 -!- Bicyclidine has quit (Ping timeout: 255 seconds). 21:03:05 -!- MoALTz has quit (Ping timeout: 260 seconds). 21:04:10 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)). 21:14:03 -!- Sorella has joined. 21:14:52 -!- Sorella has quit (Changing host). 21:14:53 -!- Sorella has joined. 21:15:20 -!- shikhout has joined. 21:18:07 -!- shikhin has quit (Ping timeout: 245 seconds). 21:28:31 -!- drdanmaku has joined. 21:28:40 -!- Patashu has joined. 21:46:03 -!- ais523 has joined. 21:46:34 hmm, fun spam subject line: "ARE YOU DEAD OR ALIVE????" 21:46:41 I see it's using the Radixal!!!! approach to punctuation 21:48:17 lol 21:49:38 ais523: also, I'll have to check 8 days later how you solved http://golf.shinh.org/p.rb?hello+hello+world with the exact same amount of bytes 21:49:56 I had to cheat to beat your solution 21:50:17 b_jonas: my solution uses $$, I didn't realise that was considered cheating 21:50:28 ais523: it's not really cheating on anagolf 21:50:36 but if it uses $$ then I'm less worried 21:50:47 that means you won't suddenly get ahead of me just by adding $$ 21:50:48 whew 21:51:05 but of course you might just make it shorter by other means 21:52:38 this hello hello world is a bit lucky because I have an obfu with a relevant technique on perlmonks 21:55:05 what's $$ 21:55:45 Phantom_Hoover: $$ is getpid() (except cached but that shouldn't matter) in perl and ruby 21:55:58 whither the cheat? 21:56:02 Phantom_Hoover: in linux, pids are only 15 bit long, so you can brute force forking until you get the right pid 21:56:15 ah? 21:56:18 so if you need a 15 bit long integer in an anagolf entry 21:56:29 you fork a lot before you submit to get the next pid right 21:56:32 ha, ok 21:56:36 then submit with $$ giving the right number 21:57:41 nice trick, and it happens to help here 21:58:07 b_jonas: you're aware that there's a PID setting utility that does the bruteforcing for you, right? 21:58:15 ais523: yes 21:58:17 presumably because shinh got fed up of people hammering the server 21:58:22 but that's just an implementation detail 21:58:38 the attack is there anyway 21:58:53 I did use the pid setting utility 21:58:56 it's like the AceHack startscummer 22:00:23 I think there are probably still more general cheating methods on anagolf open that are more powerful than just setting a pid 22:00:33 but I don't think I'm going to try finding them, I don't much care 22:01:33 I just wanted some light golfing and I'm happy I beat you... so far. but I think you'll come back. 22:02:24 b_jonas: oh, the standard rule with me and anagolf is that I never win 22:02:35 -!- brandonson has joined. 22:02:39 -!- Bicyclidine has joined. 22:02:40 mostly I'm just aiming for interesting short solutions, rather than the shortest 22:02:51 sometimes I win by being the only person to submit a language, but that's typically only for the really obscure ones 22:02:54 I think I solved a problem in m4 once 22:03:10 ais523: yeah, goruby seems to be easy to go for because nobody seems to submit in it 22:03:17 which is really awkward because the only method m4 has to do input is the m4 translation of C's "#include " 22:03:21 and it's efficient for many problems 22:03:37 aha 22:03:47 this means you have to rely on the sample input parsing correctly as m4; luckily, that's not very hard, m4's syntax is pretty general 22:04:00 but things like unbalanced parens really screw you up 22:04:03 yeah 22:04:10 you can change the quotes but not the parens 22:04:14 m4 sucks 22:04:31 #include <-- *boggles* 22:04:40 -!- brandons1 has quit (Ping timeout: 260 seconds). 22:05:17 I think if you wanted to win on anagolf, you'd have to write translators that compile a simple language to many obscure languages, resulting in long programs, so you're often the only one for languges 22:05:40 also, I was wondering why anagolf doesn't have metapost or metafont. are their io capabilities that bad? 22:05:59 maybe we should make a version of metapost with a bit better io statements 22:06:18 can i golf in vhdl 22:06:45 Bicyclidine: yes, anagolf can do that 22:06:49 METAFONT can only input from a file and cannot change the characters like TeX can; TeX can change the interpretation of each character so it has more general input. 22:06:57 thank god 22:07:43 zzo38: how about output? can you suppress the initial hello message from metapost or metafont? 22:07:55 does that even go to stdout or stderr? let me check 22:08:12 to stdout 22:08:13 ouch 22:08:21 then that's the problem 22:08:23 we need a variant 22:08:38 b_jonas: No you cannot change the initial message in METAFONT or in TeX. 22:08:49 not even with a command line switch? 22:09:01 zzo38: how about in metapost? 22:09:05 Bicyclidine: That is implementation-specific; some implementations might support it. 22:09:13 b_jonas: I don't know how metapost works, sorry. 22:09:15 weird 22:09:26 having a welcome message is standard but turning it off isn't? 22:09:32 Bicyclidine: Yes. 22:09:44 -_- 22:09:46 Bicyclidine: it's three decades old. computers worked differently back then. 22:10:15 #include <-- *boggles* 22:10:18 do you even m4 22:10:19 Note you can still do I/O with files; you don't have to use stdin/stdout. 22:10:37 i 'learnt' m4 several years ago, it was quite the experience 22:10:38 but it's on version 3 point something!!!! 22:10:38 Phantom_Hoover: why would i even m4 22:11:29 because it's like a glorious, multicoloured trainwreck of macro abuse 22:12:03 *All* command-line switches to TeX and METAFONT are implementation-specific, actually. 22:12:59 ais523: I've been looking into writing some z80 solutions, though the one I've submitted isn't terribly golfy. 22:13:29 fizzie: what libc support do you have in the z80 mode? 22:13:37 ais523: There's a getchar and a putchar. 22:13:42 ais523: And that's it. 22:13:44 haha. 22:13:47 fizzie: right 22:14:09 Most of my 48-byte code is probably related to printing decimal numbers, in fact. 22:18:08 A fun thing about it (this is directly from the info-page) is that it fills the memory with zeros, loads the submission at $0000 and puts the library code at $8000 (putchar) and $8003 (getchar); since 0 is the Z80 nop instruction, it's often shorter to do "rst 38h" (or fall off the end of the program) than to "call 8000h" -- it's equivalent, except the system will have to execute about 32K of nops there. 22:19:08 fizzie: NOP sleds are a known machine language programming technique 22:19:18 although they're mostly used maliciously 22:21:54 I don't know how they've implemented the "system calls", and why it's exactly those addresses; the bytes at $8000..$800f are all 0 in terms of reading data from those addresses. Perhaps the emulator just triggers something based on the PC. 22:22:35 fizzie: perhaps the address lines are hooked up to virtual hardware 22:23:01 I know lots of old consoles used "attempt to write to ROM" as the method of triggering a hardwired syscall 22:23:08 like "swap to a different bank of memory" 22:24:20 Yes, it also might depend on the cartridge, such as in Famicom it is done in many cartridges and not inside of the computer itself. 22:26:53 i'm told some star wars game for wii starts with essentially (NULL)(); 22:27:10 sounds pretty legit imo 22:27:55 Bicyclidine: gcc-bf does that in its implementation of _exit 22:28:00 only it's written as "goto *(void *)0;" 22:28:31 computed goto's always great, huh 22:29:28 Especially in assembly language programs it can be useful 22:29:55 * Bicyclidine writing a jump table by hand yesterday, can't exactly disagree... 22:30:27 it works, i'm so excited to be programming at an innovative 1960s level 22:31:21 hmm, if you have a switch statement where all the branches are similar enough that they have identical numbers of bytes 22:31:44 do compilers compile that into a computed goto that just uses a multiplication and addition to find the address? 22:32:10 i tried that last time, didn't work though 22:32:14 i should try again 22:32:28 (with a shift rather than a full multiply, ofc) 22:32:49 depends on the processor 22:33:00 ais523: i imagine that is uses a jmp instruction 22:33:01 modern processors are normally memory-bandwidth-bound, so a multiply isn't actually any slower than a shift 22:33:08 s/is/it/ 22:33:20 the one i'm using has a separate multiplier unit, so 22:33:29 i guess i could time it 22:33:38 In 6502 there is an indirect jump instruction, but it can't do much. 22:33:47 So sometimes "RTS trick" is used instead. 22:34:52 This involves creating a jump table in a separate low half and high half, storing the address one less than the actual target address. (There are other variants of this, but this is my preferred way to do the RTS trick.) 22:35:39 ais523: There was an article about how GCC compiles switch statements; I have a feeling it always does at least a table of addresses, instead of computing it arithmetically from the condition. I know mooz did that for his TI-86 Befunge interpreter manually. 22:36:25 oh, that reminds me, someone had a build process taking 11 GB of ram 'cos llvm decided it needed to make a really good jump table for this hundreds of entries switch 22:36:53 Bicyclidine: wow, that's even worse than aimake 22:37:03 (which can now build NetHack in under 512 MB!) 22:37:20 It isn't very good, especially if LLVM cannot have option to limit usage of RAM and stuff like that 22:38:03 And if it tries to allocate memory needed for an optimization and fails at it, it should probably just skip that optimization and continue anyways. 22:38:26 (In verbose mode, it could display a message to tell you about that.) 22:38:27 i've seen a lot of compilers do badly on generated code, really 22:38:46 i just want you to do this halting problem equivalent operation within bounded space, lazy jerks 22:39:29 oh, here we go lists.cs.uiuc.edu/pipermail/llvmdev/2013-November/068163.html 22:40:28 ais523: I don't know anything about GCC internals, but it sounds quite possible the actual byte sizes of the case blocks might not quite be available at the time when it's deciding whether to go with a jump table or some other kind of dispatch. 22:40:41 -!- mihow has quit (Quit: mihow). 22:40:50 fizzie: I know more about GCC internals than I probably should, and I'm not entirely sure whether it does or not 22:41:09 that seems like the same sort of problem as an instruction scheduler 22:41:20 and gcc's internals aren't designed for instruction schedulers to work at all, really 22:41:58 It doesn't do it for one simple test case, which is of course not proof of anything: http://sprunge.us/bcbU 22:43:14 fizzie: that's the sort of program where it'd be trivial to beat the compiler, I think 22:43:15 you know what's fun, is a case statement that works on constant strings in its cases 22:43:29 is this with -Os? that's the only optimization level where you can really play beat-the-compiler objectively 22:43:36 because it's hard to know what will or won't be faster, but you can easily count bytes 22:43:56 Bicyclidine: that compares content, presumably, rather than addresses? 22:44:02 ais523: Yes. With -O3 it will put a separate "jmp f" in each case. 22:44:06 ais523: right 22:44:22 In Z-machine, the speed of muliplications and shifts are implementation-dependent, however I think multiplication will probably be faster. But multiplication results in smaller code, though, regardless of that. 22:44:54 so you can discriminate on length, make a tree of character comparisons for when strings have the same char at the same position... 22:44:56 ais523: Do you know if it can take advantage of if all unspecified cases are specified as being impossible? 22:45:33 zzo38: gcc and clang already interpret undefined behaviour as a "this will never happen" case and optimize accordingly 22:45:42 I'm not sure if there's an "official" way to write it, though 22:45:47 perhaps there's a __builtin_unreachable or the like 22:46:37 On my computer it says "__builtin_unreachable" is not defined. 22:46:45 Bicyclidine: what's the halting problem equivalent operation? 22:46:49 (It is mentioned in GCC documentation, though.) 22:47:01 elliott_: compiling (perfectly i guess) 22:47:10 Bicyclidine: if you're only optimising constant factors, not that hard 22:47:30 in that you can compile naively to get upper bounds and then brute force it 22:47:36 "not that hard" 22:47:39 I mean, conceptually. 22:47:45 https://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Other-Builtins.html#Other-Builtins this has builtin_unreachable 22:48:10 In LLVM it is just called "unreachable", I think. 22:48:17 __builtin_unreachable, o well 22:48:46 However I was told that if there is a branch to such a thing, it will just remove that branch instead of necessarily assuming the condition is never true. I don't know if it has been changed by now, though. 22:49:47 "Another use for __builtin_unreachable is following a call a function that never returns but that is not declared __attribute__((noreturn))" good stuff, good stuff 22:50:38 -!- oerjan has joined. 22:50:43 C11 adds a standard _Noreturn function specifier, by the way. 22:50:51 haha 22:51:05 is that like some kinda c11 attribute, or do you just have a million specifiers before each function name 22:51:24 Syntactically it's a function-specifier exactly like 'inline'. 22:51:31 nice. 22:51:40 And there are a total of two of them: 'inline' and '_Noreturn'. 22:51:57 and _Noreturn is similar enough to __attribute__((noreturn)) that you can switch between them with the preprocessor and typically won't break your program 22:52:04 Is it allowed to specify both? 22:52:48 ais523: Yes I suppose you can check in the preprocessor if it is GNU C older than C11, other C older than C11, or if it is C11, and redefine _Noreturn correspondingly? Is that OK? 22:52:59 "7.23 _Noreturn : The header defines the macro 'noreturn' which expands to '_Noreturn'." I wonder if this is the shortest library chapter in the standard. 22:53:28 sheesh, how am i supposed to portably tell the compiler something takes a format string and returns a value aligned in a way specified by the third argument and should be exported in dlls 22:53:48 Even and include at least a couple of other things in addition to their "_Foo"-to-"foo" macro. 22:54:10 I just looked at my stdnoreturn.h 22:54:15 the comment is much longer than the file itself 22:54:27 (which consists of a multiple inclusion guard, and a check to see if it's C++, and the definition in question) 22:54:30 Bicyclidine: I don't know if that can be done portably in a C code, although I believe LLVM has commands to do that, at least (I don't know if the provided C compiler supports such functions though). 22:54:47 Probably you would have to use conditional compilations if doing it in a C code. 22:54:47 Oh ho! The one in clang defines __noreturn_is_defined, too. 22:55:08 ( defines __alignas_is_defined and __alignof_is_defined -- I guess they've copied that.) 22:55:12 ugh, i never remember where includes are 22:57:05 and there's /usr/include/stdio.h but it's defined in terms of iostreams... unixes are so confusing. 22:57:20 The clang comment is slightly bizarre: http://sprunge.us/aCJI?c -- presumably that's the "this permission notice", but what then is "the above copyright notice"? (And is this really a "substantial portion".) 22:58:00 The header situation is further confused by the fact that the standard headers are a mix of compiler-specific stuff from compiler-specific directories and C-library-specific-stuff from wherever the libc headers are. 22:58:14 yeah... 22:59:47 -!- Patashu has quit (Remote host closed the connection). 23:00:08 -!- Patashu has joined. 23:03:33 -!- Bicyclidine has quit (Ping timeout: 272 seconds). 23:18:42 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds). 23:21:43 -!- Phantom_Hoover has joined. 23:22:16 things that confuse my instincts: the CPU not getting hot when I run a compile on a remotely hosted VM 23:23:10 Hey, what was the lispy name for lists of alternating keys and values? 23:28:37 Melvar: as in (k v k v ...)? 23:28:44 not sure it has a name but ((k . v) (k . v) ...) is an alist 23:28:53 (association list) 23:29:36 -!- Sgeo has joined. 23:32:47 Right, that’s the usual. But I’m pretty sure reading somewhere that there was a name for the rarer (k v k v …) type too, and it was also some letter on the front of “list”. 23:33:44 arclist, since only paul graham likes them :p 23:38:28 elliott_: there's one in the Java stdlib internals 23:38:36 it's completely awful because k and v have entirely different types 23:38:42 so it has to use an array of Objects and cast everywhere 23:39:18 The context: I’m writing a List (Foo, Bar) out “[(k, v), (k, v), …]” and was thinking that surely I can get idris to allow me to write “[k, v, k, v, …]” too and convert once, with type safety and totality respected. 23:39:25 ais523: yep 23:39:41 Melvar: I find it hard to see how that'd break totality 23:39:51 unless you have a sometimes_cast operator or the like, that errors out if given bad arguments 23:39:59 that's really just a lack of type safety though IMO 23:40:26 Melvar: how does [] notation desugar in idris? 23:41:07 elliott_: Applications of (::) and Nil, unqualified. 23:42:07 Melvar: I guess you just want the idris equivalent of data AltList a b = Nil | Cons a (AltList b a), then? though I suppose you want to enforce the even length 23:44:34 Right, I do, which I could do by having two mutually inductive types, or indexing the type with a Bool. Or I could write two functions (::) that do the right thing with combinations of lists and pairs … 23:45:37 (::) :: a -> [(a,b)] -> (a,[(a,b)]); (::) :: b -> (a,[(a,b)]) -> [(a,b)], I guess? 23:47:31 With the order in the pairs swapped, but otherwise yes. 23:47:48 Also, what mixery of syntaxes. 23:48:00 ;) 23:48:52 er, heh 23:48:59 it's okay, it's overloaded! 23:49:22 (::) :: {a : Type} -> a -> (b : Type) -> {a = b} -> Stmt 23:49:37 ... 23:49:41 I like how I then started using : 23:50:16 > :let AltList.Even.(::) : a -> (b, List (a, b)) -> List (a, b); AltList.Even.(::) x (y, ps) = (x, y) :: ps 23:50:18 :1:1: parse error on input ‘:’ 23:50:22 Argh. 23:50:25 ( :let AltList.Even.(::) : a -> (b, List (a, b)) -> List (a, b); AltList.Even.(::) x (y, ps) = (x, y) :: ps 23:50:25 defined 23:51:27 ( :let AltList.Uneven.(::) : b -> List (a, b) -> (b, List (a, b)); AltList.Uneven.(::) = MkPair 23:51:27 defined 23:52:00 ( the (List (String, Bool)) ["foo",True,"bar",False] 23:52:00 [("foo", True), ("bar", False)] : List (String, Bool) 23:52:21 wat 23:52:31 ( the (List (_,_)) ["foo",True,"bar",False] 23:52:31 [("foo", True), ("bar", False)] : List (String, Bool) 23:52:41 * copumpkin is disturbed 23:53:15 * Melvar is shamelessly exploiting [,] overloading. 23:53:40 I see that :/ 23:53:53 -!- Sgeo_ has joined. 23:54:00 Hmm. 23:54:09 ( the (List _) ["foo",True,"bar",False] 23:54:09 [("foo", True), ("bar", False)] : List (String, Bool) 23:55:16 ( the (List _) ["foo",True,"bar"] 23:55:16 (input):1:15:When elaborating an application of constructor Prelude.List.::: 23:55:16 Can't unify 23:55:16 Bool 23:55:16 with 23:55:16 String↵… 23:55:54 is String↵ like String but it ends with a newline? 23:56:51 The ↵… is an indication by the bot that more output would follow after a newline. 23:57:16 Whereas … by itself indicates that a line was too long. 23:57:56 -!- Sgeo has quit (Ping timeout: 255 seconds). 23:58:58 right