←2014-10-09 2014-10-10 2014-10-11→ ↑2014 ↑all
00:08:51 <oerjan> > ((1,4,3),(2,9,5),(8,6,7)) & partsOf (each.each) %~ sort
00:08:54 <lambdabot> ((1,2,3),(4,5,6),(7,8,9))
00:10:54 -!- boily has joined.
00:20:46 <FireFly> 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 <quintopia> 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 <Jafet> 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 <LordCreepity> lol
03:10:40 <Bicyclidine> oh hey, the BBP dude
03:15:00 -!- shikhin has joined.
03:18:13 -!- shikhout has quit (Ping timeout: 260 seconds).
03:34:08 <zzo38> 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 <Bicyclidine> mersenne?
03:38:11 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)).
03:42:11 <elliott_> xorshift, depending on what you consider good quality?
03:44:45 <Sgeo_> 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 <Sgeo_> Where name can be nil and it will still act properly?
03:45:10 <Sgeo_> 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 <Sgeo_> Is Objective-J/Cappuchino any good?
04:13:24 <Sgeo_> 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 <shachaf> 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 <Sgeo_> Is GNUstep going anywhere?
05:22:33 <zzo38> 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 <mroman_> Perl is dying. I like that.
07:35:19 <mroman_> also it's dieing.
07:35:39 <mroman_> but mostly dying.
07:35:50 <mroman_> @messages-load
07:35:50 <lambdabot> oerjan said 8h 34m 17s ago: <mroman_> http://mroman.ch/ngbl/ <-- It's -> Its hth
07:36:09 <mroman_> @tell oerjan thx.
07:36:09 <lambdabot> Consider it noted.
07:36:51 -!- S1 has joined.
07:38:24 <mroman_> "like a dying duck in a thunderstorm"
07:38:27 <mroman_> o_O
07:39:53 <mroman_> (http://news.dice.com/2014/10/09/5-programming-languages-marked-for-death/)
07:39:59 <mroman_> `? perl
07:39:59 <HackEgo> perl? ¯\(°​_o)/¯
07:45:15 <int-e> So they're saying that perl based CGI scripts are dying. Fine, fine...
07:48:41 <mroman_> :)
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 <int-e> 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 <mroman_> Is this Patrick?
09:11:32 <int-e> mroman_: a comment by "tux" on that languages-the-author-wishes-to-die link.
09:12:36 <mroman_> where the author obviously is a VB6 programmer
09:12:54 <int-e> 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 <int-e> I have to ask: Does it address any of the things that people dislike about Perl?
09:14:39 <mroman_> "You may discard my opinion, but your article sucks."
09:14:56 <int-e> [dynamic types, useless $ signs, scalar vs. list contexts, implicit $_ variable (a blessing and a curse)...)
09:14:56 -!- shikhout has joined.
09:14:57 <mroman_> is "your article sucks" also a discardable opinion?
09:15:04 <int-e> s/)/]/
09:15:09 <int-e> mroman_: yes
09:15:49 <int-e> criticism should be justified, and ideally be constructive, though that's not always possible.
09:16:27 <int-e> [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 <mroman_> I know Perl has $_
09:19:57 <mroman_> that's all I know
09:20:22 <mroman_> Delphi XE7 isn't free though
09:20:43 <mroman_> oh well.
09:20:50 <mroman_> It's only 5000 CHF
09:21:58 <int-e> 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 <mroman_> Although I don't really know much about Pascal Delphi
09:26:01 <mroman_> there are so many variants of things
09:26:02 <int-e> And judging by other comments even that is unlikely.
09:26:06 <mroman_> Object Pascal, FreePascal, Delphi
09:26:10 <mroman_> probably Objective Delphi?
09:26:20 <mroman_> Modula, Oberon
09:26:35 <mroman_> (I think those are Pascal-ish but not really Pascal?)
09:26:46 <int-e> 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 <int-e> 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 <b_jonas> 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 <mroman_> Oberon has OOP, yes
09:29:50 <b_jonas> 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 <int-e> b_jonas: nah, programming was much simpler back then.
09:30:09 <b_jonas> and we had to do all that on bad quality crt monitors
09:30:33 <mroman_> of some sort
09:30:38 <mroman_> never used Oberon myself though
09:30:46 <mroman_> but it has type bound methods or something like that
09:31:01 <int-e> Oh yes, Monitors were indeed awful. I don't miss those one bit.
09:31:05 <int-e> s/M/m/
09:31:14 <b_jonas> keyboards were good though
09:31:24 <mroman_> 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 <b_jonas> I miss the time back when PC motherboards worked fine with AT keyboards plugged in with an AT-PS2 converter.
09:32:16 <mroman_> int-e: at least Smalltalk isn't dying.
09:32:20 <mroman_> would be a shame if it did.
09:32:26 <mroman_> It's so productive and widely used.
09:32:36 <mroman_> and it's good .
09:32:41 <int-e> 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 <mroman_> .oO (Does int-e have a steal keyboard)
09:33:09 <mroman_> *steel
09:33:11 <b_jonas> int-e: exactly.
09:33:36 <int-e> mroman_: no, just a Cherry G80. It's sturdy enough.
09:34:33 <int-e> (even those are getting worse, and they didn't bother to change the model number)
09:34:34 <b_jonas> int-e: sounds nice
09:34:48 <b_jonas> what? they don't chagne the model number?
09:34:55 <b_jonas> eww
09:35:04 <int-e> Not the marketable part of it.
09:35:15 <b_jonas> I should buy a better keyboard
09:35:29 <J_Arcane> 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 <int-e> G80-3000LQCEU-0 <-- I can't remember all of this.
09:35:56 <b_jonas> int-e: is some of that telling the layout and the labels on the keycaps?
09:36:12 <J_Arcane> I seriously considered getting a Model M, but I've heard good things about that new MS ergo keyboard.
09:36:32 <int-e> b_jonas: right, and some of it encodes the key characteristics (click, curve of force while pressing the key)
09:36:47 <b_jonas> J_Arcane: quite possible, because at least some of the MS mice are quite good
09:37:12 <J_Arcane> The original MS ergo was quite lovely once you got used to it.
09:38:01 <J_Arcane> A new pointing device wouldn't go amiss either; if it weren't for gaming I'd probably use a trackball.
09:38:36 <b_jonas> J_Arcane: you could buy both if you do gaming and other sort of work
09:39:05 <mroman_> "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 <mroman_> ^- this guy is clearly not creative enough.
09:39:44 <b_jonas> he's bought the wrong drill
09:40:08 <J_Arcane> Indeed. :D Should've bought a dremel. ;)
09:40:09 <mroman_> also this comparison doesn't make sense with programming languages
09:40:10 <int-e> nah, he needs a bigger hammer.
09:40:18 <mroman_> Assembly can do everything
09:40:20 <mroman_> so....?
09:40:26 <int-e> err
09:40:32 <int-e> "in principle"
09:40:43 <mroman_> As well as in practice.
09:40:57 <mroman_> If ASM where the hammer
09:41:04 -!- password2 has joined.
09:41:06 <mroman_> then every other tool like the saw would be implemented using hammers.
09:41:27 <int-e> If I had to write any big program in assembly language I'd write a compiler :/
09:41:30 <J_Arcane> ASM is a smelting oven. ;)
09:41:31 <mroman_> I'd like to see you build a pump only with hammers.
09:42:05 <int-e> 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 <mroman_> Right. But you'd have to write the compiler in assembly first
09:42:39 <int-e> It'll pay dividends quickly.;
09:43:11 <J_Arcane> 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 <oerjan> @messages-
10:07:59 <lambdabot> mroman_ said 2h 31m 49s ago: thx.
10:21:43 <fizzie> I wrote my first z80 golf entry the other day. (It's not especially golfed, I suppose, but still.)
10:22:27 <b_jonas> fizzie: nice
10:23:01 <J_Arcane> 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 <b_jonas> 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 <oerjan> it means you didn't check the statistics button when submitting
10:25:46 <oerjan> so the actual numbers are hidden
10:25:49 <b_jonas> oh, I hvae to check that? ah
10:25:58 <oerjan> yes, it's a bit annoying
10:39:07 <Taneb> `? monad
10:39:07 <HackEgo> Monads are just monoids in the category of endofunctors.
10:39:17 <Taneb> `? group
10:39:17 <HackEgo> group? ¯\(°​_o)/¯
10:42:40 -!- Melvar has joined.
10:42:46 <int-e> `? monoid
10:42:47 <HackEgo> Monoids are just categories with a single object.
10:44:04 <int-e> 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 <b_jonas> yeah
10:47:49 <mroman_> Stats should be on by default
10:50:30 <mroman_> `? categorie
10:50:31 <HackEgo> categorie? ¯\(°​_o)/¯
10:50:39 <mroman_> `? category
10:50:40 <HackEgo> Categories are just a special case of bicategories.
10:50:47 <mroman_> `? bicategory
10:50:48 <HackEgo> Bicategories are just categories where composition is only associative up to an isomorphism.
10:50:55 <mroman_> `? isomorphism
10:50:55 <HackEgo> isomorphism is isomorphic to Phantom_Hoover up to isomorphism.
10:52:19 <mroman_> `? Phantom_Hoover
10:52:19 <HackEgo> Phantom Michael Hoover is a true Scotsman, hatheist, and completely out of the loop.
10:52:33 <Taneb> `learn groups are just loops with the property of associativity
10:52:35 <HackEgo> I knew that.
10:52:59 <mroman_> `? loop
10:53:00 <HackEgo> loop? ¯\(°​_o)/¯
10:53:22 <mroman_> `? hipchat
10:53:23 <HackEgo> hipchat? ¯\(°​_o)/¯
10:53:29 <Taneb> `run echo "loop: see loop" > wisdom/loop
10:53:31 <HackEgo> No output.
10:53:36 <Taneb> `? loop
10:53:36 <HackEgo> loop: see loop
10:53:57 <b_jonas> `? categorical product
10:53:58 <HackEgo> categorical product? ¯\(°​_o)/¯
10:54:05 <b_jonas> `? direct product
10:54:06 <HackEgo> direct product? ¯\(°​_o)/¯
10:54:08 <b_jonas> `? outer product
10:54:09 <HackEgo> outer product? ¯\(°​_o)/¯
10:54:11 <b_jonas> :(
10:54:18 <mroman_> `learn hipchat is a chat where you can communicate solely by using meme-emoticons but shouldn't.
10:54:19 <HackEgo> I knew that.
10:54:22 <boily> Tanelle. long time no see.
10:54:27 <Taneb> :)
10:54:37 <Taneb> I haven't been speaking in channel much lately
10:54:38 <b_jonas> what does it call categorical product?
10:54:52 <Taneb> I suddenly found myself to have a social life
10:55:01 <boily> a categorical product is when you're very sure of the end result.
10:55:06 * boily gasps!
10:55:07 <mroman_> `? social life
10:55:08 <HackEgo> social life? ¯\(°​_o)/¯
10:55:17 <boily> Taneb: how's the social life going on?
10:55:31 <Taneb> Pretty good
10:55:35 <Taneb> A lot of tabletop games
10:56:31 <Taneb> Tonight I've got a board games night
10:57:32 <boily> ah, another one who succumbed into the ranks of the Boardgaming Sect :D
10:57:37 <boily> which ones are you gonna play?
10:57:50 <Taneb> Whatever people bring
10:57:58 <Taneb> We play Mansions of Madness quite a lot
10:59:12 <oerjan> b_jonas: we don't want product wisdoms to start multiplying hth
11:00:01 <boily> Taneb: never tried, but from the pictures on BGG it looks quite interesting.
11:02:19 <b_jonas> `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 <HackEgo> 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 <b_jonas> huh
11:02:57 <b_jonas> `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 <HackEgo> I knew that.
11:03:01 <b_jonas> good
11:04:29 <mroman_> `define road
11:04:30 <HackEgo> 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 <mroman_> broken I guess
11:08:32 <boily> oh fungot. another wisdom entry with mathematicalities...
11:08:52 <oerjan> `? categorical
11:08:53 <HackEgo> 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 <oerjan> `run mv wisdom/categorical{, product}
11:09:16 <HackEgo> mv: cannot stat `wisdom/categorical{,': No such file or directory
11:09:22 <boily> time to cleanse myself with softly parfumed soap, and void my memories of CT.
11:09:31 <oerjan> `run mv wisdom/categorical{," product"}
11:09:33 <HackEgo> No output.
11:09:35 -!- boily has quit (Quit: ALTOID CHICKEN).
11:09:40 <oerjan> `? categorical product
11:09:40 <HackEgo> 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 <oerjan> 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 <oerjan> also, that entry is far too accurate for wisdom/, i think.
11:12:26 <oerjan> actually, i think there is an obvious solution.
11:12:32 <oerjan> `url bin/learn
11:12:33 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/bin/learn
11:15:18 <Taneb> boily, Mansions of Madness is great fun :)
11:15:19 <oerjan> `run sed -i '6cecho "Learned '"'"'$topic'"'"': $stuff"' bin/learn
11:15:19 <HackEgo> No output.
11:15:44 <oerjan> wat
11:16:07 <Taneb> First exercise sheet of the academic year, on Group Theory
11:16:08 <oerjan> `run echo sed -i '6cecho "Learned '"'"'$topic'"'"': $stuff"' bin/learn
11:16:08 <HackEgo> sed -i 6cecho "Learned '$topic': $stuff" bin/learn
11:16:38 <oerjan> `run sed '6cecho "Learned '"'"'$topic'"'"': $stuff"' bin/learn
11:16:38 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that."
11:17:34 <oerjan> `run sed '6cecho "Learned *$topic*: $stuff"' bin/learn
11:17:35 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that."
11:17:57 <oerjan> `run sed '6cecho Argh' bin/learn
11:17:58 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that."
11:18:50 <oerjan> `run sed '6c\echo "Learned '"'"'$topic'"'"': $stuff"' bin/learn
11:18:51 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that."
11:20:17 <oerjan> `run sed '6c \boo' bin/learn
11:20:17 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that."
11:20:35 <oerjan> `run sed "6c \\\nboo" bin/learn
11:20:35 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that."
11:20:55 <oerjan> `run sed '6s/.*/Boo!' bin/learn
11:20:56 <HackEgo> sed: -e expression #1, char 10: unterminated `s' command
11:21:02 <oerjan> `run sed '6s/.*/Boo!/' bin/learn
11:21:03 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "I knew that."
11:21:16 <oerjan> ok something is ridiculously wrong
11:21:26 <oerjan> `run sed '1,5d' bin/learn
11:21:27 <HackEgo> No output.
11:21:29 <int-e> Hmm, how about: A product is the limit of a discrete diagram.
11:21:45 <oerjan> `wc bin/learn
11:21:46 <HackEgo> ​ 5 17 130 bin/learn
11:23:34 <J_Arcane> 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 <b_jonas> int-e: dunno, feel free to fix that entry
11:24:14 <oerjan> wait wat
11:24:49 <oerjan> argh stupid IE
11:25:46 <oerjan> 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 <oerjan> so i've been trying to sed based on the wrong file contents all this time
11:26:50 <b_jonas> I'm not sure that's the correct definition anyway, but it's something close.
11:28:41 <oerjan> `run sed '4c\echo "Learned '"'"'$topic'"'"': $1"' bin/learn
11:28:42 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\? .*//') \ echo "$1" >"wisdom/$topic" \ echo "Learned '$topic': $1"
11:28:50 <oerjan> `run sed -i '4c\echo "Learned '"'"'$topic'"'"': $1"' bin/learn
11:28:52 <HackEgo> No output.
11:29:12 <oerjan> `learn Hi there
11:29:13 <HackEgo> Learned 'hi': Hi there
11:29:23 <oerjan> `revert
11:29:23 <HackEgo> Done.
11:30:08 <oerjan> `? hi
11:30:10 <HackEgo> hi? ¯\(°​_o)/¯
11:30:45 <oerjan> once again, a `revert doesn't show up in the repository
11:31:11 <oerjan> seems to happen whenever the `revert deletes a file
11:32:01 <oerjan> @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 <lambdabot> Consider it noted.
11:32:39 <oerjan> `rm bin/learn
11:32:41 <HackEgo> No output.
11:32:56 <oerjan> `revert
11:32:57 <HackEgo> Done.
11:33:20 <oerjan> @tell Gregor *reverts
11:33:20 <lambdabot> Consider it noted.
11:34:11 <Taneb> ...it says I need to do 1 part x
11:34:16 <Taneb> Question one goes up ti ix
11:34:21 <Taneb> ix < x
11:34:28 <Taneb> > "ix" < "x"
11:34:29 <lambdabot> True
11:37:25 <oerjan> `sed -i '6cecho -n "Learned '"'"'$topic'"'"': ;cat "wisdom/$topic"
11:37:26 <HackEgo> 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 <oerjan> argh
11:37:40 <oerjan> `sed -i '6cecho -n "Learned '"'"'$topic'"'"': ;cat "wisdom/$topic"' bin/learn_append
11:37:41 <HackEgo> 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 <oerjan> ff
11:38:11 <oerjan> `sed -i '6cecho -n "Learned '"'"'$topic'"'"': ";cat "wisdom/$topic"' bin/learn_append
11:38:12 <HackEgo> 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 <oerjan> `echo sed -i '6cecho -n "Learned '"'"'$topic'"'"': ";cat "wisdom/$topic"' bin/learn_append
11:39:01 <HackEgo> sed -i '6cecho -n "Learned '"'"'$topic'"'"': ";cat "wisdom/$topic"' bin/learn_append
11:39:13 <oerjan> oh hm right
11:39:47 <oerjan> `run sed -i '6cecho -n "Learned '"'"'$topic'"'"': "\'"\n"'cat "wisdom/$topic"' bin/learn_append
11:39:49 <HackEgo> No output.
11:40:08 <oerjan> dammit
11:41:06 <oerjan> `revert
11:41:07 <HackEgo> Done.
11:42:10 <oerjan> `echo sed -i '6cecho -n "Learned '"'"'$topic'"'"': "\'"\n"'cat "wisdom/$topic"' bin/learn_append
11:42:11 <HackEgo> sed -i '6cecho -n "Learned '"'"'$topic'"'"': "\'"\n"'cat "wisdom/$topic"' bin/learn_append
11:42:34 <oerjan> argh escapes
11:42:39 <oerjan> also brain
11:43:49 <oerjan> `run sed -i '6cecho -n "Learned '"'"'$topic'"'"': *cat "wisdom/$topic"' bin/learn_append
11:43:51 <HackEgo> No output.
11:44:25 <oerjan> `run sed -i '6s/[*]/"\n/' bin/learn_append
11:44:27 <HackEgo> No output.
11:44:45 <oerjan> `learn hi there
11:44:47 <HackEgo> Learned 'hi': hi there
11:44:55 <oerjan> `learn_append hi shmere
11:44:56 <HackEgo> Learned 'hi': hi there shmere
11:45:19 <oerjan> `rm wisdom/hi
11:45:21 <HackEgo> No output.
11:45:55 <oerjan> this might suffice.
11:54:50 -!- S0 has quit (Quit: S0).
12:00:20 <mroman_> what's the haskell analogue for factories?
12:00:39 <oerjan> functions hth
12:00:47 <mroman_> http://codepad.org/sM6qv7TJ <- is obviously bullshit
12:01:26 <mroman_> (mainly because you can't create a Storage m a)
12:02:09 <oerjan> 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 <mroman_> The idea is that you can choose at runtime whether to use InMemStorage or FileStorage
12:02:47 <mroman_> which you can't using this approach
12:03:47 <mroman_> http://codepad.org/hgsHD9ov <- you can't implement chooseStorage
12:04:52 <oerjan> you need some type quantification.
12:05:05 <oerjan> by which time you can just as well drop the classes.
12:06:59 <mroman_> I tried forall s. s => Storage IO s -> String -> Storage IO s
12:07:02 <mroman_> but that doesn't work
12:08:56 <oerjan> mroman_: http://codepad.org/eO6Utx42
12:09:13 <oerjan> much simpler
12:09:45 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
12:10:18 <mroman_> except that it doesn't compile
12:10:53 <oerjan> fixed typo http://codepad.org/lUBrpKfU
12:11:35 <oerjan> hm type error
12:11:49 <mroman_> yep
12:11:51 <mroman_> type error
12:11:56 <mroman_> in chooseStorage
12:12:07 <mroman_> Couldn't match type ‘IORef String’ with ‘IO (IORef a1)’
12:13:17 <oerjan> oh hm
12:13:57 <mroman_> oh
12:14:00 <mroman_> IORef needs an a
12:14:04 <mroman_> a -> IO (IORef a)
12:14:28 <mroman_> yep
12:14:28 <oerjan> newIORef, right
12:14:32 <mroman_> r <- newIORef ""
12:15:08 <oerjan> fixed http://codepad.org/DQEngwnh
12:15:26 <oerjan> btw MVars, unlike IORefs, can be empty fwiw
12:19:05 <oerjan> 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 <oerjan> while a data type with functions in it can work better
12:25:16 <mroman_> oerjan: Thx.
12:25:23 <mroman_> I didn't know that. But this looks pretty powerful.
12:26:03 <mroman_> I intend to use that for my emulator
12:26:13 <mroman_> so I can switch easily between different implementations for memory
12:31:57 <mroman_> such data types are actually classes :D
12:32:06 <mroman_> on some level
12:32:39 <oerjan> they're dictionaries. and ghc's internal representation of classes uses them.
12:33:13 <oerjan> 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 <int-e> > [1..]>>=($"123").replicateM
13:03:15 <lambdabot> ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",...
13:03:56 <oerjan> > [1..]>>=(`replicateM`"123")
13:03:57 <lambdabot> ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",...
13:04:14 <oerjan> hm i guess it's the same length
13:04:45 <int-e> yes. but "import Control.Monad" is too long anyway. :)
13:05:05 <oerjan> ic
13:06:53 -!- Froox has joined.
13:08:31 <oerjan> > [1..]>>=($"123").mapM id.replicate
13:08:32 <lambdabot> Couldn't match type ‘a0 -> [a0]’ with ‘[[GHC.Types.Char] -> b]’
13:08:32 <lambdabot> Expected type: GHC.Types.Int -> [[GHC.Types.Char] -> b]
13:08:32 <lambdabot> Actual type: GHC.Types.Int -> a0 -> [a0]
13:08:34 <oerjan> oops
13:09:01 <oerjan> @src replicateM
13:09:01 <lambdabot> 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 <oerjan> > [1..]>>= \n->mapM id$[1..n]>>"123"
13:10:43 <lambdabot> Couldn't match type ‘[b]’ with ‘GHC.Types.Char’
13:10:43 <lambdabot> Expected type: [[b]]
13:10:43 <lambdabot> Actual type: [GHC.Types.Char]
13:10:59 <oerjan> wtf is with you
13:11:14 <oerjan> > [1..]>>= \n->mapM id$[1..n]>>["123"]
13:11:15 <lambdabot> ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",...
13:14:18 <int-e> > [1..]>>= \n->mapM(\_->"123")[1..n] -- also same length
13:14:19 <lambdabot> ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",...
13:15:24 <oerjan> um no?
13:15:40 <oerjan> that's 7 chars longer
13:16:00 <quintopia> what is all this nonsense going on
13:17:16 <mroman_> I guess golfing?
13:17:40 <oerjan> > [1..]>>= \n->mapM(>>["123"])[1..n]
13:17:41 <lambdabot> No instance for (GHC.Enum.Enum [a0])
13:17:41 <lambdabot> arising from the arithmetic sequence ‘1 .. ’No instance for (GHC.Num.Num [...
13:17:43 <quintopia> a program that lists all sequences of 1,2, and 3?
13:17:53 <int-e> I was comparing to [1..]>>= \n->mapM id$[1..n]>>"123"
13:18:17 <int-e> > do n<-[1..];mapM id$[1..n]>>"123"
13:18:18 <lambdabot> Couldn't match type ‘[b]’ with ‘GHC.Types.Char’
13:18:19 <lambdabot> Expected type: [[b]]
13:18:19 <lambdabot> Actual type: [GHC.Types.Char]
13:18:21 <oerjan> well that was buggy
13:18:27 <int-e> oh, right.
13:18:32 <quintopia> i guess you could call that "counting in quaternary"
13:18:56 <quintopia> well no
13:19:08 <quintopia> "counting in ternary with the wrong digits"
13:19:17 <int-e> > do n<-[1..];mapM(\_->"123")[1..n]
13:19:18 <lambdabot> ["1","2","3","11","12","13","21","22","23","31","32","33","111","112","113",...
13:19:44 <int-e> yes, hello hello world still annoys me.
13:20:27 <quintopia> what is it
13:20:53 <int-e> http://golf.shinh.org/p.rb?hello+hello+world
13:21:38 <oerjan> > mapM id`map`iterate("123":)[]
13:21:40 <lambdabot> [[""],["1","2","3"],["11","12","13","21","22","23","31","32","33"],["111","1...
13:21:42 <oerjan> oops
13:21:54 <oerjan> > mapM id=<<iterate("123":)[]
13:21:55 <lambdabot> ["","1","2","3","11","12","13","21","22","23","31","32","33","111","112","11...
13:22:13 <int-e> > iterate("123":)[]>>=sequence -- right. mapM id == sequence
13:22:14 <lambdabot> ["","1","2","3","11","12","13","21","22","23","31","32","33","111","112","11...
13:22:31 <oerjan> mapM id is slightly shorter
13:22:55 <int-e> So it is. I can't count.
13:25:31 <oerjan> incidentally this is _still_ counting the wrong way for the problem.
13:25:57 <int-e> I know!
13:27:24 <mroman_> !blsq 15{3B!}GO
13:27:24 <blsqbot> {"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 <mroman_> !blsq "123"3cb
13:28:43 <blsqbot> {"1" "2" "3" "11" "12" "13" "21" "22" "23" "31" "32" "33" "111" "112" "113" "121
13:30:40 <quintopia> oerjan: yeah looks like the output is standard ternary counting order yeah?
13:30:52 <oerjan> yes
13:31:17 <int-e> starting at 0
13:31:18 -!- Froox has quit (Quit: *bubbles away*).
13:31:28 <quintopia> int-e: no, starting at 1
13:31:49 <oerjan> nope, 0
13:31:50 <quintopia> i'm surprised the shortest answer is 48
13:31:59 <oerjan> wat
13:32:23 <quintopia> oerjan: we're talking hello hello world right
13:32:31 <int-e> oerjan: burlesque
13:32:40 <oerjan> right
13:32:41 <int-e> quintopia: oerjan and I are competing on the Haskell one
13:33:06 <int-e> hence all the (irrelevant, but topically related) Haskell snippets above
13:33:15 <int-e> (they're actually more relevant to the latest problem)
13:33:45 <oerjan> oh there are new ones
13:33:53 <oerjan> well plenty of time
13:34:17 <fizzie> quintopia: It's very possibly not the shortest, just not many people have given it a go.
13:34:18 <oerjan> still working on the obeliks
13:36:21 <oerjan> when considering trailing whitespace, int-e starts looking hard to beat.
13:38:22 -!- Frooxius has joined.
13:39:31 <fizzie> I still don't even know what the logic of obeliks was.
13:40:05 * oerjan cackles evilly
13:40:27 <oerjan> it's actually really simple
13:41:35 <oerjan> but the fact that all except one of the columns in the example skew into a straight line might deceive you.
13:41:41 <oerjan> *examples
13:41:50 <oerjan> *test cases
13:42:08 <b_jonas> there's just three test-cases you have to hard-code
13:42:13 <b_jonas> why would there have to be logic?
13:42:18 <oerjan> b_jonas: there is.
13:42:27 <b_jonas> sure there is, but it's not important
13:43:37 <oerjan> oh well, maybe hard-coding would be shorter.
13:43:45 <oerjan> surely for _some_ languages.
13:47:16 <int-e> 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 <oerjan> heh
13:47:51 <mroman_> 48 for what?
13:48:12 <fizzie> mroman_: Burlesque for hello hello world.
13:48:38 <mroman_> gs2 has 36B for it
13:49:24 <mroman_> hm
13:49:25 <mroman_> is it
13:49:29 <mroman_> !blsq {0 1 2}3cb
13:49:30 <blsqbot> {{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 <mroman_> !blsq {0 1 2}3cb{"world hello world!"wdjsi}m[
13:49:45 <blsqbot> {{"world"} {"hello"} {"world!"} {"world" "world"} {"world" "hello"} {"world" "wo
13:49:56 <mroman_> nope
13:50:15 <mroman_> !blsq {0 1 2}3cb{"world hello !"wdjsi}m[
13:50:16 <blsqbot> {{"world"} {"hello"} {"!"} {"world" "world"} {"world" "hello"} {"world" "!"} {"h
13:51:00 <fizzie> 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 <mroman_> ah ok
13:51:43 <mroman_> !blsq 15{3B!}cb
13:51:43 <blsqbot> ERROR: Burlesque: (cb) Invalid arguments!
13:51:47 <mroman_> !blsq 15{3B!}GO
13:51:47 <blsqbot> {"1" "2" "10" "11" "12" "20" "21" "22" "100" "101" "102" "110" "111" "112" "120"
13:51:50 <mroman_> like that then
13:51:55 <mroman_> !blsq 15{3B!}GZ
13:51:55 <blsqbot> {"0" "1" "2" "10" "11" "12" "20" "21" "22" "100" "101" "102" "110" "111" "112" "
13:52:04 <fizzie> Yes.
13:52:22 <mroman_> !blsq 15{3B!riXX}GZ{"world hello world!"wdjsi}m[
13:52:22 <blsqbot> {{"world"} {"hello"} {"world!"} {"hello" "world"} {"hello" "hello"} {"hello" "wo
13:54:18 <mroman_> 45B
13:54:20 <mroman_> k
13:55:04 <int-e> fizzie: I think you mean leading zeros, hth
13:55:12 <mroman_> 44B
13:55:29 <fizzie> int-e: YES
13:56:11 <int-e> fizzie: you might enjoy http://golf.shinh.org/p.rb?print+numbers+reversed though *ducks*
13:57:42 <mroman_> 41B
13:59:12 -!- brandons1 has joined.
13:59:32 <fizzie> 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 <mroman_> oh
14:00:38 <mroman_> :)
14:00:45 <mroman_> then you might get <41B by using XX on an integer?
14:01:00 <fizzie> Probably not, that's already 7 characters shorter.
14:02:13 -!- brandonson has quit (Ping timeout: 260 seconds).
14:02:21 <fizzie> It did make for an obvious 48->46, though.
14:02:49 <mroman_> I don't think you can compress "world hello world!"
14:03:18 <mroman_> or maybe you can
14:03:46 <mroman_> nah
14:03:46 <int-e> In my Haskell snippets, sometimes you can, sometimes you can't...
14:03:47 <fizzie> I tried, but couldn't.
14:03:48 <mroman_> too short already
14:04:15 <mroman_> let's wait for teebee to make his move
14:04:17 <mroman_> :D
14:05:43 <mroman_> btw {f}GZ{g}m[ is the same as {fg}GZ
14:05:59 <mroman_> (map f . map g == map (f . g))
14:08:15 <mroman_> 39B
14:11:06 <ion> !bf_textgen hello
14:14:37 <mroman_> !blsq 0 3dg
14:14:37 <blsqbot> {}
14:14:39 <mroman_> this sucks
14:14:39 -!- kcm1700_ has quit (Remote host closed the connection).
14:14:40 -!- kcm1700 has joined.
14:14:41 <mroman_> if this were {0]
14:14:43 <mroman_> {0}
14:14:47 <mroman_> it would be soo much shorter
14:17:45 <fizzie> 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 <fizzie> `! bf_txtgen hello
14:18:11 <HackEgo> 51 +++++++++++++[>++++++++>>><<<<-]>.---.+++++++..+++. [161]
14:18:12 <fizzie> ion: ^
14:18:16 <ion> Thanks
14:19:56 <mroman_> I can get 43B with 3dg
14:20:05 <mroman_> but handling the 0 is really tedious
14:24:29 <mroman_> it requires a "world"Q at the end of my program
14:24:52 -!- spiette has joined.
14:25:17 <mroman_> either that or some crazy Pp pP shit
14:25:20 <mroman_> which is also 43B
14:26:02 <mroman_> hm
14:26:02 <mroman_> wait
14:31:05 <mroman_> but 60B
14:31:05 <mroman_> wth
14:31:11 <mroman_> Even my crappiest solution so far is 49B
14:33:33 -!- oerjan has quit (Quit: leaving).
14:33:49 <mroman_> it can be made less crappy to 48B though
14:33:52 <mroman_> but still pretty crappy
14:33:55 <mroman_> it uses M-
14:33:58 <b_jonas> no way, I've written crappier I think
14:34:01 <b_jonas> let me check
14:34:14 <mroman_> {bx{3B!riXXsw}.+}m[M-uN
14:34:34 <b_jonas> http://golf.shinh.org/p.rb?hello+hello+world says I wrote 583 bytes
14:34:41 <mroman_> in what language?
14:34:44 <b_jonas> perl
14:34:46 <mroman_> oh well
14:34:50 <b_jonas> ok, that's bad, let me replace it with a real solution
14:34:52 <mroman_> I can't say anything about Perl
14:35:12 <b_jonas> a few minutes, let me write one
14:35:25 <b_jonas> I think that one basically encoded the whole output or something
14:36:25 <mroman_> I've heard Perl is dying
14:36:31 <mroman_> So I'm not gonna start golfing in it.
14:37:01 <b_jonas> I might not make it the golfiest, but 583 is riddiculously long
14:37:05 <b_jonas> I'll write something more decent
14:37:17 <int-e> mroman_: I suppose you *can* say anything about Perl.
14:38:00 <Bike> rip in peace
14:38:33 <mroman_> I didn't say that
14:38:36 <mroman_> I've heard that
14:38:59 <mroman_> but I treat it as a reliable source for my own convenience since I hate perl
14:40:07 <mroman_> It doesn't even have arguments
14:41:31 <mroman_> it has this ugly @_ thingy
14:41:49 -!- mihow has joined.
14:42:16 <b_jonas> there, 78 bytes
14:42:36 <b_jonas> much better
14:43:29 <b_jonas> now let me see if I can cut a few bytes
14:44:29 <b_jonas> can so
14:44:33 <b_jonas> 75 bytes
14:44:55 <b_jonas> ais is leading with 72 bytes
14:45:24 <b_jonas> ah duj
14:45:39 <b_jonas> 72 me too
14:45:51 <b_jonas> ok, now the difficult part, how can I cut it more
14:47:11 <mroman_> use a knife.
14:47:32 <b_jonas> it doesn't accept extra spaces in the lines
14:53:03 <b_jonas> also, I could compress world world!
14:53:21 <b_jonas> I had to write world only once in the source
14:54:10 <J_Arcane> I think I wanna do a golfLisp at some point, with 1 character keywords a la Pilot and Mouse.
14:54:57 <mroman_> ah
14:55:00 <Bike> you could just define some macros in lisp-of-your-choice.
14:55:12 <mroman_> being the author of burlesque I can say to you: There's no point doing that
14:55:17 <mroman_> sure the programs will be shorter
14:55:26 <Bike> but what about the soul
14:55:30 <mroman_> exactly
14:55:38 <mroman_> i.e. if you map lisp commands to 1bytes
14:55:40 <mroman_> it's still lisps
14:55:43 <mroman_> *LISP
14:55:47 <mroman_> it's shorter.. but it's still LISP
14:55:51 <mroman_> so might as well just golf in LISP
14:56:14 <mroman_> i.e. it doesn't provide additional fun
14:56:28 <J_Arcane> 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 <mroman_> and as for "as short as possible"
14:57:11 <J_Arcane> though, it's true as well that as a Scheme/Racket fan I actually kinda like the verbosity of that flavor.
14:57:13 <mroman_> gs2 is pretty damn good at that
14:57:47 <mroman_> better than golfscript, flogscript and burlesque
14:57:54 <b_jonas> it seems that compressing world world! saved 3 bytes
14:57:59 <Bike> in old editions of chaitin's Algorithmic Information Theory he used a lisp that used the apl character set
14:58:15 <b_jonas> or maybe only 2
14:58:17 <b_jonas> dunno
14:58:50 <Bike> and implicit parens. it's horrifying
15:00:01 <J_Arcane> Bike: Dear god, it sounds it.
15:00:18 <Bike> it's also compiled to diophantine equations
15:00:20 <Bike> sounds like a joke
15:15:05 -!- shikhout has joined.
15:17:52 -!- shikhin has quit (Ping timeout: 240 seconds).
15:19:06 <mroman_> `unicode CURLY LETTER R
15:19:07 <HackEgo> No output.
15:19:51 <mroman_> I guess this does not have some search heuristics?
15:20:28 <mroman_> `unicode THAT WEIRD SYMBOL USED IN MAIL ADDRESSES USUALLY IN THE MIDDLE
15:20:29 <HackEgo> No output.
15:20:45 <mroman_> `cat :-(
15:20:46 <HackEgo> ​☹
15:26:01 <Sgeo_> "Hijack do-notation for Applicative "
15:26:03 <Taneb> mroman_, it is the name of the character I think
15:26:07 <Sgeo_> Why is that an evil Haskell tip?
15:26:44 <Taneb> `unicode LATIN SMALL LETTER SIDEWAYS TURNED M
15:26:45 <HackEgo> ​ᴟ
15:27:22 <Taneb> `unicode ROMAN NUMERAL NINE
15:27:22 <HackEgo> ​Ⅸ
15:27:53 <mroman_> `unicode TURNED M
15:27:53 <HackEgo> U+019C LATIN CAPITAL LETTER TURNED M \ UTF-8: c6 9c UTF-16BE: 019c Decimal: &#412; \ Ɯ (ɯ) \ 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: &#623; \ ɯ (Ɯ) \ Uppercase: U+019C \ Category: Ll (Letter, Lowercase) \ Bidi: L (Left-to-Ri
15:27:56 <mroman_> ah
15:27:57 <mroman_> ok
15:28:02 <mroman_> `unicode LETTER R
15:28:02 <HackEgo> U+0052 LATIN CAPITAL LETTER R \ UTF-8: 52 UTF-16BE: 0052 Decimal: &#82; \ 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: &#114; \ r (R) \ Uppercase: U+0052 \ Category: Ll (Letter, Lowercase) \ Bidi: L (Left-to-Right) \ \ U+0154 LATIN CA
15:28:15 <mroman_> `unicode LETTER CURLY
15:28:16 <HackEgo> No output.
15:28:18 <mroman_> hm
15:28:30 <mroman_> `unicode R MATH
15:28:31 <HackEgo> No output.
15:28:46 <mroman_> `unicode ROMAN NUMERAL FIFTY
15:28:46 <HackEgo> ​Ⅼ
15:28:52 <mroman_> `unicode ROMAN NUMERAL THOUSAND
15:28:54 <HackEgo> No output.
15:28:58 <mroman_> `unicode ROMAN NUMERAL
15:28:58 <Taneb> `unicode MATHEMATICAL BOLD FRAKTUR CAPITAL R
15:28:59 <HackEgo> U+2160 ROMAN NUMERAL ONE \ UTF-8: e2 85 a0 UTF-16BE: 2160 Decimal: &#8544; \ Ⅰ (ⅰ) \ Lowercase: U+2170 \ Category: Nl (Number, Letter) \ Numeric value: 1 \ Bidi: L (Left-to-Right) \ Decomposition: <compat> 0049 \ \ U+2161 ROMAN NUMERAL TWO \ UTF-8: e2 85 a1 UTF-16BE: 2161 Decimal: &#8545; \ Ⅱ (ⅱ) \ Lowercase: U+2171 \ Category: Nl (Num
15:28:59 <HackEgo> ​𝕽
15:29:28 <Taneb> `unicode SCRIPT CAPITAL R
15:29:28 <HackEgo> ​ℛ
15:30:00 <Taneb> `unicode DOUBLE-STRUCK CAPITAL R
15:30:01 <HackEgo> ​ℝ
15:31:16 <b_jonas> I wonder if I could cut one more character with some trick
15:31:42 <Taneb> b_jonas, from what?
15:35:26 <b_jonas> hmm, I could actually use the pid trick here
15:35:29 <b_jonas> that could save three chars
15:35:36 <b_jonas> Taneb: http://golf.shinh.org/p.rb?hello+hello+world
15:39:23 <b_jonas> 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 <b_jonas> is that evil?
15:39:48 <b_jonas> there must be some other ways to save
15:42:02 <b_jonas> there, I used the pid trick. now I'm evil
15:42:28 <b_jonas> no wait, it failed
15:43:53 <b_jonas> 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 <HackEgo> [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 <mroman_> puhun vähän suomea.
16:54:52 <mroman_> also why doesn't windows have Dvorak International
16:54:53 <mroman_> or does it
16:56:31 <mroman_> also where the hell can I change it on Windows 8.1
16:57:28 <b_jonas> 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 <mroman_> no it's just hidden everywhere
16:57:45 <mroman_> some things you can change through the metro thingy
16:57:55 <mroman_> others through the regular control pannel
16:58:05 <elliott_> windows is pretty configurable...
16:58:16 <mroman_> and some stuff looks metro but is actually just a fullscreen window in the normal desktop environment
16:58:42 <mroman_> it's confusing if it pops up
16:58:49 <elliott_> hm? I don't think there is such a distinction
16:58:52 <mroman_> and you think it's metro so you press the windows key to switch back to the desktop
16:59:15 <mroman_> but since it's still on the desktop pressing the windows key will switch to the metro homepage thingy
16:59:52 <mroman_> elliott_: you can open metro applications while being on the desktop
17:00:00 <mroman_> and they are displayed fullscreen
17:00:08 <mroman_> but it's not considered to be in "metro" mode
17:00:23 <mroman_> (i.e. like I said pressing the windows key won't get you the desktop back)
17:00:30 <mroman_> you have to close the fullscreen window
17:00:36 <mroman_> before you can see your desktop again
17:01:31 <mroman_> Do anti-virus manufacturers still distinguish between spyware and other stuff?
17:01:43 <mroman_> Why would I need spyware protection if I have malware protection?
17:01:56 <mroman_> does malware protection not protect against malware spying on me?
17:02:10 <mroman_> 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 <zzo38> I think ALT+F4 and ALT+TAB and stuff are still the same for Metro and non-Metro though.
17:27:26 <zzo38> 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 <Vorpal> HI
18:21:34 <Vorpal> Hi*
18:25:13 <Bike> hI
18:26:31 <fizzie> !blsq "hH""iI"cpwD
18:26:31 <blsqbot> hi hI Hi HI
18:27:36 <b_jonas> [ ,'hH',"0/'iI'
18:27:37 <j-bot> b_jonas: hihIHiHI
18:27:46 <b_jonas> [ ,' ','hH',"0/'iI'
18:27:47 <j-bot> b_jonas: hihIHiHI
18:27:51 <b_jonas> [ ,' ',.'hH',"0/'iI'
18:27:51 <j-bot> b_jonas: hihI HiHI
18:27:56 <b_jonas> [ ,' ',"1'hH',"0/'iI'
18:27:56 <j-bot> b_jonas: hi hI Hi HI
18:29:30 <b_jonas> [ ;{' ';'hH';'iI'
18:29:31 <j-bot> b_jonas: hi hI Hi HI
18:30:15 <fizzie> !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 <blsqbot> 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 <mroman_> terve vorpal
19:08:26 <Vorpal> Hm?
19:08:49 <mroman_> or something like that
19:09:02 <mroman_> or was it Hei
19:09:03 <Vorpal> kay
19:09:08 <mroman_> I guess it was Hei?
19:09:10 <Vorpal> What language?
19:09:13 <mroman_> Finnish?
19:09:17 <Vorpal> No idea
19:09:19 <mroman_> oh
19:09:25 <mroman_> somebody set me up then saying you speak it
19:09:32 <Vorpal> No, I speak Swedish
19:09:49 <Vorpal> So... Hej!
19:10:44 <mroman_> oh
19:10:45 <mroman_> ok
19:10:59 <mroman_> maybe I thingie swedish with finnish
19:11:30 <mroman_> confused
19:11:36 <Vorpal> mroman_, fizzie, Deewiant and oklopol speak Finnish though at least
19:11:41 <Vorpal> Not sure who else
19:11:45 <mroman_> damnit my english skills are worsening.
19:11:49 <Vorpal> Probably forgot someone
19:13:21 <mroman_> deteriorating, diminishing
19:13:45 <Vorpal> mroman_, devolving?
19:14:17 <mroman_> devolve is negative?
19:14:31 <fizzie> The Finn-listing in the logs was quite complete and correct (you did forget a couple).
19:14:44 <Vorpal> fizzie, oh? Where in the logs?
19:14:53 -!- Sorella has quit (Ping timeout: 260 seconds).
19:17:49 <fizzie> When mroman_ asked around about this last.
19:19:40 <Vorpal> Ah
19:20:11 -!- nycs has changed nick to `^_^v.
19:20:27 <fizzie> It's a bit mixed up in there with other discussion, though.
19:20:40 <fizzie> I don't want to nickping people so I'll omit it anyway.
19:21:22 <fizzie> Or maybe I could mangle the names.
19:21:40 <int-e> or craft a link
19:21:51 <J_Arcane> 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 <fizzie> But the problem is, there's no complete list.
19:22:11 <mroman_> so. fizzie, Deewiant, oklopol and nortti
19:22:25 <fizzie> Also ate_hwa, inei_ros.
19:22:35 <fizzie> (I don't want to remember how to type a zero-width space.)
19:22:58 <fizzie> And J__Arcane (see what I did there) lives here but is not native, I think that was well-established.
19:23:12 <J_Arcane> Yes, I am indeed a resident.
19:23:14 <fizzie> Oh, and i_on is one too, I believe.
19:23:41 <fizzie> Or maybe they are Swedish with just a very Finnish-y name.
19:23:53 <Vorpal> Ah
19:23:59 <fizzie> And we all know that sha_chaf is nominally Finnish.
19:24:19 <shachaf> hi fizzie
19:24:31 <fizzie> I put an underscore in your name you're not supposed to notice.
19:24:32 <shachaf> do we all know that sha_chaf has /hilight on chaf\b
19:24:39 <fizzie> We don't all know that.
19:24:58 <fizzie> ^scramble shachaf
19:24:59 <shachaf> I looked in /usr/share/dict/words and everything!
19:25:02 <int-e> why would shac_haf do that?
19:25:04 <fizzie> Hey, where's fungot.
19:25:13 <fizzie> Oh, right, there was that power outage.
19:25:44 <Vorpal> 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 <shachaf> Exactly.
19:26:26 <shachaf> The main reason is that people keep misspelling the beginning of my name.
19:26:33 <int-e> I guess "sachaf" happens often enough
19:26:42 <Vorpal> shachaf, why? wouldn't they tab complete it?
19:26:43 <int-e> what about sahchaf?
19:26:46 <shachaf> "schachaf" is very common
19:26:48 <Vorpal> I type sh<tab>
19:27:01 -!- fungot has joined.
19:27:08 <int-e> ^style
19:27:08 <fungot> 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 <shachaf> Vorpal: You should set your IRC client to tab-complete with : rather than ,.
19:27:09 <mroman_> fungot: Hi there
19:27:10 <fungot> mroman_: ( sum-ec ( :list x l)) nl)) is equivalent to set! a ( cond ( f 1)
19:27:15 <Vorpal> shachaf, why?
19:27:22 <int-e> ^style alice
19:27:22 <fungot> Selected style: alice (Books by Lewis Carroll)
19:27:28 <fizzie> fungot: Are you quite sure about that? They don't look similar at all!
19:27:28 <fungot> 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 <shachaf> It looks like part of a sentence rather than part of a protocol this way.
19:27:37 <int-e> fungot, does that include bruno and sylvie?
19:27:37 <fungot> 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 <shachaf> I don't like it.
19:27:43 <Vorpal> shachaf! I don't see a reason to do so
19:28:00 <int-e> fungot: tell us about bread
19:28:00 <fungot> 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 <Vorpal> I should totally set it to ! or ?
19:28:11 <fizzie> I used ; as the tab-separator a long time ago.
19:28:23 <Vorpal> fizzie, why
19:28:36 <fizzie> It's a compromise between , and :, obviously.
19:28:41 <Vorpal> Ah
19:28:44 <fizzie> The worst of both worlds.
19:28:55 <fizzie> ^scramble shachaf
19:28:55 <fungot> sahfach
19:28:59 <Vorpal> Not best=
19:29:02 <Vorpal> s/=/?/
19:29:04 <fizzie> At any rate, I'll try to remember to use sahfach next time.
19:29:33 <mroman_> fizzie: what are you trying to do @hi HI Hi?
19:29:51 <int-e> I guess the "vice-warden" is from Sylvie and Bruno (and I did get that title wrong) indeed.
19:29:56 <fizzie> mroman_: Nothing at all, just there were three out of four on the channel already by that time.
19:30:17 <Vorpal> The "launch EFI shell" option in the "BIOS" settings screen refuses to work on my desktop hrrm
19:30:39 <mroman_> !blsq "HhiI"2cb
19:30:39 <blsqbot> {"H" "h" "i" "I" "HH" "Hh" "Hi" "HI" "hH" "hh" "hi" "hI" "iH" "ih" "ii" "iI" "IH
19:30:41 <mroman_> !blsq "HhiI"2CB
19:30:42 <blsqbot> {"HH" "Hh" "Hi" "HI" "hH" "hh" "hi" "hI" "iH" "ih" "ii" "iI" "IH" "Ih" "Ii" "II"
19:30:50 <int-e> a hollow shell, hmm
19:30:53 <mroman_> !blsq "HhiI"2CB:U_
19:30:54 <blsqbot> {"Hh" "Hi" "HI" "hH" "hi" "hI" "iH" "ih" "iI" "IH" "Ih" "Ii"}
19:31:14 <Vorpal> 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 <fizzie> mroman_: I keep forgetting about the ) and the : and such.
19:32:47 <Vorpal> What language is !blsq?
19:32:55 <fizzie> Burlesque.
19:32:59 <Vorpal> Ah
19:33:15 <mroman_> that weird bloaty language ;)
19:33:36 <fizzie> I wrote one Befunge entry to anagolf too, the other day.
19:34:09 <fizzie> 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 <elliott_> the interpreters it uses are in its source repo I think
19:35:17 <Vorpal> fizzie, they don't have befunge98 though, that is annoying
19:36:15 <fizzie> They do.
19:36:19 <fizzie> It runs on CCBI.
19:36:28 <fizzie> It might be a new addition.
19:37:04 <mroman_> up to three maps using ) is better
19:38:15 <fizzie> Vorpal: Apparently since Aug 31, this year.
19:39:05 -!- AnotherTest has quit (Ping timeout: 260 seconds).
19:41:21 <fizzie> 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 <fizzie> Oh well, it's not important. Just curious.
19:43:51 <fizzie> 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 <Deewiant> Bytes
19:44:47 <fizzie> 'k.
19:46:39 <fizzie> 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 <Vorpal> fizzie, ah cool
19:47:25 -!- AnotherTest has joined.
19:48:12 <Vorpal> fizzie, I wonder, would a wchar_t befunge-98 be standard compliant
19:48:22 <Vorpal> Or would it need to be an extension
19:48:26 <Deewiant> It would be
19:48:44 <Vorpal> Deewiant, really? That is 4 byte per character on Linux
19:48:49 <Deewiant> The standard doesn't say anything about file encodings (or if it does, not much, IIRC)
19:49:05 <Vorpal> Should add such an option to cfunge maybe, just for fun
19:49:23 <Deewiant> I was going to implement the UTF-foos in CCBI but never got around to it
19:49:33 <Vorpal> Well UTF is annoying
19:49:37 <fizzie> 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 <Vorpal> UCS4 is reasonable though
19:50:27 <fizzie> Er, I obviously mean from 0x100.
19:52:55 <fizzie> "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 <fizzie> 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 <Vorpal> fizzie, that is 2^31-1
19:58:09 <Vorpal> Weird
20:03:35 <elliott_> fizzie: they're limited to the cell size, aren't they?
20:04:04 <Deewiant> elliott_: He meant that the cell size limit can be arbitrarily large
20:04:41 <fizzie> 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 <fizzie> But of characters in the source file it gives that "no greater than 2^31-1" statement.
20:05:28 <elliott_> maybe they thought of extending it past 32 bits after writing that part.
20:06:39 <Deewiant> Maybe they wanted "typical" implementations to be capable of loading any file (on systems they support)
20:11:54 <Vorpal> fizzie, and of course bignum cells is poorly supported
20:11:57 <Vorpal> Like efunge has
20:12:34 <Vorpal> 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 <zzo38> 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 <Vorpal> I might do UCS4, that is all
20:17:31 -!- dianne has joined.
20:17:49 <Vorpal> 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 <ais523> hmm, fun spam subject line: "ARE YOU DEAD OR ALIVE????"
21:46:41 <ais523> I see it's using the Radixal!!!! approach to punctuation
21:48:17 <LordCreepity> lol
21:49:38 <b_jonas> 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 <b_jonas> I had to cheat to beat your solution
21:50:17 <ais523> b_jonas: my solution uses $$, I didn't realise that was considered cheating
21:50:28 <b_jonas> ais523: it's not really cheating on anagolf
21:50:36 <b_jonas> but if it uses $$ then I'm less worried
21:50:47 <b_jonas> that means you won't suddenly get ahead of me just by adding $$
21:50:48 <b_jonas> whew
21:51:05 <b_jonas> but of course you might just make it shorter by other means
21:52:38 <b_jonas> this hello hello world is a bit lucky because I have an obfu with a relevant technique on perlmonks
21:55:05 <Phantom_Hoover> what's $$
21:55:45 <b_jonas> Phantom_Hoover: $$ is getpid() (except cached but that shouldn't matter) in perl and ruby
21:55:58 <Phantom_Hoover> whither the cheat?
21:56:02 <b_jonas> 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 <Phantom_Hoover> ah?
21:56:18 <b_jonas> so if you need a 15 bit long integer in an anagolf entry
21:56:29 <b_jonas> you fork a lot before you submit to get the next pid right
21:56:32 <Phantom_Hoover> ha, ok
21:56:36 <b_jonas> then submit with $$ giving the right number
21:57:41 <b_jonas> nice trick, and it happens to help here
21:58:07 <ais523> b_jonas: you're aware that there's a PID setting utility that does the bruteforcing for you, right?
21:58:15 <b_jonas> ais523: yes
21:58:17 <ais523> presumably because shinh got fed up of people hammering the server
21:58:22 <b_jonas> but that's just an implementation detail
21:58:38 <b_jonas> the attack is there anyway
21:58:53 <b_jonas> I did use the pid setting utility
21:58:56 <ais523> it's like the AceHack startscummer
22:00:23 <b_jonas> 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 <b_jonas> but I don't think I'm going to try finding them, I don't much care
22:01:33 <b_jonas> 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 <ais523> 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 <ais523> mostly I'm just aiming for interesting short solutions, rather than the shortest
22:02:51 <ais523> 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 <ais523> I think I solved a problem in m4 once
22:03:10 <b_jonas> ais523: yeah, goruby seems to be easy to go for because nobody seems to submit in it
22:03:17 <ais523> which is really awkward because the only method m4 has to do input is the m4 translation of C's "#include </dev/stdin>"
22:03:21 <b_jonas> and it's efficient for many problems
22:03:37 <b_jonas> aha
22:03:47 <ais523> 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 <ais523> but things like unbalanced parens really screw you up
22:04:03 <b_jonas> yeah
22:04:10 <b_jonas> you can change the quotes but not the parens
22:04:14 <b_jonas> m4 sucks
22:04:31 <Bicyclidine> #include </dev/stdin> <-- *boggles*
22:04:40 -!- brandons1 has quit (Ping timeout: 260 seconds).
22:05:17 <b_jonas> 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 <b_jonas> also, I was wondering why anagolf doesn't have metapost or metafont. are their io capabilities that bad?
22:05:59 <b_jonas> maybe we should make a version of metapost with a bit better io statements
22:06:18 <Bicyclidine> can i golf in vhdl
22:06:45 <b_jonas> Bicyclidine: yes, anagolf can do that
22:06:49 <zzo38> 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 <Bicyclidine> thank god
22:07:43 <b_jonas> zzo38: how about output? can you suppress the initial hello message from metapost or metafont?
22:07:55 <b_jonas> does that even go to stdout or stderr? let me check
22:08:12 <b_jonas> to stdout
22:08:13 <b_jonas> ouch
22:08:21 <b_jonas> then that's the problem
22:08:23 <b_jonas> we need a variant
22:08:38 <zzo38> b_jonas: No you cannot change the initial message in METAFONT or in TeX.
22:08:49 <Bicyclidine> not even with a command line switch?
22:09:01 <b_jonas> zzo38: how about in metapost?
22:09:05 <zzo38> Bicyclidine: That is implementation-specific; some implementations might support it.
22:09:13 <zzo38> b_jonas: I don't know how metapost works, sorry.
22:09:15 <Bicyclidine> weird
22:09:26 <Bicyclidine> having a welcome message is standard but turning it off isn't?
22:09:32 <zzo38> Bicyclidine: Yes.
22:09:44 <Bicyclidine> -_-
22:09:46 <b_jonas> Bicyclidine: it's three decades old. computers worked differently back then.
22:10:15 <Phantom_Hoover> <Bicyclidine> #include </dev/stdin> <-- *boggles*
22:10:18 <Phantom_Hoover> do you even m4
22:10:19 <zzo38> Note you can still do I/O with files; you don't have to use stdin/stdout.
22:10:37 <Phantom_Hoover> i 'learnt' m4 several years ago, it was quite the experience
22:10:38 <Bicyclidine> but it's on version 3 point something!!!!
22:10:38 <Bicyclidine> Phantom_Hoover: why would i even m4
22:11:29 <Phantom_Hoover> because it's like a glorious, multicoloured trainwreck of macro abuse
22:12:03 <zzo38> *All* command-line switches to TeX and METAFONT are implementation-specific, actually.
22:12:59 <fizzie> ais523: I've been looking into writing some z80 solutions, though the one I've submitted isn't terribly golfy.
22:13:29 <ais523> fizzie: what libc support do you have in the z80 mode?
22:13:37 <fizzie> ais523: There's a getchar and a putchar.
22:13:42 <fizzie> ais523: And that's it.
22:13:44 <Bicyclidine> haha.
22:13:47 <ais523> fizzie: right
22:14:09 <fizzie> Most of my 48-byte code is probably related to printing decimal numbers, in fact.
22:18:08 <fizzie> 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 <ais523> fizzie: NOP sleds are a known machine language programming technique
22:19:18 <ais523> although they're mostly used maliciously
22:21:54 <fizzie> 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 <ais523> fizzie: perhaps the address lines are hooked up to virtual hardware
22:23:01 <ais523> I know lots of old consoles used "attempt to write to ROM" as the method of triggering a hardwired syscall
22:23:08 <ais523> like "swap to a different bank of memory"
22:24:20 <zzo38> 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 <Bicyclidine> i'm told some star wars game for wii starts with essentially (NULL)();
22:27:10 <Bicyclidine> sounds pretty legit imo
22:27:55 <ais523> Bicyclidine: gcc-bf does that in its implementation of _exit
22:28:00 <ais523> only it's written as "goto *(void *)0;"
22:28:31 <Bicyclidine> computed goto's always great, huh
22:29:28 <zzo38> 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 <Bicyclidine> it works, i'm so excited to be programming at an innovative 1960s level
22:31:21 <ais523> hmm, if you have a switch statement where all the branches are similar enough that they have identical numbers of bytes
22:31:44 <ais523> do compilers compile that into a computed goto that just uses a multiplication and addition to find the address?
22:32:10 <Bicyclidine> i tried that last time, didn't work though
22:32:14 <Bicyclidine> i should try again
22:32:28 <Bicyclidine> (with a shift rather than a full multiply, ofc)
22:32:49 <ais523> depends on the processor
22:33:00 <LordCreepity> ais523: i imagine that is uses a jmp instruction
22:33:01 <ais523> modern processors are normally memory-bandwidth-bound, so a multiply isn't actually any slower than a shift
22:33:08 <LordCreepity> s/is/it/
22:33:20 <Bicyclidine> the one i'm using has a separate multiplier unit, so
22:33:29 <Bicyclidine> i guess i could time it
22:33:38 <zzo38> In 6502 there is an indirect jump instruction, but it can't do much.
22:33:47 <zzo38> So sometimes "RTS trick" is used instead.
22:34:52 <zzo38> 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 <fizzie> 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 <Bicyclidine> 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 <ais523> Bicyclidine: wow, that's even worse than aimake
22:37:03 <ais523> (which can now build NetHack in under 512 MB!)
22:37:20 <zzo38> It isn't very good, especially if LLVM cannot have option to limit usage of RAM and stuff like that
22:38:03 <zzo38> 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 <zzo38> (In verbose mode, it could display a message to tell you about that.)
22:38:27 <Bicyclidine> i've seen a lot of compilers do badly on generated code, really
22:38:46 <Bicyclidine> i just want you to do this halting problem equivalent operation within bounded space, lazy jerks
22:39:29 <Bicyclidine> oh, here we go lists.cs.uiuc.edu/pipermail/llvmdev/2013-November/068163.html
22:40:28 <fizzie> 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 <ais523> 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 <ais523> that seems like the same sort of problem as an instruction scheduler
22:41:20 <ais523> and gcc's internals aren't designed for instruction schedulers to work at all, really
22:41:58 <fizzie> 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 <ais523> fizzie: that's the sort of program where it'd be trivial to beat the compiler, I think
22:43:15 <Bicyclidine> you know what's fun, is a case statement that works on constant strings in its cases
22:43:29 <ais523> is this with -Os? that's the only optimization level where you can really play beat-the-compiler objectively
22:43:36 <ais523> because it's hard to know what will or won't be faster, but you can easily count bytes
22:43:56 <ais523> Bicyclidine: that compares content, presumably, rather than addresses?
22:44:02 <fizzie> ais523: Yes. With -O3 it will put a separate "jmp f" in each case.
22:44:06 <Bicyclidine> ais523: right
22:44:22 <zzo38> 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 <Bicyclidine> 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 <zzo38> ais523: Do you know if it can take advantage of if all unspecified cases are specified as being impossible?
22:45:33 <ais523> zzo38: gcc and clang already interpret undefined behaviour as a "this will never happen" case and optimize accordingly
22:45:42 <ais523> I'm not sure if there's an "official" way to write it, though
22:45:47 <ais523> perhaps there's a __builtin_unreachable or the like
22:46:37 <zzo38> On my computer it says "__builtin_unreachable" is not defined.
22:46:45 <elliott_> Bicyclidine: what's the halting problem equivalent operation?
22:46:49 <zzo38> (It is mentioned in GCC documentation, though.)
22:47:01 <Bicyclidine> elliott_: compiling (perfectly i guess)
22:47:10 <elliott_> Bicyclidine: if you're only optimising constant factors, not that hard
22:47:30 <elliott_> in that you can compile naively to get upper bounds and then brute force it
22:47:36 <elliott_> "not that hard"
22:47:39 <elliott_> I mean, conceptually.
22:47:45 <Bicyclidine> https://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Other-Builtins.html#Other-Builtins this has builtin_unreachable
22:48:10 <zzo38> In LLVM it is just called "unreachable", I think.
22:48:17 <Bicyclidine> __builtin_unreachable, o well
22:48:46 <zzo38> 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 <Bicyclidine> "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 <fizzie> C11 adds a standard _Noreturn function specifier, by the way.
22:50:51 <Bicyclidine> haha
22:51:05 <Bicyclidine> is that like some kinda c11 attribute, or do you just have a million specifiers before each function name
22:51:24 <fizzie> Syntactically it's a function-specifier exactly like 'inline'.
22:51:31 <Bicyclidine> nice.
22:51:40 <fizzie> And there are a total of two of them: 'inline' and '_Noreturn'.
22:51:57 <ais523> 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 <zzo38> Is it allowed to specify both?
22:52:48 <zzo38> 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 <fizzie> "7.23 _Noreturn <stdnoreturn.h>: The header <stdnoreturn.h> defines the macro 'noreturn' which expands to '_Noreturn'." I wonder if this is the shortest library chapter in the standard.
22:53:28 <Bicyclidine> 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 <fizzie> Even <stdalign.h> and <stdbool.h> include at least a couple of other things in addition to their "_Foo"-to-"foo" macro.
22:54:10 <ais523> I just looked at my stdnoreturn.h
22:54:15 <ais523> the comment is much longer than the file itself
22:54:27 <ais523> (which consists of a multiple inclusion guard, and a check to see if it's C++, and the definition in question)
22:54:30 <zzo38> 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 <zzo38> Probably you would have to use conditional compilations if doing it in a C code.
22:54:47 <fizzie> Oh ho! The one in clang defines __noreturn_is_defined, too.
22:55:08 <fizzie> (<stdalign.h> defines __alignas_is_defined and __alignof_is_defined -- I guess they've copied that.)
22:55:12 <Bicyclidine> ugh, i never remember where includes are
22:57:05 <Bicyclidine> and there's /usr/include/stdio.h but it's defined in terms of iostreams... unixes are so confusing.
22:57:20 <fizzie> 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 <fizzie> 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 <Bicyclidine> 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 <ais523> things that confuse my instincts: the CPU not getting hot when I run a compile on a remotely hosted VM
23:23:10 <Melvar> Hey, what was the lispy name for lists of alternating keys and values?
23:28:37 <elliott_> Melvar: as in (k v k v ...)?
23:28:44 <elliott_> not sure it has a name but ((k . v) (k . v) ...) is an alist
23:28:53 <elliott_> (association list)
23:29:36 -!- Sgeo has joined.
23:32:47 <Melvar> 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 <elliott_> arclist, since only paul graham likes them :p
23:38:28 <ais523> elliott_: there's one in the Java stdlib internals
23:38:36 <ais523> it's completely awful because k and v have entirely different types
23:38:42 <ais523> so it has to use an array of Objects and cast everywhere
23:39:18 <Melvar> 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 <elliott_> ais523: yep
23:39:41 <ais523> Melvar: I find it hard to see how that'd break totality
23:39:51 <ais523> unless you have a sometimes_cast operator or the like, that errors out if given bad arguments
23:39:59 <ais523> that's really just a lack of type safety though IMO
23:40:26 <elliott_> Melvar: how does [] notation desugar in idris?
23:41:07 <Melvar> elliott_: Applications of (::) and Nil, unqualified.
23:42:07 <elliott_> 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 <Melvar> 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 <elliott_> (::) :: a -> [(a,b)] -> (a,[(a,b)]); (::) :: b -> (a,[(a,b)]) -> [(a,b)], I guess?
23:47:31 <Melvar> With the order in the pairs swapped, but otherwise yes.
23:47:48 <Melvar> Also, what mixery of syntaxes.
23:48:00 <Melvar> ;)
23:48:52 <elliott_> er, heh
23:48:59 <elliott_> it's okay, it's overloaded!
23:49:22 <elliott_> (::) :: {a : Type} -> a -> (b : Type) -> {a = b} -> Stmt
23:49:37 <elliott_> ...
23:49:41 <elliott_> I like how I then started using :
23:50:16 <Melvar> > :let AltList.Even.(::) : a -> (b, List (a, b)) -> List (a, b); AltList.Even.(::) x (y, ps) = (x, y) :: ps
23:50:18 <lambdabot> <hint>:1:1: parse error on input ‘:’
23:50:22 <Melvar> Argh.
23:50:25 <Melvar> ( :let AltList.Even.(::) : a -> (b, List (a, b)) -> List (a, b); AltList.Even.(::) x (y, ps) = (x, y) :: ps
23:50:25 <idris-bot> defined
23:51:27 <Melvar> ( :let AltList.Uneven.(::) : b -> List (a, b) -> (b, List (a, b)); AltList.Uneven.(::) = MkPair
23:51:27 <idris-bot> defined
23:52:00 <Melvar> ( the (List (String, Bool)) ["foo",True,"bar",False]
23:52:00 <idris-bot> [("foo", True), ("bar", False)] : List (String, Bool)
23:52:21 <copumpkin> wat
23:52:31 <Melvar> ( the (List (_,_)) ["foo",True,"bar",False]
23:52:31 <idris-bot> [("foo", True), ("bar", False)] : List (String, Bool)
23:52:41 * copumpkin is disturbed
23:53:15 * Melvar is shamelessly exploiting [,] overloading.
23:53:40 <copumpkin> I see that :/
23:53:53 -!- Sgeo_ has joined.
23:54:00 <Melvar> Hmm.
23:54:09 <Melvar> ( the (List _) ["foo",True,"bar",False]
23:54:09 <idris-bot> [("foo", True), ("bar", False)] : List (String, Bool)
23:55:16 <Melvar> ( the (List _) ["foo",True,"bar"]
23:55:16 <idris-bot> (input):1:15:When elaborating an application of constructor Prelude.List.:::
23:55:16 <idris-bot> Can't unify
23:55:16 <idris-bot> Bool
23:55:16 <idris-bot> with
23:55:16 <idris-bot> String↵…
23:55:54 <ais523> is String↵ like String but it ends with a newline?
23:56:51 <Melvar> The ↵… is an indication by the bot that more output would follow after a newline.
23:57:16 <Melvar> Whereas … by itself indicates that a line was too long.
23:57:56 -!- Sgeo has quit (Ping timeout: 255 seconds).
23:58:58 <ais523> right
←2014-10-09 2014-10-10 2014-10-11→ ↑2014 ↑all