←2019-08-20 2019-08-21 2019-08-22→ ↑2019 ↑all
00:00:02 <moony> Agner's docs be with you
00:00:22 <ais523> moony: well, I was planning to a) optimise for size, because that's objective; b) at least initially concentrate only on the integer registers
00:00:28 <ais523> (not even memory)
00:00:47 <shachaf> At any rate, if you're talking about repeated recompilation during development, you should include the cost of the optimizing compiler in your wasted cycles.
00:01:11 <ais523> yes, there's an argument for using only limited optimisation during development
00:01:12 <shachaf> If you're building a program to ship to many people, it makes sense to spend more time optimizing it. But that's a tiny fraction of your builds.
00:01:15 <ais523> that's pretty much what -Og is for
00:01:37 <ais523> and -Og's generated code is far from terrible, given the tradeoffs it has to make
00:08:04 <moony> ais523: have fun handling instructions like the multiply instruction
00:08:32 <ais523> moony: in what way?
00:08:41 <moony> output registers are fixed
00:08:57 <ais523> that doesn't make it harder, just more tedious
00:09:03 <ais523> I guess that's what you meant by "have fun"
00:09:08 <moony> yes
00:09:10 <moony> that's what i ment
00:09:15 <moony> it's annoying and tedious :P
00:09:15 <ais523> (actually, from Z3's point of view it makes things easier due to having fewer possibilities to try)
00:09:50 <shachaf> Oh man: https://mightyapp.com/
00:10:18 <shachaf> What a mega-optimization.
00:10:23 <moony> pfffft
00:10:45 <moony> what they don't mention:
00:10:50 <moony> *streaming*
00:11:05 <moony> maybe use firefox instead, heard it's faster
00:12:06 <shachaf> No, that's the secret sauce optimization superpower.
00:12:41 <shachaf> Web software wasn't in the cloud enough, so now you have a second layer of cloud.
00:13:19 <moony> *steals link*
00:13:26 <moony> *runs off to hellomouse to share*
00:34:09 <ais523> I wonder if that mightyapp thing is a joke
00:34:14 <ais523> I don't think there's enough information to tell
00:34:25 <ais523> and I can believe both that it's meant as a joke, and that it's meant seriously
00:35:19 <shachaf> It's certainly a joke, but I don't think it's meant as one.
00:35:22 <ais523> I'm leaning towards joke, on the basis that a) the name is wrong and b) there aren't any terms of service or the like, which a company seriously setting something like this up would almost invariably have
00:35:53 <moony> i hope it's a joke. it's certainly funny
00:35:57 <ais523> also, the "request access" link goes to a different domain
00:36:16 <ais523> so this has been set up on a really low budget by someone without programming expertise, which seems at odds with the claims they're making
00:36:33 <ais523> so that makes it most likely that it's a prank, and second most likely that it's a scam, I think
00:36:41 <moony> mmmm
00:36:43 <ais523> "an actual product we intend to commercialise and have the skill to make" is a distant third
00:37:45 <ais523> the ironic thing is, a product like that genuinely /could/ make most pages load faster, I suspect
00:38:48 <moony> HTML is /way/ too complex
00:38:54 <moony> HTML replacement when
00:38:59 -!- iczero has joined.
00:39:56 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:40:58 <moony> `welcome iczero
00:40:59 <HackEso> iczero: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <https://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
00:44:20 <esowiki> [[Malbolge]] https://esolangs.org/w/index.php?diff=65583&oldid=64726 * A * (+218) /* External resources */
00:44:35 <esowiki> [[Malbolge]] M https://esolangs.org/w/index.php?diff=65584&oldid=65583 * A * (-1) /* External resources */ typo
00:50:53 -!- arseniiv has quit (Ping timeout: 245 seconds).
00:55:27 -!- adu has joined.
01:06:23 <esowiki> [[Malbolge programming]] M https://esolangs.org/w/index.php?diff=65585&oldid=52491 * A * (+181)
01:07:39 <esowiki> [[Malbolge programming]] https://esolangs.org/w/index.php?diff=65586&oldid=65585 * Ais523 * (-67) /* External resources */ you kind-of have to read the instructions to learn the language, a denormalizer isn't going to do much to help (especially as it affects data as well as code)
01:15:01 -!- adu has quit (Quit: adu).
02:58:44 -!- moony has quit (Ping timeout: 252 seconds).
03:00:34 -!- iczero has quit (Ping timeout: 252 seconds).
03:00:41 -!- Bowserinator_ has quit (Ping timeout: 250 seconds).
03:09:47 -!- Bowserinator has joined.
03:10:18 -!- moony has joined.
03:10:30 -!- iczero has joined.
03:11:57 -!- ais523 has quit (Quit: quit).
04:21:03 -!- Sgeo_ has joined.
04:23:49 -!- Sgeo has quit (Ping timeout: 258 seconds).
04:29:24 <esowiki> [[Malbolge]] M https://esolangs.org/w/index.php?diff=65587&oldid=65584 * MilkyWay90 * (+1)
05:37:05 -!- atslash has joined.
06:17:52 -!- atslash has quit (Ping timeout: 244 seconds).
06:41:54 -!- diginet has quit (Quit: diginet has quit!).
06:43:57 -!- b_jonas has joined.
06:45:48 <b_jonas> "<shachaf> Isn't the basic idea of a linker that it supports linking code written in multiple languages?" => yes, so g++ can invoke gold in a way that it can link C, fortran and C++ together; ghc can invoke a linker such that it can link C and haskell together, and rustc can link rust and c together. If you want to link any two of C++, haskell and rust, you still can, but you have to guess all the magic
06:45:54 <b_jonas> linker incantations required.
06:46:03 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=65588&oldid=65568 * A * (+283) /* Malbolge */ Normalized using my normalization tool
06:46:11 <b_jonas> It's pretty sad really, especially the haskell part.
06:47:28 <b_jonas> "<shachaf> I mean that I find the argument that compilers should be way faster" => the people who say that are the ones with sour grape because they don't have a good optimizing compiler
06:49:34 <b_jonas> "<shachaf> Well, a very fast debug-only build should be available." => still no. debug build should be somewhat faster, but it should still optimize. debug build is -O, production build is -O2. that debug builds used to be fast a decade ago itself was an artifact of that compilers were worse at optimizing and producing debug info for the optimized file that a debugger can read. that's no longer a
06:49:40 <b_jonas> limitation, compilers got better in everything.
06:52:24 <b_jonas> "<ais523> the workaround we were always told to use on Wikipedia was to serve as text/css" => interesting
06:54:32 <b_jonas> "<shachaf> Man, NetHack has all sorts of problems." => there are (or used to be) tables in C files generated by a program built at compile time, where the program that generates it includes a header that has macros that refer to the table in the generated output.
06:55:06 <b_jonas> those unclear dependency orders were what really made me angry about its code organization
06:58:54 <b_jonas> "<ais523> moony: well, I was planning to a) optimise for size," => I suggest that you optimize for the number of instructions instead, then size for equal number of instructions
07:00:37 <b_jonas> "<ais523> yes, there's an argument for using only limited optimisation during development / that's pretty much what -Og is for" => no, AFAIK -O is for limited optimization during development, -Og is a close variant of that that specifically won't do optimizations that would confuse a runtime debugger (provided you use a new enough version of gdb)
07:00:59 <b_jonas> s/runtime/interactive/
07:05:56 <shachaf> If compilers got better in everything why are they way slow?
07:08:20 <b_jonas> shachaf: they're not slow. I can compile anything much faster than I used to be able to on a current machine than how much it took me on an ancient machine with gcc 2.95
07:08:51 <b_jonas> at least, they didn't slow down so much, so with faster hardware, it is effectively faster
07:08:58 -!- b_jonas has quit (Remote host closed the connection).
07:12:31 <shachaf> tcc is way faster than gcc
07:12:42 -!- cpressey has joined.
07:13:55 <cpressey> Good morning. I disagree with the statement "All continuations are delimited".
07:15:01 <cpressey> If you accept a model where a computation can run without end, such as (I dunno) Turing machines, then I think you have to accept there are continuations without end too.
07:16:29 <cpressey> Even on a real computer, when the OS starts a program, it passes it a continuation (conceptually at least), and when that program "terminates", all it's doing, is continuing that continuation.
07:20:50 <shachaf> I have a good feel for how delimited continuations work now but I'd like an implementation to test some things with.
07:20:53 <shachaf> Is there one?
07:22:42 <cpressey> shachaf: I have such a language bookmarked, need to find it. It uses prompt/control I think
07:22:54 <shachaf> Does Racket or something have it?
07:23:15 <cpressey> shachaf: https://github.com/manuel/wat-js
07:23:25 <shachaf> That is not a promising URL.
07:24:05 <cpressey> That's all I got.
07:24:13 <cpressey> I'm not really into these thigns.
07:25:02 <cpressey> meanwhile a duckduckgo search for "racket delimited continuations" returns a hit on the Racket docs
07:25:06 <shachaf> I guess it's just that the implementation is in JavaScript or something?
07:25:30 <shachaf> I did look at the Racket documentation but I couldn't quickly figure out a way to make it work, or whether shift/reset is included at all.
07:26:04 <shachaf> One thing that I'd like to have along with delimited continuations is something like destructors or Go's "defer", code that runs when you exit a scope.
07:26:09 <cpressey> Looks like it's got call/prompt
07:26:31 <shachaf> Maybe I just need to figure out the right #lang incantation.
07:27:13 <cpressey> shachaf: https://docs.racket-lang.org/reference/cont.html lists shift and reset and cupto and prompt and allllll the things
07:27:53 <cpressey> re destructors, I think you'd use dynamic-wind for conventional continuations
07:29:06 <shachaf> Hmm, so they do.
07:29:14 <shachaf> I guess I just needed (require racket/control)
07:32:24 <shachaf> OK, some of my questions have been answered.
07:34:05 <shachaf> I guess it's even better than I thought in most respects.
07:34:36 <shachaf> Can you do the thing I want? I want a thing that creates an early exit point that can be used later.
07:34:58 <shachaf> Something like (reset (let ((exit ...)) (...whatever, which may include more resets... (exit x))))
07:42:16 -!- xkapastel has joined.
07:47:51 -!- AnotherTest has joined.
07:54:51 <shachaf> Maybe the answer is that I should be using a prompt tag instead of shift/reset.
07:59:32 -!- wob_jonas has joined.
07:59:40 -!- wob_jonas has changed nick to lob_jonas.
08:00:00 <lob_jonas> That said, the programs that we can compile have gotten huge, which is part of why compilation can be slow.
08:02:56 -!- atslash has joined.
08:04:01 <lob_jonas> shachaf: if you want an exit point, which is a much simpler special case of a continuation to which you can only go out in the stack, not in again once you exited the frame where you created it, then try call/ec, see "https://docs.racket-lang.org/reference/cont.html?q=call%2Fec#%28def._%28%28lib._racket%2Fprivate%2Fletstx-scheme..rkt%29._call%2Fec%
08:04:02 <lob_jonas> 29%29"
08:04:35 <lob_jonas> it's like longjmp because it can jump out from deep inside a function call, but not back once the setjmp exited
08:04:43 <shachaf> Yes, I saw it.
08:05:26 <shachaf> What I actually want is neither of them.
08:05:29 <lob_jonas> except it differs from longjmp because it still handles dynamic-wind destructors
08:05:46 <lob_jonas> you want something in between, delimited?
08:07:32 <lob_jonas> you could create a weak cell or ephemeron or whatever those are called these days, where the weak key points to a dummy object that you create in the stack frame to which you want to delimit the continuation, and the value holds the continuation itself. then you can't invoke the continuation through this once the delimiting stack frame has exited.
08:07:38 <shachaf> Well, what I actually want is evaluated entirely at compiletime, for one.
08:07:50 <shachaf> I don't want any continuations or even indirect jumps at runtime.
08:07:53 <lob_jonas> not only you can't invoke it, it can be garbage collected some time after the stack frame exits
08:08:02 <lob_jonas> oh... that's different
08:08:12 <shachaf> But the semantics might be similar in other ways.
08:09:17 <lob_jonas> so you want something like a goto/comefrom?
08:09:50 <lob_jonas> only it can see the label in an outer function that created the closure, lexically?
08:10:35 <shachaf> Maybe?
08:11:08 <lob_jonas> and do you want it to be able to re-enter a stack frame too, not just exit?
08:11:26 <shachaf> I think maybe prompt-at is something like what I want. But it seems to want you to make your own tag for some reason? I must be misunderstanding it.
08:11:26 <lob_jonas> even through a closure that you leak out? nah, that'd be difficult
08:11:36 <shachaf> There should be no closures since it all happens at compiletime.
08:11:49 <cpressey> Continuations are like the least compile-time thing I can think of
08:12:53 <shachaf> That's why I didn't want to model my feature as continuations, at first.
08:13:04 <shachaf> But I think it might just be the right thing unfortunately.
08:14:41 <cpressey> If it's just the right thing, why is it unfortunate? You speak in riddles.
08:16:48 <shachaf> I can do part of what I want with the shift/reset in http://hackage.haskell.org/package/CC-delcont-0.2.1.0/docs/Control-Monad-CC.html , at least
08:17:02 <shachaf> Oh, it's unfortuantely because delimited continuations are super-mega-complicated
08:17:05 <shachaf> s/ly//
08:17:08 <cpressey> May I suggest you write some test cases for the feature, so that you at least have a clear idea what it... does?
08:17:19 <shachaf> Sure, I've talked about some of this before.
08:17:29 <cpressey> Not talk, though, test case
08:18:10 <shachaf> Hmm, that would be easier if I knew what it was exactly. But then I wouldn't need to learn from continuations.
08:18:25 <cpressey> The test cases are to help you know what it is exactly
08:19:38 <shachaf> I have a 2000 line file full of various examples trying various things.
08:19:51 <cpressey> One thing. Many test cases for one thing.
08:20:28 <shachaf> Most of the file is about this one feature.
08:21:26 <shachaf> I'm a bit confused by what you're asking. You want coherent working test cases for this thing, but the problem is that I'm confused about what this thing is.
08:22:08 <shachaf> Maybe I can try it anyway.
08:23:09 <cpressey> How would you identify this thing? "In this instance I would expect it to do this, in this other instance I would expect it to... (etc)" These are test cases.
08:23:36 <rain1> https://github.com/rain-1/continuations-study-group/blob/master/scripts/2010-asai-kitani-eval11-numbers.ml
08:24:05 <rain1> there is a compiler and interpreter that implements lambda calculus with delimited continuations
08:28:37 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
08:32:15 -!- Lord_of_Life has joined.
08:33:18 <esowiki> [[Alphabetti spaghetti]] https://esolangs.org/w/index.php?diff=65589&oldid=46644 * Stasoid * (+120) /* Interpreter */
08:41:23 <shachaf> cpressey: http://slbkbs.org/tmp/2019-08-21-cpressey-test-cases.txt is something.
08:41:37 <shachaf> These aren't actually test cases because I don't know what these lambdas actually are.
08:44:47 <cpressey> shachaf: That is at least clearer.
08:46:24 -!- andrewtheircer has joined.
08:46:24 <andrewtheircer> h
08:46:41 <andrewtheircer> e
08:47:15 <andrewtheircer> actually the spelling of queue makes sense
08:47:18 <andrewtheircer> Q-ue-ue
08:49:32 <lob_jonas> how about the spelling of deque?
08:50:18 <lob_jonas> or that of cue?
08:51:04 <andrewtheircer> cue - ck (c sound) - ue
08:51:09 <andrewtheircer> ck-u-e
08:51:12 <andrewtheircer> it makes sense
08:57:33 <andrewtheircer> got it?
08:59:14 <cpressey> shachaf: This is my "compile time" interpretation: ` is syntactic sugar (or rather the lack of it) for ;. @ is a label just after the block it's used in. defer is remembered when it's seen, but code isn't generated for it, until a jump out of the block.
09:00:23 <shachaf> I agree on the latter two.
09:00:23 <andrewtheircer> is this related to esolangs or
09:00:28 <shachaf> I'm not sure what you mean by the first one?
09:02:48 <cpressey> for (xs, \x -> { BODY }) <==> { x := for(xs)`; BODY }
09:03:00 <cpressey> looks like you could transform that syntactically?
09:03:13 <shachaf> defer is special because it inserts the code at every exit (once at the block's }, and once for uses of @, I suppose).
09:03:22 <shachaf> Yes, it's certainly intended to be a syntactic transformation.
09:03:51 <shachaf> { x := for(xs); y := for(ys); BODY } turns into for(xs, \x -> for(ys, \y -> { BODY }))
09:04:02 <cpressey> ok, I have to afk for a bit, but it doesn't look like you need to think much about continuations for this
09:04:03 <shachaf> Er, I forgot the two `s in the left side.
09:04:08 <rain1> you can use staging to make things happen at compile time
09:04:33 <shachaf> And { x := for(for(xss)`)`; BODY } turns into for(xss, \xs -> for(xs, \x -> { BODY })) and so on.
09:04:36 <rain1> delimited continuations + staging is a powerful technique
09:04:58 <rain1> http://okmij.org/ftp/meta-programming/calculi.html#circle-shift
09:05:01 <shachaf> I agree that this is just a syntactic transformation, that's kind of the point.
09:05:25 <shachaf> One question here is, what is "for", and what's the type of "exit", and what are these lambdas?
09:05:36 <andrewtheircer> test
09:06:36 -!- tromp has quit (Remote host closed the connection).
09:20:29 <shachaf> "for" is something like a function, but evaluated/inlined at compiletime.
09:21:07 <shachaf> "exit" is also a thing like that, and so is the argument to "for".
09:21:52 <shachaf> These are very similar to regular delimited continuations, except for the demand that they only exist at compiletime. So you can't pass "exit" or one of these lambdas as an argument to a regular function.
09:22:57 <shachaf> Do you know of a language that has that kind of thing?
09:23:54 -!- tromp has joined.
09:25:41 <lob_jonas> shachaf: how about... the language you're eventually going to create to test this thing?
09:27:21 <cpressey> shachaf: I think one reason you don't really need continuations for this is because you don't actually retry anything with these operators.
09:27:31 <cpressey> "Continuations" at compile-time are "labels".
09:27:35 <cpressey> Roughly speaking.
09:27:39 <cpressey> afk again.
09:27:47 <andrewtheircer> fun fact: a town in west virginia requested foreign aid from the USSR to repair a bridge
09:28:25 <shachaf> cpressey: Retry?
09:29:28 <shachaf> I agree about continuations at compile-time.
09:29:51 <shachaf> This is why I said for a long time that I don't really want continuations because what I want is much simpler.
09:36:04 <shachaf> lob_jonas: Yes, that sounds like a good one.
10:02:11 -!- arseniiv has joined.
10:16:21 <andrewtheircer> hi
10:17:02 -!- lob_jonas has quit (Quit: Ping timeout (120 seconds)).
10:19:38 -!- andrewtheircer has quit (Remote host closed the connection).
10:51:02 <cpressey> shachaf: I should probably let you sleep, but: when you capture a continuation, sometimes it's to continue it more than once (e.g. backtracking) but you're not doing that here.
10:53:14 <cpressey> "for" looks like a function that takes a function, to me. If you want to say, it must be an anonymous function which lexically follows the "for", so you can optimize/analyze it better, you can do that.
10:57:53 <cpressey> For the life of me @ looks a lot like setjmp/longjmp. You also want some static guarantees (you can't pass the value of @ around) but those are additional; the basic mechanism is that.
11:01:36 <cpressey> Your additional lexical constraints might be misleading you into thinking it's an essentially lexical mechanism, but I don't think it is.
11:01:38 <cpressey> I'll stop now.
11:04:32 -!- xkapastel has quit (Quit: Connection closed for inactivity).
11:06:31 <int-e> @time shachaf
11:06:32 <lambdabot> Local time for shachaf is Wed Aug 21 04:06:31 2019
11:18:57 -!- lob_jonas has joined.
11:19:04 <lob_jonas> ouch
11:31:17 <cpressey> lob_jonas: whassup
11:32:43 <lob_jonas> cpressey: I just got scheduled for dental root canal operation. The first time in my life. I was sort of mentally prepared for that. But
11:33:32 <lob_jonas> the root canal specialist surgeon said that he's looked at the X-ray and my tooth looked nasty so I'll need three appointments for this tooth.
11:33:53 <lob_jonas> I was already scared of this operation, but now I'm more scared.
11:42:14 <cpressey> lob_jonas: I had a root canal once. It took multiple appointments, and in the end they couldn't save the tooth anyway. It wasn't fun, and there was some pain. But it's also not amongst my worst memories (I rarely think of it.)
11:42:45 <cpressey> It's also the sort of thing where it's a finite amount of time, and you can remind yourself of that during it.
11:44:35 <lob_jonas> cpressey: yes, the point of a root canal is that you only get them when they've given up on the tooth already, it can't be saved (or so the denist believes), so they turn it to an undead tooth with some metalic golem core surrounded by the empty shell of what used to be the tooth.
11:45:15 <lob_jonas> also I hear the experience with it has a high variance, it's terrible for some people but acceptible for others.
11:45:54 <lob_jonas> which makes sense because I had three wisdom teeth extracted, and they all behaved differently
11:46:19 <lob_jonas> (the first one was terrible, the second one was trivial, the third one was ok but the gum healed ugly)
11:51:27 -!- PaniniTheDevelop has joined.
11:51:35 <PaniniTheDevelop> nah
12:33:03 -!- PaniniTheDevelop has quit (Remote host closed the connection).
12:47:57 -!- xkapastel has joined.
12:56:43 -!- lob_jonas has quit (Quit: Ping timeout (120 seconds)).
13:54:59 <esowiki> [[FAKE]] M https://esolangs.org/w/index.php?diff=65590&oldid=65453 * Argv0 * (+61) Typos and grammar corrections
14:09:50 -!- PaniniTheDevelop has joined.
14:15:01 -!- mich181189 has quit (Ping timeout: 250 seconds).
14:15:12 -!- mich181189 has joined.
14:15:45 -!- Lymee has joined.
14:15:50 -!- ProofTechnique has quit (Ping timeout: 250 seconds).
14:16:22 -!- sparr has quit (Ping timeout: 250 seconds).
14:16:43 -!- Lymia has quit (Ping timeout: 250 seconds).
14:16:44 -!- Lymee has changed nick to Lymia.
14:18:06 -!- ski has quit (Ping timeout: 268 seconds).
14:18:24 -!- zzo38 has quit (Ping timeout: 272 seconds).
14:18:36 -!- ProofTechnique has joined.
14:18:41 -!- ski has joined.
14:21:10 <Taneb> Hmm, is there a thing like linear types that is linear kinds?
14:28:55 <PaniniTheDevelop> hello
14:30:34 -!- sparr has joined.
14:35:43 <esowiki> [[ROT-13]] N https://esolangs.org/w/index.php?oldid=65591 * A * (+335) Created page with "[[ROT-13]] is an extension of the [[ROT13]] encoder/decoder. ==Alphabetic characters== They are simply rotated using this following lookup table: <pre> ABCD...WXYZ NOPQ...JKLM..."
14:36:14 <PaniniTheDevelop> new page
14:39:56 -!- PaniniTheDevelop has quit (Remote host closed the connection).
14:41:17 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=65592&oldid=65525 * PaniniTheDeveloper * (+253) /* Introductions */
14:47:05 <rain1> hello
15:11:13 -!- tromp has quit (Remote host closed the connection).
15:32:02 -!- tromp has joined.
15:51:26 -!- adu has joined.
15:58:37 -!- cpressey has quit (Quit: A la prochaine.).
16:36:23 -!- tromp_ has joined.
16:38:35 -!- tromp has quit (Ping timeout: 252 seconds).
17:12:05 -!- b_jonas has joined.
17:21:23 -!- PaniniTheDevelop has joined.
17:24:57 -!- FreeFull has joined.
17:28:29 -!- Phantom_Hoover has joined.
17:37:31 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=65593&oldid=62912 * PaniniTheDeveloper * (+64)
17:38:44 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=65594&oldid=65593 * PaniniTheDeveloper * (-39)
17:38:48 <kmc> Taneb: sure, kinds are just like a type system but one level up
17:39:12 <kmc> in a linear kind system you could do data Foo a = Bar a but not data Foo a = Bar a a or data Foo a = Bar
17:39:18 <kmc> you have to use the type variable 'a' exactly once
17:39:25 <esowiki> [[Esolang:Sandbox]] M https://esolangs.org/w/index.php?diff=65595&oldid=65594 * PaniniTheDeveloper * (-25)
17:39:32 <kmc> whether that is useful, I do not know
18:39:43 <shachaf> cpressey: Joke's on you, I was already asleep.
18:39:49 <shachaf> Joke's on me, cpressey isn't here.
18:40:57 <shachaf> In lens things we talked about "linear functors" and "affine functors" and so on.
19:22:29 <kmc> and what does that mean
19:23:55 <shachaf> They're like the things you said.
19:24:47 <shachaf> You can write a Lens' (Foo a) a for your first Foo and a Traversal (Foo a) a for the second Foo and so on.
19:25:21 <shachaf> data Maybe a = Nothing | Just a is an example of an affine functor, since it's of the form "Ax + B"
19:26:33 <shachaf> I guess every linear functor is going to be of the form "(E,a)" for some E, like a 1D vector space.
19:47:08 <esowiki> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=65596&oldid=65592 * PaniniTheDeveloper * (+0)
19:49:45 <esowiki> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=65597&oldid=65596 * PaniniTheDeveloper * (+0) Undo revision 65596 by [[Special:Contributions/PaniniTheDeveloper|PaniniTheDeveloper]] ([[User talk:PaniniTheDeveloper|talk]])
19:50:16 -!- PaniniTheDevelop has quit (Remote host closed the connection).
20:09:13 -!- Sgeo_ has quit (Read error: Connection reset by peer).
20:09:38 -!- Sgeo_ has joined.
20:14:19 -!- b_jonas has quit (Quit: leaving).
20:26:35 -!- Lord_of_Life_ has joined.
20:29:51 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
20:29:57 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:47:43 -!- xkapastel has quit (Quit: Connection closed for inactivity).
20:59:07 -!- xkapastel has joined.
21:53:27 -!- AnotherTest has quit (Ping timeout: 264 seconds).
22:27:46 -!- FreeFull has quit.
22:51:16 -!- arseniiv has quit (Ping timeout: 248 seconds).
22:57:10 -!- Phantom_Hoover has quit (Quit: Leaving).
23:37:43 -!- xkapastel has quit (Quit: Connection closed for inactivity).
←2019-08-20 2019-08-21 2019-08-22→ ↑2019 ↑all