←2020-04-07 2020-04-08 2020-04-09→ ↑2020 ↑all
00:04:58 -!- FreeFull has quit (Read error: Connection reset by peer).
00:05:08 -!- FreeFull has joined.
00:20:39 -!- Sgeo__ has joined.
00:24:00 -!- Sgeo_ has quit (Ping timeout: 256 seconds).
00:36:30 <esowiki> [[Parenthesis Hell]] M https://esolangs.org/w/index.php?diff=70709&oldid=18413 * IFcoltransG * (+4) Linked to inspiration, Lisp
00:41:08 <esowiki> [[Function x(y)]] M https://esolangs.org/w/index.php?diff=70710&oldid=70475 * PythonshellDebugwindow * (+80) /* Syntax */ Yes // is Integer divison
00:41:49 <esowiki> [[Function x(y)]] M https://esolangs.org/w/index.php?diff=70711&oldid=70710 * PythonshellDebugwindow * (-86) /* FizzBuzz */
00:46:26 <esowiki> [[Lisp]] https://esolangs.org/w/index.php?diff=70712&oldid=70114 * IFcoltransG * (+430) /* List processing */ Added section on pronunciations and composed cars and cdrs
00:51:38 <imode> maybe some common sense can set me straight: I'm building a service. bit of a "high-class" version of LambdaMOO with an economy attached to the middle of it. in it, I need to be able to run user-submitted code. arbitrary user-submitted code.
00:52:30 <imode> this code needs to be sandboxed. so, I turn to "popular" tools. node.js springs to mind. seems alright enough. I have a couple of things like a job queue, an SQL ORM, websocket support...
00:52:58 <imode> I'm at a crossroads between two options. do I use something like a Forth, or PostScript. or do I use sandboxed JavaScript.
00:53:21 -!- ais523 has quit (Ping timeout: 265 seconds).
00:53:48 <imode> I figured I'd first ask the esolangs channel because, why not. esolangs are kind of at the opposite end of the UX spectrum.
00:54:25 <FreeFull> imode: I'd do some sort of language-independent sandboxing instead
00:55:00 <imode> FreeFull: I'd take that route too. but there's a lot of variables associated with that.
00:55:01 <FreeFull> Actually, no, language-independent wouldn't be enough
00:55:27 <imode> bear in mind. user code runs per-command.
00:55:35 <FreeFull> Maybe Lua?
00:55:46 <imode> no good way to do memory limits.
00:55:55 <imode> or CPU time measurements.
00:56:18 <imode> imagine 10k+ users, all frothing at the chance to knock your machines out of memory.
00:57:54 <imode> it's essentially a choice between creating a slightly user-hostile environment, sacrificing user experience for simplicity and control, vs. using V8 isolates via an npm package called `isolated-vm`.
01:02:58 -!- baidicoot has quit (Ping timeout: 258 seconds).
01:03:27 <FreeFull> I'd go for something where there's a separate sandboxed process, and some sort of API to communicate with the main server process
01:08:32 <imode> I guess I'm also discounting what people did for the DCPU-16 or whatever that was.
01:09:17 <imode> for a game that never even released.
01:13:46 <FreeFull> You could have an entire virtual machine with its own instruction set, but that's definitely a bit overkill
01:14:20 <imode> I already have some prior work that does this.
01:15:15 <imode> which is why I'm torn. it brings up questions as to why JavaScript grew to be so popular, and whether an application's extensability mechanism will be used in spite of its current popularity.
01:20:38 <zzo38> Be careful if using the sandboxing in Node.js; use Object.create(null) to create the sandbox object, and don't put in any objects that come from outside of the sandbox.
01:20:53 <imode> I'd be using https://github.com/laverdet/isolated-vm
01:21:00 <FreeFull> Javascript is popular because it's pretty much only programming language all popular web browsers support
01:21:48 <zzo38> However, PostScript might work (in -dSAFER mode, which is now the default; you can also use writable systemdict to delete some entries that you don't want before locking it; for example, you probably don't need any of the graphics operations or device operations), and making your own variant of Forth could also work.
01:22:15 <zzo38> You could also use other implementations of JavaScript, and write your own interface to it.
01:22:59 <zzo38> There are many other possibilities too.
01:23:18 <imode> FreeFull: right. so it's popular based on the strength of its userbase, because its userbase is derived from people that use a web browser, and people that want to create things that fit in a web browser.
01:23:44 <zzo38> But in order to do memory limits and CPU time limits, you would do something else, such as setrlimit.
01:24:32 <zzo38> There is also, as mentioned, Lua, and also SQL, even. And actually there are many other possibilities too.
01:27:37 <imode> which possibilities will people actually tolerate, is the question.
01:28:20 <zzo38> I think different people may tolerate different things, perhaps.
01:28:57 <imode> I don't think my users want to do stack juggling in their heads.
01:29:20 <zzo38> Something that other programming languages can be compiled to might be helpful, maybe.
01:29:32 <imode> I was looking into WASM, but it's very immature.
01:32:00 <zzo38> I might use a VM such as Glulx, although as far as I know none of the other programming languages listed can be compiled as Glulx code (and you may need your own I/O system too; this is possible if needed)
02:03:05 -!- Phantom__Hoover has joined.
02:46:39 <esowiki> [[ALIMBIHNN]] https://esolangs.org/w/index.php?diff=70713&oldid=70209 * IFcoltransG * (+94) Add cats, because everyone loves cats
02:51:22 <esowiki> [[Brainfuck.NET]] https://esolangs.org/w/index.php?diff=70714&oldid=61456 * IFcoltransG * (+82) Some categories
02:52:39 <esowiki> [[Brainfuck Contest]] https://esolangs.org/w/index.php?diff=70715&oldid=56236 * IFcoltransG * (+37) Added category (even though it doesn't exist)
02:53:29 <esowiki> [[Brainfuck Contest 1]] https://esolangs.org/w/index.php?diff=70716&oldid=68696 * IFcoltransG * (+38) Added a nonexistent category
02:54:47 <esowiki> [[Brainfuck Contest 2]] https://esolangs.org/w/index.php?diff=70717&oldid=56237 * IFcoltransG * (+37) Added a category that as yet doesn't exist
02:57:12 <esowiki> [[Brainfuck Sharp]] M https://esolangs.org/w/index.php?diff=70718&oldid=49987 * IFcoltransG * (+18) Even though the language is gone, a date category is still helpful for the sake of history
02:58:46 <esowiki> [[Brainfuck Substitutor]] https://esolangs.org/w/index.php?diff=70719&oldid=51660 * IFcoltransG * (+76) Added a couple categories
03:02:17 <zzo38> Does the FOR command in Pascal have something like the STEP in BASIC?
03:05:10 <esowiki> [[Brainfuck derivatives with nontrivial computational class proofs]] https://esolangs.org/w/index.php?diff=70720&oldid=58333 * IFcoltransG * (+20) Added Proofs category
03:05:40 <esowiki> [[Brainfuck in Python]] M https://esolangs.org/w/index.php?diff=70721&oldid=57063 * IFcoltransG * (+28) Added implementation category
03:05:41 -!- ski has joined.
03:06:10 <esowiki> [[Brainfuck in Python]] M https://esolangs.org/w/index.php?diff=70722&oldid=70721 * IFcoltransG * (+1) Fixed Implementations category
03:07:30 <esowiki> [[Brainfuck]] M https://esolangs.org/w/index.php?diff=70723&oldid=53416 * IFcoltransG * (+81) Added some categories
03:25:39 <esowiki> [[Aperture]] https://esolangs.org/w/index.php?diff=70724&oldid=50609 * IFcoltransG * (+1349) Unblanked this page with a new joke language of my own invention
03:27:56 <esowiki> [[Joke language list]] https://esolangs.org/w/index.php?diff=70725&oldid=70045 * IFcoltransG * (+107) Added (re-added?) Aperture
03:30:47 <esowiki> [[User:IFcoltransG]] https://esolangs.org/w/index.php?diff=70726&oldid=70005 * IFcoltransG * (+116) Added Aperture lang
03:31:09 <esowiki> [[User:IFcoltransG]] M https://esolangs.org/w/index.php?diff=70727&oldid=70726 * IFcoltransG * (-3) /* Published Esoteric Languages */ removed extraneous word
03:47:26 <b_jonas> zzo38: look that up in http://rosettacode.org/wiki/Loops/For_with_a_specified_step
03:52:07 <zzo38> OK, they say it doesn't have it
03:53:45 <esowiki> [[Armok]] https://esolangs.org/w/index.php?diff=70728&oldid=61332 * IFcoltransG * (+69) Added some categories
03:54:05 <esowiki> [[Armok]] M https://esolangs.org/w/index.php?diff=70729&oldid=70728 * IFcoltransG * (-2) What is up with my spelling today?
03:57:15 <esowiki> [[Cactusi]] M https://esolangs.org/w/index.php?diff=70730&oldid=68799 * IFcoltransG * (+43) Added categories
04:20:55 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
05:04:57 <esowiki> [[Talk:Parenthesis Hell]] https://esolangs.org/w/index.php?diff=70731&oldid=69951 * IFcoltransG * (+327) /* Blog post */ new section
05:18:56 -!- tromp has quit (Remote host closed the connection).
05:24:23 -!- tromp has joined.
05:28:59 -!- tromp has quit (Ping timeout: 246 seconds).
05:56:12 -!- tromp has joined.
05:59:09 -!- kspalaiologos has joined.
06:00:29 -!- tromp has quit (Ping timeout: 246 seconds).
06:05:39 -!- imode has quit (Ping timeout: 260 seconds).
06:09:13 -!- Phantom__Hoover has quit (Ping timeout: 250 seconds).
06:17:37 -!- tromp has joined.
06:18:42 -!- kspalaiologos has quit (Quit: Leaving).
06:19:12 -!- kspalaiologos has joined.
06:19:48 <kspalaiologos> @tell ais523 the algorithm is instant. the BXn one I haven't published isn't.
06:19:49 <lambdabot> Consider it noted.
06:22:29 <kspalaiologos> @ais532 the state size makes the generator maybe go a bit faster, and allows some room for vectorization.
06:22:30 <lambdabot> Unknown command, try @list
06:23:57 -!- kspalaiologos has quit (Read error: Connection reset by peer).
06:44:49 -!- kspalaiologos has joined.
06:44:59 <kspalaiologos> sorry but my IRC client is going nuts
06:45:31 <kspalaiologos> @tell ais532 the state size makes the generator maybe go a bit faster, and allows some room for vectorization.
06:45:32 <lambdabot> Consider it noted.
06:47:57 <zzo38> Do you have a guess when pokemon numbers will exceed three digits and when pokemon numbers will exceed sixteen bits?
07:41:54 <kspalaiologos> if you're asking me => I don't know anything about pokemon(s)
07:59:40 <b_jonas> zzo38: exceed three digits => probably when the first pair of generation 9 pokemon games are released, in 2 or 3 years. sixteen bits => never, the video game franchise won't last that long.
08:02:05 <b_jonas> zzo38: however, it's possible that the National Pokedex numbering scheme will be abandonned some day, so there will be pokemon with no clear number in it. there are already variant pokemons with no separate numeric indexes.
08:02:46 -!- arseniiv has joined.
08:17:50 <myname> well, assuming they are using unsigned 16 bit and they will introduce 200 pokemon each year, it will happen 323 years after exceeding three digits
08:18:01 <myname> i would also expect that to be unlikely
08:22:40 -!- Phantom__Hoover has joined.
08:24:33 <int-e> . o O ( s/introduce/release/ )
08:27:57 <arseniiv> into the wild!
08:30:00 <int-e> You do have to capture them, don't you?
08:34:07 <kspalaiologos> #esoteric -> welcome to the world of pokemon & mtg fans, mathematicans and crazy harp tuners
08:34:32 <kspalaiologos> every single of these topics is something I don't understand :p
08:34:34 <arseniiv> someone maybe have to but I’m not interested, let them go forth and multip… er, live in peace
08:34:47 <arseniiv> int-e: ^
08:34:56 <arseniiv> kspalaiologos: crazy harp tuners?
08:35:10 <int-e> arseniiv: forth is another big mystery to me ;)
08:35:12 <kspalaiologos> `?q harp
08:35:14 <HackEso> ​?q? No such file or directory
08:35:17 <kspalaiologos> `q harp
08:35:18 <HackEso> 1280) <ais523> hmm, I just remembered that I was formally trained to tune harps
08:35:22 <kspalaiologos> ^ this
08:35:28 <arseniiv> ahh
08:35:48 <int-e> kspalaiologos: you forgot the punsters
08:36:14 <kspalaiologos> how could I... :p
08:36:44 <arseniiv> int-e: erm I retcon I actually meant “go fourth”, in light of harp tuning it makes more sense. Then they may go fifth and maybe a seventh and them bam microtonality and mass extinction
08:37:09 <arseniiv> `? harp
08:37:11 <HackEso> harp? ¯\(°​_o)/¯
08:37:21 <arseniiv> `? hairpin
08:37:22 <HackEso> hairpin? ¯\(°​_o)/¯
08:37:29 <arseniiv> `? harpoon
08:37:32 <HackEso> harpoon? ¯\(°​_o)/¯
08:37:35 <arseniiv> hm
08:38:10 <kspalaiologos> <kspalaiologos> why jbot died
08:38:10 <kspalaiologos> <b_jonas> kspalaiologos: int-e killed it so that you don't spam the channel :-)
08:38:14 <kspalaiologos> my favourite so far xD
08:38:51 <int-e> arseniiv: The fourth, the fifth, the minor fall, the major lift, the baffled king composing hallelujah?
08:39:20 <b_jonas> kspalaiologos: ais523 is the harp tuner, the crazy are some other ones of us #esoteric members
08:39:49 <int-e> `? alice
08:39:50 <HackEso> Alice doesn't want to go among mad people.
08:39:53 <arseniiv> int-e: oh, I actually didn’t know the lyrics so this is a coincidence
08:40:21 <kspalaiologos> yeah I remember
08:40:32 <arseniiv> though also there are far too many songs about songwriting
08:40:55 <arseniiv> like, are there that much paintings about painting?
08:41:07 <int-e> I only know this one because of Shrek.
08:41:10 <arseniiv> or sculptures of sculpting
08:41:40 <kspalaiologos> arseniiv, https://en.wikipedia.org/wiki/Category:Paintings_about_painting
08:41:46 <arseniiv> or esolangs abou… oh
08:41:54 <b_jonas> arseniiv: there are paintings about collecting paintings
08:41:59 <arseniiv> kspalaiologos: thanks :DD
08:42:03 <int-e> arseniiv: https://en.wikipedia.org/wiki/Drawing_Hands
08:42:04 <arseniiv> b_jonas: :o
08:42:09 <b_jonas> basically reader's digest paintings, so that kings can show their rich painting collection to other people
08:42:12 <b_jonas> serious
08:42:15 <arseniiv> ah, the hands I do know!
08:42:34 <b_jonas> I don't know many sculptures of sculpting
08:43:15 <kspalaiologos> a sculpture about sculpting would be hard to make
08:43:34 <int-e> movies about movies
08:43:35 <kspalaiologos> as far as I'm oriented in art, lol
08:43:44 <arseniiv> <b_jonas> the crazy are some other ones of us => is that property decidable?
08:43:45 <int-e> tv shows about television
08:43:45 <kspalaiologos> int-e, there's just too many of these, lol
08:44:09 <int-e> articles about journalism
08:44:25 <int-e> observations about observations
08:44:36 <int-e> where does it stop?
08:45:04 <int-e> human culture is too obsessed with itself ;)
08:45:24 <b_jonas> kspalaiologos: the parliament building has a bunch of small statues decorating the top of indoor columns, each depicting a different profession. they're pretty nice, but there's a surprising lack of photos of them on the internet, so I don't recall whether there's a sculptor. I think there's a painter.
08:45:53 <kspalaiologos> but it's fascinating
08:49:42 <kspalaiologos> is there a resource on binary lambda calculus that will explain it to me like I'm five?
08:50:27 <arseniiv> <int-e> where does it stop? => that’s precisely the question
08:51:32 <arseniiv> five is 101, so yes, no and yes^W^W^W^W^W^W^W^W
08:51:50 <kspalaiologos> alright so from what I can understand, one can simply create a lambda and execute it on a certain bit
08:52:07 <arseniiv> kspalaiologos: maybe the missing part is de Bruijn indices which are used there
08:52:19 <int-e> But 5 is 0000011100111001110011100111010 ;)
08:52:22 <kspalaiologos> and 1x0 construct lets you grab nth in the depth parameter?
08:53:00 <arseniiv> kspalaiologos: one can simply create a lambda and execute it on a certain bit => ah, not quite that. This is just plain lambda calculus, just expressed via bit strings
08:53:12 <int-e> kspalaiologos: Yes. https://en.wikipedia.org/wiki/De_Bruijn_index may help.
08:53:16 <kspalaiologos> I'
08:53:18 <kspalaiologos> m reading this
08:53:26 <kspalaiologos> why on this image attached 2 is reffering to the first lambda
08:53:43 <kspalaiologos> it skips two terms, right?
08:54:16 <int-e> kspalaiologos: it skips the green one; the blue and orange lambdas aren't in scope, so the red one is next
08:54:22 <b_jonas> kspalaiologos: sculptures of sculpture, see https://commons.wikimedia.org/wiki/Category:Sculptures_of_sculptors ; https://commons.wikimedia.org/wiki/Category:Carpeaux_au_travail is a good example, it shows a human holding a statuette and a tool in hands
08:54:22 <arseniiv> (okay I’ll go eat something already)
08:54:32 <kspalaiologos> okay
08:54:41 <kspalaiologos> I get it, theoretically
08:54:48 <kspalaiologos> still I can't see how can it be useful
08:54:49 <int-e> kspalaiologos: this may make more sense if you draw the term as a tree
08:54:52 <b_jonas> https://commons.wikimedia.org/wiki/Category:Monument_%C3%A0_Emmanuel_Fr%C3%A9miet_by_Henri_Greber_(1913) might be an even better example
08:55:28 <kspalaiologos> I wonder how much did it take to squeeze a brainfuck interpreter into this
08:55:41 <int-e> kspalaiologos: (a tree where lambdas have one child, and applications have two children... then you can resolve the indices by walking up the tree)
08:55:49 <arseniiv> b_jonas: thanks too
08:55:49 <kspalaiologos> fine
08:55:56 <kspalaiologos> I'll try to understand some examples
08:56:41 <kspalaiologos> how can this language have I/O
08:56:55 <kspalaiologos> it just outputs the final list/whatever?
08:57:18 <int-e> you pass in a (lazy) list of bits (or bytes) and produce a similar list of outputs as a result
08:57:20 <arseniiv> also it may be clearer if trying to write some functions on those terms, like substitution or something
08:57:39 <kspalaiologos> and one can supply input to the program, right
08:58:02 <kspalaiologos> from what I can see, this language seems to have the same problem of O(n) complexity when storing constants
08:58:12 <kspalaiologos> like this five you've posted is absurdly long
08:58:17 <int-e> So fundamentally you'll have to understand how data is encoded... that will probably take a while to become fluent with.
08:59:21 <int-e> kspalaiologos: It's only that big because it's the full Church numeral (\f\x. f (f (f (f (f x)))))
09:00:09 <kspalaiologos> (Outputting much more than 300 bits in Perl will land your computer in swap hell.) => lmao
09:00:19 <kspalaiologos> does blc consume this much memory?
09:01:22 <int-e> Asymptotically the program size doesn't matter... at a few hundred bits you can write decoders for much more efficient data formats.
09:02:13 <int-e> hmm. I suppose golfed blc code doesn't tend to be very friendly to garbage collection.
09:03:55 <int-e> Oh primes. The underlying algorithm uses a quadratic amount of memory I think (and the constant factor isn't small either).
09:04:10 <tromp> kspalaiologos: try reading https://tromp.github.io/cl/Binary_lambda_calculus.html
09:06:07 <int-e> The quadratic memory usage is a result of golfing; the constant factor could be improved by a better VM I suppose.
09:07:20 <tromp> int-e: i still need to fix the proof of the W2 rule. It's not true that B^V has (W^V)^+ W^V in head position
09:08:32 <tromp> the other observations still hold
09:09:07 <tromp> it would suffice to show that W^V is strict
09:09:55 <int-e> tromp: I'll take your word for it (still mulling over the problem myself)
09:10:08 <int-e> (so haven't looked at what your proposed generalization is)
09:31:43 -!- xelxebar has quit (Ping timeout: 240 seconds).
09:33:13 -!- arseniiv has quit (Ping timeout: 264 seconds).
09:34:42 -!- Lord_of_Life_ has joined.
09:34:59 -!- arseniiv has joined.
09:36:01 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
09:36:02 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
09:45:28 -!- xelxebar has joined.
09:54:28 <esowiki> [[Cactusi]] M https://esolangs.org/w/index.php?diff=70732&oldid=70730 * Salpynx * (+0) correct (I hope) year category
10:12:39 -!- MDude has joined.
10:23:11 <tromp> int-e: see latest commit for proof fix and added conjecture on which proof rests
10:30:06 -!- baidicoot has joined.
10:56:14 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
11:20:08 -!- Melvar has quit (Quit: WeeChat 2.4).
11:28:49 -!- Melvar has joined.
11:51:11 -!- baidicoot has quit (Ping timeout: 258 seconds).
12:02:28 -!- arseniiv has quit (Ping timeout: 256 seconds).
12:03:15 -!- arseniiv has joined.
12:47:52 -!- ais523 has joined.
12:48:50 -!- ais523 has changed nick to ais532.
12:48:52 <ais532> @messages
12:48:55 -!- ais532 has changed nick to ais523.
12:48:58 <ais523> @messages
12:49:37 <ais523> <lambdabot> mroman asked 5y 11m 9d 17h 22m 55s ago: can you do a "programming languages with no Hello world" list? ← I wonder if mroman is still interested in this
12:50:00 <ais523> if my nick had been correctly spelled the first time, there wouldn't have been the ~6-year wait
12:50:56 <ais523> <zzo38> Do you have a guess when pokemon numbers will exceed three digits and when pokemon numbers will exceed sixteen bits? ← there's a lot of evidence that Game Freak is planning to abandon the National Pokédex numbering scheme, so it's likely that the numbering scheme will change before either of those benchmarks are reached
12:53:32 <ais523> @tell mroman I think most esolangs don't have a hello world, in many cases because they aren't capable of producing text output; making a list of esolangs which can hello world but don't have one would likely have to be done manually and be very time consuming
12:53:32 <lambdabot> Consider it noted.
13:42:13 -!- rain1 has joined.
13:43:20 -!- baidicoot has joined.
14:06:16 <Taneb> Petition to start calling categories monoidoid (by analogy with semigroupoid, groupoid)
14:23:49 <esowiki> [[Special:Log/newusers]] create * EvoEvoEvoEvoLution * New user account
14:37:56 <rain1> hi
14:38:17 <APic> Yo
14:38:46 <esowiki> [[Neg]] M https://esolangs.org/w/index.php?diff=70733&oldid=65727 * PythonshellDebugwindow * (+2) /* Superpositions */ fix typo
14:45:27 <rain1> how are you doing?
14:46:03 <esowiki> [[Eso2D]] M https://esolangs.org/w/index.php?diff=70734&oldid=70371 * PythonshellDebugwindow * (+76) /* Truth-machine */
14:46:21 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=70735&oldid=70386 * PythonshellDebugwindow * (+67) /* Eso2D */ Added Eso2D
14:47:17 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=70736&oldid=70735 * PythonshellDebugwindow * (-6) /* XENBLN */ Updating
14:51:12 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=70737&oldid=70736 * PythonshellDebugwindow * (+115) /* DINAC */
14:52:28 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=70738&oldid=70737 * PythonshellDebugwindow * (+25) /* Implementations */
15:04:17 <esowiki> [[PlusOrMinus]] M https://esolangs.org/w/index.php?diff=70739&oldid=69838 * PythonshellDebugwindow * (+38) /* Resources */
15:11:51 -!- imode has joined.
15:12:33 <esowiki> [[PlusOrMinus 2]] N https://esolangs.org/w/index.php?oldid=70740 * PythonshellDebugwindow * (+1256) 2D version of PlusOrMinus
15:13:28 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=70741&oldid=70738 * PythonshellDebugwindow * (+327) /* PlusOrMinus 2 */
15:14:22 -!- kiedtl has joined.
15:16:11 <esowiki> [[PlusOrMinus 2]] M https://esolangs.org/w/index.php?diff=70742&oldid=70740 * PythonshellDebugwindow * (+10) /* Commands */
15:16:22 <esowiki> [[PlusOrMinus 2]] M https://esolangs.org/w/index.php?diff=70743&oldid=70742 * PythonshellDebugwindow * (+1) /* Commands */
15:30:50 <esowiki> [[Special:Log/move]] move * LegionMammal978 * moved [[Css Script]] to [[Css script]]: fix capitalization
15:32:46 <esowiki> [[Css script]] https://esolangs.org/w/index.php?diff=70746&oldid=70744 * LegionMammal978 * (-19) formatting
15:40:47 <esowiki> [[Cubically]] https://esolangs.org/w/index.php?diff=70747&oldid=52173 * LegionMammal978 * (+87) added repo link
15:41:59 <kspalaiologos> lmao what, css script?
16:05:12 <esowiki> [[D1ffe7e45e]] M https://esolangs.org/w/index.php?diff=70748&oldid=62325 * LegionMammal978 * (+14) fixed title
16:07:17 <ais523> the css script website appears to be a dead link already
16:07:33 <ais523> although the repo is up
16:09:00 <ais523> it appears to be a primitive-recursive language with a large number of primitives for graphical output
16:09:08 <ais523> I'm not sure what relationship it has to CSS
16:10:14 <ais523> ah no, I think it supports recursion, which would make it TC given bignums
16:10:20 <ais523> (e.g. you can implement Blindfolded Arithmetic)
16:10:56 <ais523> unless, hmm
16:11:11 <ais523> I don't think it has any conditionals and I'm not convinced that the arithmetic allows two variables as arguments
16:14:40 <ais523> OK, looking at the implementation, does seem to allow two variables, so yes, you can do Blindfolder Arithmetic
16:14:59 <ais523> and the relationship to CSS appears to be that the implementation's output is in CSS
16:16:07 <ais523> although, the output is hardcoded to go into the file C:/Users/Dell/Desktop/entry/git/css-script-candy/css_script/output.html, which strikes me as a fairly awkward API
16:16:46 <ais523> also the output appears to actually be HTML+CSS, not pure CSS
16:19:37 <ais523> that's a little disappointing, I was secretly hoping it would be CSS with a .html extension
16:22:42 <b_jonas> ais523: but doesn't the division operator do floating point division?
16:22:48 <b_jonas> also doesn't it use floating point numbers?
16:23:21 <b_jonas> if it's fixed size machine floats, then you can't do too much blindfolded arithmetic
16:25:09 <ais523> hmm
16:25:14 <ais523> I bet you could do something using floating-point errors
16:25:14 <b_jonas> hmm no, it is floor division, but it's still machine floating point
16:25:22 <ais523> if it really were float division)
16:25:23 <b_jonas> 64-bit floating point
16:25:32 <ais523> although it would still be sub-TC due to the floats only having finitely many values
16:25:52 <ais523> but Python has arbitrary-precision integers
16:26:02 <ais523> I'm not sure what happens if you add one of those to the floored result of a division
16:26:43 <b_jonas> python has arbitrary precision integers, but this impl doesn't do arithmetic on those
16:27:09 <b_jonas> https://github.com/Abdur-rahmaanJ/css-script/blob/master/css_script/main.py#L322
16:27:29 <b_jonas> float is the built-in floating point type, which uses 64-bit machine floats
16:27:53 <b_jonas> unless of course there's some trick elsewhere in that code
16:28:06 <ais523> it appears to use isdigit() to parse constants
16:29:18 <ais523> so constants are any strings consisting entirely of digits
16:29:44 <ais523> I think variables will be stored as Python integers throughout
16:30:02 <ais523> unless rand/sine/cos/abssine are used
16:30:20 <ais523> or, hmm, no
16:30:20 <b_jonas> was probably posted today to the wiki because it has a function called passover: https://github.com/Abdur-rahmaanJ/css-script/blob/master/css_script/main.py#L351
16:30:34 <ais523> if you assign a constant to a variable the value seems to be stored as a string (?)
16:30:52 <ais523> oh, I see
16:31:07 <ais523> it uses floats to do arithmetic, even though it uses ints to store the result of transcendental operations, and strings to store constants
16:31:21 <ais523> (constant numbers)
16:32:06 <ais523> so yes, sub-TC because each program can only have finitely many variables
16:32:19 <b_jonas> ais523: no, it uses int to store the input of the transcendental constants, and yes that's weird
16:32:25 <ais523> err, ints are for the /argument/ to the transcendental operation
16:32:29 <ais523> * operations
16:32:39 -!- baidicoot has quit (Ping timeout: 265 seconds).
16:32:47 <ais523> I cannot refute the hypothesis that types in this language were just picked at random until it appeared to work
16:33:32 <b_jonas> that said this seems ot be the sort of interpreter where the author just adds the features they need at the time, and they may edit more features into it later as they want to write more programs, so it might just eventually grow more powerful by the time
16:34:18 <ais523> yes
16:34:24 <ais523> maybe they'll even get the domain name they want!
16:36:30 <b_jonas> ais523: yes, they claim to be a web developer
16:37:20 <b_jonas> although they also claim to do "IoT" and "Machine learning" and "Desktop development" so it might just be a fashionable keyword for the cv
16:37:39 <ais523> I think they're a web developer, just probably not a very good one
16:41:44 <b_jonas> also has an introductory programming book at https://github.com/Abdur-rahmaanJ/Think-Python-Fr/blob/master/all_in_one.md , let me see if that has code that looks better
16:46:57 <ais523> the main issue I note is that the indentation is wrong
16:47:04 <ais523> which, considering that this is Python, is something of an issue
16:47:21 <ais523> not always, but sometimes
16:48:54 <ais523> ah, I see
16:49:04 <ais523> it's a translation of a book by someone else
16:49:15 <ais523> "traduction du livre: Think Python, How To Think Like A Computer Scientist d'Allan Downey"
16:49:33 <ais523> and apparently unfinished, because the formatting goes crazy towards the end
16:51:30 <b_jonas> ais523: yes, the indentation of some code got lost somewhere in the conversions
16:53:13 <b_jonas> yes, probably because it's in progress
16:54:11 <ais523> this helps confirm my belief that indentation-sensitivity is too fragile for a serious programming language
16:54:19 <ais523> because code may be conveyed in formats that don't retain indentation well
16:56:35 <ais523> <HTML> Collect a sequence of code points that are ASCII digits from input given position, and interpret the resulting sequence as a base-ten integer.
16:56:50 <ais523> it goes to a huge amount of trouble to specify everything in great detail, but forgets to specify the endianness here
16:56:56 <ais523> I wonder if I should submit a bug report
16:57:38 <ais523> also, apparently -0 is a valid nonnegative integer in HTML, which is interesting as nonnegative integers are defined with a different parser from integers
16:58:02 <ais523> ah, wait, it isn't
16:58:13 <ais523> the parser for nonnegative integers will accept it, but you aren't allowed to include a minus sign in the input
16:58:18 <b_jonas> the first 9 chapters are formatted correctly and the code indentation looks fine in them
16:58:21 <ais523> err, a hyphen-minus sign
16:59:13 <ais523> heh, the endianness of the fractional part of a float /is/ specified, even though the endianness of the integer part isn't
16:59:37 -!- baidicoot has joined.
17:01:24 <b_jonas> ais523: where is that from?
17:02:51 <ais523> I'm reading the HTML standard
17:03:04 <ais523> probably I won't get through the whole thing
17:03:09 <ais523> the specific page is https://html.spec.whatwg.org/multipage/common-microsyntaxes.html
17:04:14 <esowiki> [[Hello today I am a unicorn]] N https://esolangs.org/w/index.php?oldid=70749 * Hakerh400 * (+2592) +[[Hello today I am a unicorn]]
17:04:17 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=70750&oldid=70609 * Hakerh400 * (+33) +[[Hello today I am a unicorn]]
17:04:21 <esowiki> [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=70751&oldid=70591 * Hakerh400 * (+33) +[[Hello today I am a unicorn]]
17:13:48 <esowiki> [[Hello today I am a unicorn]] https://esolangs.org/w/index.php?diff=70752&oldid=70749 * Ais523 * (+524) explain why this is TC; remove reference list because there aren't any
17:22:15 <esowiki> [[The Great Spell]] M https://esolangs.org/w/index.php?diff=70753&oldid=69567 * Qwertyu63 * (-1)
17:23:17 <esowiki> [[The Great Spell]] https://esolangs.org/w/index.php?diff=70754&oldid=70753 * Qwertyu63 * (+71)
17:25:00 <esowiki> [[Hello today I am a unicorn]] M https://esolangs.org/w/index.php?diff=70755&oldid=70752 * Hakerh400 * (+1) fix typo
17:27:11 <esowiki> [[The Great Spell]] https://esolangs.org/w/index.php?diff=70756&oldid=70754 * Qwertyu63 * (+17)
17:29:07 <esowiki> [[PokBattle]] https://esolangs.org/w/index.php?diff=70757&oldid=49066 * Qwertyu63 * (+43) /* Syntax */
17:29:07 -!- baidicoot has quit (Ping timeout: 250 seconds).
17:30:15 <esowiki> [[PokBattle]] https://esolangs.org/w/index.php?diff=70758&oldid=70757 * Qwertyu63 * (+29) /* Commands/Moves */
17:31:20 <esowiki> [[PokBattle]] https://esolangs.org/w/index.php?diff=70759&oldid=70758 * Qwertyu63 * (+75) /* Pokemon */
17:35:58 -!- Phantom__Hoover has joined.
17:40:46 <arseniiv> <Taneb> Petition to start calling categories monoidoid (by analogy with semigroupoid, groupoid) => yesss
17:52:02 <arseniiv> no big secret we can do some calculations with affine geometry, dipping an affine space into a one-more-dimensional linear space and treating vectors from this (now) subspace as points and vectors parallel to it as point translation vectors. Introducing exterior algebra, one can even join two points into a line with using plain exterior product ∧ on them. But one can’t join two coplanar lines this way, as they would wedge to zero, b
17:52:02 <arseniiv> eing factorizable as a∧b and a∧c for some a, b, c. This boils down to the question, how can I calculate the union of two subspaces in an arbitrary linear space, using exterior algebra elements as representations of subspaces?
17:53:08 <arseniiv> (and also intersections, but we can just dualize a working way to do union after finding it)
17:55:09 <arseniiv> I read a bit things about “geometric algebra”, which is just an applied real Clifford algebra theory, and I hadn’t found a description of this failure to do meet. They seem to simply take ∧ and I can’t believe no one needed to compute a union of the sort I mentioned
17:55:35 <arseniiv> this is suspicious
18:05:47 <esowiki> [[DOGO]] M https://esolangs.org/w/index.php?diff=70760&oldid=30155 * LegionMammal978 * (+29) /* External resources */ fixed link
18:20:28 <b_jonas> `? ayacc
18:20:30 <HackEso> ayacc is ais523's yacc parser generator implementation, get it from darcs clone http://nethack4.org/projects/ayacc
18:21:10 <esowiki> [[User:PythonshellDebugwindow]] M https://esolangs.org/w/index.php?diff=70761&oldid=70572 * PythonshellDebugwindow * (+121) /* Languages */
18:23:36 <esowiki> [[User:PythonshellDebugwindow]] M https://esolangs.org/w/index.php?diff=70762&oldid=70761 * PythonshellDebugwindow * (+102) /* Possibly useful regexes */
18:28:50 <esowiki> [[Function x(y)]] M https://esolangs.org/w/index.php?diff=70763&oldid=70711 * PythonshellDebugwindow * (+53) /* FizzBuzz */ Fixed some errors
18:35:36 <esowiki> [[Function x(y)]] M https://esolangs.org/w/index.php?diff=70764&oldid=70763 * PythonshellDebugwindow * (+287)
18:36:30 <esowiki> [[Function x(y)]] M https://esolangs.org/w/index.php?diff=70765&oldid=70764 * PythonshellDebugwindow * (+1) /* FizzBuzz */
18:39:30 <esowiki> [[User:JonoCode9374]] M https://esolangs.org/w/index.php?diff=70766&oldid=69631 * PythonshellDebugwindow * (+14) /* MineFriff */ Fixing link to ><> and brainf
18:50:09 <esowiki> [[User:Hakerh400/How to write quines]] M https://esolangs.org/w/index.php?diff=70767&oldid=69424 * PythonshellDebugwindow * (+1) /* Initial draft */ typo fixed
19:07:31 <arseniiv> <arseniiv> this is suspicious => ah now I at least see why those linear meet and join need to evaluate to zero in the unfortunate cases. If the orientation of the result cannot be determined uniquely from orientations of the arguments, then zero is the only sensible option. Maybe I need to find another framework for affine subspace operations, then
19:07:47 <arseniiv> unfortunate, unfortunate
19:30:04 <ais523> by analogy with monoidoid and monoid, what is a mon?
19:32:49 <b_jonas> ais523: mon is abbreviation for Monday
19:34:07 <ais523> I don't think that works category-theoretically
19:38:52 <kspalaiologos> good night.
19:38:56 -!- kspalaiologos has quit (Quit: Leaving).
19:39:51 <esowiki> [[PlusOrMinus 2]] M https://esolangs.org/w/index.php?diff=70768&oldid=70743 * PythonshellDebugwindow * (+346) /* Auto-formatting */
19:45:19 <esowiki> [[Dc]] M https://esolangs.org/w/index.php?diff=70769&oldid=55321 * LegionMammal978 * (+14) fixed title
19:45:49 <Sgeo__> Why did I rekindle my interest in Tcl? It's a ridiculously unsafe language if used wrong, and whenever I write Tcl code I invariably end up with a memory leak because of fundamental limitations to its GC
19:50:04 <esowiki> [[DcScript]] M https://esolangs.org/w/index.php?diff=70770&oldid=69670 * LegionMammal978 * (+14) fixed title
19:50:23 <imode> because it's incredibly tempting.
19:58:03 <ais523> I don't know much Tcl
19:58:16 <ais523> it looks intruiging but I've never had a sufficiently compelling use case for it to be worth learning it
19:58:24 <ais523> (although, I did learn enough to add it to the polyglot)
20:01:37 <fizzie> I seem to recall Eggdrop was scripted most commonly in Tcl.
20:01:44 <ais523> b_jonas: why the check of ayacc, incidentally?
20:01:46 <zzo38> Some of the building of SQLite and its documentation is using Tcl, I think.
20:01:50 <ais523> I can currently work on it a bit more freely than usual
20:01:53 <ais523> but haven't had a need to
20:04:36 <b_jonas> ais523: someone on IRC mentioned that they made a different custom yacc for some project they need, plus a lexer to go with it
20:04:56 <b_jonas> ais523: http://repo.hu/projects/byaccic/ with a push parser (stackless)
20:05:22 <zzo38> (Although, I think the coding for generating source files should be written in C and/or shell scripts, the coding for documentation generation should be written in PostScript, and the testing codes should be both Tcl and C.)
20:05:29 <b_jonas> also they searched for "ayacc" on google and found a different yacc that generates ada code or some such
20:05:39 <b_jonas> https://github.com/Ada-France/ayacc
20:05:44 <b_jonas> apparently the name is not unique enough
20:06:30 <b_jonas> maybe you should have called it aiyacc
20:07:09 <zzo38> Some things are going to have the same name due to not knowing that is something else called that, I will think, and other reasons too
20:07:45 -!- rain1 has quit (Quit: Lost terminal).
20:07:47 <zzo38> Another alternative to yacc is Lemon
20:08:05 <b_jonas> zzo38: we did look at that, but we agreed with ais523 that we don't like its interface
20:08:30 <ais523> I have been planning a more radical parser framework of my own, separate from ayacc (which exists to run pre-existing yacc programs)
20:08:53 <b_jonas> oh no... not a framework. I hate frameworks
20:09:03 <b_jonas> those are always the worst software to actually work with
20:09:04 <ais523> well, not a framework in /that/ sense, probably at least
20:09:13 <ais523> the basic idea is to combine the parse and lex phases via allowing the use of a state machine (effectively a regular expression) to do lookahead
20:09:51 <zzo38> Yes, if you do not like Lemon, then you do not have to use it, although I like the features of Lemon (although the documentation for Lemon now says that apparently Bison also has some of these features too, so it will work too).
20:09:52 <ais523> this means that if the grammar requires unlimited lookahead to function correctly (which it will in many cases), you will still need two passes over the input, although this time the first one goes backwards and the second one goes forwards
20:10:06 <ais523> zzo38: which specific features do you like?
20:10:39 <ais523> the other basic idea is, instead of running user-supplied code to split the input into data structures, to use optimized general-purpose data structures that are more efficient than linked trees
20:11:07 <ais523> although this means they can't be changed in-place, rather code that manipulates them works by treewalking an existing tree and creating a new tree as it does so
20:11:28 <ais523> the idea is to take advantage of vectorisation and memory locality
20:11:41 <zzo38> That you can have multiple parsers.
20:11:59 <zzo38> The tokenizer calling the parser is also useful for some programs.
20:12:24 <ais523> multiple parsers are trivial to implement even in yacc
20:12:35 <ais523> by adding an extra token at the start to choose between them
20:12:41 <ais523> although ayacc allows a more direct API for that
20:12:48 -!- Maris has joined.
20:13:04 <Maris> ohi
20:13:19 <ais523> hi Maris
20:13:39 <zzo38> The %fallback command is also useful for some programs, such as SQLite, and so are some of the other commands.
20:17:14 <zzo38> ais523: O, OK. I should look at the ayacc, although it is just a 403 error apparently because it requires darcs to work (although maybe 406 is better, or perhaps is better for it to download the files anyways, such as in a tape archive)
20:20:41 <ais523> zzo38: I can try to create a tarball for you, give me a moment
20:21:54 <ais523> zzo38: try http://nethack4.org/pastebin/ayacc-2020-04.tar.gz
20:22:21 <ais523> although, it will unpack into a folder called "mainline"
20:22:27 <ais523> it's actually ayacc though
20:23:26 <zzo38> OK, I downloaded that.
20:23:27 <b_jonas> zzo38: fun, that's what everyone complains about. I just pasted it temporarily to https://dpaste.org/qorS/raw though.
20:23:49 -!- baidicoot has joined.
20:24:26 <b_jonas> `? ayacc
20:24:27 <HackEso> ayacc is ais523's yacc parser generator implementation, get it from darcs clone http://nethack4.org/projects/ayacc
20:24:45 <b_jonas> `learn ayacc is ais523's yacc parser generator implementation, get it from http://nethack4.org/pastebin/ayacc-2020-04.tar.gz or from darcs clone http://nethack4.org/projects/ayacc
20:24:48 <HackEso> Relearned 'ayacc': ayacc is ais523's yacc parser generator implementation, get it from http://nethack4.org/pastebin/ayacc-2020-04.tar.gz or from darcs clone http://nethack4.org/projects/ayacc
20:24:55 <b_jonas> hmm no wait
20:24:57 <b_jonas> `? rules of wisdom
20:24:59 <HackEso> unless essential for the entry‘s humor, \ they should: be understandable without the lookup key, be single spaced and end in a newline with no space before that, and use proper capitalization and punctuation
20:25:28 <b_jonas> `learn ayacc is ais523's yacc parser generator implementation, get it from http://nethack4.org/pastebin/ayacc-2020-04.tar.gz or from (darcs clone http://nethack4.org/projects/ayacc) .
20:25:30 <HackEso> Relearned 'ayacc': ayacc is ais523's yacc parser generator implementation, get it from http://nethack4.org/pastebin/ayacc-2020-04.tar.gz or from (darcs clone http://nethack4.org/projects/ayacc) .
20:25:38 <ais523> b_jonas: the pastebin thing is only temporary, I think
20:25:40 <b_jonas> is that the proper punctuation? or do I double-quote the first url?
20:25:41 <ais523> because it won't automatically update
20:25:45 <zzo38> You should fix the error message so that it tells you to use darcs or to download the .tar.gz file.
20:25:49 <b_jonas> ais523: yes, I said I temporarily pasted it there
20:26:03 <ais523> b_jonas: no, I mean the NH4 pastebin
20:26:07 <b_jonas> oh
20:26:12 <ais523> also, I believe the proper quotes for a URL are <>
20:26:24 <b_jonas> ais523: no, it's either double quotes or angle brackets, and I prefer double quotes
20:26:26 <ais523> I'm not sure on the proper quotes for a shell command, but I like «» because anything else seems potentially ambiguous
20:26:39 <b_jonas> I use parens for a shell command because that's actual shell syntax
20:27:11 <b_jonas> `learn ayacc is ais523's yacc parser generator implementation, get it from (darcs clone http://nethack4.org/projects/ayacc) or a snapshot from "http://nethack4.org/pastebin/ayacc-2020-04.tar.gz".
20:27:14 <HackEso> Relearned 'ayacc': ayacc is ais523's yacc parser generator implementation, get it from (darcs clone http://nethack4.org/projects/ayacc) or a snapshot from "http://nethack4.org/pastebin/ayacc-2020-04.tar.gz".
20:27:36 -!- ski has quit (Ping timeout: 256 seconds).
20:28:19 <ais523> oh, parens are plausible, they'd be no-ops in most circumstances
20:28:32 <ais523> although not in cases where the command would run differently in a subshell
20:28:44 <ais523> there's a difference between «cd /tmp» and «(cd /tmp)»
20:33:17 -!- Maris has quit (Remote host closed the connection).
20:33:46 -!- nona has joined.
20:39:17 <b_jonas> ais523: I'm not sure it even makes sense to embed a shell command that doesn't run in a subshell into non-shell text. is there a shared library version of the shell that can run in other processes to do that?
20:39:35 <b_jonas> like for that cd thing
20:41:32 <ais523> b_jonas: you clearly haven't come across /bin/cd yet
20:41:49 <ais523> although admittedly that one was a joke
20:42:00 <b_jonas> you can embed perl or python that way and call their chdir functions and it affects the whole process
20:42:13 <ais523> although, if you're giving someone instructions
20:42:23 <ais523> it makes sense to intersperse shell commands and text, doesn't it?
20:42:34 <b_jonas> yeah, it can make sense
20:43:09 <b_jonas> maybe someone made a literate shell syntax somewhere, where every line not prefixed with a > is a comment that is used only when you typeset the program
20:43:32 <b_jonas> but the embeddable shell library sounds more esoteric
20:45:01 <ais523> why do languages have their own literate syntaxes, anyway?
20:45:20 <ais523> wouldn't it be more sensible to have a document format designed for literal programming, that can compile into a programming language?
20:45:26 <ais523> but it doesn't care about which one you're using
20:46:01 <b_jonas> ais523: there is such a generic preprocessor I think, but the problem is that a lot of languages use most ascii characters, so there's no single quote format that's convenient for everything
20:46:17 -!- baidicoot has quit (Ping timeout: 256 seconds).
20:47:01 <ais523> well, prefixing lines with > is pretty convenient for everything
20:47:36 <ais523> that can't possibly clash with anything in the program, the only potential clashes would be with the /document/
20:47:50 <b_jonas> ais523: sure, but then you want to refer to code snippets in the documentation part, and that's what gets ugly in them, as well as in all the javadoc/doxygen syntaxes too
20:48:10 <ais523> you mean, without them running?
20:48:12 <b_jonas> also some preprocessors allow you to change some or all of the magic characters, see https://esolangs.org/wiki/SIMPLE_(preprocessor)
20:48:31 <ais523> that seems to contradict the idea of literate programming a little
20:48:36 <b_jonas> ais523: usually yes, but I think CWEB even has some preprocessor macro thing that it can insert into code blocks or something
20:48:50 <ais523> incidentally, I realised that POD is a sort of mix between literate and illiterate programming
20:48:57 <b_jonas> I don't really know how this works, I don't really like literate programming so I never use it
20:48:58 <ais523> instead of having a comment marker for non-code, or a code marker for code
20:49:12 <b_jonas> having comment blocks and comment headers, doxygen-like, that's fine
20:49:12 <ais523> it has separators that are placed between code and non-code (and vice versa)
20:49:25 <b_jonas> and having a preprocessor can be interesting too
20:49:39 <arseniiv> ah, as the topic was about parsing a while back, how often do you encounter regex libraries supporting streams of arbitrary objects and not just characters? and maybe regexes for tree-like structures, do those exist at all?
20:50:25 <ais523> the former definitely should exist, but maybe doesn't
20:50:38 <ais523> what properties do these arbitrary objects have that distinguishes them from characters?
20:50:40 <b_jonas> I was actually thinking of a preprocessor variant of Consumer Society too. It needs three magic characters, but you can't find three convenient characters that work in all programming languages, so you'd use eg. `@$ in C but `?$ in python or something
20:51:07 <b_jonas> and I think `$~ in rust
20:51:25 <zzo38> CWEB also has the commands to specify if the next section is a named program block, unnamed program block, or documentation; you don't need any prefix for each line. WEB does more preprocessing though, in order to implement things that Pascal doesn't do by itself (although some modern implementations will do those things automatically).
20:51:27 <b_jonas> arseniiv: there are regex libraries that support arbitrary byte streams
20:51:38 <ais523> isn't @ unused in Rust at the moment?
20:51:42 <b_jonas> ais523: no
20:51:48 <ais523> ah, it got recycled?
20:51:48 <b_jonas> ais523: @ is used for bind patterns like in haskell
20:51:51 <arseniiv> also do you like parser combinators receiving arbitrary tokens and not just characters, and how much useful do you think is parser-driven tokenization (when the source can be tokenized differently based on what parser expects)
20:52:33 <ais523> arseniiv: parser-driven tokenization is required for some languages, if you want to have a separate parser and lexer
20:52:43 <ais523> but I think combining the parser and lexer is a more interesting goal
20:52:45 <b_jonas> ais523: as in if let x@C(y,z) = t { # matches if t has the constructor C, and binds fresh variables x, y, z
20:53:01 <b_jonas> $ is used for metaprogramming though, also like in haskell
20:53:17 <ais523> parser-driven tokenization is really confusing, though, so it's normally avoided where it isn't required
20:53:28 <arseniiv> b_jonas: Python has byte stream regexes too, though there’s a strange issue with named group names (non-ASCII names allowed for some reason)
20:53:40 <zzo38> I think PCRE supports byte streams (it can also use UTF-8 though).
20:53:42 <ais523> an example of where it's used in practice is parsing precedence overrides in C-INTERCAL
20:54:26 <b_jonas> SIMPLE allows you to override each of its magic characters, but that doesn't help you too much if you want convenient syntax, because it has like a dozen magic characters
20:54:40 <arseniiv> <ais523> parser-driven tokenization is really confusing, though, so it's normally avoided where it isn't required => I was afraid that would be the case, and that’s why it came to mind to ask, yeah
20:54:41 <b_jonas> it's also hard to use for other reasons
20:55:18 <ais523> arseniiv: it's worth mentioning that INTERCAL's grammar is actually ambiguous
20:55:29 <b_jonas> I wish I could definitely claim that it's esoteric, but there is a little evidence that David wrote it to preprocess some HTML files that are non-esoteric originally, so it's not pure esoteric in purpose
20:55:33 <ais523> the INTERCAL-72 manual has a note which basically just says "don't write programs that do that, it probably won't work"
20:56:30 <ais523> and there are some programs which are technically unambiguous but need infinite lookahead to sort the "ambiguity" out, so C-INTERCAL can pick the wrong parse earlier on
20:56:48 <ais523> (the manual gives it explicit permission to do that, though, probably because the original implementation had the same problem!)
20:56:53 <b_jonas> ais523: well, INTERCAL was created when ambiguous FORTRAN was one of the most used programming languages, so it makes sense that it takes _that_ feature from it
20:57:10 <ais523> what's the ambiguity in FORTRAN?
20:57:26 <b_jonas> ais523: I think it's not actually ambiguous, just requires too much lookahead
20:57:30 <b_jonas> I'm not sure
20:57:52 <arseniiv> <ais523> what properties do these arbitrary objects have that distinguishes them from characters? => for example they can be a countable set, but nonetheless with several known subsets and constants to use in matching. Though that still can be encoded via byte sequences, yeah
20:57:55 <b_jonas> something like in basic where it doesn't require whitespace, so DOFOO=2 is an assignment, DO FOO=2,3 is a loop head, but the space doesn't matter
20:58:02 <b_jonas> and the 2 can be a complicated expression
20:58:26 <b_jonas> just like A XOR 1 vs AX OR 1 in some old basic interpreters
20:58:28 <ais523> I'm not used to FORTRAN program using multiple-character variable names :-D
20:58:41 <b_jonas> ais523: what, they can have variable names up to 6 characters
20:58:46 <ais523> b_jonas: oh, there's an ambiguity like that in INTERCAL too!
20:58:48 <b_jonas> that's much better than basic, with its 2 characters
20:58:59 <ais523> DO READ OUT #1 versus DO REA DO UT #1
20:59:21 <ais523> that one caught out a few lesser-known INTERCAL interpreters when people started golfing
20:59:22 <zzo38> Can you put parentheses to resolve the ambiguity?
20:59:37 <ais523> zzo38: INTERCAL doesn't use parentheses as precedence overrides
20:59:40 <zzo38> At least some BASIC programs I have seen they only use one letter for variable names, sometimes followed by digits too
20:59:46 <zzo38> ais523: Yes, I mean in BASIC
20:59:55 <ais523> however it has two different precedence override syntaxes and you can always solve an ambiguity caused by one by using the other instead
20:59:58 <b_jonas> ais523: wait, how is that disambiguated?
21:00:03 <b_jonas> and what's UT?
21:00:11 <ais523> b_jonas: it isn't but syntax errors are legal in INTERCAL
21:00:13 <b_jonas> does that work only when the statement is only ran when ignored?
21:00:16 <b_jonas> yeah
21:00:43 <ais523> I think all current interpreters arbitrarily ignore the DO in DO READOUT, at least if the statement is otherwise syntactically valid
21:00:45 <b_jonas> zzo38: yes, one letter is shorter
21:00:53 <ais523> it's unclear whether this is the correct course of action or not
21:01:02 <ais523> but it's INTERCAL, the spec is not exactly the most unambiguous of things
21:01:32 <ais523> incidentally, at least one INTERCAL programmer has seriously argued that spaces should be permitted inside keywords and even inside numerical constants and variable names
21:01:41 <ais523> but that isn't widely implemented
21:01:47 <arseniiv> <ais523> however it has two different precedence override syntaxes and you can always solve an ambiguity caused by one by using the other instead => esoteric
21:02:24 <ais523> arseniiv: Google's style guide suggests alternating between them to a) avoid any risk of an ambiguity that confuses the compiler, b) make it easier to read for a human
21:02:38 <b_jonas> ais523: are they storing INTERCAL programs on 5-bit ticker tape?
21:03:01 <ais523> I don't think so
21:03:08 <arseniiv> ais523: wait, there’s a Google style guide for INTERCAL? :o
21:03:10 <b_jonas> or transfer it by 5-bit modem?
21:03:15 <ais523> in fact there's no real evidence that Google has written any more than one INTERCAL program
21:03:22 <ais523> arseniiv: it was part of their April Fools thing one year
21:03:47 <Sgeo__> Tcl's return is... complicated.
21:03:57 <arseniiv> ais523: that’s probably neat :F
21:03:59 <arseniiv> :D *
21:04:13 <ais523> it's offline nowadays, and the Internet Archive is down
21:04:19 <ais523> I have a saved local copy but will need to check the license before rehosting it
21:04:38 <arseniiv> don’t worry, the sole existence of it is enough for me :)
21:05:09 <arseniiv> I don’t know enough INTERCAL to appreciate the style guide sufficiently
21:05:17 <arseniiv> (maybe)
21:05:23 <ais523> the funny thing is, their INTERCAL program had a bug (or at least a nonportability)
21:05:30 <ais523> I sent them a pull request and they gave me commit access
21:05:39 <ais523> the repo ceased to exist shortly afterwards, when they closed the repo host
21:05:50 <ais523> so I was probably the only person outside Google to ever have commit access to it
21:06:31 <ais523> ugh, no explicit license on the repo :-(
21:06:35 <ais523> so I guess it's default-all-rights-reserved
21:06:48 <arseniiv> <ais523> so I was probably the only person outside Google to ever have commit access to it => hehe
21:07:54 <arseniiv> oh, btw if someone uses Freesound.org, they had an anniversary a couple days ago
21:09:23 <ais523> hmm, I found an archive of the program itself, on a Google host, with an apache2 license on it
21:09:29 <ais523> unfortunately the style guide is not in the same archive
21:10:24 <ais523> thus the license doesn't apply to it
21:13:15 -!- baidicoot has joined.
21:18:07 -!- baidicoot has quit (Ping timeout: 265 seconds).
21:21:19 -!- ais523 has quit (Quit: quit).
21:33:45 -!- Lord_of_Life_ has joined.
21:36:34 -!- Lord_of_Life has quit (Ping timeout: 256 seconds).
21:36:35 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
21:49:11 <esowiki> [[Derpcode]] M https://esolangs.org/w/index.php?diff=70771&oldid=59452 * LegionMammal978 * (+14) fixed title
22:11:51 -!- nona has quit (Quit: Ping timeout (120 seconds)).
22:28:58 -!- baidicoot has joined.
22:37:55 -!- baidicoot has quit (Ping timeout: 256 seconds).
22:50:54 -!- arseniiv_ has joined.
22:53:37 -!- arseniiv has quit (Ping timeout: 264 seconds).
22:57:22 -!- arseniiv_ has quit (Ping timeout: 265 seconds).
23:11:48 -!- tromp has quit (Read error: Connection reset by peer).
23:12:23 -!- tromp has joined.
23:23:07 -!- baidicoot has joined.
23:25:14 -!- baidicoot has quit (Client Quit).
23:34:36 -!- Phantom__Hoover has quit (Ping timeout: 265 seconds).
←2020-04-07 2020-04-08 2020-04-09→ ↑2020 ↑all