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 OK, this is ridiculous 03:04:04 I can't connect inbound to my server at all 03:04:24 so I opened up a serial console (remotely) and telnetted /out/ of it 03:04:29 in order to see if the networking worked 03:05:08 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 ooh, that's a good sign 03:10:04 was expecting a pingout 03:10:10 but the connection did close when I forcibly rebooted it 03:10:15 (I lost the connection to the serial console, too) 03:15:09 OK, and back up 03:15:22 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 ugh, it happened again, and now even properly rebooting isn't helping 07:01:32 this connection to freenode is over IPv6 07:01:42 maybe it's just IPv4 that's broken? 07:01:51 -!- ais523|telnet has quit (Client Quit). 07:02:29 yep, just IPv4 it seems 07:12:55 so the connection to Freenode worked because it used IPv6, when I forced an IPv4 connection it wouldn't 07:15:56 Well, I hear IPv6 is the future. Maybe you're in the future? 07:18:21 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 IPv4 connection, I think 08:25:24 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 [[3var]] https://esolangs.org/w/index.php?diff=77997&oldid=44843 * SunnyMoon * (+48) What are var 12:03:40 [[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 [[3var]] https://esolangs.org/w/index.php?diff=77999&oldid=77998 * SunnyMoon * (+17) Linkify 12:43:45 [[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 [[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 [[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 [[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 [[3var]] M https://esolangs.org/w/index.php?diff=78004&oldid=78000 * SunnyMoon * (+34) Esotericness 17:27:30 [[4]] https://esolangs.org/w/index.php?diff=78005&oldid=78003 * SunnyMoon * (-10) Userify 17:33:42 [[4]] https://esolangs.org/w/index.php?diff=78006&oldid=78005 * SunnyMoon * (+0) Heading + Golfed cat program 17:34:02 [[4]] M https://esolangs.org/w/index.php?diff=78007&oldid=78006 * SunnyMoon * (+2) Oop 17:34:52 [[4]] https://esolangs.org/w/index.php?diff=78008&oldid=78007 * SunnyMoon * (-4) Brackets are not needed 17:39:11 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 int-e: what it does? 17:51:13 -!- arseniiv has quit (Ping timeout: 264 seconds). 17:57:58 -!- arseniiv has joined. 17:58:54 It forwards a TCP connection with a twist. 18:01:15 that twist being? 18:12:46 [[4]] https://esolangs.org/w/index.php?diff=78009&oldid=78008 * SunnyMoon * (+147) Truth-machine 18:41:12 -!- Sgeo has joined. 19:08:48 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 you need compose. you'd need apply. 19:10:22 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 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 b_jonas: Yes, that does seem to be the case; maybe the rule writers made a mistake. 20:11:35 zzo38: nah, there's probably some tricky rule combination hidden in there 20:11:40 I just can't see it yet 20:12:24 Maybe; I don't see it either 20:12:58 zzo38: and the release notes does seem to say that you can play as a land 20:14:11 Yes, clearly it is supposed to be allowed, although I don't know what rule allows it. 20:17:03 I'm trying to figure out how it interacts with effects like that of Shelldock Isle 20:17:09 [[User:OsmineYT]] https://esolangs.org/w/index.php?diff=78010&oldid=77530 * OsmineYT * (+82) 20:17:12 -!- FAKTOR7 has joined. 20:25:51 [[User talk:Orby]] https://esolangs.org/w/index.php?diff=78011&oldid=51611 * OsmineYT * (+171) 20:30:34 [[User talk:PythonshellDebugwindow]] https://esolangs.org/w/index.php?diff=78012&oldid=77860 * OsmineYT * (+121) 20:56:51 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 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 [[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 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 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 if you can't, then I think you might run into definitional problems 21:13:13 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 but the definition of the 6 command is very complex and basically introduces nested quotations by "cheating" 21:13:57 given that it scans a string for substrings with correctly matched "parentheses" 21:14:43 right, there are many ways to cheat if you don't insist on combinators from ordinary combinator calculus 21:14:55 yeah, nested quotations aren't allowed at runtime or in the source file. 21:16:05 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 the basis I have now is dup, drop, swap, left, right, compose, apply, and pre-quoted versions of all of those. 21:16:36 how do left/right/compose work? 21:16:40 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 ah, I see 21:16:59 so x y z ... n left -> n x y z ... 21:17:04 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 and x y z ... n right -> y z ... n x 21:17:37 and compose is just Underload *, I take it 21:17:51 compose behaves more like list concatenation if anything. 21:18:04 well so does Underload * 21:18:15 although, hmm 21:19:21 you can think of compose as "take two commands, "unquote them", and enquote their concatenation, and push that concatenation." 21:19:40 so in quotation-speak, it's... [a] [b] compose -> [a b] 21:20:04 I'm borrowing semantics from equipage. 21:20:56 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 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 so you need something that reorders the _whole stack_ to get to any arbitrary element. 21:21:21 perhaps one of those small one-tape turing machines help 21:21:53 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 you can't form [[dup]] for example. 21:22:13 but you can form [dup]. 21:22:23 but you can't form dup either, at least not on the stack 21:22:36 just [dup] or [dup dup] or whatever 21:22:39 correct. all things are quoted, then apply unquotes them and adds them to the program. 21:22:53 I have an interpreter if you wanna play around. 21:24:15 https://repl.it/repls/UpbeatScalyRoutes#main.py 21:24:45 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 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 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 it couldn't be nested, but you could form sequences of quotations that "point" to eachother ala left and right. 21:26:54 the question is can you do something similar without having commands that affect the entire stack. 21:27:10 imode: well, the hard part is just to avoid the PDAness of a single stack 21:27:18 yeah.. 21:27:32 equipage gets around this via having `pick`. 21:28:00 .oO(and "router" is pronounced differently if it's for woodworking than if it's for computer networks) 21:28:21 oxcart gets around this by having a tape of stacks. wagon gets around it by having whole-stack effects. 21:28:42 and languages that allow runtime nesting of quotations can use this to simulate a secondary stack at-will. 21:28:44 the thing is, because you can build arbitrary long quotations, the model we're working in is not actually a PDA 21:29:01 yeah, I don't know _what_ class it is.. 21:29:40 -!- t20kdc has quit (Remote host closed the connection). 21:29:44 actually… Underload is TC with just ():^! (you don't need ! either but we can handle it easily without quotations) 21:29:46 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 that doesn't contain a 21:30:04 this means that there must be a finite number of combinators that works, with no full-stack effects 21:30:18 ais523: yes, but it needs at least two levels of quotations, probably more 21:30:19 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 individually 21:30:37 what b_jonas said. you need the ability to double-nest quotations. 21:30:59 if you allow more complicated combinators as built-ins, then you could encode a small turing-machine with exactly two levels 21:31:00 yes, but I mean, say your program contains ((:^):), you just add ((:^):) and (:^) as combinators 21:31:06 but one level is just terrible 21:31:15 ais523: wait, is one level enough really? hmm 21:31:28 oh yeah 21:31:31 now there is no nesting, because your combinators are [pushdupapplytwice] and [dupapply] 21:31:57 ais523 is right, a single level of nesting is enough 21:32:28 wait, how is this not just a PDA though? it doesn't have * 21:32:53 so your combinators are [[dup apply] dup] and [dup apply]? 21:32:58 oh, two stacks, one is program, one is stack 21:33:03 imode: right 21:33:08 in that example 21:33:33 hm. 21:33:47 what I mean is, we can get a universal turing machine, translate it to the ~:!()^ subset of Underload 21:33:59 then take every single quotation inside the program, at any nesting level, and make it a combinator of its own 21:34:30 then we have a (very complex) combinator set that implements a TC concatenative language without quoting, full-tape effects, or cheating 21:35:07 how isn't that cheating, though? you still have two layers of nesting, you just represent them as a single command. 21:35:35 moreover how are you getting rid of garbage? 21:35:46 actually this is basically just https://esolangs.org/wiki/The_Subtyping_Machine 21:35:50 imode: you use the ! combinator to get rid of garbage 21:36:02 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 so your combinator set is apply, dup, [dup apply], [[dup apply] dup]? 21:36:42 or is it just those three. 21:37:05 imode: well, that was just a random example 21:37:17 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 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 you only need ~! to pick an element from a parenthisized list of combinators, 21:38:43 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 using ^ !!...! ~!~!...~! to keep just one element from a list 21:39:18 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 and then do nothing to execute that one combinator 21:39:59 b_jonas: this is basically just the universal construction for minimalizing any number of combinators down to two 21:40:13 if your combinators are 1, 2, 3, 4, 5, etc. 21:40:30 then you minimalize them to (~)(1)(2)(3)(4)(5)(!!!!!!!) and ^ 21:40:49 yeah, "select any set of combinators, re-order them, compose, done" 21:41:59 (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 ais523: hmm. that's not how I was thinking of it, but maybe 21:42:42 of course, this has a lot of intermediate combinators 21:42:57 quite a few. I think the point is simplifying from the data side, not the program side. 21:43:12 like, I can form all lists with the `quote` and `compose` operator. 21:43:16 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 but you can't use `quote` in a language like this 21:43:49 ais523: yeah 21:44:54 I'm back to thinking you need arbitrary stack effects. 21:45:15 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 you need them unless you're willing to go with a command set that can push quotations. 21:45:33 one-tape turing machine 21:46:27 or really any two-stack finite control machine, it doesn't have to move symbols one to one 21:51:56 either way there needs to be some kind of nesting. 21:52:03 of levels > 1. 21:53:07 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 right, but those lists of combinators need to include arbitrary stack effects, unless I'm missing something. 21:54:36 the underload two-command minimization, for example, can construct a concatenation of two quotations. 21:54:59 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 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 I don't know what that upper bound is. 21:58:13 the best way to think about it is that the stack + program basically are a tape already 21:59:24 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 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 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 including the new tape headd 22:00:55 I'm not sure whether it's possible to build something like this out of :!~*^ 22:01:18 and their single-quoted versions 22:01:41 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 there is nearly always a lookup table, or some sort of equivalent, somewhere 22:02:14 definitely that issue. in the TM construction in the article you need at least 3 levels of nesting, I think. 22:03:16 I think you can probably store it in the top stack element, though, or maybe interspersed between adjacent stack elements 22:04:18 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 so you have to copy them around 22:04:34 yup. 22:04:55 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 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 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 yup. 22:05:42 and thus they need to be stored "loose" on the stack 22:05:47 and ~ doesn't go deep enough to get past all of them 22:05:52 eeeexactly. 22:06:17 dup, drop, compose, apply, rotate top 6 elements, and single-quoted versions of all those should be enough, I believe 22:06:29 ooh. 22:06:35 that's interesting. 22:06:35 err, probably needs to be top 7 22:06:50 maybe top 6 is enough 22:07:18 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 you'd probably need top7 because you still need the currently active combinator. 22:07:24 yeah. 22:07:39 but what happens when you try to get at the data under that. 22:07:43 and the data under that. 22:07:57 top 7 is enough to juggle 5 combinators and 2 pieces of data 22:08:13 or 5 combinators, plus a duplicate of one of the combinators, plus 1 piece of data 22:09:15 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 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 relative to their position on the stack. 22:09:38 (you can build a swap out of a rotate by dupping a bunch, rotating, and dropping the duplicates) 22:10:05 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 sorry, I misspoke: a TM's lookup table. 22:10:24 you leave it there the entire program execution, except temporarily to operate on the elements beneath it 22:10:44 oh, a TM's lookup table is the (color, state) → (color, state, movement) map 22:10:56 right, but forming that map. 22:11:01 within this language. 22:11:52 you'd use enum values like !!!!!!!~!~!~!~!~!~! to store colors and states 22:12:58 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 that way it composes easily, a color can be, say, ! or !! or !!!, a state can be some multiple of !!! followed by ^ 22:13:48 how would you preserve the rest of the table? you need to make a state transition more than once. 22:13:50 then, composing color with state gives you the appropriate accessor for the lookup table 22:14:01 simulated nested quoting 22:14:10 because you're juggling single-quoted combinators 22:14:20 you can effectively produce a nested list by writing the appropriate list of juggling commands 22:14:39 iiiinteresting. 22:14:40 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 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 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 yes 22:15:36 while also performing the actions on the tape. 22:15:42 that is absolutely brilliant. 22:15:47 at this point it's basically just standard Underload behaviour, except that there is no way to implement a 22:15:54 but you don't need a to write a Turing machine 22:16:07 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 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 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 shoot, sorry. 22:19:21 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 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 thanks for the help ais523. 22:25:13 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 or the copy of the back face really 22:29:54 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 perhaps you looked at that for StackFlow 22:42:32 -!- asie has joined. 22:43:55 "color" in a Turing machine as tape symbols? that would be weird 22:54:31 I think that you can't cast the back face, since it is a land, it would seem. 22:55:22 hello 22:58:53 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 [[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).