00:22:45 <imode> so I have a language. it's called Modal. Modal is based off of term rewriting, and its reduction strategy is based around a queue automata. it features three data structures in its implementation: a dictionary of variable bindings (global), a pattern buffer for matching and construction of new patterns, and an expression buffer that holds the current expression under evaluation.
00:24:17 <b_jonas> imode: go on, I'm listening
00:25:19 <imode> I have a subproject, called Mode, which is like Modal, only the model of computation under consideration is combinatory logic.
00:26:08 <imode> I'm intending on showing a reduction from Modal to Mode, and then show a reduction from Mode to some kind of queue automata or, barring that, a string rewriting system, then to a queue automata.
00:26:37 <imode> my goal at the moment is to show a reduction from Mode to a queue automata.
00:27:41 <imode> the issue I'm having is the idea of interpreting combintory logic via a queue automata. it's mainly just confronting the idea of partial application/currying.
00:28:24 <b_jonas> by combinatory logic, you mean that thing that birds like the Mockingbird do?
00:28:32 <imode> (if you're interested, the code for Modal's interpreter is at https://git.imode.tech )
00:28:56 <imode> yes. the birds in that book represent predefined transformations on term trees.
00:29:37 <imode> https://git.imode.tech/?p=python/modal;a=blob;f=prelude.modal;h=d2ac42077ebee97a46937e18ef493338c021394a;hb=refs/heads/master some example Modal code.
00:30:51 <imode> my hope was to reduce Mode to just a bare queue automata with some special rules. i.e, cut away the pattern buffer.
00:31:10 <imode> err, cut away the dictionary and leave the pattern buffer.
00:31:42 <imode> so if modal is {Variable Bindings, Pattern Buffer, Expression Buffer}, mode is {Pattern Buffer, Expression Buffer}, and string rewriting is just {Expression Buffer}.
00:32:25 <b_jonas> hmm, I think you'd mentioned this language before
00:32:52 <imode> yeah, I've talked about it a bit in here.
00:35:13 <imode> the issue I'm encountering is the idea of partial application. normally, with queue-based evaluation, you check the head of the queue. depending on the combinator, dequeue its arguments in a special way into the pattern buffer, building up a new pattern. then, enqueue that pattern after you're done building it.
00:37:43 <imode> but with partial application, the rules change. "``SK" in unlambda notation, for example, means "((S)K)". if we were to take this as a kind of rewriting system, we'd do something like the following to "represent" partially applied combinators:
00:38:06 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: `SK: not found
00:38:50 <imode> my point is that in order to implement partial application, you need to have a distinction between what's partially applied and not partially applied.
00:41:32 <imode> you can do that by saying "`AB -> <AB>". so "````skkk" -> "```<sk>kk" -> "``<skk>k" -> "`<skkk>" -> "```kk`kk" -> "``<kk>`kk" -> "``<kk><kk>" -> "`<kk<kk>>" -> "`<kk>"
00:41:52 <imode> you add delimiters to clarify that this part of the string of applications has been partially applied.
00:42:24 <imode> that's irritating because, queue/string-wise, you now have two types of "spans".
00:42:59 <imode> I'll be right back. gotta shower. highlight me and I'll read back.
00:57:22 -!- Melvar has quit (Quit: system upgrade).
00:58:58 -!- Sgeo_ has joined.
01:03:02 -!- Sgeo has quit (Ping timeout: 272 seconds).
01:04:07 -!- tromp has quit (Remote host closed the connection).
01:08:11 <esowiki> [[Talk:Language list]] https://esolangs.org/w/index.php?diff=58870&oldid=55677 * Areallycoolusername * (+376) /* Category? */
01:09:36 <esowiki> [[Talk:Language list]] https://esolangs.org/w/index.php?diff=58871&oldid=58870 * Areallycoolusername * (+33) /* Category? */
01:19:48 -!- tromp has joined.
01:24:30 -!- tromp has quit (Ping timeout: 250 seconds).
01:37:49 -!- b_jonas has quit (Quit: leaving).
01:46:04 -!- Galaxymeow has joined.
01:46:13 -!- Galaxymeow has quit (Client Quit).
01:54:54 -!- tromp has joined.
01:59:07 -!- tromp has quit (Ping timeout: 240 seconds).
02:11:19 <esowiki> [[PERPLEX]] N https://esolangs.org/w/index.php?oldid=58872 * Areallycoolusername * (+1023) Created page with "[[PERPLEX]] is an esolang created by [[Jussef Swissen]] (A pseudonym.) in 2014. It's basically a over-complicated version of BASIC. For example, PRINT is now INSCRIBE. Here's..."
02:13:00 <esowiki> [[Jussef Swissen]] N https://esolangs.org/w/index.php?oldid=58873 * Areallycoolusername * (+86) Created page with "Jussef Swissen is a programmer that made [[PERPLEX]]. The name he uses is a pseudonym."
02:26:37 <esowiki> [[Talk:Language list]] M https://esolangs.org/w/index.php?diff=58874&oldid=58871 * Oerjan * (+60) /* Category? */ No date in signature
02:31:31 -!- oerjan has joined.
02:35:32 <lambdabot> ENVA 280150Z 26013KT 3300 RA SCT005 BKN009 OVC011 04/04 Q1013 RMK WIND 670FT 27018KT
02:35:45 <oerjan> yeah that's about how humid it feels
02:35:58 <lambdabot> KOAK 280153Z 01007KT 10SM FEW200 12/M03 A3016 RMK AO2 SLP214 T01221033
02:36:24 <oerjan> i take it california is pretty dry again
02:38:32 <shachaf> my standards are low now hth
02:49:54 -!- Essadon has quit (Quit: Qutting).
02:50:14 <HackEso> A horse, a horse! My kingdom for a horse!
02:50:26 <oerjan> oh i guess we already have horses
02:50:27 -!- Sgeo__ has joined.
02:53:23 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
03:10:55 -!- tromp has joined.
03:17:16 -!- tromp_ has joined.
03:17:16 -!- tromp has quit (Read error: Connection reset by peer).
03:18:20 <imode> the only flaw I can find in combinatory logic is that partial application and currying, at least from what I can see, requires you to to differentiate between partially applied sequences of combinators.
03:18:20 -!- tromp_ has quit (Read error: Connection reset by peer).
03:18:40 -!- tromp has joined.
03:25:32 -!- MDude has quit (Ping timeout: 246 seconds).
03:26:01 -!- tromp has quit (Ping timeout: 246 seconds).
03:27:25 -!- MDude has joined.
03:35:32 -!- MDead has joined.
03:36:39 <int-e> imode: hmm, what is the task precisely? make a queue automaton that can reduce CL terms represented by strings generated by the grammar T ::= 'S' | 'K' | '`' T T?
03:37:59 <int-e> (hmm, you had lower case s and k, but that hardly makes a difference)
03:38:12 -!- MDude has quit (Ping timeout: 272 seconds).
03:38:17 -!- MDead has changed nick to MDude.
03:38:26 <imode> essentially yeah. that's unlambda notation.
03:39:50 <int-e> I like the Unlambda notation for application. I used it in https://www.isa-afp.org/browser_info/current/AFP/Rewriting_Z/CL_Z.html ;)
03:40:45 <int-e> (well, something that resembles it... it needed extra spaces and occarional parentheses to really work)
03:41:01 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
03:41:13 <imode> I dig it as well. it solidifies that you always need at least two combinators, so to speak. "apply" is actually an operation in that notation, and that's actually derived from schonfinkel's paper.
03:43:46 -!- Lord_of_Life has joined.
03:46:57 * int-e wonders how one mistypes 'r' for 's'...
03:48:08 <imode> the keys are like right there man.
03:48:48 <int-e> They're not adjacent. So clumsiness is an unlikely reason :)
03:52:55 <int-e> ruse, if you do it insentionally
04:23:41 -!- FreeFull has quit.
04:34:54 -!- arseniiv has joined.
04:39:20 <zzo38> Now I made the program to use Glk with JavaScript.
05:09:23 -!- tromp has joined.
05:14:10 -!- tromp has quit (Ping timeout: 250 seconds).
05:29:06 -!- doesthiswork has quit (Quit: Leaving.).
05:32:39 -!- Melvar has joined.
05:48:40 <oerjan> i see the people in girl genius are trying to raise a racket
05:50:28 -!- oerjan has quit (Quit: Nite).
06:03:14 -!- tromp has joined.
06:07:27 -!- tromp has quit (Ping timeout: 244 seconds).
06:47:15 -!- uplime has quit (Quit: /quit and /part are in a boat. /part jumps out of the boat. who is left in the boat?).
06:56:50 -!- tromp has joined.
07:01:16 -!- tromp has quit (Ping timeout: 246 seconds).
07:06:36 <int-e> imode: ooph. http://paste.debian.net/1057746/
07:24:18 <imode> int-e: interesting. unlambda interpreter?
07:25:02 <imode> is this a string rewriting system?!
07:35:39 <int-e> imode: that's a queue automaton
07:35:59 <int-e> <state> <symbol> -> <string> <state>
07:36:08 <int-e> is the syntax I'm using
07:38:51 -!- Sgeo_ has joined.
07:39:01 <imode> interesting. so you only examine a single symbol at the head of the queue, then enqueue some string.
07:42:22 -!- Sgeo__ has quit (Ping timeout: 250 seconds).
08:00:52 <imode> that's really fascinating. how'd you whip that up so fast?
08:00:58 -!- tromp has joined.
08:04:35 <int-e> golfing... saving 3 states: http://paste.debian.net/1057754/
08:05:41 <int-e> imode: hmm, having an interpreter is crucial; and I had an inspiration how skipping over a subterm could work (that logic uses the # and % symbols, and involves the first four states)
08:06:24 <imode> interesting... I've been trying to get subterm extraction working with the unlambda notation.
08:09:05 <int-e> In that logic, a % preceding a # somewhere has the effect of pushing the # one whole subterm further ahead.
08:10:14 <int-e> Having % makes skipping over `XY easy: we've read the `, so we put it back, put a % that will eventually push the # over the Y, then skip X. That's the logic of the # state.
08:10:33 <imode> thaaaat... makes sense.
08:10:34 <int-e> (if # encounters an s, it'll just skip over that and drop the # marker; same for k)
08:13:35 <imode> the question I have is can this be made combinator-agnostic. like it looks like you have specific interactions between specific combinators. if we had a larger basis, the state count would blow up.
08:19:12 <int-e> Well, you'll have to add logic for all those combinators anyway, which will already blow things up. That said, you /can/ make the copying agnostic by some counting scheme (assign numbers to each symbol; decrement the symbol to 0 while copying; then you don't have to remember a whole symbol in a state)
08:19:44 <int-e> you can also do some binary encoding, at the cost of a logarithmic number of states in the %/# handling.
08:20:23 <imode> true. still is a little unweildy though. ideally we'd have some kind of "schema" that generates these state tables from equational definitions of combinators.
08:21:07 <int-e> or, you just add one pass over the whole string that replaces each combinator by the corresponding SK expression.
08:21:40 <imode> you might get smaller reduction times, though, with different bases.
08:22:54 <int-e> I was semi-golfing. I wanted a small number of extra symbols (3 right now, #, %, $) and a reasonably small number of states (20 now, not counting the halting state)
08:23:41 <imode> translating this to an SRS would be trivial.
08:24:02 <int-e> almost trivial... you have to take care of the cyclic nature of the queue.
08:24:33 <int-e> or you rewrite cycles ala https://www.win.tue.nl/~hzantema/cycrew.pdf
08:25:00 <int-e> then it is trivial, just need to keep the states separate from the other symbols.
08:25:23 <imode> something that I dreamt of (was napping earlier) was a reduction from combinatory logic to wang tilings and something like a counter machine.
08:26:04 <int-e> Anyway, the only thing I might want to add is 'i' and that's almost trivial... needs one extra state, I think.
08:26:34 <int-e> (and that extra state is for copying)
08:29:01 <imode> so you have states for Sk and SK, and these denote an explicit interaction between S and K, right?
08:29:13 -!- user24 has joined.
08:29:36 <imode> I notice you don't have any for K applied to S.
08:29:52 <imode> but you do have them for S applied to S.
08:30:16 <int-e> imode: those are copying states. I got rid of SK, SS and S' in the latest paste.
08:30:22 <int-e> 09:04:35 <int-e> golfing... saving 3 states: http://paste.debian.net/1057754/
08:31:12 <imode> right. so if I were to add for example C, I'd need to show how C interacts with S and K.
08:36:32 <int-e> C would be similar to S.
08:36:54 <int-e> (moving a string over another one, or copying it, is basically the same amount of work)
08:39:02 <int-e> http://paste.debian.net/1057755/ is what would be needed to implement `i`. So... basically all existing states get a new transition, and there's an Si state. This is atypical in that reducing `iX just removes the "`i" so that no marking of arguments or I* states are needed.
08:41:19 <int-e> Anyway. Extensibility was not a goal. I wanted the default SK(optionally I) combinatory logic, nothing more.
08:42:31 <imode> you've at least shown me a compact implementation. thank you!
08:56:27 -!- sprocklem has joined.
09:02:10 <imode> hm.. has anybody ever done wang tiling over arbitrary graphs, I wonder.
09:03:48 <imode> self-assembling graphs..
09:15:06 <imode> wonder if there's a "background-agnostic" version of wang tiling, i.e "self-assembly" systems that don't rely on the idea of a planar backdrop to expand into.
09:38:59 -!- user24 has quit (Ping timeout: 250 seconds).
10:11:15 <imode> hm. now I'm curious... a CA/tiling that can generate its own backdrop.
10:12:26 <imode> for example, a CA that, initially, has a confined area of space for rules to be applicable in, but by way of local interactions, that space can grow.
10:23:42 -!- laerling has joined.
11:10:29 <imode> I just had an epiphany. any system of combinators can be encoded as a set of wang tiles. any set of wang tiles is essentially a "crystalline" CA, where one axis is time. combinatory logic thus may be able to be encoded pretty cleanly into something like a cellular automaton, and that just broke my brain.
11:11:11 <imode> I am all the hype.
11:21:10 <rain1> i don't think any of that is true
11:21:14 <rain1> have you tried this out in practice
11:23:42 <imode> justification for 1: a wang tiling is essentially a historical graph for any arbitrary cellular automaton or turing machine. along the Y axis is your history, along the X axis is your "tape", or your space. if you just keep a copy of the "most recent" piece of history, you can restrict yourself to one dimension.
11:24:44 <imode> justification for 2: there exist encodings of combinatory logic within the context of wang tiles, such that the tilings formed by those tiles encode transformations of CL terms. it's a proposed method to write useful programs for self-assembling DNA tiles.
11:27:34 <imode> result (and hypothesis): any system of combinators can be simulated as a 1D cellular automaton by encoding it as a set of wang tiles and discarding the history of the tiling formed by those tiles.
11:30:47 <imode> if I'm right and all those pieces fit together (I don't see why they wouldn't), then this kind of paves the way for a massively parallel reduction machine for combinatory logic, and thus may give a solid foundation in hardware for incredibly fast high level languages based on CL.
11:34:04 <imode> like, imagine you had a processor that just had a giant 1D array of parallel computing elements, each of which is just a glorified state machine. pre-load each element with the right FSM, provide the initial input (the CL expression you want to evaluate), and watch it run.
11:49:16 -!- S_Gautam has joined.
11:49:28 <rain1> ok I see what you mean
12:01:40 -!- shikhin has quit (Changing host).
12:01:40 -!- shikhin has joined.
12:11:24 -!- laerling has quit (Ping timeout: 252 seconds).
12:15:35 -!- laerling has joined.
12:16:47 -!- imode has quit (Ping timeout: 240 seconds).
12:23:04 -!- rain2 has joined.
12:24:13 -!- rain1 has quit (Ping timeout: 245 seconds).
13:07:49 -!- laerling_ has joined.
13:07:52 -!- laerling has quit (Read error: Connection reset by peer).
13:19:25 -!- laerling_ has quit (Quit: Leaving).
13:23:36 <int-e> In retrospect I should've gone to bed instead of playing with queue automata :)
13:44:24 -!- doesthiswork has joined.
13:44:26 -!- b_jonas has joined.
13:44:30 <HackEso> very exponential? ¯\(°_o)/¯
14:31:13 -!- AnotherTest has joined.
14:38:04 <int-e> Is this something like (10^100)^n ?
14:44:09 <int-e> Meh, the two uses of "exponential"...
14:44:33 -!- AnotherTest has quit (Ping timeout: 252 seconds).
14:45:01 <int-e> n^n = O(2^n^2) is EXP, but grows faster than any exponential function.
14:46:39 -!- AnotherTest has joined.
14:59:25 <myname> isn't it just e^(n log n)? i can name a few exponential funktions that grow faster
15:00:04 <int-e> here's what I mean by "exponential function": f(n) = a * b^n for constants a, b.
15:01:03 <b_jonas> so... a very exponential function is an exponential function that grows faster than exponential functions?
15:01:59 <int-e> Complexity theorists mess this up because they close most their classes under polynomial time (or at least logspace) reductions.
15:03:35 -!- AnotherTest has quit (Ping timeout: 268 seconds).
15:15:06 -!- Essadon has joined.
15:27:26 -!- AnotherTest has joined.
15:31:51 -!- AnotherTest has quit (Ping timeout: 252 seconds).
15:38:36 -!- Lord_of_Life_ has joined.
15:41:54 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
15:41:54 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:04:19 -!- AnotherTest has joined.
16:28:56 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
17:09:55 -!- nchambers has joined.
17:16:51 <HackEso> 76) <Gregor> I don't know that I've ever heard apocalypi described in terms of depth ...
17:19:08 <HackEso> 459) <Phantom_Hoover> I gave her the Noblesse Oblige rooms. <Phantom_Hoover> She was happy with them even when they were behind 2 locked doors and a floodgate and full of water.
17:27:45 -!- derpy_ has joined.
17:29:58 -!- derpy has quit (Ping timeout: 250 seconds).
17:51:23 <HackEso> 958) <Phantom_Hoover> i don't think hitler made any bf derivatives
17:57:50 <int-e> oh it's an unexplored area of fiction
17:59:06 <b_jonas> int-e: maybe it's unexplored, maybe you just don't read far enough into the longer pornographic Hitler fanfiction pieces
17:59:28 <fungot> int-e: we have in fnord relationships, that co-operation, the committee recognised that the proposals also included the albert kennedy trust from the 1990s, and the time to be the one to which i can attest, is still part of the governments considerations, and the then secretary of state.
17:59:45 <fungot> int-e: the eu and, for too many, and the care of fnord peers, and the home secretary that the government would conduct a form, people end up in the same as the one the hon. and learned friend the minister for that, and i, and,
18:00:17 <b_jonas> my hon. and learned friend fungot is still in Brexit mode?
18:00:18 <fungot> b_jonas: the country is the second biggest in the uk. when i will be available. i have been a minister in the house, which is saving it some of those regulations, but when the government have
18:03:08 <b_jonas> second biggest in UK? that must be Scotland
18:04:06 <arseniiv> fungot: what are the other news?
18:04:07 <fungot> arseniiv: on the important question of constitutional and economic implications. it was the right hon. and hon. and right hon.
18:05:07 <arseniiv> fungot: all economy these days. Aren’t there something new in the field of prepromorphisms?
18:05:07 <fungot> arseniiv: what i have said, that the government introduced the new, tougher system under the education act 1996, the government actuarys report and john stevenson be members, including 150,000 acres, the entire way of thinking, the type that the hon. member the leave of the house,
18:06:42 <HackEso> albert kennedy trust? ¯\(°_o)/¯
18:07:19 <int-e> I would be surprised if prepromorphisms was even in fungot's vocabulary for this style. (Not sure about the irc style... it seems unlikely, but might just be there.)
18:07:19 <fungot> int-e: i do. we are to be fnord. i am right, that being speaker of the fnord
18:07:37 <int-e> Every style has expert knowledge on fnords though.
18:09:07 <arseniiv> do they have a category-theoretic style?
18:10:15 <arseniiv> or at least Oleg Kiselyov style maybe (hm but why him)
18:11:27 <fungot> arseniiv: to be as we all anticipate following a very few exceptional circumstances, i have to have some of the highest at 25,800. local government, local government, and working-age people, can be considerable, and the only people to have suffered fnord under the eu arrangements
18:11:56 <arseniiv> at least there is another fnord
18:14:35 <arseniiv> if somebody’s interested, the last OpenMPT version, 1.28, now supports all (printable, I think) ASCII chars in custom tunings’ note names, when using a custom font for the pattern editor
18:16:28 <arseniiv> (though there’s possibly a bug when rendering &, for me it displays as a color-inverted pipe currently)
18:17:18 <arseniiv> (but it seems it should be fixable easily if it’s really OpenMPT’s bug and not something with my font)
18:18:30 <b_jonas> arseniiv: that's appropriate. & is just a | with the inputs and output negated
18:21:41 <HackEso> 235) <oklopol> actually the first joke i thought elliott was making was that he's so small masturbation is gay pedophilia
18:38:40 -!- GeekDude has joined.
18:40:05 <int-e> hmmmm beautiful documentation: http://bach.istc.kobe-u.ac.jp/iSATLib/doc/iSATLibrary/ISatLibrary.html
18:41:15 <int-e> (I think this is just meta information, perhaps "list of classes", "list of interfaces"... the actual documentation (where present) seems to be in English... but still...
18:42:27 <int-e> It's a pity that it's written in Java though.
18:43:01 -!- nchambers has changed nick to uplime.
18:46:52 <arseniiv> no encoding specified in html code :(
18:48:23 <arseniiv> for some reason the only cases a wrong encoding is detected the last decade or so is for Japanese webpages only
18:49:52 <int-e> arseniiv: hmm, nor in the HTTP headers
18:51:22 <b_jonas> arseniiv: are you sure it's wrong encoding detected, as opposed to text snippets in multiple encodings mixed into the same HTML?
18:53:36 <b_jonas> because mixed or corrupt encoded text is annoyingly common
18:54:34 <arseniiv> I don’t want to overgeneralize but these Japanese encodings are… I mean, why do they seem to not care to indicate them each time, it should just be a bad luck
18:54:34 <arseniiv> b_jonas: maybe, but if I select “Japanese” in autodetect encoding menu in Firefox, it goes normal, Japanese + English. Originally this time it was detected as a Cyrillic mess (+ English)
18:55:06 <b_jonas> arseniiv: yes, it is worse in japanese
18:55:48 <arseniiv> so maybe this is one encoding all the way, just as it’s not specified the browser thinks it should better parse all text with settings for my default languages
18:58:47 <int-e> actually... my browser does misidentify the encoding as well
18:59:34 <arseniiv> b_jonas: a pity, really. I mean, there’s possible a ton of pages in Win-1251 with no encoding maybe even in headers, and there should also even be that DOS encoding 866 or something somewhere, but I can’t easily see and usually don’t visit those kinds of pages — but what did they do to Javadoc to strip the encoding data, is it trivial at all, and if it’s not, why?.. (rhetoric)
19:00:59 <arseniiv> (Win-1251 and that DOS one are Cyrillic encodings, they should probably be preferred when autodetecting with my lang settings)
19:09:54 -!- tromp has quit (Remote host closed the connection).
19:10:26 -!- tromp has joined.
19:14:44 -!- tromp has quit (Ping timeout: 246 seconds).
19:26:01 -!- tromp has joined.
19:40:55 -!- ais523 has joined.
19:40:55 -!- ais523 has quit (Remote host closed the connection).
19:41:42 <zzo38> In a C code will 'xy' equal ('x'*'\1\0'+'y'*'\0\1') even though 'xy' may be different by different computers?
19:42:07 -!- ais523 has joined.
19:42:29 <b_jonas> zzo38: I don't think that's promised. it's impl'n-defined behavior, so read the manual of your architecture or compiler.
19:43:18 <pikhq> zzo38: Well, that's a GCC extension anyways.
19:43:42 <pikhq> (multi-character char literals are not ISO C in the slightest)
19:44:28 <int-e> hmm, "implementation-defined"...
19:44:41 <int-e> all bets are off since compiler writers can't be trusted to be reasonable ;)
19:57:08 <zzo38> Do you like the program I made to use Glk with JavaScript? Later I had found a implementation of Glk in JavaScript (mine uses an implementation in C), although the API does not match, although I think that my API is look like better, in my opinion.
20:01:19 <zzo38> The "vm" mechanism in Node.js does not have a function to execute a code with a separate call stack.
20:17:10 -!- arseniiv has quit (Ping timeout: 246 seconds).
20:23:10 -!- FreeFull has joined.
20:24:53 -!- imode has joined.
20:26:51 <int-e> https://www.eblong.com/zarf/glk/glk-spec-075.html ... fits one of zzo38's many interests (IF)
20:34:58 -!- S_Gautam has joined.
20:40:17 <ais523> imode: re: implementing combinatory logic, most methods I've seen have the concepts of an S1 closure (i.e. S partially applied to 1 argument), an S2 closure (i.e. S partially applied to 2 arguments), and a K1 closure (i.e. K partially applied to 1 argument)
20:40:34 <ais523> you don't really need a general system, just those three types of closure specifically
20:41:07 -!- AnotherTest has quit (Ping timeout: 250 seconds).
20:43:05 <b_jonas> yeah, that's the method http://www.madore.org/~david/programs/unlambda/ describes
20:43:16 <ais523> the simplest general system I know is the Underload-style system where things /start out/ as closures and just get escaped and unescaped
20:44:44 <ais523> (…) a * ^ are the important operations for an Underload-alike to behave like a combinator calculus
20:44:55 <ais523> : is sort-of irrelevant except that you need it for TCness
20:45:16 <ais523> you could replace it with some other operation (S serves this purpose in SK combinator calculus)
20:45:52 <ais523> and obviously, ~ ! S are hardly necessary (and were some of the first operations to be minimized out)
20:45:55 <imode> ais523: I figured as much. I've recently discovered a method of encoding CL terms and applications in wang tiles, and they appear to use a similar encoding to underload.
20:46:15 <zzo38> imode: What method is that?
20:46:36 <imode> am I permitted to post sci-hub links here?
20:47:02 <ais523> that'd come under Freenode rules, and I'm guessing no
20:47:04 <zzo38> I don't know, but you could post the doi perhaps
20:47:32 <ais523> you can post the name or a unique identifier of the paper and people would be able to find it their own way (e.g. many people here may have legitimate access to it)
20:48:06 <imode> I found a publically available PDF version: http://ceur-ws.org/Vol-1032/paper-01.pdf
20:49:45 <zzo38> Glk does not seems to have a style that is matching TAVERN's "Reverse" style. However, it is possible to determine if the story requires it or not, without trying to execute it.
20:52:17 <imode> by way of discarding all but the current bottom-most row in a tiling, CL reduction can look like a cellular automaton.
20:52:48 <imode> something akin to a smart shift register can reclaim the "dead space" used by applications.
20:56:21 <ais523> <imode> hm. now I'm curious... a CA/tiling that can generate its own backdrop. ← that reminds me of the 0E0P metacell in the Game of Life, although it isn't exactly the same thing
20:59:30 <ais523> massively parallel reduction algorithms for things like lambda calculus, combinatory logic, and Underload-alikes are pretty easy to express, the problem is "internal" infinite loops
21:00:16 <ais523> like, if you have something like "if (0) { } else { while(1); }" (except written functionally rather than imperatively), these parallel algorithms will be sending some of their threads to try to normalize the loop body
21:00:30 <ais523> so you need some way to kill computations from outside when they're no longer needed
21:01:36 <b_jonas> ais523: yeah, but ! being unncessary is kind of a surprise, because you know how the Mockingbird book has a whole chapter on how discarding is necessary
21:02:18 <shachaf> I'm still looking for that thing which is somewhere between a macro and an inline function. I don't know if it makes sense or if any language has it.
21:02:39 <ais523> b_jonas: I don't think the wiki has an article on bitbuckets yet
21:02:49 <ais523> but it's not normally too hard to maintain one
21:02:52 <imode> back. ais523: an implementation of CL in terms of a cellular automaton would still enable you to do that, but there's no "threading" going on.
21:03:42 <ais523> fwiw, this is one of the many problems underlying Feather, and probably the one I've put the most effort into
21:03:52 <ais523> I think this one is solvable, although some of the others aren't
21:06:12 -!- uplime has quit (Ping timeout: 250 seconds).
21:07:04 <b_jonas> ais523: yeah, the trick is probably that Mockingbird doesn't claim that you can't get Turing-completeness without discard. all it claims is that you can't get discarding combinators from non-discarding ones, so you can't get all combinators without one.
21:07:27 <b_jonas> and that's what you found in Underload too: you can't get discard from the other primitives, instead you simulate it
21:08:17 <b_jonas> sure, they're not really equivalent
21:08:21 <b_jonas> Underload is a bit more powerful
21:10:14 <ais523> now I'm wondering what an Underload→combinators compilation looks like
21:10:29 <ais523> (the other way is fairly easy)
21:10:43 <ais523> I think you might have to write a full interpreter including a Church-encoded stack
21:10:44 <b_jonas> you'll probably have a linked list stack for that, plus optimize the top elements whenever you can resolve them at compile time
21:11:09 <ais523> because Underload freely lets you write unbalanced loops
21:16:40 -!- uplime has joined.
21:22:37 <imode> are wang tiles generalizable to arbitrary graphs with a color requirement and out degree?
21:23:31 <imode> I guess it would just be degree.
21:36:37 -!- AnotherTest has joined.
21:38:58 -!- pikhq has quit (Read error: Connection reset by peer).
22:01:03 <ais523> I'd expect it to have to be infinite graphs (although finite Wang tiles could potentially be interesting for things like SAT-solving), but apart from that they generalise pretty simply
22:01:43 <ais523> one issue is that the square grid that's normally used isn't quite a graph, because the edges at each point have identities (you can't permute them arbitrarily, e.g. you can't connect the N, E, S, W sides of the tile to the N, S, E, W adjacent squares respectively)
22:07:23 <int-e> ais523: do you know anything about #SAT? I'm wondering whether https://github.com/marcthurley/sharpSAT is still state of the art.
22:08:28 <ais523> no, I'm not very up to date with SAT solvers
22:08:38 <int-e> http://beyondnp.org/pages/solvers/model-counters-exact/ had an overview.
22:09:03 <int-e> It's comparatively easy for SAT, because of the SAT competitions.
22:09:27 <ais523> also the name #SAT reminds me of complexity classes like #P
22:09:31 <int-e> But #SAT is not quite the same, the tradeoffs are quite different.
22:09:50 <int-e> (One thing I've learned is that #SAT is often called "model counting" in the literature)
22:09:51 <ais523> ah right, it /is/ in fact the defining problem of #P
22:10:13 <ais523> hmm, now I'm confused, maybe this is what you were talking about in the first place
22:10:25 <int-e> But never mind then, it's just something that could have been in your area of interest. :)
22:11:06 <ais523> it's the sort of thing that I'm broadly interested in despite not knowing much about
22:12:51 <b_jonas> the wafer grid means exact count, right?
22:13:10 <ais523> so #SAT is "how many ways are there to solve this boolean satisfaction problem?"
22:13:16 <b_jonas> it would be a screwdriver head with a plus-shaped groove for parity
22:13:52 <ais523> \oplus, as they say in LaTeX
22:14:41 <int-e> I'd *expect* that finding the parity of the number of solutions is essentially as hard as counting them, but how would one go about proving or refuting such a claim?
22:15:07 <b_jonas> int-e: you refute it by making determinant-signed counting easier
22:15:47 <b_jonas> create matrix whose permanent is the count, then observe that the determinant has the same parity as the permanent,
22:15:52 <b_jonas> and that you can solve the determinant fast
22:16:17 <int-e> b_jonas: I know about permanents, but that just means that this is not a hard problem for parity-#SAT.
22:16:36 <b_jonas> int-e: that's for #P versus (+)P
22:16:47 <b_jonas> I've no clue about #SAT versus (+)SAT
22:16:59 <ais523> there are some problems which obviously have an even number of solutions, but you can't easily determine how many there are
22:17:18 <ais523> e.g. via exploiting a symmetry of the problem
22:17:35 <b_jonas> ais523: or just adding a 2-valued variable that takes place in no constraint
22:17:49 <b_jonas> we're concerned about the hardest problems
22:18:21 <b_jonas> it doesn't matter if one specific input behaves differently
22:19:40 <int-e> Ah, permanent is #P-complete. Hmm hmm. I should find a proof.
22:21:01 -!- pikhq has joined.
22:23:42 <b_jonas> int-e: yeah, it's so long after Euler, because for a very long time, nobody rediscovered complexity theory and SAT and Cook-Levin
22:25:18 <int-e> (It's not clear, a priori, that such a reduction has to preserve the parity.)
22:31:12 <imode> ais523: interesting, what would a generalization of wang tiles be then?
22:33:04 <ais523> the most direct would be generalizations to arbitrary tilings
22:33:13 <ais523> BIIA? is more of a special case than a generalization
22:33:32 <b_jonas> ais523: yeah, it works either way
22:34:08 <b_jonas> you can simulate BIIA with Wang tiles, one tile per character cell, or backwards, Wang tiles with BIIA, each BIIA tile roughly same sized square shaped with different edges
22:34:22 <b_jonas> I think of it the latter way
22:34:25 <ais523> right, they can each implement the other fairly directly
22:35:34 <imode> something _like_ wang tilings over general topologies are what I'm kind of wondering about. I think something like port graphs have something to say about this...
22:35:55 <imode> tilings rely on a background "plane" to do their thing. what happens if you get rid of that.
22:36:12 <ais523> now you've got me thinking about Wang Penrose tiles
22:36:57 <b_jonas> ais523: so different grid, only it's not quite a "grid"?
22:37:40 <imode> wang tiles but the arity requirements can vary per tile.
22:45:50 <int-e> you can also tile the hyperbolic plane
22:46:08 <ais523> right, tilings do generalize to non-Euclidean topologies
22:46:28 <ais523> does the elliptic plane have infinite tilings? I'd expect them to all be finite
22:46:44 <ais523> err, uniform tilings, that is
22:46:56 <ais523> obviously you can create a non-uniform infinite tiling just by drawing lines at random
22:47:12 <ais523> although it wouldn't be well-defined
22:47:23 <int-e> http://int-e.eu/~bf3/tmp/moebius.html - spot the heptagons :)
22:48:38 -!- pikhq has quit (Read error: Connection reset by peer).
22:48:46 <int-e> (I could make a version that has 4 regular pentagons meet at every vertex, hmm. Maybe some other time.)
22:50:51 -!- pikhq has joined.
22:53:21 <b_jonas> int-e: https://commons.wikimedia.org/wiki/Category:Order-4_pentagonal_tiling ?
22:53:49 <int-e> Non-Euclidean geometries are awkward though in that translations generate rotations.
22:55:35 <b_jonas> can you make a better drawing of what I'm trying to show on http://math.bme.hu/~ambrus/pu/randvoronoi.html ?
22:57:58 <ais523> int-e: I happen to be listening to the soundtrack to HyperRogue at the moment, and that + the font in the title + the hyperbolic geometry in the link left me somewhat confused for a moment
23:00:29 <b_jonas> Ruxor also has a web javascript thingy for showing a kind of Penrose aperiodic tiling too somewhere
23:00:56 <int-e> Hmm, I'm lost... font in the title?
23:01:16 <ais523> the font my browser uses to render the title on the page is the same font HyperRogue happens to use for all its in-game text, including titles
23:01:38 <b_jonas> yeah, http://www.madore.org/~david/weblog/d.2018-04-24.2512.html
23:02:11 <b_jonas> ais523: title on which page? my page? my page doesn't set the font, it leaves it as the client default
23:02:33 <int-e> my page doesn't set a font either. http://roguetemple.com/z/hyper/ has an image in the headline.
23:02:41 <ais523> b_jonas: the page int-e linked
23:02:58 <ais523> I think my browser is probably set to use the same font as HyperRogue for titles if no font is specified by coincidence
23:03:14 <b_jonas> hmm, let me check. I usually have font overrides disabled, so I don't see original fonts on webpages
23:03:23 <b_jonas> font changes on webpages are abused more often than they're used well
23:03:30 <ais523> I think it is, specifically, DejaVu Sans
23:03:35 <b_jonas> and when they're used well, that's because of limitations of web infrastructure
23:04:35 <int-e> DejaVu Serif here (I may have selecte "serif" as a standard somewhere)
23:04:49 <ais523> I think it might be interesting to see what the Web would look like if sites had no method of forcing layout at all
23:04:54 <ais523> just semantic tags and the browser chooses layout
23:04:54 <b_jonas> wait, int-e.eu ? is this a new domain?
23:05:12 <ais523> but it's not possible, people will always try to find a way to force layout
23:05:14 <b_jonas> dunno, I don't recall seeing it
23:06:03 <int-e> Well, there's not all that much there. But it should appear in the logs. I've had it for some years.
23:06:29 <b_jonas> ais523: yeah. you can't have fancy scripting and images and canvases but no fonts. that'd just lead to webpages emulating fonts the slow way.
23:06:45 <ais523> people used <table> to force layout back before CSS was widespread…
23:07:01 <b_jonas> ais523: yes, and table is still very useful, because CSS gets complicated
23:07:07 <int-e> Almost 6 years by now.
23:07:19 <b_jonas> before flex were supported, we definitely needed tables to do some sorts of layout on the web
23:07:23 <ais523> b_jonas: not for layout, please don't do that as it makes it very hard for end users to make styling tweaks
23:07:23 <b_jonas> no matter what the CSS guys said
23:07:31 <b_jonas> and I think even now with flex supported, tables might still be useful
23:07:36 <ais523> and for screen readers and the like to understand the page
23:07:39 <b_jonas> but I could be wrong in that, I don't yet understand how the heck flex works
23:07:53 <b_jonas> ais523: but some layouts are just impossible to write without tables
23:07:55 <ais523> CSS flex is missing lots of features I'd like to use, but those features generally aren't possible with tables either
23:09:33 <zzo38> I think that not only fonts, but also fancy images, scripts, canvas, and layout are also abused much. Forcing layout (and perhaps also fonts) are probably more useful for paged media than continuous anyways, I should think (but even for paged media the user may wish to override them).
23:09:45 <ais523> there's a reason the bottom-right corner of The Waterfall Model Online isn't used for anything, for example
23:10:02 <zzo38> I have font overrides disabled on my web browser, although I would want to enable font overrides for SVG and PDF but disabled for HTML; but, it doesn't seems to do that.
23:10:23 <ais523> (it has a few abuses of CSS Flex to automatically adapt to small screens, but the effects that that has on z-order makes that area unusable in a large-screen layout without making it show up on top of other text in a small-screen layout)
23:10:45 <b_jonas> zzo38: also overlapping stuff, truncating stuff, and line-height. seriously, line-height! have you EVER seen an actually good use of line-height in a webpage, as opposed to in a non-HTML printed document?
23:11:23 <ais523> one thing I dislike is the way that styles are seen as something for the site to provide, rather than something for the user to provide
23:11:33 <ais523> but sites are forced into adding at least minimal styling because most default stylesheets are terrible
23:11:39 <b_jonas> ais523: yeah, and CSS conditionals just aren't powerful enough yet to handle all the things you want for adapting to different heigths
23:11:46 <zzo38> ais523: Yes, although with suitable extensions the user can provide.
23:12:14 <b_jonas> also many webpages abuse adapting to different screen sizes by changing their webpage on small sizes to hide important interface elements
23:12:17 <b_jonas> I have ranted about that, right?
23:12:41 <b_jonas> about that webpage that hides the password change option unless you view it in a wide browser window
23:13:06 <zzo38> b_jonas: Yes, that is true, too. When I design webpages there usually is no or minimal CSS, and rarely any images, but I use the accesskey attribute more often. Scripts are rare except for stuff which is used optionally (such as the MD5 calculation on my database of Magic: the Gathering cards; you can just as well use a different MD5 implementation if you want an account, too).
23:13:39 <zzo38> I rarely use CSS except to override the CSS to webpages that already have CSS. For webpages that do not have CSS it is rare to need to add any.
23:15:30 <zzo38> Tables are useful for making a table or grid of data.
23:15:42 <b_jonas> what I'd still like to find out is how to add both mathml and legacy html for non-mathml-capable browsers in a sane way
23:15:55 <b_jonas> why doesn't mathml has a built-in way to add fallbacks, like img and script do?
23:16:20 <b_jonas> I hate whoever designed them without a fallback
23:16:27 <b_jonas> makes the whole thing worthless
23:16:28 <int-e> b_jonas: Not sure whether those images can be improved. One thing that might be interesting to exhibit difference is to choose the color based on the area of each polyhedron... and perhaps the number of vertices.
23:16:58 <b_jonas> int-e: they could be improved by rendering them more precisely and at a larger area. only my code is very simple and too slow to do that.
23:17:05 <b_jonas> it wouldn't be hard to compute it properly
23:17:17 <int-e> Oh are you brutally computing nearest neighbours?
23:17:28 <b_jonas> but yes, choosing color well in some way is also a hard problem
23:18:05 <int-e> b_jonas: Sorry that may have come across as far more judgemental than it should be... I'd probably do the same.
23:18:16 <b_jonas> well, it's a good first pass to check how it works
23:18:26 <b_jonas> but then I could optimize it if I spent some time on it
23:18:48 -!- AnotherTest has quit (Ping timeout: 250 seconds).
23:19:10 * int-e isn't really into computational geometry.
23:20:31 <int-e> But actually... you can estimate the area based on pixels. Counting corners is harder :)
23:21:11 <b_jonas> I don't think you should color just according to number of corners or area. You could compute it, but I don't think that's the output I want.
23:23:51 <int-e> the idea is that in 2D you tend to have clusters of several small polygons, while in higher dimensions you actually get isolated small polygons much more frequently.
23:24:19 <int-e> And that's something that may become visible when coloring by area. I may also be completely wrong.
23:24:58 <b_jonas> int-e: yeah, but I'd prefer not to have adjacent areas with a similar color
23:25:10 <b_jonas> my random coloring fails that
23:27:54 <int-e> Ideally it should be a vector graphic and then one could actually draw edges...
23:28:19 <int-e> But I'd be too lazy to actually do it.
23:32:42 <b_jonas> int-e: you coudl do it, but you needn't. you can just optimize the pixel graphics properly.
23:47:47 -!- ais523 has quit (Quit: quit).
23:57:19 <int-e> b_jonas: So the 1979 paper (Valiant, "The complexity of computing the permanent") is inconclusive about the relation between (+)SAT and #SAT. The reduction to permanent multiplies the number of solutions by some 4^e where e = Theta(|F|), F being the input which is a formula in CNF with no unit clauses.