←2019-10-01 2019-10-02 2019-10-03→ ↑2019 ↑all
00:00:22 -!- sprocklem has joined.
00:11:25 -!- sprocklem has quit (Ping timeout: 265 seconds).
00:28:52 -!- user24 has quit (Quit: Leaving).
00:32:13 -!- sprocklem has joined.
00:38:14 -!- oerjan has joined.
00:45:53 -!- Sgeo_ has joined.
00:49:51 -!- Sgeo has quit (Ping timeout: 268 seconds).
00:52:33 -!- Sgeo__ has joined.
00:55:52 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
01:04:45 <oerjan> <wib_jonas> note: I accidentally stripped "r" and "\\" characters rather than "\r" characters, so the "\r" characters remain, and those make HackEso truncate the output. I wonder if any wisdom has one. <-- i vaguely think we removed some of those from wisdom at one point
01:19:07 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66421&oldid=66416 * A * (+226) /* Salary program */ Draft a proper Quine program (add a cheating quine just for the sake of competeness)
01:33:14 <esowiki> [[List of quines]] M https://esolangs.org/w/index.php?diff=66422&oldid=62106 * A * (+314) /* Real Quines */
01:33:50 <esowiki> [[List of quines]] M https://esolangs.org/w/index.php?diff=66423&oldid=66422 * A * (+1) /* =Resource */ Whoops a typo
01:36:56 -!- sprocklem has quit (Ping timeout: 240 seconds).
01:37:19 <esowiki> [[List of quines]] https://esolangs.org/w/index.php?diff=66424&oldid=66423 * A * (+29) Well, pick out a self-referential cheating quine and add a quine (a placeholder)
01:38:54 <esowiki> [[List of quines]] M https://esolangs.org/w/index.php?diff=66425&oldid=66424 * A * (+511) /* Keg */ Fill in the placeholder
01:48:02 -!- sprocklem has joined.
01:55:04 -!- MDead has joined.
01:56:47 -!- MDude has quit (Ping timeout: 265 seconds).
01:56:55 -!- MDead has changed nick to MDude.
02:09:08 <imode> https://hatebin.com/opaqukmqhr added variable fetching.
02:09:12 <esowiki> [[Volatile]] M https://esolangs.org/w/index.php?diff=66426&oldid=62820 * A * (+3) /* Volatile instruction minimalization */
02:12:51 <int-e> oerjan: Oh communication with the Pa'anuri may be just around the corner.
02:22:45 <oerjan> one may hope
02:26:12 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66427&oldid=66421 * A * (+257) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */
02:29:53 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66428&oldid=66427 * A * (+419) /* Idea */
02:31:48 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66429&oldid=66428 * A * (+139) /* Idea */
02:32:49 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66430&oldid=66429 * A * (+52) /* Idea */
03:17:22 <oerjan> `? tea
03:17:23 <HackEso> Tea is concentrated fuel made by distilling occult herbs in a silver alambic. Americans attempted to reduce its potency by dumping some in the Ocean.
03:20:32 <oerjan> arseniiv: ah it's the french spelling
03:20:41 <shachaf> I am drinking tea.
03:20:59 <oerjan> well that's how this started...
03:21:06 <oerjan> oo so long ago
03:21:24 <shachaf> This is green tea, not oolong.
03:23:00 <oerjan> `? oolong
03:23:01 <HackEso> oolong? ¯\(°​_o)/¯
03:28:05 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66431&oldid=66430 * A * (+717) Put my submission here (feel free to steal it)
03:28:38 <int-e> object oriented spaghetti code?
03:56:31 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66432&oldid=66431 * A * (+154) /* Idea */
03:57:44 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66433&oldid=66432 * A * (+102) /* Idea */
03:58:26 -!- hppavilion[1] has joined.
04:01:29 -!- MDude has quit (Ping timeout: 265 seconds).
04:08:56 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
04:39:12 -!- sftp has quit (Ping timeout: 245 seconds).
04:46:11 -!- sftp has joined.
04:46:59 -!- Sgeo_ has joined.
04:47:46 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66434&oldid=66433 * A * (+38) /* Cat program */
04:50:26 -!- Sgeo__ has quit (Ping timeout: 276 seconds).
04:53:57 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
04:56:46 -!- kspalaiologos has joined.
04:58:19 -!- Lord_of_Life has joined.
05:02:22 -!- kspalaiologos has left ("Leaving").
05:02:40 -!- kspalaiologos has joined.
05:03:05 <kspalaiologos> My IRC client kicked me for some reason, sorry
05:03:53 <shachaf> `5 w
05:03:55 <HackEso> 1/2:free//A free structure is one that has no nontrivial identities, except algebraist phrase that in a much fancier way with morphisms. \ patent//Patent is an adjective which means that something is painfully obvious. Often used to rightfully mock people that do not see it. \ vacuum tube//After the London terrorist attacks of 2005, the Underground was completely evacuated. Without air resistance, the trains would go at blazingly fast speeds between
05:04:06 <shachaf> `n
05:04:08 <HackEso> 2/2: the terminals. This is called a vacuum tube. Sadly, current technology doesn't let passengers travel that way. \ misspellings of croissant//misspellings of crosant? ¯\(°​_o)/¯ \ gey//I know nothing about Gey, sir.
05:04:23 <shachaf> `cwlprits free
05:04:25 <HackEso> b_jonäs
05:04:33 <shachaf> Golly. I never heard it phrased quite that way before.
05:05:30 <shachaf> `cwlprits vacuum tube
05:05:32 <HackEso> wob_jonäs
05:05:42 <kspalaiologos> @quote shachaf
05:05:42 <lambdabot> shachaf says: i they are so love easy threads
05:06:43 <shachaf> Does "every vector space is free" just mean "every vector space has no nontrivial identities"?
05:08:04 <int-e> hrm, what does that even mean. is this an attempt to say "every vector space has a basis" and sound categorical?
05:12:18 <shachaf> Yes, "has a basis" means "is free".
05:12:33 <shachaf> Or perhaps the other way around.
05:13:00 <shachaf> I think it's a pretty good perspective and not just categorical mumbo jumbo?
05:13:08 <shachaf> (Obviously it's also categorical mumbo jumbo.)
05:13:18 <int-e> "free" has too many meanings
05:13:58 <int-e> So I don't appreciate using it when there's a more precise term.
05:14:47 <shachaf> Aren't they all the same meaning?
05:14:57 <int-e> s/precise/specific/
05:15:21 <shachaf> I think this is one of the few clearly good bits of category things.
05:15:23 <int-e> I don't have to think about what the structure we're completing is when you say "vector space basis".
05:15:39 <shachaf> I'm not saying not to talk about bases.
05:15:39 <int-e> Wheras "free" adds a multitude of degrees of freedom, pun not intended.
05:15:57 <shachaf> But I think the main reason that people like vector spaces so much is that they're free.
05:16:16 <shachaf> If you found another structure where all the things you care about are free, it could be similarly useful.
05:17:16 <shachaf> (You can only express linear maps in terms of matrices and compute with them because vector spaces have bases, of course.)
05:17:36 -!- imode has quit (Ping timeout: 240 seconds).
05:18:04 <int-e> shachaf: So what if we have a vector space over GF(2)... then v+v = 0 for all vectors v. How is that "free"?
05:20:31 <shachaf> It's free in the category of vector spaces over GF(2), of course.
05:20:40 <shachaf> I guess I should say what "free" means.
05:22:16 <shachaf> "A vector space V is free over a set X" means that for any vector space U, linear maps : V -> U naturally correspond to functions : X -> U
05:23:03 <int-e> So you're free within the confines of a vector space. Yay.
05:23:11 <int-e> (for a fixed field)
05:23:31 <int-e> *and* you've just defined a basis
05:24:01 <shachaf> Yes, "free" means it has a basis.
05:24:28 <shachaf> I think it's pretty reasonable for "free" to be defined with respect to linear maps?
05:24:56 <shachaf> You can take the same definition for groups and group homomorphisms and it'll give you free groups.
05:25:37 <int-e> . o O ( a free abelian group of order 2. )
05:25:51 <shachaf> Or say a free monoid [A] over a set A is one where for any monoid M, monoid homomorphisms : [A] -> M correspond to functions : A -> M
05:27:10 <shachaf> Which just means it's defined elementwise, of course.
05:27:18 <int-e> I guess one source of my dislike is in the statement you started out with
05:27:47 <int-e> "every vector space is free" means that freeness doesn't tell us anything about vector spaces at all. so there's no need to talk or think about it.
05:30:08 <shachaf> But "every vector space has a basis" means the same thing about having a basis.
05:31:04 <shachaf> I'd say that freeness is a property, maybe desirable or maybe not, that you can talk about vector spaces having (as well as many other structures). Then you can prove the theorem that every vector space has this property.
05:50:50 -!- kspalaiologos has quit (Ping timeout: 240 seconds).
06:00:30 <oerjan> `? vector space
06:00:31 <HackEso> A vector space is just a module over a field.
06:02:35 <shachaf> `? module
06:02:36 <HackEso> A module is like a vector space, except with a ring instead of a field.
06:08:19 -!- oerjan has quit (Quit: Nite).
06:40:30 -!- hppavilion[1] has joined.
06:59:58 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66435&oldid=66434 * A * (+187) /* I am a palindrome. Are you? */
07:30:49 -!- Sgeo__ has joined.
07:32:43 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66436&oldid=66435 * A * (+182) /* Cat program */
07:33:17 -!- Sgeo_ has quit (Ping timeout: 240 seconds).
08:02:20 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66437&oldid=66436 * A * (+659) /* Cat program */
08:06:11 -!- kritixilithos has joined.
08:06:37 <kritixilithos> in case you haven't heard of it, https://www.rule30prize.org/
08:07:55 -!- kritixilithos has quit (Client Quit).
08:08:23 <myname> those are interesting
08:08:27 <myname> i like the third one
08:23:32 <esowiki> [[Talk:Volatile]] https://esolangs.org/w/index.php?diff=66438&oldid=66420 * Akangka * (+8) /* Pushing 1 deterministically is impossible. */
08:40:58 -!- cpressey has joined.
08:42:47 -!- kspalaiologos has joined.
10:05:27 -!- Sgeo_ has joined.
10:09:10 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
10:33:59 -!- arseniiv has joined.
11:07:05 -!- ivzem[m] has quit (Remote host closed the connection).
11:07:06 -!- wmww has quit (Read error: Connection reset by peer).
11:07:07 -!- Camto[m] has quit (Remote host closed the connection).
11:07:25 -!- tswett[m] has quit (Read error: Connection reset by peer).
11:07:47 -!- xylochoron[m] has quit (Remote host closed the connection).
11:18:07 -!- Camto[m] has joined.
11:35:37 <esowiki> [[This=That]] M https://esolangs.org/w/index.php?diff=66439&oldid=57004 * Chris Pressey * (+19) See also also
11:36:14 <esowiki> [[This=That 2.0]] M https://esolangs.org/w/index.php?diff=66440&oldid=57028 * Chris Pressey * (+14) See also also
11:37:14 <esowiki> [[This=That 2.0]] M https://esolangs.org/w/index.php?diff=66441&oldid=66440 * Chris Pressey * (+2) bullets
11:38:07 <esowiki> [[This=That 3.0]] M https://esolangs.org/w/index.php?diff=66442&oldid=57027 * Chris Pressey * (+47) See also
11:39:02 <myname> what
11:39:11 <myname> how many versions are there
11:39:28 <myname> and why doesn't he just extend the first one
11:39:42 <cpressey> wiki has 3
11:40:47 <cpressey> I only remembered there being 1, but that was a long time ago. I had a dim memory of there being a Python implementation of it, but I don't see any implementations of any of them.
11:40:49 -!- wmww has joined.
11:40:49 -!- xylochoron[m] has joined.
11:40:50 -!- tswett[m] has joined.
11:40:57 -!- ivzem[m] has joined.
11:43:37 <cpressey> 1.0 is by PuzzleHunter84 (in 2009), 2.0 is presumably by PuzzleHunter84 too (also in 2009), 3.0 is presumably by A (in 2018)
11:48:09 <cpressey> I think I must've been thinking of a different language
11:50:02 -!- atslash has quit (Ping timeout: 240 seconds).
11:50:18 <int-e> Oh wow, A is still active...
11:50:40 -!- atslash has joined.
11:50:55 <myname> i am nur surprised
11:50:56 <int-e> (I'm still ignoring A related esowiki messages)
11:51:22 <myname> good choice
11:51:23 <int-e> (It keeps me sane. Well, saner.)
11:52:44 <myname> it's a shame, though
11:53:15 <myname> somebody with that amount of energy could contribute quite good stuff if he just joined the community
12:10:21 <esowiki> [[This=That]] https://esolangs.org/w/index.php?diff=66443&oldid=66439 * Chris Pressey * (+852) Attempt to describe the evaluation semantics, based on talk page.
12:10:54 -!- ais523_ has joined.
12:12:52 <esowiki> [[This=That]] M https://esolangs.org/w/index.php?diff=66444&oldid=66443 * Chris Pressey * (+29) +cat Unimplemented
12:13:59 <ais523_> <cpressey> Good morning and happy October. Say I have a semi-Thue grammar with the following property: for every word w, it is not possible to derive w in zero or more steps starting from w. Can such a grammar be Turing-complete? ← can't you just have every production add a junk element, together with extra productions to swap the junk element to
12:14:00 <ais523_> the end of the memory space?
12:14:31 <ais523_> then a perfect loop is always impossible because there's a total ordering on possible memory spaces that you can never move backwards through, and yet the computational class isn't affected at all
12:19:07 <int-e> Oh I missed an easy string rewriting question with antique terminology ;)
12:19:29 <ais523_> semi-Thue grammars are more interesting than straightforward rewriting
12:19:42 <cpressey> ais523_: Probably. I later thought of it as being equivalent to a Tag system whose queue never shrinks and always eventually grows. I think it can still be TC because you can map a "nop" in the TM to an infinite number of states of the Tag system.
12:19:53 <ais523_> they're nondeterministic in the mathematical sense: whenever there are multiple rewrites possible, they always pick the one that makes the program not halt, if possible
12:20:03 -!- shachaf has quit (Ping timeout: 245 seconds).
12:20:13 -!- shachaf has joined.
12:20:32 <ais523_> unfortunately, the esolang Thue derived from them missed that notion of "nondeterministic" and it's been a pain to clarify what's meant ever since
12:20:36 <int-e> ais523_: string rewriting systems *are* semi-Thue systems.
12:20:45 <int-e> With non-determinism and everything.
12:21:01 <ais523_> int-e: well you can have a string-rewriting system with a deterministic rule for where to replace
12:21:09 <ais523_> I think that'd fail to meet the definition of a semi-Thue system
12:21:20 <int-e> ais523_: Sure, that would be imposing a strategy.
12:21:27 <int-e> (a deterministic strategy)
12:21:45 <ais523_> there are probably rewriting systems that are TC with a left-first imposed strategy but sub-TC when evaluated mathematically-nondeterministically
12:22:31 <ais523_> (I remember oerjan's proof that Fractran is sub-TC if you evaluate the program in a random order rather than left to right)
12:23:25 <cpressey> The lambda calculus *per se* doesn't specify a strategy either. To me, it feels a lot less like a programming language that way, a lot more like a proof system.
12:23:29 -!- Sgeo_ has quit (Read error: Connection reset by peer).
12:23:48 <ais523_> typed lambda calculus is confluent
12:23:56 -!- Sgeo_ has joined.
12:24:01 <int-e> ais523_: Well, when I say "rewriting system" there's no strategy by default.
12:24:02 <ais523_> untyped lambda calculus "feels" confluent to me in some generalized sense, but I'm not sure how to define it
12:24:42 <int-e> (I've worked in term rewriting for 8 years. I can't help using the terminology.)
12:24:44 <cpressey> Pretty sure untyped \c is confluent too, but I may be misremembering
12:24:46 <ais523_> fwiw, the details of the evaluation strategy are pretty relevant in some cases; it was one of the more interesting (and arguably solvable) problems to come out of the work into Feather
12:25:24 <ais523_> the question being, can you write a lambda-calculus-with-continuations-like language which admits a self-interpreter with eigenratio 1 (without cheating)
12:25:46 <int-e> ais523_: untyped lambda calculus (with beta reduction and alpha conversion, and possibly eta reduction) is confluent... what's your trouble with defining that?
12:26:07 <int-e> ais523_: It gets murky if you don't have explicit alpha conversion... then it becomes confluent modulu alpha conversion.
12:26:13 <ais523_> the main issue in the naive way of doing it is that you can have terms like (\x.\y.y)((\a.a(a))(\a.a(a)))
12:26:15 <int-e> modulo.
12:26:34 <ais523_> this is not an infinite loop, but it's easy to get stuck in one if your evaluation order is wonky
12:27:27 <ais523_> (in Unlambda, ``ki```sii``sii: wow, this may be a case where the Unlambda is easier to read than the lambda calculus version…)
12:27:58 -!- kpspalaiologos has joined.
12:28:04 <int-e> confluence just means that if there are reductions s ->* t and s ->* u from a term s then there are further reductions to a common term v: t ->* v and u ->* v
12:28:05 <ais523_> actually it's non-obvious to me how you define confluence in a language which has infinite loops
12:28:23 <int-e> confluence doesn't rely on normal forms in any form or shape
12:28:26 -!- kpspalaiologos has quit (Client Quit).
12:28:59 <ais523_> this is may-equivalence, right? i.e. if there's at least one reduction from s to t, and at least one from s to u, there's at least one from t to v and at least one from u to v
12:29:23 <int-e> sure, reduction is non-deterministic.
12:29:30 <ais523_> the issue with may-equivalence is that although it's mathematically neat, very few languages work that way in practice (i.e. by effectively iterating through all possible evaluation orders)
12:30:36 <cpressey> Well, if their underlying model is confluent, they kind of don't have to...
12:30:43 <ais523_> <wib_jonas> int-e: perhaps they're malbolge instructions ← those go backwards in asciibetical order, not forwards, also they're pretty easy to compress by normalizing and then compressing that
12:31:23 <int-e> ais523_: You usually don't care about confluence either. You care about related properties like uniqueness of normal forms (a ->* b and a ->* c with b and c in normal form implies b = c (modulo alpha, probably))
12:31:44 <ais523_> <cpressey> Well, if their underlying model is confluent, they kind of don't have to... ← the whole issue is that the implementations have a tendency to get stuck in a loop that the language semantics can break them out of, but the choices of the interpreter don't let them
12:32:45 <ais523_> perhaps you could use an entirely random evaluation order to prevent ever getting stuck in a local minimum, but I suspect that would lead to memory leaks and the like that would mean that a self-interpreter would necessarily fail on some programs
12:33:21 <int-e> ais523_: it did go backwards, and compression was quite good really... from 30MB to 1MB with xz isn't shabby at all (interestingly preprocessing made no difference at all).
12:34:20 <ais523_> any compression algo that can work on digraphs will, when applied to Malbolge code, quickly realise that any particular character can only ever be followed by one of eight other characters
12:34:39 <ais523_> so it'll effectively end up operating on a normalized-ish form anyway
12:38:04 <int-e> ais523_: I still expected a larger difference than a couple of hundred bytes (or maybe it was 1k). But I've deleted the file.
12:38:17 <Taneb> ...so a Malbolge program of length n has at most 3n + O(1) bits of information?
12:38:31 -!- xkapastel has joined.
12:38:41 <ais523_> assuming you don't exploit the bug in the parser that lets you sneak arbitrary data at the end of the code, yes
12:38:55 <ais523_> it's actually 3n bits exactly, no O(1) needed
12:39:12 -!- hppavilion[1] has quit (Ping timeout: 245 seconds).
12:39:15 <Taneb> Ah, I wasn't sure if you were restricted which character you could start with or not
12:39:26 <ais523_> (the O(1) shows up in practical compression algorithms because that's how much space they need to figure out/record the rules of Malbolge)
12:41:11 <ais523_> incidentally, one day I decided to make a Stack Overflow account and answer a couple of Malbolge questions
12:41:20 <ais523_> there aren't very many, though
12:41:48 <int-e> ais523_: Anyway, back to the previous topic, a rewriting concept that connects lambda calculus to implementations is that of a strategy -- which carves out a deterministic relation from the non-deterministic reduction ->. A strategy can be normalizing--meaning that if t has a normal form wrt. ->, then following the strategy will reduce to that normal form as well. There are even concepts like...
12:41:54 <int-e> ..."hyper-normalizing" where you can mix the strategy with the free rewriting relation -> and the normal form is guaranteed to be reached as long as you always eventually apply the strategy (as long as you haven't reached a normal form). This justifies compiler optimizations based on partial evaluation, that is, beta-steps on parts of a program.
12:42:29 <int-e> leftmost-outermost reduction is normalizing and unless I'm very much mistaken, hyper-normalizing.
12:43:20 <ais523_> the ideal strategy for me would be normalizing in an even stronger sense: given two equivalent programs, applying the strategy to both would eventually reach the same form for both, and they would not thereafter diverge
12:43:26 <ais523_> however, I believe that's impossible due to Rice's theorem
12:43:47 <ais523_> (or more directly the halting problem)
12:44:53 <ais523_> something less strong than that, which might be achievable: a self-interpreter which, given any program's source code, eventually optimizes/specialises itself into an internal state that could have been reached by running the program directly
12:44:57 <int-e> Right, you would be able to decide whether a lambda term reduces to I.
12:45:37 <ais523_> I think the self-interpreter could maybe be made to work using a "compile then execute" strategy
12:50:23 <ais523_> you could do it in an Underload-like language which had some reasonable form of input, I think, simply by using * and a and friends to construct a program using composition and quoting, and then finally evaluating the constructed program as the last thing it did
12:51:05 <ais523_> trying to do it without metacircularity would be much harder, though
12:51:46 -!- ais523_ has quit (Quit: quit).
12:54:20 <cpressey> int-2: When you program in a functional programming language but you treat it like a rewriting language (like what Haskell calls "equational reasoning"), I think that thinking about whether your functions terminate is closely related to thinking about confluence.
12:54:42 <cpressey> (That was addressed to int-e, obviously)
12:56:29 <int-e> cpressey: not sure I agree
12:58:24 <cpressey> Well, perhaps not. I've been meaning to try programming more in languages actually built around rewriting (Pure and Maude particularly) to refine that idea.
12:59:08 <int-e> hmm Pure (I've heard of Maude)
12:59:51 <cpressey> Which is actually why I was looking up This=That on the esowiki... I thought it was a fairly simple "equational rewriting" language. But, apparently I misremembed.
13:02:47 <int-e> the rewriting based formalism I've actually used intensively is the simplifier in Isabelle/HOL.
13:03:23 <int-e> (but that's not meant to be a programming language)
13:06:26 <int-e> Pure looks cute at a glance, actually.
13:07:18 <int-e> (Maude otoh looked intimidating when I tried to figure out what it is and I still don't really know what it is, except something yadda yadda rewriting blah)
13:08:20 <int-e> By which I mean to say that I got scared away, but I don't know whether I'm actually justified in being scared.
13:21:54 <cpressey> I first saw Maude about a decade ago, was very interested but never actually wrote anything in it, and only recently realized it is the way it is because it comes from a tradition of algebraic semantics, which is rather obscure.
13:23:10 <cpressey> Operational semantics, denotational semantics, and axiomatic semantics walk into a bar...
13:23:54 <int-e> Is that an actual joke.
13:24:03 <cpressey> Not yet it isn't.
13:24:09 <cpressey> Maybe someday.
13:24:15 <myname> go make it one
13:25:02 <esowiki> [[Special:Log/newusers]] create * Asdfugil * New user account
13:25:25 <myname> are there semantics that deal with endless loops in a meaningful way?
13:26:21 <int-e> myname: Pure semantics: use bottoms. For impure languages you can produce a stream of observations.
13:27:16 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66445&oldid=66408 * Asdfugil * (+152) /* Introductions */
13:27:31 <int-e> (In a way, pure languages are those languages where infinite loops have no meaning.)
13:29:02 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66446&oldid=66445 * Asdfugil * (+60)
13:29:57 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66447&oldid=66446 * Asdfugil * (+15)
13:33:14 <cpressey> I'll also mention Büchi automata (automata that expect an infinite number of inputs) and temporal logic (for stating theorems like "if we start in state S we will always eventually come back to state S")
13:35:52 <int-e> cpressey: oh wow, https://github.com/agraef/pure-lang/wiki/Rewriting#further-information has a whole list of other languages
13:36:52 <int-e> (And the two standard textbooks on term rewriting. Yay. I feel right at home.)
13:38:18 <cpressey> \o/
13:40:44 <cpressey> I've read Baader & Nipkow (a long time ago), not Terese though.
13:41:49 <int-e> Terese is more of a handbook than a textbook anyway.
13:42:24 <int-e> (So it makes more sense to study a chapter than to study the whole book.)
13:50:19 -!- kspalaiologos has quit (Quit: Quit).
13:50:49 -!- kspalaiologos has joined.
13:52:05 <kspalaiologos> Hello
13:57:51 <cpressey> hi kspalaiologos
14:07:51 -!- Sgeo_ has quit (Ping timeout: 264 seconds).
14:16:16 -!- Lord_of_Life has quit (Ping timeout: 264 seconds).
14:56:56 -!- wib_jonas has joined.
14:58:49 <wib_jonas> one of my wisdoms spawned a discussion about algebra? this is new
14:59:21 <int-e> `?
14:59:22 <HackEso> ​? ¯\(°​_o)/¯
14:59:30 <int-e> `wisdom
14:59:31 <HackEso> photograph//A photograph is a device for creating photograms.
15:02:06 <wib_jonas> "<ais523_> int-e: well you can have a string-rewriting system with a deterministic rule for where to replace" => such as sed or 1.1
15:13:10 <kspalaiologos> I didn't realise extending logical cells for brainfuck had such impact
15:13:27 <myname> ?
15:13:33 <kspalaiologos> can you recommend me decently fast Brainfuck interpreters that I can incorporate into my project?
15:13:46 <kspalaiologos> I'm looking mostly for MIT and Apache2 stuff because GPLv3 virus seems risky, lol
15:14:19 <myname> uh, those aren't usually hard to write fast
15:14:19 <kspalaiologos> myname, I've made a tool to extend logical cell size for Brainfuck basically
15:14:33 <myname> what do you mean by logical cell size
15:14:46 <kspalaiologos> so basically
15:14:51 <kspalaiologos> two cells are treated logically as one
15:14:59 <kspalaiologos> but physically, they are two separate cells
15:15:07 <myname> why though
15:15:14 <kspalaiologos> to get bigger range on numbers that can be stored
15:15:33 <Taneb> So, given a Brainfuck program that requires 16 bit cells, you can transform it to a program which requires 8 bit cells?
15:15:35 <wib_jonas> "<myname> are there semantics that deal with endless loops in a meaningful way?" => see https://esolangs.org/wiki/(0) , which deals with infinite loops, but not really endless ones (except by making them end)
15:15:37 <myname> well, depending on your interpreter, numbers can be arbitrarily big
15:15:41 <kspalaiologos> Taneb, yes.
15:15:50 <kspalaiologos> myname, it depends on the interpreter, so its not portable
15:16:12 <wib_jonas> It can deal with infinite loops of any loop count though
15:16:16 <kspalaiologos> if host interpreter uses 16-bit cells you can detect it
15:16:19 <kspalaiologos> and pass the correct code
15:17:06 <wib_jonas> Of course that makes it not implementable on a computer, but real computers can't even deal with sequential loops of length 2**64 or distributed parallel loops of length 2**256, so that's to be expected
15:18:15 <myname> i'd say: just write an interpreter in your favourite language of sufficiently low level
15:20:33 <cpressey> kspalaiologos: fwiw, a github search for "fastest brainfuck interpreter" yielded this: https://github.com/barracks510/bfc
15:20:44 <cpressey> (Apache-2.0 license)
15:21:30 <myname> i guess most performance issues come from the data structure used for the tape
15:21:54 <wib_jonas> nah, if it's advertised as "fastest" on the web then it likely isn't
15:22:18 <myname> an array is nice if you don't have to grow it too often, a linked list might be slower on shorter programs
15:23:03 <kspalaiologos> no just in time compilation -> garbage
15:23:11 <kspalaiologos> I've tried Tritium interpreter by rdebath(?)
15:23:23 <kspalaiologos> and it just turned out to be slower than mine moderately-optimizing one
15:24:31 <myname> just in time compilation for brainfuck? really?
15:24:49 <myname> i wouldn't be surprised if nobody ever did that
15:25:46 <myname> i mean, we used to write a small interpreter for brainfuck at university and even the stupid solutions did anything i throw on them pretty much instantenious
15:26:08 <kspalaiologos> https://github.com/rdebath/Brainfuck/tree/master/tritium
15:26:12 <kspalaiologos> just in time compilation
15:26:16 <kspalaiologos> DYNASM
15:26:19 <kspalaiologos> GMP
15:26:23 <kspalaiologos> nasm target
15:26:26 <kspalaiologos> gnu lightning, openssl
15:26:41 <kspalaiologos> libtcc backend
15:26:49 <kspalaiologos> debugging, profiling and tracing
15:27:04 <kspalaiologos> I've personally discovered this interpreter when I needed something fast for my C compiler targeting brainfuck
15:27:14 <kspalaiologos> but it turned out to be too slow to meet my requirements
15:27:50 <kspalaiologos> even myself I've made a Brainfuck just-in-time compiler, it's not that uncommon thing
15:28:11 <kspalaiologos> the C output is very high grade in my opinion
15:52:02 -!- joast has quit (Quit: Leaving.).
15:59:15 -!- cpressey has quit (Quit: A la prochaine.).
16:03:20 -!- wib_jonas has quit (Remote host closed the connection).
16:21:07 -!- joast has joined.
16:29:05 <esowiki> [[Noodle Soup]] https://esolangs.org/w/index.php?diff=66448&oldid=36043 * Dtuser1337 * (-12) /* Print 1 2 3 4 5 */
16:29:32 <esowiki> [[Noodle Soup]] https://esolangs.org/w/index.php?diff=66449&oldid=66448 * Dtuser1337 * (-1) /* Hello World */
16:32:56 -!- imode has joined.
16:45:25 -!- Lord_of_Life has joined.
16:49:30 -!- kspalaiologos has quit (Quit: Leaving).
16:51:17 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
16:53:27 -!- Lord_of_Life has joined.
16:56:53 -!- FreeFull has joined.
18:18:18 -!- kspalaiologos has joined.
18:19:38 -!- arseniiv_ has joined.
18:22:26 -!- arseniiv has quit (Ping timeout: 240 seconds).
18:48:13 -!- xkapastel has quit (Quit: Connection closed for inactivity).
18:53:57 -!- xkapastel has joined.
19:51:17 -!- b_jonas has joined.
19:56:45 -!- zzo38 has joined.
20:06:44 -!- kspalaiologos has quit (Quit: Leaving).
20:09:37 -!- ArthurStrong has joined.
20:33:40 <esowiki> [[User:Sideshowbob]] https://esolangs.org/w/index.php?diff=66450&oldid=64689 * Sideshowbob * (+50) /* Works in progress */
20:52:53 <zzo38> I have downloaded the most recent Magic: the Gathering rules.
20:53:21 <zzo38> (I should perhaps convert all of them to the same canonical ASCII format, so that they can then be compared properly.)
21:03:59 <b_jonas> zzo38: I convert them to utf-8.
21:04:06 <b_jonas> without carriage returns
21:04:39 <b_jonas> `cat share/mtg/rules.txt
21:04:39 <HackEso> ​Magic: The Gathering Comprehensive Rules \ \ These rules are effective as of October 4, 2019. \ \ Introduction \ \ This document is the ultimate authority for Magic: The Gathering® competitive game play. It consists of a series of numbered rules followed by a glossary. Many of the numbered rules are divided into subrules, and each separate rule and subrule of the game has its own number. (Note that subrules skip the letters “l” and “o” du
21:04:51 <b_jonas> ``` grep -w Noble share/mtg/rules.txt
21:04:52 <HackEso> 205.3m Creatures and tribals share their lists of subtypes; these subtypes are called creature types. The creature types are Advisor, Aetherborn, Ally, Angel, Antelope, Ape, Archer, Archon, Army, Artificer, Assassin, Assembly-Worker, Atog, Aurochs, Avatar, Azra, Badger, Barbarian, Basilisk, Bat, Bear, Beast, Beeble, Berserker, Bird, Blinkmoth, Boar, Bringer, Brushwagg, Camarid, Camel, Caribou, Carrier, Cat, Centaur, Cephalid, Chimera, Citizen, Cleric, Cock
21:04:59 <shachaf> `doag share/mtg/rules.txt
21:05:01 <HackEso> 11957:2019-10-01 <wib_jonäs> ` set -e; cd share/mtg; tr -d \\\\r <MagicCompRules_20191004.txt > rules.txt \ 11956:2019-10-01 <wib_jonäs> ` set -e; cd share/mtg; tr -d \\\\\\\\r <MagicCompRules_20191004.txt > rules.txt \ 11833:2019-06-13 <b_jonäs> `` set -e; cd share/mtg; tr -d \\\\r <MagicCompRules_20190612.txt > rules.txt \ 11701:2019-01-26 <b_jonäs> `` set -e; cd share/mtg; iconv -f cp850 -t utf-8 MagicCompRules_20190125.txt | tr -d \\\\r > rules
21:05:24 <shachaf> `doag share/mtg/MagicCompRules_20191004.txt
21:05:26 <HackEso> 11955:2019-10-01 <wib_jonäs> fetch share/mtg/MagicCompRules_20191004.txt https://media.wizards.com/2019/downloads/MagicCompRules%2020191004.txt
21:05:44 <shachaf> Is there a reason not to do that in the channel?
21:06:54 <b_jonas> shachaf: I did that in the channel
21:07:04 <b_jonas> as far as I recall
21:07:33 <shachaf> Oh, you did.
21:07:44 <shachaf> Never mind.
21:42:46 <zzo38> I prefer ASCII without carriage returns; it would help when there was one with PC character set once, it will ensure all of the quotation marks match
21:46:21 <shachaf> But how will you return the carriage without carriage returns?
21:47:39 <arseniiv_> manually
21:47:43 -!- arseniiv_ has changed nick to arseniiv.
21:47:46 <zzo38> If send to a printer then the carriage return will be added to return the carriage.
21:48:07 <arseniiv> (I’ll show myself out, it’s just the right time)
21:51:38 -!- ArthurStrong has quit (Quit: leaving).
21:52:50 -!- arseniiv has quit (Ping timeout: 240 seconds).
21:54:02 <b_jonas> shachaf: we convert the file before sending it to the printer.
21:54:39 <b_jonas> also, we don't print the comp rules. it would be a waste. it changes like five times a year and it's a hundred pages long.
21:56:29 <b_jonas> wait wait
21:57:51 <zzo38> Print only the pages that are changed.
21:57:55 <b_jonas> zzo38: Throne of Eldraine has a sorcery card with rules text including "Then those creatures fight each other." Does that effectively mean that they fight twice, as in the first creature fights the second than the second fights the first, fight being commutative?
21:58:42 <zzo38> I think just once.
21:59:01 <b_jonas> the wording is odd
21:59:11 <zzo38> "701.12a. A spell or ability may instruct a creature to fight another creature or it may instruct two creatures to fight each other. Each of those creatures deals damage equal to its power to the other creature."
21:59:32 <b_jonas> hmm
21:59:35 <zzo38> Yes, I agree the wording is odd, but rule 701.12a seems so say that it is just once even if it says "each other"
21:59:47 <b_jonas> ``` grep -Ei "fight each other" share/mtg/rules.txt
21:59:48 <HackEso> 701.12a A spell or ability may instruct a creature to fight another creature or it may instruct two creatures to fight each other. Each of those creatures deals damage equal to its power to the other creature.
22:00:00 <b_jonas> I wasn't aware of the alternate template
22:00:04 <b_jonas> perhaps because it's a red thing
22:00:22 <b_jonas> let me do a card search
22:01:01 <b_jonas> yeah, looks like a red thing
22:04:03 -!- imode has quit (Ping timeout: 245 seconds).
22:58:13 -!- xkapastel has quit (Quit: Connection closed for inactivity).
23:06:43 -!- FreeFull has quit.
23:29:28 <zzo38> I thought of if I make the new TeXnicard, to make a format for sending changes to the database, with Unusenet, so that you can do collaboration if wanted.
23:38:36 <zzo38> (You could just as well transfer the change files by email or on a floppy disk or paste bin, too, if wanted)
23:57:59 -!- imode has joined.
←2019-10-01 2019-10-02 2019-10-03→ ↑2019 ↑all