00:14:25 <imode> int-e: brings to question how a lot of "concatenative languages" define what counts as a valid program.
00:18:25 <imode> if valid programs can be constructed via concatenation of arbitrary programs one must wonder what counts as a valid program.
00:19:53 <imode> the program `1 +` is valid in a concatenative language. and you can break that program apart by simply splitting it down the middle, into 1 and +.
00:21:00 <imode> so you could say that the "inverse" of concatenation would be, like, splitting it apart at any arbitrary point.
00:21:43 <imode> syntactically, any languages that use bracketed quotations aren't concatenative. if I split it apart and the brackets don't match on either side, it's not a valid program.
00:21:51 <imode> rather, the two halves aren't.
00:24:25 <imode> so what makes, say, '1 + apply' different than, say, ` + 1? I can split it all up into individual tokens and concatenate them again every which way, but only some combinations of those things are valid programs.
00:24:54 <imode> is it down to the semantics, then? that when I try to run `1 + apply`, I get a stack underflow because the thing I'm applying was binary?
00:25:55 <imode> is it that if I split "apply + 1" or "` + 1" up, or carve up any unlambda program, I won't get a valid underlying tree representation?
00:29:47 <imode> I don't know. I consider any valid program as "anything that can leave the underlying interpreter in a steady state".
00:59:27 -!- big_caballito has quit (Quit: installing glorious TempleOS).
01:03:05 -!- big_caballito has joined.
01:08:08 <esowiki> [[2020]] https://esolangs.org/w/index.php?diff=82527&oldid=82153 * EnilKoder * (+427) started PrimitiveType zooms
01:35:07 -!- delta23 has joined.
01:56:19 -!- copumpkin has quit (Quit: Hmmm).
02:11:11 -!- Sgeo has quit (Ping timeout: 240 seconds).
02:17:31 -!- Sgeo has joined.
02:25:40 -!- Sgeo has quit (Read error: Connection reset by peer).
02:31:42 -!- Sgeo has joined.
03:32:37 -!- xkapastel has quit (Quit: Connection closed for inactivity).
03:44:38 -!- Sgeo has quit (Read error: Connection reset by peer).
03:47:15 -!- Sgeo has joined.
04:08:17 -!- adu_ has joined.
04:10:09 -!- big_caballito has quit (Ping timeout: 265 seconds).
04:12:31 -!- big_caballito has joined.
04:15:32 -!- oerjan has joined.
05:08:27 -!- adu_ has changed nick to adu.
05:13:10 -!- Cale has quit (*.net *.split).
05:13:10 -!- stux|RC has quit (*.net *.split).
05:13:10 -!- sknebel has quit (*.net *.split).
05:13:10 -!- j-bot has quit (*.net *.split).
05:13:10 -!- lambdabot has quit (*.net *.split).
05:13:10 -!- V has quit (*.net *.split).
05:13:10 -!- zeroed has quit (*.net *.split).
05:13:11 -!- interruptinuse has quit (*.net *.split).
05:17:57 -!- stux|RC has joined.
05:23:53 -!- adu has changed nick to 07IAAGOW1.
05:23:55 -!- lambdabot has joined.
05:23:55 -!- Cale has joined.
05:23:55 -!- sknebel has joined.
05:23:55 -!- j-bot has joined.
05:23:55 -!- V has joined.
05:23:55 -!- zeroed has joined.
05:23:55 -!- interruptinuse has joined.
05:25:42 -!- 07IAAGOW1 has changed nick to adu.
05:26:43 <zzo38> imode: Maybe if it uses bracketed quotations, it can be said as a nested concatenative where the blocks are considered as atomic, then.
05:27:10 <imode> that's true. but it's pretty hacky.
05:30:14 <oerjan> if you have something like underload's * and a, you only need single-character blocks
05:30:46 <oerjan> and can compose the rest
05:32:01 <imode> that's right. but the resulting program state of a program that builds a quotation no longer corresponds to a valid program.
05:34:07 <imode> while you may build these objects, they are not directly representable without some kind of transformation back into the things that built them, which is not a 1:1 mapping.
05:35:08 <oerjan> well it can never be a 1:1 mapping if it's TC anyhow
05:35:48 <oerjan> you might choose a canonical form. but it might be awkward to work with.
05:36:05 <imode> yup, that's true. but it still stands that they're nit directly representable.
05:36:30 <oerjan> i mean you could choose a canonical form as the representation.
05:36:47 <imode> I'd still rather not have that intermediate transformation step.
05:37:10 <zzo38> It depends on the programming language, some might have atomic quotation blocks like I mentioned, in which case it might be representable
05:38:25 <imode> those aren't distinctly concatenative though unless you say "any division of a program needs to have a balanced set of parentheses".
05:38:33 <imode> s/parentheses/brackets
05:39:00 <imode> which imo if you're talking about program concatenation that's a different operation entirely.
05:39:12 <oerjan> well i am imagining an underload variant where e.g. (a) is represented as a single character.
05:39:37 <oerjan> so there are no brackets
05:41:06 <imode> true. but again, if I compose a quotation out of those atoms/quoted functions, there's no way to represent those as valid subprograms without translating them into subprograms that construct those quotations.
05:41:12 <oerjan> hm alternative idea: give some semantic to unmatched brackets
05:42:04 <oerjan> hm that reminds me of my underload interpreter in emmental, where there where 3 modes that a character could be interpreted in
05:43:15 <imode> you could give semantics to the unmatched brackets.. and that's kind of where the notion of valid program breaks down into the semantics of the language, I guess.
05:43:21 <zzo38> In PostScript you can have a block such as "{1 add}" which is treated as a single token, although you can also write "1 /add cvx 2 array astore cvx" which produces the same thing. They are also the same "kind of things"; "{1 add}" just produces the same object in the tokenizer, that the other produces several objects, which when executed, produce that.
05:43:52 <zzo38> Although, having different modes of interpretation is like how Forth is doing; once it reads : and then the name, then it is in compiling mode.
05:45:37 <zzo38> Programming languages such as Underload could be implemented in either way.
05:46:31 <imode> kinda gets back to "can I cleave an unlambda program in half and have either half be a valid program". if you have a tolerant enough interpreter, yes.
05:48:47 <zzo38> Yes, depending on the implementation it might, although Unlambda is more structured, so splitting it after half of the number of bytes will probably break the structure, but some interpreters may try to execute it anyways.
05:49:53 <imode> thing is, what structure? the structure is there because the apply operation is binary and expects two arguments. if its two arguments don't exist, it just doesn't reduce.
05:53:25 <zzo38> Yes, that is the structure. But, you could do it other ways in some implementations. In such a case, it would implement a superset of Unlambda, I suppose.
05:55:43 <zzo38> (Since, if the structure doesn't match, then I would think that that particular code then won't quite be Unlambda.)
06:22:51 -!- imode has quit (Ping timeout: 260 seconds).
06:38:44 -!- copumpkin has joined.
06:40:10 -!- copumpkin has quit (Read error: Connection reset by peer).
06:42:28 -!- oerjan has quit (Quit: leaving).
06:53:04 -!- adu has quit (Quit: adu).
07:34:53 <zzo38> The IBM Plex font is in FontLab format, which is proprietary, but looking at the source files, they are XML files, and possibly an open source implementation could be made, by examining the format of the XML files. Has such a thing been done?
08:08:11 -!- hendursaga has joined.
08:10:21 -!- hendursa1 has quit (Ping timeout: 240 seconds).
08:47:39 -!- LKoen has joined.
09:11:58 -!- Sgeo has quit (Read error: Connection reset by peer).
09:24:14 <nakilon> I just realised that every twitch channel is an IRC channel and you can join it at any time even if it's offline
09:24:50 <nakilon> and the guy who made the Nightbot is a damn genious to make it before others realised to make it
09:26:43 <nakilon> I'm not sure though if it's hosted on some server that keeps millions of socket connections to twitch or it's integrated with twitch infrastructure to emulate the botting
09:27:09 <nakilon> oh wait, he does not need millions of connetions, he just keeps one and joins channels
09:30:47 -!- user3456 has quit (*.net *.split).
09:30:47 -!- j4cbo has quit (*.net *.split).
09:36:52 -!- j4cbo has joined.
09:37:01 -!- user3456 has joined.
11:09:17 <esowiki> [[!@$%^&*()+/Algorithms]] https://esolangs.org/w/index.php?diff=82528&oldid=82516 * SunnyMoon * (+145) Finally, I have been building this for ages! I am pretty sure !@#$%^&*()_ will be turing complete if it can rotate the top three elements.
11:09:38 <esowiki> [[!@$%^&*()+/Algorithms]] M https://esolangs.org/w/index.php?diff=82529&oldid=82528 * SunnyMoon * (+1) -_-
11:16:27 <esowiki> [[!@$%^&*()+/Algorithms]] https://esolangs.org/w/index.php?diff=82530&oldid=82529 * SunnyMoon * (-113) This apparantly does not work
11:20:50 <esowiki> [[!@$%^&*()+/Algorithms]] https://esolangs.org/w/index.php?diff=82531&oldid=82530 * SunnyMoon * (+116) This does?
11:21:10 <esowiki> [[!@$%^&*()+/Algorithms]] https://esolangs.org/w/index.php?diff=82532&oldid=82531 * SunnyMoon * (-2) Huh?
11:26:46 <esowiki> [[!@$%^&*()+]] https://esolangs.org/w/index.php?diff=82533&oldid=82513 * SunnyMoon * (+190) A better parity program
11:55:29 -!- hendursaga has quit (Remote host closed the connection).
11:56:06 -!- hendursaga has joined.
12:52:01 -!- big_caballito has left.
12:52:56 -!- user24 has joined.
13:25:06 -!- TheLie has joined.
14:43:44 -!- TheLie has quit (Remote host closed the connection).
14:51:02 -!- user24 has quit (Quit: We must know, we will know).
14:56:15 -!- S_Gautam has joined.
15:06:07 -!- mniip has quit (Ping timeout: 630 seconds).
15:34:44 -!- devc` has left ("out").
17:00:33 -!- spruit11 has quit (Quit: leaving).
17:09:27 -!- spruit11 has joined.
17:11:24 -!- iovoid has quit (Remote host closed the connection).
17:15:40 -!- iovoid has joined.
18:02:26 -!- delta23 has quit (Read error: Connection reset by peer).
18:02:46 -!- delta23 has joined.
18:05:06 -!- iovoid has quit (Remote host closed the connection).
18:08:38 -!- iovoid has joined.
18:20:48 -!- imode has joined.
18:52:30 -!- Sgeo has joined.
18:55:51 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
19:00:36 -!- delta23 has quit (Quit: Leaving).
19:12:49 -!- TurkExportFood has joined.
20:08:04 -!- Lord_of_Life has quit (Ping timeout: 252 seconds).
20:08:20 -!- Lord_of_Life has joined.
20:44:03 -!- ProofTechnique has quit (Ping timeout: 248 seconds).
20:46:43 -!- TurkExportFood has quit (Quit: Leaving).
20:47:06 -!- ProofTechnique has joined.
20:54:53 -!- dnm has quit (Ping timeout: 258 seconds).
20:55:11 -!- dnm has joined.
20:55:15 -!- ^[ has quit (Ping timeout: 246 seconds).
20:57:28 -!- ^[ has joined.
21:54:06 -!- xkapastel has joined.
22:32:56 -!- zzo38 has quit (Ping timeout: 246 seconds).
22:39:42 <esowiki> [[Talk:TheSingularity]] https://esolangs.org/w/index.php?diff=82534&oldid=81161 * BrightBlackHole * (+186) /* Help! */
22:39:50 <esowiki> [[Talk:TheSingularity]] https://esolangs.org/w/index.php?diff=82535&oldid=82534 * BrightBlackHole * (+2)
22:41:19 <esowiki> [[Talk:TheSingularity]] https://esolangs.org/w/index.php?diff=82536&oldid=82535 * BrightBlackHole * (+0)
22:43:02 <esowiki> [[User:BrightBlackHole]] https://esolangs.org/w/index.php?diff=82537&oldid=78572 * BrightBlackHole * (+89) /* ok for real though */
22:43:22 <esowiki> [[User:BrightBlackHole]] https://esolangs.org/w/index.php?diff=82538&oldid=82537 * BrightBlackHole * (+0) /* ok for real though */
22:43:38 <esowiki> [[User:BrightBlackHole]] https://esolangs.org/w/index.php?diff=82539&oldid=82538 * BrightBlackHole * (-113) /* ok for real though */
23:01:52 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
23:04:52 -!- zzo38 has joined.
23:28:32 -!- mniip has joined.