←2013-12-28 2013-12-29 2013-12-30→ ↑2013 ↑all
00:00:07 <kmc> not at the moment
00:07:27 -!- ^v has quit (Quit: http://i.imgur.com/MHuW96t.gif).
00:07:53 <Vorpal> kmc, Hm? "inspect & destructure types"?
00:08:08 <Vorpal> destructure is not even a real word!
00:08:27 <Bike> says you
00:08:51 <Vorpal> Says the spell checker
00:09:09 <kmc> the definition of Foo<T> can ask, say, whether T is a pointer, and if so, do things with the pointed-to type
00:09:13 <kmc> http://www.cplusplus.com/reference/type_traits/
00:11:14 <Bike> i've poked at compile-time type introspectiony stuff, but it's hard to conceptualize. what is a pointer tye, really
00:11:22 <zzo38> kmc: In mine, you could probably do things with pointed-to-type, using the typeof operator, for example (typeof(*(X)0)) or something like that. (You can also define your own pointer types, which I don't know if C++ can do)
00:11:34 <kmc> how do "your own pointer types" work?
00:11:52 <kmc> in C++ you define your own pointer types by making a struct/class which overloads operator* and such
00:12:06 <kmc> these so-called "smart pointers" are very important to writing C++ in a high level, memory-safe style
00:12:20 <zzo38> Well, it works something like that.
00:12:29 <zzo38> So, yes it is a bit similar to the C++ way.
00:13:10 <zzo38> But, the functions to deal with them are called "deref" and "assign" (including the quotation marks), rather than operator*
00:15:02 <zzo38> Do you understand this now?
00:16:41 -!- oerjan has quit (Quit: Hnäjte).
00:17:19 <Vorpal> zzo38, what about the difference between operator* and operator-> ?
00:17:50 <Vorpal> In C++ the former returns a reference and the latter a pointer I believe
00:18:02 <Vorpal> In theory you could return different values for them
00:18:07 <Vorpal> Can't see that being useful though
00:18:09 <zzo38> Vorpal: In mine there isn't a difference.
00:18:36 <Vorpal> zzo38, well I doubt you could fully emulate C++ in it then
00:18:40 <zzo38> If the return type of "deref" is a struct/union type, then you can use the -> operator with it.
00:18:46 <Vorpal> All the so called "useful" features perhaps
00:19:02 <Vorpal> What about pointers to member functions?
00:19:14 <Vorpal> Has a ->* syntax or something like that
00:19:20 <zzo38> Vorpal: I don't intend to "fully emulate" C++; I only am saying that some useful features of C++ are possible to imitate, but not exactly the C++ way.
00:19:40 <zzo38> How to "pointers to member functions" work?
00:19:50 <kmc> it's a little sad that Rust doesn't have anything with those particular capabilities of C++ templates, even though C++ templates themselves are a mess
00:20:35 <Vorpal> zzo38, It is like a function pointer (points to a function of the given prototype that is also a member of this class) but you provide the actual this-pointer object when calling the function pointer
00:20:36 <Bike> imo pass first-class environments to macro-functions
00:20:37 <zzo38> kmc: Can you do some things, with macros, though?
00:20:45 <Vorpal> zzo38, I used it *once*
00:21:03 <Vorpal> I never used pointer to member variables, which also exists in a similar manner
00:21:21 <zzo38> Vorpal: Black-C doesn't have a "this" pointer
00:21:46 <Vorpal> zzo38, so no member functions?
00:21:56 <zzo38> If your compiler supports trampolines then you may be able to implement such member function pointers
00:22:00 <Vorpal> Ah...
00:22:01 <kmc> zzo38: yes, there are macros, and there is parametric polymorphism with type classes, but there's nothing which inspects types in this way
00:22:16 <zzo38> Vorpal: Structures and unions can have functions as long as they are static (or extern static).
00:22:38 <Vorpal> Also stay away from MI.
00:22:45 <Vorpal> Also virtual inheritance is a mess
00:22:56 <Vorpal> I never figured out how it works completely
00:23:19 <Vorpal> Btw, python's scoping is terrible
00:23:31 <Vorpal> As far as I can tell it is late binding dynamic scoping?
00:23:32 <zzo38> My specification has no virtual functions or multiple inheritance or those things either, but you can try to fake it.
00:23:37 <zzo38> (Maybe.)
00:23:43 <Vorpal> Kind of
00:24:01 <nucular> hm? terrible?
00:24:09 <Vorpal> Hm no it isn't dynamic scoping
00:24:14 <Vorpal> Nor is it true static scoping
00:24:48 <Vorpal> nucular, well yes... def foo(): return x and then declare x *later* in the module scope (as long as you don
00:24:56 <Vorpal> don't* call it before declaring x) works
00:25:11 <Vorpal> I'm personally not a fan of any sort of late binding
00:25:28 <nucular> hm, i like it
00:25:30 <Vorpal> python is a nice scripting language apart from that though
00:25:42 <Vorpal> would much prefer static typing and early binding
00:26:06 <nucular> also, i think module systems get much weirder in my projects
00:26:15 <Vorpal> nucular, oh?
00:26:23 <Vorpal> Than what? Python?
00:27:21 <nucular> what?
00:28:16 <Bike> "get much weirder" "than what"
00:28:20 <kmc> module systems are a pretty interesting area of PL that I never really learned much about
00:28:43 <kmc> Haskell and Rust are both pretty conservative re: modules, although Rust's module system is definitely more complicated than Haskell's
00:28:46 <Vorpal> kmc, PL?
00:28:53 <kmc> programming languages (as a field of study)
00:28:55 <Vorpal> AH
00:28:59 <Vorpal> Ah*
00:29:06 <nucular> For example I have a main script that imports a module that imports the main script
00:29:33 <Vorpal> kmc, I think the simple system of erlang works well. It is simple apart from the "reload on the fly and keep two versions in memory at once" bit
00:29:52 <Vorpal> nucular, that sounds like bad design
00:30:09 <nucular> The module uses a class that was defined in the main script, and the main script uses the instances created in the module
00:30:24 <Bike> "Due to the large number of spambot signups from China, we no longer allow .ch email addresses"
00:30:44 <Vorpal> I have had python scripts that loops through an array and import modules from that though (for a build system generator thingy, each imported module was the config for that project, defining how to generate that sub-dir)
00:30:56 -!- hogeyui_ has quit (Ping timeout: 252 seconds).
00:31:20 -!- hogeyui_ has joined.
00:37:31 -!- hogeyui_ has quit (Ping timeout: 246 seconds).
00:41:59 -!- hogeyui_ has joined.
00:44:45 -!- nisstyre has quit (Quit: Leaving).
00:46:08 -!- nisstyre has joined.
00:47:05 -!- hogeyui_ has quit (Ping timeout: 272 seconds).
00:53:37 -!- hogeyui_ has joined.
00:55:57 -!- nucular has quit (Ping timeout: 272 seconds).
00:56:54 -!- nucular has joined.
01:15:17 -!- nisstyre has quit (Quit: Leaving).
01:35:33 -!- Sprocklem has quit (Ping timeout: 245 seconds).
01:45:21 <quintopia> zzo38: halp
01:45:50 <quintopia> zzo38: why did this render like this and what do i need to do to fix it: http://esolang.rutteric.com/files/oneill1.4.pdf
01:47:14 <zzo38> quintopia: What part is the problem?
01:47:29 <quintopia> zzo38: hold on
01:48:17 <quintopia> zzo38: never mind. it's just PDF.js sucking.
02:02:17 -!- yorick has quit (Remote host closed the connection).
02:14:23 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
02:22:40 <zzo38> Is memcpy(malloc(sizeof(x)),&(x),sizeof(x)) proper?
02:23:58 <kmc> malloc might return NULL
02:24:05 <kmc> also maybe it's possible for x to have size 0?
02:25:10 <zzo38> I suppose these things are possible, but I don't expect that memcpy should do anything if the size is zero.
02:27:04 <kmc> malloc(0) is allowed to return NULL on success; I don't know if memcpy(NULL, x, 0) is allowed or not, but what you say is certainly plausible
02:28:41 <nucular> Am I the only one here getting sudden massive CTCP spam?
02:28:49 * kmc isn't
02:28:53 <kmc> who's it from?
02:29:06 <nucular> CJJWCFFDDBAV
02:29:18 <zzo38> If malloc(0) *does* return NULL on success, then memcpy(NULL, x, 0) should be allowed, too; it would be the sensible way.
02:29:19 <kmc> they aren't in this channel
02:29:26 <Bike> sounds like a reliable person
02:29:27 <nucular> seems like freenode is under a spambot attack
02:29:39 <kmc> zzo38: I agree, however ISO 9899 and POSIX and such are not always sensible :/
02:34:35 <nucular> Users being inside #freenode live dangerously it seems
02:35:24 -!- nisstyre has joined.
02:39:43 <zzo38> In my opinion the specification of malloc(0) ought to be: It doesn't matter what it returns (whether it is same every time or different every time, even), as long as free(malloc(0)) is allowed and does not damage the rest of the program, and furthermore that realloc(malloc(0),x) will be like malloc(x), and realloc(malloc(x),0) like malloc(0).
02:41:04 <zzo38> And furthermore, the results of malloc(0) can be used anywhere a pointer to a zero-length object is expected (such as with memcpy and memmove).
02:45:06 -!- nisstyre has quit (Quit: Leaving).
02:46:34 <kmc> zzo38: yes, free(NULL) is allowed (whether or not malloc(0) returns NULL)
02:48:08 <kmc> sometimes you see such as #define extra_super_safe_free(x) do { free(x); x = NULL; } while (0)
02:48:21 <kmc> with the idea that double free() can be dangerous but extra_super_safe_free() is idempotent
02:48:33 <zzo38> Ah, OK.
02:49:03 <zzo38> I just do it myself when it is necessary, although I do suppose to use a macro would work too.
02:49:13 <kmc> my gut feeling is that this is ``too clever'' and will backfire in some way I'm not anticipating
02:49:17 <kmc> but *shrug*
02:50:24 <zzo38> You just have to ensure that x is a lvalue without side effects, I would think, as well that the macro is not itself called with a pointer to a object that is already destroyed or invalid
02:50:36 <kmc> yeah
02:51:53 <zzo38> But it is useful even for reasons other than to be more safe; and actually those other reasons are the ones I would use them for, since rather I just wanted to record that it is not existing anymore.
02:52:05 <kmc> should C have a "post-assign" operator such that (supposing it were spelled =.) you could do free(x =. NULL) ?
02:52:50 <zzo38> A "post-assign" operator is actually something I have wanted to have, for other reasons too
02:52:56 <kmc> which reasons?
02:53:24 <zzo38> I do not remember, but I do know I have wanted it for other reasons.
02:54:53 <zzo38> Probably a macro can be made of it in GNU C using ({ ... })
02:55:35 <kmc> maybe, but how?
02:56:00 <kmc> GNU C is basically C fan fiction
03:22:06 -!- nooodl_ has joined.
03:22:43 -!- nooodl has quit (Ping timeout: 252 seconds).
03:26:19 <zzo38> #define post_assign(x,y) ({ typeof(x) local1=x; x=y; local1; })
03:26:51 <kmc> hm, I suppose
03:28:17 -!- Sprocklem has joined.
03:53:10 <Jafet> It's better than canon though
03:53:55 -!- tromp_ has joined.
03:53:58 <kmc> yes
03:54:18 -!- nisstyre has joined.
03:54:44 <kmc> so what's the language extension equivalent of Erotic Versions of Star Trek Where All the Characters Are Furries, Like Kirk is an Ocelot or Something, and They Put A Furry Version of Themselves as the Star of the Story
03:55:30 -!- Sorella has quit (Remote host closed the connection).
03:59:42 <LinearInterpol> what.
03:59:44 <Jafet> -fgnu-runtime
03:59:57 <LinearInterpol> kmc: i'm absolutely confused by that message.
04:00:18 <kmc> http://brunching.com/images/geekchartbig.gif
04:00:22 <Jafet> I would totally read that fanfic itt
04:00:32 <kmc> -fheinous-gnu-extensions
04:01:33 <Bike> probably one of those C-with-a-shitload-of-macros-and-custom-preprocessor things
04:01:39 <Bike> like qt but for c, ic an't think of any xxamples
04:01:58 <kmc> zzo38: from where does the name Black-C come?
04:05:57 -!- nucular has quit (Ping timeout: 246 seconds).
04:26:19 <zzo38> kmc: From my own name. Black is my name.
04:26:29 <kmc> oh!! right
04:27:19 <ion> That’s racist
04:28:25 <zzo38> A lot of arrows go both ways.
04:32:53 <elliott> ion: dumb
04:33:49 <zzo38> ion: What are you saying is racist?
04:34:28 -!- mauke has quit (Remote host closed the connection).
04:37:21 -!- mauke has joined.
04:44:53 -!- Bike_ has joined.
04:45:32 -!- mauke has quit (Disconnected by services).
04:45:40 -!- mauke has joined.
04:46:13 -!- Bike has quit (Ping timeout: 272 seconds).
04:47:05 -!- preflex has quit (Ping timeout: 246 seconds).
04:47:31 -!- preflex_ has joined.
04:47:57 -!- preflex_ has changed nick to preflex.
05:01:25 -!- carado has quit (Ping timeout: 246 seconds).
05:06:39 <zzo38> There there public domain editions of the Bible which are English and have better quality than KJV (and that include deuterocanonical books, and perhaps also a few others)?
05:06:48 -!- Bike_ has changed nick to Bike.
05:06:52 <Bike> "There there"?
05:07:06 <zzo38> s/There there/Are there/
05:08:15 <Bike> hum, NIV's still in copyright
05:08:20 <kmc> KJV isn't public domain? oh right, in the UK it's under perpetual Crown copyright
05:08:31 <quintopia> zzo38: seems unlikely. if someone puts in the effort to retranslate, surely they'll want a little bit of recompense for the effort. but then, i don't know if people copyright bible translations ever.
05:08:53 <Bike> they do
05:08:54 <quintopia> i guess britain did once
05:09:18 <Bike> wikisource has some http://en.wikisource.org/wiki/Bible
05:09:35 <quintopia> Bike: i would if i had done it, but it seems counter to the goal of spreading it as widely as possible
05:10:14 <Bike> you still might want to control derivative works, etc
05:10:18 <zzo38> kmc: Yes, it has that problem, but it is also the quality I am looking for (and furthermore, academic more than religious)
05:10:53 <Bike> academic edition in the pd sounds like a nice dream, unfortunately
05:11:15 <quintopia> zzo38: yeah you're gonna pay for something as high-quality as an oxford bible
05:12:53 <kmc> maybe shachaf can translate some bible for you
05:13:20 <Bike> what the hell is gopher wood
05:13:23 <zzo38> quintopia: If I want an actual book (including with an index and everything like that) then I would pay, that would be fine; however I wanted a public domain copy which can be made the plain ASCII file in a computer.
05:14:19 <Bike> my experience with public domain plaintext is ungood (shudders at memories of victorian-era mahabharata)
05:14:28 <Bike> of translations*
05:15:16 <kmc> Bike: a good name for a band, is what
05:15:20 <kmc> but not as good as Kingpiss
05:15:39 <Bike> "The World English Bible (also known as the WEB) is a free updated revision of the American Standard Version (1901). It is one of the only public domain, modern-English translations of the entire Bible. It is freely distributed using electronic formats. The Bible was created on the base of the ASV by volunteers on the ebible.org project and edited by Rainbow Missions, Inc., a Colorado nonprofit corporation."
05:15:47 <Bike> i guess this is probably the best you're going to get
05:16:02 <zzo38> Ah, there it is.
05:16:56 <kmc> http://achewood.com/index.php?date=01222007
05:18:04 <zzo38> If it isn't in plain text format, it can (hopefully) be converted, and if it contains some errors (in the translation, or just typographical), then can be improved (and if such improvements are made, it should clearly be marked as such; no confusion with original format please!)
05:18:17 <zzo38> Which books is it including/excluding?
05:19:28 <Bike> looks like it's got the usual stuff and the deuterocanon
05:19:47 <Bike> if you want mary or enoch i dunno what to tell you
05:19:59 <zzo38> That is good then, since some don't have deuterocanon.
05:20:00 <kmc> deuterocannon
05:40:13 <shachaf> hi kmc
05:40:23 <shachaf> am in sf
05:40:42 <shachaf> good city
05:46:39 <kmc> cool
05:46:47 <kmc> translate any bibles lately?
05:47:01 <kmc> what's in sf anyway
05:47:58 <Bike> no.
05:48:07 <Bike> um. wrong window.
05:48:19 <Bike> i assert that in sf is no
05:49:58 <kmc> are you prolog
05:50:35 <Bike> no.
05:50:47 -!- tromp__ has joined.
05:53:20 -!- tromp_ has quit (Ping timeout: 245 seconds).
06:13:15 -!- nooodl_ has quit (Quit: Ik ga weg).
06:27:00 -!- Bike has quit (Ping timeout: 246 seconds).
06:28:56 -!- Bike has joined.
07:03:22 -!- nisstyre has quit (Quit: Leaving).
07:15:31 <Sgeo> Pokemon Yellow... is turing complete
07:15:32 <Sgeo> http://beza1e1.tuxen.de/articles/accidentally_turing_complete.html
07:15:32 <Sgeo> way
07:15:34 <Sgeo> *wat
07:19:33 <Fiora> it's only turing complete since like, it has an arbitrary code execution vulnerability, right?
07:21:48 <zzo38> That's silly, the cartridge doesn't have an infinite amount of RAM in it.
07:22:47 <Sgeo> Fiora: yes
07:22:56 <mauke> "Stuff which is somehow limited (stack overflows, arbitrary configuration, etc) is still considered Turing complete, since all "physical" Turing machines are resource limited."
07:33:30 <Bike> you should all watch the video corresponding to that hack
07:33:37 <Bike> a good tas
07:34:05 <Bike> http://www.youtube.com/watch?v=3UnB1fomvAw i think it's this one
07:35:50 <Bike> you can kinda see reality disintegrate
07:43:18 -!- Sprocklem has quit (Ping timeout: 246 seconds).
07:51:08 -!- impomatic has quit (Quit: impomatic).
08:08:27 -!- tromp_ has joined.
08:10:47 -!- tromp__ has quit (Ping timeout: 272 seconds).
08:14:13 -!- tromp_ has quit (Ping timeout: 272 seconds).
08:14:41 -!- tromp_ has joined.
08:49:27 <mroman> mauke: Even if the universe were infinite?
08:56:48 -!- heroux has quit (Ping timeout: 245 seconds).
08:57:47 -!- heroux has joined.
09:00:37 -!- oerjan has joined.
09:05:54 -!- copumpkin has quit (Ping timeout: 246 seconds).
09:09:19 -!- LinearInterpol has quit (Ping timeout: 272 seconds).
09:10:07 -!- copumpkin has joined.
09:13:51 <coppro> Q: what is the standard measure of old data?
09:13:51 <coppro> A: The trilobyte.
09:18:12 <oerjan> what a silurious joke
09:34:37 <oerjan> @ask nucular <nucular> Am I the only one here getting sudden massive CTCP spam? <-- have you set the +i flag on yourself? iiuc it makes you invisible to spammers not in the same channel.
09:34:37 <lambdabot> Consider it noted.
09:35:56 <oerjan> oh he's in #freenode
10:04:43 <coppro> that'll do it
11:05:35 -!- impomatic has joined.
11:25:06 <tertu> i don't think "turing-complete" could even apply to pokemon yellow
11:25:34 <tertu> gsc has a simple scripting system for in-game events and i assume you could figure its computational class
11:26:46 <coppro> tertu: well
11:27:02 <coppro> http://tasvideos.org/3767S.html
11:27:44 <tertu> i guess the arrangement of the items is some sort of language
11:35:58 -!- tertu has quit (Ping timeout: 245 seconds).
11:42:51 -!- copumpkin has quit (Ping timeout: 260 seconds).
11:47:37 -!- copumpkin has joined.
11:48:23 <fizzie> Calling rebooting the game while saving to corrupt memory a "valid action[] (like walking from one place to another or buying items)" is kind of stretching it.
11:53:21 <Taneb> I bumped into one of my old sort-of friends from high school
11:53:26 <Taneb> Apparently he now programs in Haskell
11:53:32 <FreeFull> Everything in a TAS is allowed as long as it would be technically (but probably not) possible with just the original hardware, and it gets you to the ending screen
11:53:44 <FreeFull> Taneb: Talk to him about Haskell!
11:53:49 <Taneb> FreeFull, I did!
11:54:00 <Taneb> He... has no experience with a lot of features of Haskell
11:54:08 <mauke> have you accepted haskell curry as your lord and savior?
11:54:11 <FireFly> I've heard Earthbound's dialogue thing is a kinda complex scripting language
11:54:18 <FreeFull> Be his Jedi teacher
11:55:20 <fizzie> FreeFull: It wasn't really about what's allowed or not in a TAS, more about the chess analogy in the description. (Anyway, this run doesn't go to the ending screen.)
11:55:35 <Taneb> > [False] >>= \b -> False : if b then [True] else []
11:55:36 <lambdabot> [False]
11:55:43 <mauke> it does go to *an* ending screen
11:55:52 <Taneb> > [False] >>= \b -> False : if b then [] else [True]
11:55:53 <lambdabot> [False,True]
11:56:24 <Taneb> > let f b = False : if b then [] else [True] in [False] >>= f >>= f >>= f
11:56:25 <lambdabot> [False,True,False,False,True]
11:57:31 <Taneb> > let f 0 = [0,1]; f 1 = [0] in [0] >>= f >>= f >>= f
11:57:32 <lambdabot> [0,1,0,0,1]
11:57:37 <Taneb> > let f 0 = [0,1]; f 1 = [0] in [0] >>= f >>= f >>= f >>= f
11:57:38 <lambdabot> [0,1,0,0,1,0,1,0]
11:57:42 <Taneb> :)
11:59:08 <oerjan> > let f = ([id,(1-)]??) in [0] >>= f >>= f >>= f >>= f
11:59:10 <lambdabot> [0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0]
12:01:37 <FreeFull> What's this sequence called again?
12:01:50 <oerjan> the thor-moose sequence hth
12:01:53 <FreeFull> I tried looking for it but found the dragon curve sequence instead
12:02:02 <FreeFull> Ah, that's it
12:02:55 <zzo38> Thue-Morse sequence
12:03:00 <FreeFull> That's better
12:03:10 <fizzie> The thor-moose sequence sounds very Norwegian.
12:03:16 <Taneb> (I was doing Lindenmayer's algae)
12:03:18 <FreeFull> It does
12:03:24 <oerjan> fizzie: surprisingly so was thue.
12:04:02 <oerjan> Taneb: i thought i recognized the fibonacci substitution.
12:04:28 <oerjan> or something like it.
12:04:45 <FreeFull> > let thue = 0 : map (1-) thue in thue
12:04:47 <lambdabot> [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1...
12:04:57 <FreeFull> Ok, that didn't work out =P
12:05:05 <oerjan> you don't say
12:05:09 <Taneb> oerjan, yeah, it's quite close to the fibonacci one
12:05:29 <Taneb> > let f 0 = [0,1]; f 1 = [0] in [1] >>= f >>= f >>= f >>= f
12:05:30 <lambdabot> [0,1,0,0,1]
12:05:37 <Taneb> That's the Fibonacci one
12:05:50 <oerjan> hm right there should be no fixpoint.
12:06:06 <Taneb> > let f 0 = [0,1]; f 1 = [0] in [1] >>= f >>= f >>= f >>= f >>= f
12:06:08 <lambdabot> [0,1,0,0,1,0,1,0]
12:06:13 <Taneb> > let f 0 = [0,1]; f 1 = [0] in [1] >>= f >>= f >>= f >>= f >>= f >>= f
12:06:14 <lambdabot> [0,1,0,0,1,0,1,0,0,1,0,0,1]
12:06:22 <FreeFull> How do you do an infinite list of thue-morse?
12:06:33 <Taneb> > let f 0 = [0,1]; f 1 = [0] in fix (>=> f) [1]
12:06:34 <lambdabot> *Exception: stack overflow
12:06:48 <Taneb> > let f 0 = [0,1]; f 1 = [0] in fix (f >=> ) [1]
12:06:49 <lambdabot> No instance for (GHC.Num.Num t0) arising from the literal `1'
12:06:49 <lambdabot> The type variable `t0' is ambiguous
12:06:49 <lambdabot> Possible fix: add a type signature that fixes these type variable(s)
12:06:49 <lambdabot> Note: there are several potential instances:
12:06:49 <lambdabot> instance GHC.Num.Num GHC.Types.Double
12:06:59 <Taneb> @type let f 0 = [0,1]; f 1 = [0] in fix (f >=> )
12:07:00 <lambdabot> (Eq b, Num b) => b -> [c]
12:07:05 <Taneb> :(
12:07:12 <Taneb> @type let f 0 = [0,1]; f 1 = [0] in fix (>=> f)
12:07:12 <lambdabot> (Eq b, Num b) => a -> [b]
12:07:18 <Taneb> @type let f 0 = [0,1]; f 1 = [0] in fix (>>= f)
12:07:19 <lambdabot> (Eq a, Num a) => [a]
12:07:24 <Taneb> :(
12:07:34 <oerjan> > fix ((0:).drop 1.concatMap([id,(1-)]??))
12:07:36 <lambdabot> [0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1...
12:08:45 <FreeFull> oerjan: Unnecessary space between the fix and (
12:08:58 <oerjan> picky
12:09:07 <oerjan> > fix$(0:).drop 1.concatMap([id,(1-)]??)
12:09:08 <lambdabot> [0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1...
12:09:17 <Taneb> > drop 1 "hllo"
12:09:19 <lambdabot> "llo"
12:09:19 <FreeFull> No
12:09:22 <Taneb> > tail "hllo"
12:09:23 <lambdabot> "llo"
12:09:24 <FreeFull> I mean, you can just drop the space altogether
12:09:36 <FreeFull> > fix((0:).drop 1.concatMap([id,(1-)]??))
12:09:38 <lambdabot> [0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1...
12:09:45 <oerjan> that is longer than switching to $
12:09:54 <FreeFull> True
12:10:09 <Taneb> > fix$(0:).tail.(=<<)([id,(-1)]??)
12:10:10 <lambdabot> No instance for (GHC.Show.Show a0)
12:10:10 <lambdabot> arising from a use of `M47647106981436577086096.show_M47647106981436577086...
12:10:10 <lambdabot> The type variable `a0' is ambiguous
12:10:10 <lambdabot> Possible fix: add a type signature that fixes these type variable(s)
12:10:10 <lambdabot> Note: there are several potential instances:
12:10:17 <Taneb> Yaaaay
12:10:30 <Taneb> @type (=<<(
12:10:31 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
12:10:32 <Taneb> @type (=<<)
12:10:33 <lambdabot> Monad m => (a -> m b) -> m a -> m b
12:10:42 <Taneb> @type concatMap
12:10:43 <lambdabot> (a -> [b]) -> [a] -> [b]
12:10:45 <FreeFull> :t (=<<)([id,(-1)]??)
12:10:46 <lambdabot> Num (b -> b) => [b] -> [b]
12:10:51 <FreeFull> That's not right
12:11:10 <FreeFull> It uses the reader monad there
12:11:10 <Taneb> > fix$(0:).tail.(=<<)([id,(1-)]??)
12:11:12 <lambdabot> [0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1...
12:11:17 <Taneb> Typo :)
12:11:48 <FreeFull> Ah
12:11:53 <FreeFull> Yeah, 1-
12:12:13 <FreeFull> Didn't even notice that
12:12:24 <Taneb> > complement 1
12:12:25 <lambdabot> -2
12:12:28 <Taneb> :(
12:12:34 <FreeFull> > complement 0
12:12:35 <lambdabot> -1
12:14:07 <oerjan> > fix$(0:).tail.(<**>[id,(1-)])
12:14:08 <lambdabot> [0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1...
12:22:55 <Taneb> It occurs to me I have no idea how to write a Thue-Morse sequence program in C
12:30:59 <FreeFull> It depends on how much you want to output
12:31:09 <FreeFull> If you want to keep outputting forever, you'll run out of memory
12:32:40 <Taneb> Well, I've written /something/ that seems to work
12:34:08 <Taneb> Only 5 KB compiled, too!
12:40:25 <Sgeo> "Icon Programming for Humanists"
12:40:26 <Sgeo> Wat.
12:42:24 <Sgeo> Icon having null is presented as an innovation compared to SNOBOL
12:42:30 <Sgeo> (in this article on rosettacode)
12:42:35 <Sgeo> http://rosettacode.org/wiki/Icon%2BUnicon/Intro
12:42:47 <Sgeo> I... guess I can see how, especially after having experienced Tcl
12:46:49 * oklopol can play about a minute of thue-morse on guitar
12:50:00 <Sgeo> Unicon IDE... seems to be taking forever to compile Hello world
12:52:53 <Sgeo> Oh, I think the IDE is suppressing errors or something, because I got this running unicon from command line"
12:52:55 <Sgeo> "unicon: cannot open interpreter file"
12:55:07 <Sgeo> Hmm, didn't I complain about the (Un?)icon trick that powers 3 < x < 5 etc. being... weak somehow?
12:57:23 -!- nooodl has joined.
12:57:25 <Sgeo> (x | y) = (3 | 5)
12:57:47 <Sgeo> > let x = 10; y = 5 in any $ (==) <$> [x, y] <*> [3,5]
12:57:48 <lambdabot> Couldn't match expected type `a0 -> GHC.Types.Bool'
12:57:48 <lambdabot> with actual type `[GHC.Types.Bool]'
12:58:02 <Sgeo> :t any
12:58:03 <lambdabot> (a -> Bool) -> [a] -> Bool
12:58:21 <Sgeo> > let x = 10; y = 5 in any id $ (==) <$> [x, y] <*> [3,5]
12:58:22 <lambdabot> True
12:58:45 <fizzie> :t and
12:58:46 <lambdabot> [Bool] -> Bool
12:58:50 <fizzie> (Possibly what you were looking for.)
12:59:27 <nooodl> :t or
12:59:27 <fizzie> Er, "or" is what I meant.
12:59:28 <lambdabot> [Bool] -> Bool
12:59:31 <nooodl> even more possibly!
12:59:43 <fizzie> In fact,
12:59:46 <fizzie> @src any
12:59:47 <lambdabot> any p = or . map p
13:01:34 <Sgeo> Unicon basically lives in the List monad, right?
13:12:31 <Sgeo> Wait, why does table lookup need a "default" that defaults to &null?
13:12:47 <Sgeo> I thought Icon/Unicon's who schtick was avoiding that nonsense and just failing?
13:12:52 <Sgeo> *whole
13:13:12 <Sgeo> Which, it occurs to me, doesn't work too well when there are multiple layers that may 'fail'
13:20:46 <oerjan> `addquote * oklopol can play about a minute of thue-morse on guitar
13:20:53 <HackEgo> 1150) * oklopol can play about a minute of thue-morse on guitar
13:26:44 -!- yorick has joined.
13:27:54 -!- tromp__ has joined.
13:29:11 -!- olsner has joined.
13:30:15 -!- tromp_ has quit (Ping timeout: 272 seconds).
13:33:57 -!- olsner has quit (Ping timeout: 252 seconds).
13:34:27 -!- Sorella has joined.
13:35:08 -!- Sorella has quit (Changing host).
13:35:08 -!- Sorella has joined.
13:44:33 <FireFly> @src or
13:44:33 <lambdabot> or = foldr (||) False
13:44:45 <FireFly> should be or = any id
13:54:08 <Sgeo> @src any
13:54:08 <lambdabot> any p = or . map p
13:54:38 <Sgeo> Could get a bit uselessly recursive
14:03:40 -!- olsner has joined.
14:04:11 <Sgeo> In a non-lazy language, I can definitely see the any being primitive and or being derived as more efficient
14:04:22 <Sgeo> (Or, well, if working with non-lazy lists)
14:07:36 -!- carado has joined.
14:13:29 -!- Sorella has quit (Read error: Connection reset by peer).
14:13:41 -!- Sorella has joined.
14:14:24 -!- Sorella has quit (Changing host).
14:14:24 -!- Sorella has joined.
14:15:02 -!- oerjan has quit (Quit: leaving).
14:40:46 <Sgeo> "Warning:For each data type discussed in section, there is a corresponding module in the Mozart system. The modules define operations on the corresponding data type. You may find more about these operations in The Oz Base Environment documentation"
14:40:52 <Sgeo> Why is this a warning?
15:04:47 <quintopia> hi Sorella
15:09:51 -!- olsner has quit (Quit: Leaving).
15:12:13 -!- Sgeo has quit (Read error: Connection reset by peer).
15:13:27 -!- Sgeo has joined.
15:14:49 <zzo38> $$f_x(y)=\left(f_{x-1}^{y!}(y!)\right)^x+y$$ (where ^{y!} is a functional power)
15:17:38 -!- tromp__ has quit (Read error: Connection reset by peer).
15:18:05 -!- tromp_ has joined.
15:23:10 <zzo38> This is a kind of shogi variant, where initially all pieces is known, but later on, it might not be known exactly what kind of pieces they are, but you can try to figure out what it is. http://www.chessvariants.org/index/msdisplay.php?itemid=MSunknownoffpiec
15:28:10 -!- FreeFull_ has joined.
15:28:17 -!- augur_ has joined.
15:28:28 -!- heroux_ has joined.
15:28:32 -!- pikhq has joined.
15:29:00 -!- coppro_ has joined.
15:33:24 -!- heroux has quit (*.net *.split).
15:33:24 -!- augur has quit (*.net *.split).
15:33:24 -!- pikhq_ has quit (*.net *.split).
15:33:25 -!- FreeFull has quit (*.net *.split).
15:33:25 -!- coppro has quit (*.net *.split).
15:33:29 -!- heroux_ has changed nick to heroux.
15:50:43 <Sgeo> "In Oz there is syntactic support for module specification. The concept used is called functor ."
15:50:52 <Sgeo> DRINK for a language using the term 'functor' for something
15:51:00 <Sgeo> Although, is that the same meaning as in *MLs?
15:52:15 -!- Phantom_Hoover has joined.
15:57:25 <Slereah> Functor? I hardly know her!
16:06:25 <Vorpal> I really dislike the C++ use of the term functor
16:06:41 <Vorpal> It is basically an object overloading operator(), thus making it callable.
16:07:13 <Sgeo> Ok, Oz's ByNeed is interesting
16:07:31 <Sgeo> Basically, takes an explicit thunk and turns it into a lazy value
16:08:24 <Sgeo> Hmm, guess that's the same as any language that has some sort of native promise thing
16:22:26 <Vorpal> bbl
17:01:35 -!- tertu has joined.
17:06:26 -!- Phantom_Hoover has quit (Write error: Broken pipe).
17:06:32 -!- Phantom__Hoover has joined.
17:06:42 -!- LinearInterpol has joined.
17:13:25 -!- Taneb has quit (*.net *.split).
17:13:25 -!- ineiros_ has quit (*.net *.split).
17:13:25 -!- aloril has quit (*.net *.split).
17:13:26 -!- kmc has quit (*.net *.split).
17:14:26 -!- Taneb has joined.
17:14:36 -!- ineiros has joined.
17:15:16 -!- kmc has joined.
17:19:46 -!- aloril has joined.
17:26:00 <Sgeo> :/ :/ :/
17:26:10 <Sgeo> I'm running Java 1.4 :/
17:28:53 -!- LinearInterpol has changed nick to [li]|AoS.
17:36:53 -!- MindlessDrone has joined.
17:50:59 -!- [li]|AoS has quit (Ping timeout: 252 seconds).
17:52:53 <FireFly> Sgeo: I'm sorry :|
17:53:03 <Sgeo> This program depends on <7
17:53:12 <Sgeo> And has an installer that includes 4
17:53:21 <Sgeo> Trying to figure out WHY 7 breaks it
17:56:40 -!- Jafet has quit (Ping timeout: 240 seconds).
17:57:09 -!- Tefaj has joined.
17:59:58 -!- nooodl has quit (Quit: Ik ga weg).
18:00:02 -!- boily has joined.
18:02:28 -!- nooodl has joined.
18:10:26 -!- int-e has quit (Ping timeout: 264 seconds).
18:10:50 -!- int-e has joined.
18:32:43 -!- Tefaj has quit (Changing host).
18:32:44 -!- Tefaj has joined.
18:32:48 -!- Tefaj has changed nick to Jafet.
18:33:11 -!- Jafet has left.
18:46:07 -!- nisstyre has joined.
18:55:29 <Sgeo> Ok. FUCK JUSTIN.TV IN THE ASS
18:56:37 <kmc> don't want to
18:56:41 <kmc> but why
18:57:12 <Sgeo> Information that that site portrays as confidential (a key to broadcast to a user's stream) is easily accessible by a link that you can make just by knowing a username
19:01:26 <kmc> nice, did you report this vuln?
19:01:39 <Sgeo> No, haven't tested it yet
19:01:48 <Sgeo> Want a volunteer
19:02:28 <Sgeo> (That's not unethical, right?)
19:04:12 <Sgeo> Hmm. False alarm.
19:05:38 <Sgeo> So yeah, URL contains username, but that doesn't mean you'll actually see that user's file
19:05:38 <Sgeo> It will show your own instead
19:22:09 <boily> good alarmist fternoon!
19:23:02 <kmc> :3
19:36:17 -!- ais523 has joined.
19:41:28 -!- AnotherTest has joined.
19:47:06 -!- _46bit_ has changed nick to _46bit.
19:47:11 -!- _46bit has quit (Changing host).
19:47:11 -!- _46bit has joined.
19:49:39 -!- coppro_ has changed nick to coppro.
19:52:10 -!- carado has quit (Ping timeout: 246 seconds).
19:54:04 -!- Edward___ has joined.
19:54:55 -!- olsner has joined.
19:55:13 -!- Edward___ has changed nick to Edwardz.
20:00:09 -!- carado has joined.
20:02:01 <Edwardz> new favorite language: http://esolangs.org/wiki/Suicide
20:03:35 -!- nisstyre has quit (Quit: Leaving).
20:03:58 -!- Edwardz has quit (Quit: Page closed).
20:26:12 <quintopia> hi boily
20:29:02 -!- AnotherTest has quit (Ping timeout: 240 seconds).
20:30:02 -!- AnotherTest has joined.
20:40:04 <impomatic> Is there a neat algorithm to turn an image of a 3d wireframe back into a 3d vector map?
20:41:04 <Bike> you mean, you're taking a 2d projection of a wireframe?
20:41:10 -!- olsner has quit (Ping timeout: 246 seconds).
20:42:09 <quintopia> impomatic: i think you would need at least two images of the wireframe from different angles
20:42:27 <impomatic> taking a 2d projection of a wireframe and working out the position of the 3d vectors.
20:42:28 <quintopia> and even then you have no guarantee due to inherent ambiguities
20:42:42 <Bike> yes, that's definitely ambiguous
20:42:55 <Bike> for example, the 3d figure could be flat :')
20:43:27 <quintopia> Bike: that would be noticed in the 2 images case
20:43:45 <quintopia> Bike: also you remind me of that new zealand art farm with the giant wire frame kleenex
20:58:56 <boily> hi quintopia
21:03:49 <quintopia> how sunday
21:05:21 <boily> many zombies
21:06:08 -!- oerjan has joined.
21:07:26 <quintopia> what
21:07:35 <quintopia> tell me about the zombies
21:08:12 <boily> I was watching Shawn of the Dead with my dad :D
21:08:55 <quintopia> oh good choice
21:10:28 <boily> still dominicquing under the Hot Ball of Hydrogen?
21:10:47 <quintopia> no that ended christmas day
21:10:59 <quintopia> today i walked the dog
21:11:06 <quintopia> around stone mountain
21:11:22 <quintopia> if you want to come to atlanta, i'll walk you around stone mountain too :)
21:11:56 * boily looks at wikipédia's pictures of Stone Mountain. “it looks like a big rock.”
21:12:43 <boily> conversely, if you come to Montréal, there's Mont Royal.
21:12:57 <boily> (not quite as impressive, but it has weird Montrealers on it :D)
21:13:00 <quintopia> ...what a fitting name for the city
21:13:35 <boily> well, at first it was called Ville Marie. that's still the name of the Old Town borough.
21:13:48 <quintopia> stone mountain is probably about the same. it is a weird park. the other day i climbed it and there was a dude playing and singing oldies songs halfway up walking up and down in the woods with his guitar
21:14:19 <oerjan> logically, if they call a mountain stone mountain, there should be some other nearby mountain _not_ made of stone.
21:15:33 <quintopia> oerjan: it's perfectly logical when you consider that kennesaw mountin is entirely covered in trees and dirt. that stuff won't grow on the bubble of pure granite that is stone mountain.
21:15:42 <oerjan> aha
21:15:51 <quintopia> in fact, there is no mountain nearby. it's rather a geological anomaly.
21:16:31 <oerjan> i assume from the spelling that kennesaw mountin has even more hillbillies
21:17:33 <quintopia> oerjan: better to assume i am a bad speller. kennesaw mountain is in the heart of one of atlanta's richer suburbs. not the richest, but solidly middle class.
21:17:55 <oerjan> fancy
21:19:18 <quintopia> it's also the site of kennesaw mountain national battlefield park, and one of the bloodier battles of the civil war.
21:19:33 <oerjan> <Sgeo> Basically, takes an explicit thunk and turns it into a lazy value <-- well that's just unsafePerformIO really >:)
21:20:55 <boily> oerjan: shh! the Maskarade! don't go and tell People the Dirty Haskell Secrets!
21:21:05 -!- olsner has joined.
21:36:26 <quintopia> boily: ok i'll come to montreal and you'll come to atlanta. consecutively. we'll make a vacation of it!
21:36:31 <quintopia> let me know when
21:37:59 -!- nooodl has quit (Quit: Leaving).
21:51:18 -!- MindlessDrone has quit (Quit: MindlessDrone).
21:56:05 -!- nooodl has joined.
21:58:47 -!- FreeFull_ has changed nick to FreeFull.
22:04:24 <olsner> > (2560*1440) / (1280 * 768)
22:04:25 <lambdabot> 3.75
22:05:11 <oerjan> > (2560*1440) % (1280 * 768)
22:05:12 <lambdabot> 15 % 4
22:10:53 -!- zzo38 has quit (Remote host closed the connection).
22:26:03 -!- AnotherTest has quit (Ping timeout: 272 seconds).
22:35:51 -!- conehead has joined.
22:35:53 -!- olsner has quit (Ping timeout: 252 seconds).
22:37:15 -!- conehead has quit (Remote host closed the connection).
22:38:36 -!- conehead has joined.
22:58:33 -!- boily has quit (Ping timeout: 246 seconds).
22:59:15 -!- zzo38 has joined.
23:03:53 -!- int-e has quit (Ping timeout: 245 seconds).
23:05:49 -!- int-e has joined.
23:06:05 -!- zzo38 has quit (Remote host closed the connection).
23:11:14 -!- conehead has quit (Quit: Computer has gone to sleep.).
23:22:26 -!- olsner has joined.
23:44:12 -!- ais523 has quit.
23:48:37 <Vorpal> I just finished Brothers - A Tale of Two Sons. It is my new game of the year.
23:49:12 <Bike> good timing
23:50:13 <Vorpal> Bike, yeah
23:50:40 <Vorpal> And I think it is definitely in the top 3 of all time as well
23:51:06 <Bike> i hope these timings are not related
23:51:23 <Vorpal> Bike, what other timing?
23:51:35 <Vorpal> I just reattached to my bnc
23:51:52 <Bike> you picked your game of the year near the end of the year, and your game of all time...
23:52:00 <Vorpal> oh right
23:52:34 <oerjan> 's ok time was overrated anyway
←2013-12-28 2013-12-29 2013-12-30→ ↑2013 ↑all