> 1541721881 529971 PRIVMSG #esoteric :14[[07Esolang:Wiki dumps14]]4 10 02https://esolangs.org/w/index.php?diff=58296&oldid=53557 5* 03Fizzie 5* (+859) 10Update dump instructions re HTTPS (or lack of it) < 1541721911 704822 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I keep trying to write markdown instead of wiki-markup. < 1541722618 128748 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Remote host closed the connection < 1541722705 219212 :arseniiv!~arseniiv@145.255.3.189 QUIT :Ping timeout: 246 seconds < 1541722723 477260 :Essadon!~Essadon@81-225-32-185-no249.tbcn.telia.com QUIT :Quit: Qutting < 1541725135 408794 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm annoyed at markdown taking over the world because so many versions of it have obvious shortcomings < 1541725169 75573 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the original version is decent enough for its stated purpose, but I don't like markdown being used as a sandboxing method, because the syntax is awkwardly inexpressive when you don't have the escape to HTML < 1541725650 568838 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :I happen to like the MediaWiki format, which has support for templates. (I have used the templates feature to make databases, although a block containing SQL codes might be better for this.) < 1541728107 501330 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the one thing Markdown really got right was `…` for code formattinig < 1541728124 645260 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's quickly becoming standard even outside Markdown < 1541728591 619800 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't really like Markdown. < 1541728595 611905 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What should I use instead? < 1541728620 871917 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Mediawiki seems a lot more complicated than I want probably. < 1541729034 128180 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In e.g. C++, ; isn't associative, because of destructors: { { A; B; }; C; } ≠ { A; { B; C; }; }. What sort of meaning does {} have? Is it something like the "reset" operator for delimited continuations? < 1541729371 643139 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: {} introduces a scope < 1541729379 979458 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and destructors are tied to the end of a scope < 1541729412 247917 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :There is also Fossil Wiki format < 1541729416 205602 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. < 1541729427 850748 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: what purpose do you want this markdown-like language for? < 1541729446 692602 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Maybe writing some things to put on my website. < 1541729449 954118 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Or maybe other things. < 1541729453 640183 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I've been considering writing my own, but there are three jobs that a markdown-like language has to do and I'd be optimising for one of them specifically, which probably isn't the one you'd want < 1541729503 484697 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :a) making it easy to write formatted text quickly; b) being easy to read the resulting text without a specialised viewer; c) being able to represent everything you might want to write accurately, without special cases or other mishaps < 1541729518 642665 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Markdown isn't so bad at a); I use it for my own blog for that reason < 1541729545 672251 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'd like all three, with a preference of a over b < 1541729554 500342 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Er, no < 1541729557 784964 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :A preference of b over a < 1541729563 595871 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :No < 1541729568 753400 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the language I had in mind was optimizing for b, c secondary, a not really at all < 1541729571 503468 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Wait, these aren't the things I thought about at all. < 1541729579 784756 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :for writing your own personal website or the like, b is irrelevant < 1541729599 86357 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :what were your considerations? < 1541729647 721393 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't even know anymore. < 1541729654 236402 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You can implement a "defer" statement in C++ such that "A; { B; defer Z; C; }; D;" = A; B; C; Z; D < 1541729719 815167 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :how do you prevent Z being evaluated immediately? or is it a representation of a thunk or the like? < 1541729722 933466 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In this sense "defer" captures things up to the nearest {} < 1541729727 155134 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I can see how you'd evaluate it at the end of the scope < 1541729738 576660 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I guess I should say "defer { Z }" < 1541729799 219160 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Usually it's something like #define defer Thing blah##__LINE__ = ()[&] < 1541729833 645283 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, I see < 1541729898 805897 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm wondering what exactly a scope is, or should be. < 1541729924 777526 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The fact that this defer is implemented with a destructor is kind of irrelevant. As is often the case for RAII objects. < 1541729950 366556 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, the normal definition of a scope is that variable names inside it shadow variable names outside it and aren't available outside it < 1541729957 170439 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's why the destructor runs at the end of the scope < 1541729982 915371 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :one interesting way to think about it is based on INTERCAL's STASH/RETRIEVE operations, which basically allow you to implement scopes that don't nest in the normal manner < 1541729996 224525 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you explicitly shadow a variable (STASH) and revert to the old variable (RETRIEVE) < 1541730046 567683 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There's a sense in which a thing like defer gets a sort of continuation as an argument, but it's bounded up to the enclosing scope. < 1541730059 107582 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Is that something like dynamic scope? < 1541730095 962948 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so the difference between dynamic scope (`local` in Perl), and lexical scope (`my` in Perl), is kind-of complex < 1541730107 787925 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's to do with what happens with things that already have a reference to the shadowed variable < 1541730113 620371 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Right. < 1541730135 642668 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`perl-e $c=4; $d=\$c; {my $c=6; print $c, " ", $$d;} < 1541730136 498879 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :6 4 < 1541730141 900858 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`perl-e $c=4; $d=\$c; {local $c=6; print $c, " ", $$d;} < 1541730142 374865 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :6 4 < 1541730146 640220 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm < 1541730153 898946 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's not the result I expected < 1541730161 475083 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :now I'm wondering what I did wrong < 1541730220 81953 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Does $$ resolve variables by string name in the current scope or something? < 1541730223 244105 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't know Perl. < 1541730242 893976 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think I read that PHP does that. < 1541730249 639377 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :$$ dereferences a reference < 1541730256 224552 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Ah. < 1541730262 907714 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if you try to use a variable name as a reference it does what PHP does, that's insane though < 1541730272 419261 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in this case $d is a proper reference to $c < 1541730274 927839 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Dynamic scope mostly seems like scow, but recently I've been wondering whether some things are effectively dynamically scoped and I haven't noticed. < 1541730309 167663 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In particular are "break"/"continue"/"return" effectively dynamically scoped? < 1541730319 321575 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This question doesn't quite make sense in any language I know of unfortunately. < 1541730462 426856 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`perl-e $c=4; sub rc {return $c;} {my $c=6; print rc();} < 1541730462 968187 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :4 < 1541730467 4850 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`perl-e $c=4; sub rc {return $c;} {local $c=6; print rc();} < 1541730467 563883 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :6 < 1541730471 786276 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :OK, /that/'s the difference < 1541730481 922927 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's even more confusing than I thought it was < 1541730504 148129 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That makes sense. < 1541730609 615067 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Even Haskell has dynamic scope < 1541730613 351664 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :> let { ?c = 4 } in let { f x = x + ?c } in let { ?c = 40 } in f 5 < 1541730615 512258 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : 45 < 1541730616 547258 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :> let { c = 4 } in let { f x = x + c } in let { c = 40 } in f 5 < 1541730618 605055 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : 9 < 1541731183 715823 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I guess `local` isn't changing the value of the variable temporarily; it's actually changing the variable itself temporarily < 1541731185 369044 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :how Perl < 1541731203 285913 :Sgeo__!~Sgeo@ool-18b98dd9.dyn.optonline.net QUIT :Ping timeout: 245 seconds < 1541731262 751448 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I as wondering whether you can make a monad thing for this. < 1541731280 283469 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :E.g. do { A; bracket $ do { B; defer Z; C; }; D } -> do { A; B; C; Z; D; } < 1541731295 337158 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :And bracket $ do { ret <- getCC; A; bracket $ do { B; defer Z; C; ret 0; D; }; E } -> do { A; B; C; Z; return 0; } < 1541731313 582575 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that should be pretty easy, I think? at least the first example < 1541731324 647817 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :just have a state monad with a list inside the state, that counts up all the arguments to `defer` < 1541731329 567058 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :then have `bracket` run them all < 1541731390 250535 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes, I think bracket+defer on its own is pretty doable < 1541731411 420758 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Though defer isn't the only kind of effect I'd want. It's more like an arbitrary effect that can operate on the continuation up to the enclosing bracket. < 1541731444 105099 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Someone in #haskell implemented it, actually: https://gist.github.com/Lysxia/8a5c8d20f6c7c1332481190fb6f1c8b7 < 1541731449 927416 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But it's not quite right, I think. < 1541731459 717871 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"operate on the rest of the continuation" is pretty much literally what a monad /is/ < 1541731467 903587 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so I guess we're trying to make a dynamic monad? a monad that gets defined at runtime? < 1541731486 738676 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Right, except e.g. C++'s {}/; don't obey the associativity monad law. < 1541731501 247912 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Normally there's a law that (a >> b) >> c = a >> (b >> c) < 1541731515 127905 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But it's true that monads and continuations closely related. < 1541731529 619562 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :are < 1541731533 66510 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think ; is still associative, just that {} are not () < 1541731555 502020 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes, that's fair. < 1541731568 827126 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In C++ "A; B; C" means "A; { B; C; }" < 1541731585 449974 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :With destructors running in reverse order and so on. < 1541731627 913413 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, if you see A; as being "A, and run the identity function on the rest of the block", that implies the same associativity here too < 1541731648 571295 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Monads in general don't have an equivalent of bracket < 1541731656 915955 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What would it look like? < 1541731695 296361 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :One extra thing is that e.g. C++ supports early-exit outside of the enclosing block. < 1541731732 251844 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :foo() { A; { B; if (p) return; }; C; } < 1541731735 466796 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :bracket takes a monad action as argument, and returns another monad action < 1541731744 427369 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I don't think that's very common among monads < 1541731763 888644 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :what it's doing in between is basically running the monad actoins inside it, and bundling the result up into another monad action < 1541731795 376016 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :early exit should be easy to implement like this, anyway; just don't run the rest of the block < 1541731826 168701 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But you want to run the appropriate defers, and whatever else, on the way up. < 1541731859 432190 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't think things that operate on actions are very uncommon. < 1541731885 786874 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :normally they return a value, though, not another action < 1541731933 165502 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric ::t local -- this is in the spirit of what you're talking about, I think < 1541731934 535248 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :MonadReader r m => (r -> r) -> m a -> m a < 1541731935 968610 :oerjan!oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1541731968 956318 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(Both for dynamic scope and for monad action actions.) < 1541732023 886049 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t (>>=) < 1541732024 984439 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Monad m => m a -> (a -> m b) -> m b < 1541732045 386442 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Of course (>>=) and fmap and so on also qualify < 1541732072 848354 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :what we effectively want here is a monad where each action defines its own >>= < 1541732076 375024 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm trying to work out what type that has < 1541732119 834519 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :GenericMonad a = forall b.(a -> GenericMonad b) -> GenericMonad b < 1541732121 165993 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think < 1541732189 856920 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That's like a fixed point of Codensity or something < 1541732248 508168 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so we have "return a atmb = atmb a", and "(>>=) ma atmb = ma atmb" < 1541732274 520810 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :@hoogle a->(a->b)->b < 1541732274 929715 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Prelude ($) :: (a -> b) -> a -> b < 1541732275 18 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Prelude ($!) :: (a -> b) -> a -> b < 1541732275 41878 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Data.Function ($) :: (a -> b) -> a -> b < 1541732293 194896 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there really isn't a flip ($) in the standard library? < 1541732301 490989 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but yes, looks like return is flip ($), and >>= is % < 1541732301 661140 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric ::t (&) < 1541732302 824709 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :a -> (a -> b) -> b < 1541732303 964209 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :* is $ < 1541732306 526059 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :aha < 1541732315 270687 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :this kind-of makes sense given how generic the monad is < 1541732352 67489 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it feels like this should obey the monad laws, it's 3am though and I'm lazy so I'm not going to try to work that out right now < 1541732411 527763 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm not sure I understand it but it seems like it might not be associative based on what you were trying to do? < 1541732525 914639 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :bleh, let's try to work through this anyway < 1541732538 208339 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'll see if I can figure out what you mean. < 1541732578 747272 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :return a >>= f → return a f → f a, as required < 1541732658 188254 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :m >>= return → m return → -- OK, I don't think this one holds without an extra condition on what monad actions we allow < 1541732704 83806 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and yes, associativity doesn't hold without a side-condition either < 1541732758 783846 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm. < 1541732775 352304 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You could use the Codensity monad instance for this, which I think would have to make the laws hold? < 1541732817 599571 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :m >>= k = (\c -> m (\a -> k a c)) < 1541732844 68505 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It enforces associativity by reassociating everything to the right. < 1541732862 613752 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But that doesn't get the desired effect anymore, I guess. < 1541732904 604899 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :(Codensity f) does form a monad regardless of what (f) is. It is possible to defer; I have managed to do that with a Codensity monad. < 1541732946 966828 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :zzo38: This monad is like the fixed point of Codensity (?) < 1541732969 401115 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: it looks like Codensity has the same monad definition and "return" as what I wrote above < 1541732973 531692 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but >>= is different < 1541732985 521657 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. It's the same (>>=) as Cont. < 1541733079 959565 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :reassociating everything to the right is correct, I think; you'd need a separate monad action → monad action function to add explicit rebracketing < 1541733104 65115 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Right, otherwise you can make things that are bracketing-aware. < 1541733256 494481 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You can define a similar thing for monoids and run into the same thing, I guess? < 1541733275 274659 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I can't see one in the Codensity docs, but maybe I'm just missing it, or maybe it's a special case of something that's already there < 1541733310 873990 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't think it exists for arbitrary Codensity but only over some specific monads? < 1541733328 983655 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it could be < 1541733403 699116 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You can have a "monoid" that has an element x where, in x*(abc), x gets to make some decision based on abc < 1541733477 979696 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But that's not compatible with associativity. You could right-reassociate everything à la difference lists, but then you kind of lose the point. You could add explicit brackets to recognize that you're really representing a tree. < 1541733514 299968 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :right, if you have the fixed point of Codensity, then bracket (runCodensity k) = k return < 1541733518 172494 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think, at least < 1541733551 110169 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Also someone suggested that Cont/runCont do the appropriate operations. I should figure that out. < 1541733558 288763 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm not in the right state of mind for working throuhg this < 1541733568 484822 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :https://www.vex.net/~trebla/haskell/cont.xhtml talks about it in terms of reset/shift at the end < 1541733589 736075 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :OK, thanks for your help, I'll think about this thing. < 1541733705 832402 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I've been thinking about this same subject myself, incidentally < 1541733711 119491 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as it really seems like an important primitive < 1541733715 901468 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(the "monad that can be anything") < 1541733823 140422 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :"the mother of all monads" < 1541733828 422683 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm pretty sure the answer is Codensity. < 1541734136 452107 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :There are other kind of monads such as Free and CodensityAsk, as well as Codensity. < 1541734186 572017 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But you can lift them all to Codensity < 1541734270 391061 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :Yes, although still it is a different monad; (Codensity Maybe) is difference from just Maybe. < 1541734332 866100 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. > 1541735152 694513 PRIVMSG #esoteric :14[[07Keg14]]4 10 02https://esolangs.org/w/index.php?diff=58297&oldid=58285 5* 03JonoCode9374 5* (+565) 10/* Example Programs */ -- Added 99 bottles of beer program > 1541735196 959929 PRIVMSG #esoteric :14[[07Keg14]]4 10 02https://esolangs.org/w/index.php?diff=58298&oldid=58297 5* 03JonoCode9374 5* (+62) 10/* Example Programs */ > 1541735488 900754 PRIVMSG #esoteric :14[[07Messyscript14]]4 10 02https://esolangs.org/w/index.php?diff=58299&oldid=56035 5* 03Rdebath 5* (+57) 10Is a TBF < 1541736232 820371 :ais523!~ais523@unaffiliated/ais523 QUIT :Quit: quit < 1541736936 891102 :oerjan!oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :`cat bin/perl-e < 1541736937 303188 :HackEso!~h@techne.zem.fi PRIVMSG #esoteric :​#!/bin/bash \ perl -e "$@" < 1541737718 703697 :Sgeo!~Sgeo@ool-18b98dd9.dyn.optonline.net JOIN :#esoteric < 1541738262 501429 :oerjan!oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :today's http://www.mezzacotta.net/garfield/ appears to have a pun that only a norwegian would understand. < 1541738294 477586 :oerjan!oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :(and editor manyhills isn't norwegian afaiu) < 1541738372 562649 :oerjan!oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :so he probably thought it was only a surreal submission (well, it's that too) < 1541738912 673914 :oerjan!oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :ooh, dmm must have fixed my registration problem from way back... < 1541738926 972401 :oerjan!oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :(although i didn't get an email back) < 1541740489 342389 :Hoolootwo!Hooloovoo@hooloovoo.blue PRIVMSG #esoteric :fjord pun? < 1541740592 966925 :xkapastel!uid17782@gateway/web/irccloud.com/x-oahdrutbjknwocdf QUIT :Quit: Connection closed for inactivity < 1541741323 442307 :oerjan!oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :Hoolootwo: no, https://no.wikipedia.org/wiki/Pusur < 1541744640 844608 :oerjan!oerjan@hagbart.nvg.ntnu.no QUIT :Quit: Nite < 1541745587 37267 :Hoolootwo!Hooloovoo@hooloovoo.blue PRIVMSG #esoteric :ah, I see < 1541748365 743999 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :Now I implemented a QOTD server (TCP only; the UDP one is subject to attacks so it is not implemented) < 1541748428 887457 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :Do you like this? < 1541750626 668078 :xkapastel!uid17782@gateway/web/irccloud.com/x-qaphdrzwghhoenfd JOIN :#esoteric < 1541751757 336309 :Hoolootwo!Hooloovoo@hooloovoo.blue NICK :Hooloovo0 > 1541752948 190558 PRIVMSG #esoteric :14[[07User:Salpynx14]]4 10 02https://esolangs.org/w/index.php?diff=58300&oldid=57993 5* 03Salpynx 5* (+243) 10/* Working on */ > 1541753009 435159 PRIVMSG #esoteric :14[[07User:Salpynx14]]4 M10 02https://esolangs.org/w/index.php?diff=58301&oldid=58300 5* 03Salpynx 5* (+10) 10/* Interested in */ > 1541754832 808479 PRIVMSG #esoteric :14[[07User:Salpynx14]]4 M10 02https://esolangs.org/w/index.php?diff=58302&oldid=58301 5* 03Salpynx 5* (+19) 10/* Interested in */ < 1541757224 688263 :AnotherTest!~turingcom@ptr-82l26zf5tit6s260cpd.18120a2.ip6.access.telenet.be JOIN :#esoteric < 1541761152 859142 :moei!~moei@softbank221078042071.bbtec.net JOIN :#esoteric < 1541763693 323916 :Essadon!~Essadon@81-225-32-185-no249.tbcn.telia.com JOIN :#esoteric < 1541764323 692366 :Lord_of_Life_!~Lord@77.28.219.31 JOIN :#esoteric < 1541764347 430761 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 244 seconds < 1541764450 212423 :Lord_of_Life_!~Lord@77.28.219.31 NICK :Lord_of_Life < 1541764496 641659 :Lord_of_Life!~Lord@77.28.219.31 QUIT :Changing host < 1541764496 641729 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1541764604 553988 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 JOIN :#esoteric < 1541764664 618659 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: yes, markdown format sucks. yes, file-level diff downloading is a hard problem that is possible in theory but no good practical solutions exist, so we use workarounds like splitting to smaller files, append-only logs, or (the old solution) sequences of patches. < 1541764775 917014 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :for a format, to be able to accurately represent complicated things, I'd prefer to just allow most HTML codes in the formatted text even if there are other shortcuts, though of course if you have untrusted input, then you have to filter the HTML. < 1541764816 348591 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and I for one thing that every non-common extra feature should just use HTML-like syntax, rather than all other sort of ad-hoc syntax like magic templates, and non-HTML syntax only reserved for very common formatting < 1541764852 552277 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I might eventually try to implement such a formatting language, with multiple versions, as in one for trusted input and one for untrusted input, and specifically the features I need < 1541764917 719121 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I can't promise anything, but if I do get something like this done, I will mention it in this channel if possible < 1541764977 432832 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :Back lots of years ago I already improved perlmonks' HTML-based markup language a bit, in particular I proposed adding the ... shortcut for the very common ... tags. < 1541764996 805988 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :Note that in Perlmonks markup, ... is magical, it's not the plain HTML tag. < 1541765039 321752 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :The text between it is interpreted as plain text (sort of like in a CDATA), with & and < not being special < 1541766164 246566 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :Whoa! "Subversion 1.11 is the first of the new 6-month regular releases with an emphasis on introducing new features more quickly and a shorter support See Subversion 1.11 is a Regular Release below." < 1541766187 900688 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I did get surprised, because the minor release 1.10 was released this year. < 1541766234 884856 :arseniiv!~arseniiv@145.255.3.189 JOIN :#esoteric < 1541766803 801441 :xkapastel!uid17782@gateway/web/irccloud.com/x-qaphdrzwghhoenfd QUIT :Quit: Connection closed for inactivity < 1541768524 687114 :AnotherTest!~turingcom@ptr-82l26zf5tit6s260cpd.18120a2.ip6.access.telenet.be QUIT :Ping timeout: 250 seconds < 1541769370 276559 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: however, I believe you can use subversion for serving updates with in-file deltas over the internet, as long as the server stores old versions of the file and the client has one of those versions. < 1541769389 893093 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :so that may work as incremental downloading for your purposes < 1541769856 793489 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :subversion also stores the versions of files on disk in a compressed format that takes the similarity of different version to account and also compresses ordinary obvious low-entropy stuff, so storing lots of versions isn't too expensive < 1541774807 82663 :sleepnap!~thomas@2603:3015:260e:1900:8319:87ab:f00:d5de JOIN :#esoteric < 1541775794 482024 :wob_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 QUIT :Quit: http://www.kiwiirc.com/ - A hand crafted IRC client < 1541776331 680385 :AnotherTest!~turingcom@ptr-82l26zf5tit6s260cpd.18120a2.ip6.access.telenet.be JOIN :#esoteric < 1541777790 570189 :sleepnap!~thomas@2603:3015:260e:1900:8319:87ab:f00:d5de QUIT :Ping timeout: 252 seconds < 1541780631 45271 :moei!~moei@softbank221078042071.bbtec.net QUIT :Read error: Connection reset by peer < 1541780667 575308 :moei!~moei@softbank221078042071.bbtec.net JOIN :#esoteric < 1541782383 469092 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :Fossil wiki supports stuff like so that even if the text contains it can still work. < 1541788660 829252 :xkapastel!uid17782@gateway/web/irccloud.com/x-fchbdtyxoiwyhqcg JOIN :#esoteric < 1541789765 429069 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :Can Heirloom-mailx be made to work with NNTP? > 1541794512 960845 PRIVMSG #esoteric :14[[07BrainfuckX14]]4 10 02https://esolangs.org/w/index.php?diff=58303&oldid=46431 5* 03Salpynx 5* (+27) 10formatting < 1541794519 69607 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :Now I added into my "sqlext_remote" program, the possibility to use UNIX domain sockets. > 1541796388 790573 PRIVMSG #esoteric :14[[07Pluso14]]4 10 02https://esolangs.org/w/index.php?diff=58304&oldid=39848 5* 03Rdebath 5* (+89) 10Golf!? < 1541796512 146494 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :RFC 1288 says that the finger protocol can be used with vending machines. Are there vending machines that implement it? < 1541796968 628764 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :(I suppose you might use it in a local network in a building, but it is not so useful for internet) < 1541797169 825246 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :It says there were a few (and they were connected to the internet, even though they admitted it is not useful for internet), but I don't know if there are any now. < 1541797442 771026 :zzo38!~zzo38@24-207-47-161.eastlink.ca PRIVMSG #esoteric :The account looks like it still exists, although it just says "No Plan" now. < 1541798317 715977 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric > 1541798501 885278 PRIVMSG #esoteric :14[[07Special:Log/newusers14]]4 create10 02 5* 03MilkyWay90 5* 10New user account > 1541798668 623611 PRIVMSG #esoteric :14[[07Esolang:Introduce yourself14]]4 M10 02https://esolangs.org/w/index.php?diff=58305&oldid=58291 5* 03MilkyWay90 5* (+138) 10 > 1541798684 873799 PRIVMSG #esoteric :14[[07User talk:Maxsteele214]]4 10 02https://esolangs.org/w/index.php?diff=58306&oldid=43118 5* 03MilkyWay90 5* (+100) 10 < 1541803634 566232 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Read error: Connection reset by peer > 1541804341 528366 PRIVMSG #esoteric :14[[07Keg14]]4 M10 02https://esolangs.org/w/index.php?diff=58307&oldid=58298 5* 03JonoCode9374 5* (+1) 10/* Command Glossary */ > 1541804428 771713 PRIVMSG #esoteric :14[[07Keg14]]4 10 02https://esolangs.org/w/index.php?diff=58308&oldid=58307 5* 03JonoCode9374 5* (+263) 10/* Example Programs */ < 1541804797 636057 :AnotherTest!~turingcom@ptr-82l26zf5tit6s260cpd.18120a2.ip6.access.telenet.be QUIT :Ping timeout: 250 seconds < 1541806998 897558 :Melvar!~melvar@dslb-002-203-059-251.002.203.pools.vodafone-ip.de QUIT :Quit: rebooting < 1541807375 158766 :Lord_of_Life_!~Lord@46.217.127.153 JOIN :#esoteric < 1541807574 495741 :Melvar!~melvar@dslb-002-203-059-251.002.203.pools.vodafone-ip.de JOIN :#esoteric < 1541807589 706733 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 268 seconds < 1541807590 9665 :Lord_of_Life_!~Lord@46.217.127.153 NICK :Lord_of_Life < 1541807590 331323 :Lord_of_Life!~Lord@46.217.127.153 QUIT :Changing host < 1541807590 331363 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric