←2020-10-16 2020-10-17 2020-10-18→ ↑2020 ↑all
00:02:46 -!- dingwat has joined.
00:03:50 -!- Arcorann has joined.
00:15:38 -!- spruit11 has quit (Ping timeout: 260 seconds).
00:17:24 -!- b_jonas has quit (Remote host closed the connection).
00:27:05 -!- FreeFull has quit.
00:31:34 -!- spruit11 has joined.
00:54:52 -!- spruit11 has quit (Ping timeout: 272 seconds).
01:27:31 -!- dcristofani has joined.
01:50:25 -!- dcristofani has quit (Ping timeout: 240 seconds).
01:55:00 -!- dcristofani has joined.
01:56:28 -!- ais523 has joined.
02:05:30 -!- spruit11 has joined.
03:03:50 -!- ais523|telnet has joined.
03:03:57 <ais523> OK, this is ridiculous
03:04:04 <ais523> I can't connect inbound to my server at all
03:04:24 <ais523> so I opened up a serial console (remotely) and telnetted /out/ of it
03:04:29 <ais523> in order to see if the networking worked
03:05:08 <ais523> I'm not sure what sort of issue would cause only outbound connections to work
03:09:52 -!- ais523|telnet has quit (Remote host closed the connection).
03:10:00 <ais523> ooh, that's a good sign
03:10:04 <ais523> was expecting a pingout
03:10:10 <ais523> but the connection did close when I forcibly rebooted it
03:10:15 <ais523> (I lost the connection to the serial console, too)
03:15:09 <ais523> OK, and back up
03:15:22 <ais523> I just needed to find a rebootier sort of reboot :-D
03:34:45 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
04:12:28 -!- dcristofani has quit (Ping timeout: 272 seconds).
04:34:33 -!- dcristofani has joined.
05:01:28 -!- Sgeo has quit (Read error: Connection reset by peer).
05:03:19 -!- Sgeo has joined.
06:21:26 -!- deltaepsilon23 has joined.
06:21:52 -!- deltaepsilon23 has changed nick to delta23.
07:01:00 -!- ais523|telnet has joined.
07:01:19 <ais523> ugh, it happened again, and now even properly rebooting isn't helping
07:01:32 <ais523> this connection to freenode is over IPv6
07:01:42 <ais523> maybe it's just IPv4 that's broken?
07:01:51 -!- ais523|telnet has quit (Client Quit).
07:02:29 <ais523> yep, just IPv4 it seems
07:12:55 <ais523> so the connection to Freenode worked because it used IPv6, when I forced an IPv4 connection it wouldn't
07:15:56 <shachaf> Well, I hear IPv6 is the future. Maybe you're in the future?
07:18:21 <Taneb> Nah, IPv6 is last-century technology
07:28:47 -!- LKoen has joined.
07:45:28 -!- delta23 has quit (Disconnected by services).
07:51:35 -!- dcristofani has quit (Ping timeout: 260 seconds).
08:06:25 -!- imode has quit (Ping timeout: 240 seconds).
08:11:03 -!- hendursaga has quit (Ping timeout: 240 seconds).
08:16:03 -!- dcristofani has joined.
08:22:26 -!- ais523|telnet has joined.
08:22:36 <ais523> IPv4 connection, I think
08:25:24 <ais523|telnet> I'm not sure there's any easy way to tell
08:25:27 -!- ais523|telnet has quit (Client Quit).
08:33:05 -!- dcristofani has quit (Ping timeout: 240 seconds).
08:39:57 -!- dcristofani has joined.
08:47:55 -!- dcristofani has quit (Ping timeout: 246 seconds).
09:13:44 -!- sprocklem has quit (Ping timeout: 256 seconds).
10:06:47 -!- Sgeo has quit (Read error: Connection reset by peer).
10:21:31 -!- aaaaaa has joined.
10:27:20 -!- dcristofani has joined.
10:36:18 -!- b_jonas has joined.
11:06:39 -!- dcristofani has quit (Ping timeout: 260 seconds).
11:08:25 -!- t20kdc has joined.
11:33:06 -!- arseniiv has joined.
11:39:40 -!- dcristofani has joined.
11:56:24 <esowiki> [[3var]] https://esolangs.org/w/index.php?diff=77997&oldid=44843 * SunnyMoon * (+48) What are var
12:03:40 <esowiki> [[3var]] https://esolangs.org/w/index.php?diff=77998&oldid=77997 * SunnyMoon * (+23) How? (Also I accidentally saved in the prev edit)
12:08:18 <esowiki> [[3var]] https://esolangs.org/w/index.php?diff=77999&oldid=77998 * SunnyMoon * (+17) Linkify
12:43:45 <esowiki> [[3var]] M https://esolangs.org/w/index.php?diff=78000&oldid=77999 * PythonshellDebugwindow * (+2) /* Hello, World! */ Make link point to non-redirect
13:03:11 -!- hendursaga has joined.
13:33:39 -!- callforjudgement has joined.
13:33:56 -!- callforjudgement has quit (Client Quit).
13:36:44 -!- ais523 has quit (Ping timeout: 265 seconds).
14:26:34 -!- Arcorann has quit (Read error: Connection reset by peer).
15:00:05 -!- dcristofani has quit (Ping timeout: 240 seconds).
15:34:44 <esowiki> [[4]] M https://esolangs.org/w/index.php?diff=78001&oldid=70930 * SunnyMoon * (-10) They say the "User:" prefix is mandatory...
15:55:22 -!- MDude has joined.
16:28:17 -!- adu has joined.
16:35:57 -!- hendursaga has quit (Remote host closed the connection).
16:37:01 -!- hendursaga has joined.
17:04:12 <esowiki> [[4]] M https://esolangs.org/w/index.php?diff=78002&oldid=78001 * SunnyMoon * (+39) It does not have to necessarily a 10 by 10 grid.
17:13:52 -!- adu has quit (Quit: adu).
17:14:42 <esowiki> [[4]] M https://esolangs.org/w/index.php?diff=78003&oldid=78002 * SunnyMoon * (+1) I like the taste of commas
17:18:49 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
17:20:21 -!- imode has joined.
17:25:36 <esowiki> [[3var]] M https://esolangs.org/w/index.php?diff=78004&oldid=78000 * SunnyMoon * (+34) Esotericness
17:27:30 <esowiki> [[4]] https://esolangs.org/w/index.php?diff=78005&oldid=78003 * SunnyMoon * (-10) Userify
17:33:42 <esowiki> [[4]] https://esolangs.org/w/index.php?diff=78006&oldid=78005 * SunnyMoon * (+0) Heading + Golfed cat program
17:34:02 <esowiki> [[4]] M https://esolangs.org/w/index.php?diff=78007&oldid=78006 * SunnyMoon * (+2) Oop
17:34:52 <esowiki> [[4]] https://esolangs.org/w/index.php?diff=78008&oldid=78007 * SunnyMoon * (-4) Brackets are not needed
17:39:11 <int-e> hmm, fun with socat: socat TCP-LISTEN:4242,reuseaddr EXEC:'"socat TCP:localhost:4243 EXEC:\"\\\"sh -c \\\\\\\"echo from $SOCAT_PEERADDR; exec socat FD:0 FD:1\\\\\\\"\\\"\",fdin=1,nofork",fdout=0,nofork'
17:49:48 <aaaaaa> int-e: what it does?
17:51:13 -!- arseniiv has quit (Ping timeout: 264 seconds).
17:57:58 -!- arseniiv has joined.
17:58:54 <int-e> It forwards a TCP connection with a twist.
18:01:15 <myname> that twist being?
18:12:46 <esowiki> [[4]] https://esolangs.org/w/index.php?diff=78009&oldid=78008 * SunnyMoon * (+147) Truth-machine
18:41:12 -!- Sgeo has joined.
19:08:48 <imode> wondering what the minimal combinator set is for a flat concatenative language, as in you can't form nested quotations of depth > 1.
19:09:05 <imode> you need compose. you'd need apply.
19:10:22 <imode> without a way to simulate a "second stack" by repeatedly quoting everything at the top of it (because you can't form a quotation that pushes quotations without a shim), you need something like `pick` or a whole-stack `rot` in order to be TC.
19:47:22 -!- sprocklem has joined.
19:57:02 -!- FreeFull has joined.
20:07:08 <b_jonas> zzo38: in M:tG, I'm trying to understand the new rules for modal double-faced cards. which rule allows playing a modal double-faced card as a land with its back side up in first place? I don't see it in 711 or 116.2a, and 711.4a plus 711.9 seems to prohibit it.
20:10:35 <zzo38> b_jonas: Yes, that does seem to be the case; maybe the rule writers made a mistake.
20:11:35 <b_jonas> zzo38: nah, there's probably some tricky rule combination hidden in there
20:11:40 <b_jonas> I just can't see it yet
20:12:24 <zzo38> Maybe; I don't see it either
20:12:58 <b_jonas> zzo38: and the release notes does seem to say that you can play as a land
20:14:11 <zzo38> Yes, clearly it is supposed to be allowed, although I don't know what rule allows it.
20:17:03 <b_jonas> I'm trying to figure out how it interacts with effects like that of Shelldock Isle
20:17:09 <esowiki> [[User:OsmineYT]] https://esolangs.org/w/index.php?diff=78010&oldid=77530 * OsmineYT * (+82)
20:17:12 -!- FAKTOR7 has joined.
20:25:51 <esowiki> [[User talk:Orby]] https://esolangs.org/w/index.php?diff=78011&oldid=51611 * OsmineYT * (+171)
20:30:34 <esowiki> [[User talk:PythonshellDebugwindow]] https://esolangs.org/w/index.php?diff=78012&oldid=77860 * OsmineYT * (+121)
20:56:51 <b_jonas> well I asked the MTG Salvation forum. the Wizards forum had a nice place to ask these kinds of rules theory questions, one that even Wizards employees frequented, but they shut that forum down.
21:05:51 <b_jonas> they point me to https://www.mtgsalvation.com/forums/magic-fundamentals/magic-rulings/819228-radha-mdfc which says that the Comprehensive Rules are indeed very buggy
21:06:52 <esowiki> [[User talk:PythonshellDebugwindow]] https://esolangs.org/w/index.php?diff=78013&oldid=78012 * SunnyMoon * (+199) By the way, I do not have discord either if you REALLY want to know...
21:10:44 -!- ais523 has joined.
21:11:32 <ais523> <imode> wondering what the minimal combinator set is for a flat concatenative language, as in you can't form nested quotations of depth > 1 ← you mean, they can't be created even at runtime, rather than simply being inexpressible in the source file?
21:12:16 <ais523> if you can create them at runtime, then you don't need many (I think 2 are enough if one of them is very complex)
21:12:28 <ais523> if you can't, then I think you might run into definitional problems
21:13:13 <ais523> for example, https://esolangs.org/wiki/7 doesn't really have a concept of nested quotations, and is entirely flat in terms of its internal storage
21:13:27 <ais523> but the definition of the 6 command is very complex and basically introduces nested quotations by "cheating"
21:13:57 <ais523> given that it scans a string for substrings with correctly matched "parentheses"
21:14:43 <b_jonas> right, there are many ways to cheat if you don't insist on combinators from ordinary combinator calculus
21:14:55 <imode> yeah, nested quotations aren't allowed at runtime or in the source file.
21:16:05 <b_jonas> like if you have one quotation and a function that compiles and evaluates the quoted program in fortran or basic, perhaps you can get away with it without having quotations inside the fortran or basic program.
21:16:10 <imode> the basis I have now is dup, drop, swap, left, right, compose, apply, and pre-quoted versions of all of those.
21:16:36 <ais523> how do left/right/compose work?
21:16:40 <imode> left and right take the bottom of the stack and put it on top, and take the top of the stack and put it on the bottom.
21:16:49 <ais523> ah, I see
21:16:59 <imode> so x y z ... n left -> n x y z ...
21:17:04 <ais523> I'm not convinced that's a combinator operation (although of course concatenative languages don't need to be based on combinators)
21:17:23 <imode> and x y z ... n right -> y z ... n x
21:17:37 <ais523> and compose is just Underload *, I take it
21:17:51 <imode> compose behaves more like list concatenation if anything.
21:18:04 <ais523> well so does Underload *
21:18:15 <ais523> although, hmm
21:19:21 <imode> you can think of compose as "take two commands, "unquote them", and enquote their concatenation, and push that concatenation."
21:19:40 <imode> so in quotation-speak, it's... [a] [b] compose -> [a b]
21:20:04 <imode> I'm borrowing semantics from equipage.
21:20:56 <imode> and as for the combinatory stuff, yeah, the problem is I think you need _some way_ to access deeper levels within the stack.
21:21:17 <ais523> I assume there's no way for anything that isn't enclosed in exactly one pair of square brackets to get onto the stack
21:21:19 <imode> so you need something that reorders the _whole stack_ to get to any arbitrary element.
21:21:21 <b_jonas> perhaps one of those small one-tape turing machines help
21:21:53 <imode> ais523: if I understand you correctly, yeah. you can't make a quotation that makes quotations, because anything in a quotation gets interpreted directly.
21:22:08 <imode> you can't form [[dup]] for example.
21:22:13 <imode> but you can form [dup].
21:22:23 <ais523> but you can't form dup either, at least not on the stack
21:22:36 <ais523> just [dup] or [dup dup] or whatever
21:22:39 <imode> correct. all things are quoted, then apply unquotes them and adds them to the program.
21:22:53 <imode> I have an interpreter if you wanna play around.
21:24:15 <imode> https://repl.it/repls/UpbeatScalyRoutes#main.py
21:24:45 <imode> the thing is, if you have a "palette" of quoted commands, you can write a quotation that _makes_ another quotation just by virtue of duplicating it, swapping it, etc.
21:25:32 <imode> i.e if you have a stack of [dup], [drop], [swap], [left], [right], [compose], [apply] and a quotation that selectively picked and grabbed these commands, you could form another quotation out of it.
21:25:40 <ais523> slightly offtopic, but "routes" is a terribly choice of word for a word-based URL, no matter how you pronounce it it's confusable with either "routs" or "roots" which are both real words
21:26:04 <imode> it couldn't be nested, but you could form sequences of quotations that "point" to eachother ala left and right.
21:26:54 <imode> the question is can you do something similar without having commands that affect the entire stack.
21:27:10 <ais523> imode: well, the hard part is just to avoid the PDAness of a single stack
21:27:18 <imode> yeah..
21:27:32 <imode> equipage gets around this via having `pick`.
21:28:00 <b_jonas> .oO(and "router" is pronounced differently if it's for woodworking than if it's for computer networks)
21:28:21 <imode> oxcart gets around this by having a tape of stacks. wagon gets around it by having whole-stack effects.
21:28:42 <imode> and languages that allow runtime nesting of quotations can use this to simulate a secondary stack at-will.
21:28:44 <ais523> the thing is, because you can build arbitrary long quotations, the model we're working in is not actually a PDA
21:29:01 <imode> yeah, I don't know _what_ class it is..
21:29:40 -!- t20kdc has quit (Remote host closed the connection).
21:29:44 <ais523> actually… Underload is TC with just ():^! (you don't need ! either but we can handle it easily without quotations)
21:29:46 <imode> you can't exactly "slurp up" portions of the stack and re-order them, because applying the quotation you used to "slurp up" that portion of the stack will be _immediately applied_.
21:29:47 <ais523> that doesn't contain a
21:30:04 <ais523> this means that there must be a finite number of combinators that works, with no full-stack effects
21:30:18 <b_jonas> ais523: yes, but it needs at least two levels of quotations, probably more
21:30:19 <ais523> because a ():^! program can only form a finite number of different stack elements during its lifetime, so you could just make them all combinators
21:30:22 <ais523> individually
21:30:37 <imode> what b_jonas said. you need the ability to double-nest quotations.
21:30:59 <b_jonas> if you allow more complicated combinators as built-ins, then you could encode a small turing-machine with exactly two levels
21:31:00 <ais523> yes, but I mean, say your program contains ((:^):), you just add ((:^):) and (:^) as combinators
21:31:06 <b_jonas> but one level is just terrible
21:31:15 <b_jonas> ais523: wait, is one level enough really? hmm
21:31:28 <b_jonas> oh yeah
21:31:31 <ais523> now there is no nesting, because your combinators are [pushdupapplytwice] and [dupapply]
21:31:57 <b_jonas> ais523 is right, a single level of nesting is enough
21:32:28 <ais523> wait, how is this not just a PDA though? it doesn't have *
21:32:53 <imode> so your combinators are [[dup apply] dup] and [dup apply]?
21:32:58 <ais523> oh, two stacks, one is program, one is stack
21:33:03 <ais523> imode: right
21:33:08 <ais523> in that example
21:33:33 <imode> hm.
21:33:47 <ais523> what I mean is, we can get a universal turing machine, translate it to the ~:!()^ subset of Underload
21:33:59 <ais523> then take every single quotation inside the program, at any nesting level, and make it a combinator of its own
21:34:30 <ais523> then we have a (very complex) combinator set that implements a TC concatenative language without quoting, full-tape effects, or cheating
21:35:07 <imode> how isn't that cheating, though? you still have two layers of nesting, you just represent them as a single command.
21:35:35 <imode> moreover how are you getting rid of garbage?
21:35:46 <ais523> actually this is basically just https://esolangs.org/wiki/The_Subtyping_Machine
21:35:50 <b_jonas> imode: you use the ! combinator to get rid of garbage
21:36:02 <ais523> in the subset without !, garbage is removed by executing it in a context where all the commands end up cancelling each other out
21:36:29 <imode> so your combinator set is apply, dup, [dup apply], [[dup apply] dup]?
21:36:42 <imode> or is it just those three.
21:37:05 <ais523> imode: well, that was just a random example
21:37:17 <b_jonas> ais523: actually if you allow any built-in combinators, then it's even simpler than the Underload construction, because you don't need to use : at all, instead just have combinators that push parenthesized list of combinators such that if you tried to expand them to underload you'd get cyclically listed and so infinite source code
21:37:46 <imode> I still consider this cheating because you're able to build larger nested structures, only they're in the form of a single command.
21:37:58 <b_jonas> you only need ~! to pick an element from a parenthisized list of combinators,
21:38:43 <b_jonas> either pick the element from a list indexed by states when the head is moving to the left, or from a list indenex by symbols when the head is moving to the right
21:39:08 <b_jonas> using ^ !!...! ~!~!...~! to keep just one element from a list
21:39:18 <ais523> I guess there are degenerate cases that work, e.g. you have an imperative stack based language that isn't concatenative, and make it concatenative by having a command that looks at the top stack element as a program and lower stack elements as the stack it operates on, then pushes itself back onto the program
21:39:21 <b_jonas> and then do nothing to execute that one combinator
21:39:59 <ais523> b_jonas: this is basically just the universal construction for minimalizing any number of combinators down to two
21:40:13 <ais523> if your combinators are 1, 2, 3, 4, 5, etc.
21:40:30 <ais523> then you minimalize them to (~)(1)(2)(3)(4)(5)(!!!!!!!) and ^
21:40:49 <imode> yeah, "select any set of combinators, re-order them, compose, done"
21:41:59 <ais523> (the number of ! is one more than the the number of preceding quotations, so if you do the monster combinator followed by ^ twice, you get a ! effect; the monster combinator + ! obviously gives you (~) and thus ~, and with the monster combinator, ~ and !, you can get any of 1, 2, 3, 4, 5)
21:42:22 <b_jonas> ais523: hmm. that's not how I was thinking of it, but maybe
21:42:42 <ais523> of course, this has a lot of intermediate combinators
21:42:57 <imode> quite a few. I think the point is simplifying from the data side, not the program side.
21:43:12 <imode> like, I can form all lists with the `quote` and `compose` operator.
21:43:16 <ais523> if you think about SK combinator calculus, there are basically five combinator families involved: K, K1, S, S1, S2 (K1, S1, S2 are parameterized by the argument that was curried into them)
21:43:39 <ais523> but you can't use `quote` in a language like this
21:43:49 <b_jonas> ais523: yeah
21:44:54 <imode> I'm back to thinking you need arbitrary stack effects.
21:45:15 <b_jonas> I should think about it this way, with a system of unparametrized stack-based combinators. That view is relevant for Consumer Society and its brother language, but I always thought of it as just the special case of implementing a turing-machine, and interfacing that with the full language on entry and exit
21:45:18 <imode> you need them unless you're willing to go with a command set that can push quotations.
21:45:33 <b_jonas> one-tape turing machine
21:46:27 <b_jonas> or really any two-stack finite control machine, it doesn't have to move symbols one to one
21:51:56 <imode> either way there needs to be some kind of nesting.
21:52:03 <imode> of levels > 1.
21:53:07 <b_jonas> imode: no, I think ais523 is right, one level of nesting, namely predetermined lists of combinators, is enough to implement a two-stack machine
21:53:42 <imode> right, but those lists of combinators need to include arbitrary stack effects, unless I'm missing something.
21:54:36 <imode> the underload two-command minimization, for example, can construct a concatenation of two quotations.
21:54:59 <imode> because you already have them on the stack, you just need to drop the ones you don't care about and concatenate the ones you do.
21:56:08 <imode> either there's an upper bound for the amount of nesting you do or you need arbitrary nesting. a third option is treating the stack like a tape.
21:56:19 <imode> I don't know what that upper bound is.
21:58:13 <ais523> the best way to think about it is that the stack + program basically are a tape already
21:59:24 <ais523> you can view a Turing machine like that; represent the left of the tape as the stack, the state of the Turing machine as a special element on top of the stack, and the tape head and elements to its right as commands
21:59:45 <imode> so assume that you only have dup, drop, swap, compose and apply, along with single-quoted versions of all of those. would that be enough?
22:00:24 <ais523> each command looks at the top two stack elements, modifies or pops them if necessary, then "executes" an appropriate number of commands to add elements to its right
22:00:30 <ais523> including the new tape headd
22:00:55 <ais523> I'm not sure whether it's possible to build something like this out of :!~*^
22:01:18 <ais523> and their single-quoted versions
22:01:41 <ais523> this may come down to the old issue of "where do you store the lookup table?" which is often an issue in proving simple languages TC
22:01:50 <ais523> there is nearly always a lookup table, or some sort of equivalent, somewhere
22:02:14 <imode> definitely that issue. in the TM construction in the article you need at least 3 levels of nesting, I think.
22:03:16 <ais523> I think you can probably store it in the top stack element, though, or maybe interspersed between adjacent stack elements
22:04:18 <ais523> or, ooh, I get what the problem is: the problem is that you have no way to construct the single-quoted versions at runtime
22:04:22 <ais523> so you have to copy them around
22:04:34 <imode> yup.
22:04:55 <ais523> if you have some way to construct the single-quoted versions in terms of the unquoted versions then you're good, and that is what the lookup table is needed for
22:05:31 <imode> so if you were to build a quotation that builds quotations, you'd need to select from an already given palette. then you'd build something that's just a quoted sequence of [dup drop swap left right ...] etc commands that builds another quotation, and then applies it.
22:05:33 <ais523> so the problem here is that there is more than one single-quoted combinator, but you can't store a single-quoted combinator inside a list
22:05:40 <imode> yup.
22:05:42 <ais523> and thus they need to be stored "loose" on the stack
22:05:47 <ais523> and ~ doesn't go deep enough to get past all of them
22:05:52 <imode> eeeexactly.
22:06:17 <ais523> dup, drop, compose, apply, rotate top 6 elements, and single-quoted versions of all those should be enough, I believe
22:06:29 <imode> ooh.
22:06:35 <imode> that's interesting.
22:06:35 <ais523> err, probably needs to be top 7
22:06:50 <ais523> maybe top 6 is enough
22:07:18 <ais523> because the only issue is juggling your single-quoted combinators on the stack, so you need enough juggling power to juggle past them and operate on the data underneath
22:07:20 <imode> you'd probably need top7 because you still need the currently active combinator.
22:07:24 <imode> yeah.
22:07:39 <imode> but what happens when you try to get at the data under that.
22:07:43 <imode> and the data under that.
22:07:57 <ais523> top 7 is enough to juggle 5 combinators and 2 pieces of data
22:08:13 <ais523> or 5 combinators, plus a duplicate of one of the combinators, plus 1 piece of data
22:09:15 <imode> I think there would be some cases where you some operations wouldn't be possible that'd be required. I don't know what a lookup table would look like apart from a sequence of quotations that point to eachother.
22:09:24 <ais523> this basically gives you all of {dup drop compose apply swap} because none of those take more than two arguments, and {push duplicate of single-quoted combinator} because you can just copy one of them and juggle it into place
22:09:27 <imode> relative to their position on the stack.
22:09:38 <ais523> (you can build a swap out of a rotate by dupping a bunch, rotating, and dropping the duplicates)
22:10:05 <ais523> the lookup table is literally just [dup][drop][compose][apply][rotate] on top of the stack, as 5 loose elements
22:10:14 -!- arseniiv has quit (Ping timeout: 256 seconds).
22:10:24 <imode> sorry, I misspoke: a TM's lookup table.
22:10:24 <ais523> you leave it there the entire program execution, except temporarily to operate on the elements beneath it
22:10:44 <ais523> oh, a TM's lookup table is the (color, state) → (color, state, movement) map
22:10:56 <imode> right, but forming that map.
22:11:01 <imode> within this language.
22:11:52 <ais523> you'd use enum values like !!!!!!!~!~!~!~!~!~! to store colors and states
22:12:58 <ais523> actually, even better, you use a construction where a color/state is just !!!…!!!!^ and the element that's executed contains the remanining ! to get rid of the elements that weren't popped or executed
22:13:35 <ais523> that way it composes easily, a color can be, say, ! or !! or !!!, a state can be some multiple of !!! followed by ^
22:13:48 <imode> how would you preserve the rest of the table? you need to make a state transition more than once.
22:13:50 <ais523> then, composing color with state gives you the appropriate accessor for the lookup table
22:14:01 <ais523> simulated nested quoting
22:14:10 <ais523> because you're juggling single-quoted combinators
22:14:20 <ais523> you can effectively produce a nested list by writing the appropriate list of juggling commands
22:14:39 <imode> iiiinteresting.
22:14:40 <ais523> like, you can't write [[dup swap][apply rotate]] directly, but you can create a command that produces the elements [dup swap][apply rotate] when executed
22:15:24 <ais523> beacuse you just need to write the list of commands that juggles your combinators appropriately to produce those two elements, and that list of commands is flat
22:15:25 <imode> so you apply the current color to the table to get a quotation that you can apply to do the state transition, which constructs the state table _again_.
22:15:32 <ais523> yes
22:15:36 <imode> while also performing the actions on the tape.
22:15:42 <imode> that is absolutely brilliant.
22:15:47 <ais523> at this point it's basically just standard Underload behaviour, except that there is no way to implement a
22:15:54 <ais523> but you don't need a to write a Turing machine
22:16:07 <imode> this was on the tip of my tongue for the past 5 days lmao.
22:17:13 -!- ais523 has quit (Read error: Connection reset by peer).
22:18:12 <imode> so the core command set is just {dup drop swap compose apply rot7} and quoted versions, leading to a total of 12 commands.
22:18:14 -!- ais523 has joined.
22:18:20 <imode> so the core command set is just {dup drop swap compose apply rot7} and quoted versions, leading to a total of 12 commands.
22:18:23 <imode> shoot, sorry.
22:19:21 <b_jonas> zzo38: right now I'm trying to figure out what happens if I have Vastvood Fortification exiled to Isochron Scepter, and I try to cast the back side as a spell without paying its mana cost. normally you can't cast lands because they don't have a mana cost so you can't pay the cost, Dryad Arbor has a mana cost but 305.9 specifically forbids it, and abilities that instruct to cast without mana cost are
22:19:27 <b_jonas> carefully phrased as "play" instead of "cast" when a land could be used, in which case 601.1a makes it so you'll play it.
22:19:34 <imode> thanks for the help ais523.
22:25:13 <b_jonas> 711.7 (a rule that doesn't even normally work until future sets are released because the back face never has mana cost) says I can choose the back face, nothing seem to prohibit it, and there's now rule 111.11 that says what happens when the back face up copy resolves.
22:25:19 <b_jonas> or the copy of the back face really
22:29:54 <b_jonas> ais523: do we happen to know what are the smallest two-stack finite control machines, as opposed to the smallest from the more restricted class of Turing machines?
22:30:09 <b_jonas> perhaps you looked at that for StackFlow
22:42:32 -!- asie has joined.
22:43:55 <b_jonas> "color" in a Turing machine as tape symbols? that would be weird
22:54:31 <zzo38> I think that you can't cast the back face, since it is a land, it would seem.
22:55:22 <asie> hello
22:58:53 <zzo38> Hello
23:07:02 -!- callforjudgement has joined.
23:07:31 -!- dcristofani has joined.
23:08:59 -!- ais523 has quit (Read error: Connection reset by peer).
23:18:45 -!- Arcorann has joined.
23:28:40 -!- callforjudgement has changed nick to ais523.
23:40:25 -!- dcristofani has quit (Ping timeout: 246 seconds).
23:59:16 <esowiki> [[MangularJS]] M https://esolangs.org/w/index.php?diff=78014&oldid=75209 * PythonshellDebugwindow * (+1) /* Hello, World! */ Fix example to work properly
23:59:34 -!- tromp has quit (Remote host closed the connection).
←2020-10-16 2020-10-17 2020-10-18→ ↑2020 ↑all