01:04:47 [[User talk:Fmbalbuena]] N https://esolangs.org/w/index.php?oldid=87717 * Fmbalbuena * (+26) Created page with "What now print("Say bye")" 01:07:32 -!- oerjan has joined. 01:58:29 -!- delta23 has quit (Quit: Leaving). 02:03:45 -!- Koen_ has quit (Quit: Leaving...). 04:48:52 -!- Hooloovoo has quit (Read error: Connection reset by peer). 04:54:39 -!- dyeplexer has joined. 05:05:29 -!- Hooloovoo has joined. 06:33:47 -!- spruit11 has quit (Ping timeout: 240 seconds). 06:36:47 -!- imode has quit (Ping timeout: 250 seconds). 06:47:48 -!- spruit11 has joined. 06:52:23 -!- spruit11 has quit (Ping timeout: 250 seconds). 07:17:41 -!- Sgeo has quit (Read error: Connection reset by peer). 07:20:57 -!- Sgeo has joined. 07:22:02 -!- spruit11 has joined. 07:26:56 -!- spruit11 has quit (Ping timeout: 250 seconds). 07:41:02 -!- spruit11 has joined. 07:45:07 -!- spruit11 has quit (Ping timeout: 240 seconds). 07:52:58 -!- immibis has joined. 08:05:49 -!- hendursa1 has joined. 08:09:30 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:35:11 [[Smileyface]] https://esolangs.org/w/index.php?diff=87718&oldid=87650 * Martsadas * (+130) /* Example programs: */ 08:36:03 [[Smileyface]] https://esolangs.org/w/index.php?diff=87719&oldid=87718 * Martsadas * (+24) 08:46:29 -!- spruit11 has joined. 08:50:41 -!- spruit11 has quit (Ping timeout: 250 seconds). 09:25:49 -!- oerjan has quit (Quit: Nite). 09:37:24 -!- arseniiv has joined. 09:56:25 -!- Sgeo has quit (Read error: Connection reset by peer). 10:21:41 -!- spruit11 has joined. 10:26:07 -!- spruit11 has quit (Ping timeout: 240 seconds). 10:44:05 -!- Koen_ has joined. 10:53:08 -!- spruit11 has joined. 10:57:39 -!- spruit11 has quit (Ping timeout: 250 seconds). 11:01:18 [[User:Hakerh400/Bijection between reals and the powerset of naturals]] N https://esolangs.org/w/index.php?oldid=87720 * Hakerh400 * (+3621) Created page with "In this article we explain how to establish a bijection between the set of real numbers and the powerset of natural numbers. == The existence of a bijection == If two sets h..." 11:01:48 [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=87721&oldid=82351 * Hakerh400 * (+74) 11:02:06 [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=87722&oldid=87721 * Hakerh400 * (+53) /* Articles */ 11:19:02 [[Special:Log/newusers]] create * Mara * New user account 11:32:34 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=87723&oldid=87710 * Mara * (+187) /* Introductions */ 11:45:52 -!- Koen_ has quit (Quit: Leaving...). 11:46:18 -!- earendel has quit (Quit: Connection closed for inactivity). 12:43:53 -!- PinealGlandOptic has joined. 13:39:24 -!- sebbu2 has joined. 13:42:10 -!- sebbu has quit (Ping timeout: 240 seconds). 13:43:42 [[User:Mara]] N https://esolangs.org/w/index.php?oldid=87724 * Mara * (+5) Created page with "Hello" 13:43:55 [[User:Mara]] https://esolangs.org/w/index.php?diff=87725&oldid=87724 * Mara * (+6) 13:44:18 [[User:Mara]] https://esolangs.org/w/index.php?diff=87726&oldid=87725 * Mara * (+6) 13:45:05 [[User:Mara]] https://esolangs.org/w/index.php?diff=87727&oldid=87726 * Mara * (+15) /* Hello */ 14:07:05 I had a discussion of homoiconicity elsewhere recently, and we couldn’t find any decent definition that wasn’t just “the language supports data structures expressive enough to represent an AST of itself”. 14:07:53 it's not just that you can represent the AST in the language 14:08:10 you also need a quotation operator that lets you get the AST in the same syntax as the language itself 14:08:46 e.g. in lisp '(+ 1 1) for (+ 1 1) whereas in c some horrible (struct bintree){ blah blah } thing for 1+1 is not homoiconic 14:09:04 So “homoiconic” means “has a quote operator”? 14:09:11 what? 14:10:05 Melvar: It means that the language hosts an embedding of its own syntax, interpreted as its own type: a type of program literals. 14:10:41 it doesn't need to be typed 14:10:50 Since a quote operator implies being able to represent the AST, “AST and quotation operator” is equivalent to just “quotation operator”. 14:10:59 Many folks also think that the language needs to have an eval() primitive, so that those program literals can be interpreted at runtime. Many languages are flexible enough to implement eval(), but that's optional. 14:11:25 riv: It's going to be typed according to the native type theory, even if the language claims to have no type system. Some inputs to eval() won't be legal. 14:11:52 > runQ [| 1 + 1 |] 14:11:54 :1:7: error: parse error on input ‘|’ 14:11:58 Aw. 14:11:59 why is type systems still a topic of debate 14:18:50 Basically, when people bring up homoiconicity as a benefit, my impression is that the actually-important things are: a macro system (otherwise manipulating ASTs has limited utility), enough quotation ability to apply the macro system to literal code, and possibly: A simple enough syntax to make manipulating ASTs take few cases, and/or this property I came up with: 14:19:09 “all data values in the language are also valid ASTs of the language.” 14:23:32 Macro systems are not necessary. After all, if ASTs are plain values, then the language's native procedures/functions/etc. should suffice for manipulating them. 14:24:46 yeah, i don't need macros to add two numbers, why would i need macros to merge two ASTs 14:24:50 What I’m saying is not that you need a macro system to manipulate ASTs, I’m saying that manipulating ASTs is not widely useful unless you can splice the resulting AST into your program. 14:25:30 why would you need macros for that instead of just functions? 14:26:00 Sure. Languages with multiple forms (expressions, statements, procedures, exports, etc.) might need multiple ways to do that splicing, not just eval(). 14:26:15 If your language is purely interpreted, splicing is equivalent to having an eval primitive. 14:26:44 oh, that depends on what eval means in this context imho 14:26:47 If it’s compiled, “eval” would be a misnomer in my book. 14:26:56 for me, eval is something that evaluates a string 14:27:38 It can evaluate a string or an AST, but that string or AST can be runtime data. A splice is a compile-time operation if you have a compile time. 14:27:44 "eval" is just the traditional name. What matters is that it takes AST fragments and evaluates them within a context. When the quotation system has symmetry, then "unquote" is a good name. "splice" is a good description of how some systems work. 14:28:07 myname: In E and relatives, eval() can take either an AST or a string; the string is simply parsed to an AST in the latter case. 14:32:39 Haskell+TemplateHaskell does not provide an interpreter, but a compile-time-only splice operation, which means to run the action in it at compile time and replace the splice with the resulting AST, which is then compiled as though it had been there from the start. 14:38:16 -!- spruit11 has joined. 14:42:47 -!- spruit11 has quit (Ping timeout: 240 seconds). 14:53:40 Melvar: I'd say that that's sufficient, because of a Haskell-specific nit. Go's another language with this nit. In Haskell and Go, expressions given at the REPL are only for a fragment of the language, and the language's semantics are really only defined for entire programs. So even if it feels like we're talking about interpreted concepts, the practical implementations have to be compiled. 15:02:57 -!- arseniiv has quit (Ping timeout: 248 seconds). 15:09:52 Hm. Can you give an example of such a fragment limitation for ghci? 15:16:24 [[Esolang talk:Sandbox]] https://esolangs.org/w/index.php?diff=87728&oldid=84072 * Fmbalbuena * (+11) 15:20:27 -!- ais523 has joined. 15:20:38 I'm not convinced that Prolog has a quote operator 15:21:07 With GHC 8.10, the REPL seems to humor me if I try to define a module, like with `module Foo where`, but doesn't actually create a new module. Since Haskell doesn't have first-class modules, I wouldn't expect this to be easy. 15:21:28 I agree that it's homoiconic, but it's more like things are quoted by default and get dequoted in a controlled way at runtime 15:23:22 I think OCaml's repl supports module operations, but they are first-class there 15:23:53 Melvar: To use the parlance of the Haskell Report, the REPL has an environment, and modules each have an environment too. But that's not all that the syntax allows during compilation; it also allows for a module to *export* things from its environment. 15:24:41 In general, lots of languages are built this way, where there's an "expression language" on the inside and a "module language" on the outside. 15:26:24 -!- spruit11 has joined. 15:26:41 I'm trying to remember whether Rust lets you declare a module inside a function 15:26:51 it wouldn't surprise me if it does 15:27:14 OTOH, Rust modules are basically just visibility barriers, so this wouldn't be that useful 15:30:32 My Monte language only allows modules at the beginning of files, but this is entirely because the parser is handwritten and fixing it would be a lot of effort. A Monte module is just a plain old object which happens to implement a simple interface, though. 15:31:10 -!- spruit11 has quit (Ping timeout: 240 seconds). 15:41:50 -!- PinealGlandOptic has changed nick to Everyone. 15:42:39 -!- Everyone has changed nick to Everything. 15:44:15 -!- Everything has quit (Quit: leaving). 15:44:29 -!- Everything has joined. 15:46:18 -!- spruit11 has joined. 15:51:07 -!- spruit11 has quit (Ping timeout: 240 seconds). 16:01:19 -!- spruit11 has joined. 16:06:27 -!- arseniiv has joined. 16:09:48 [[User talk:Fmbalbuena]] https://esolangs.org/w/index.php?diff=87729&oldid=87717 * Fmbalbuena * (-11) 16:25:47 -!- ais523 has quit (Ping timeout: 240 seconds). 16:34:24 -!- sebbu2 has changed nick to sebbu. 16:45:07 -!- imode has joined. 17:09:32 -!- Sgeo has joined. 17:48:29 Bah. dkimvalidator.com's result for an esolangs.org email now says "result = pass" in the actual DKIM check, but "DKIM_INVALID - DKIM or DK signature exists, but is not valid" in the SpamAssassin assessment. 18:18:54 (Go has a REPL?) 18:21:33 There have been several REPLs. https://github.com/golobby/repl for example. They assemble an entire Go program and call the compiler in the background. 18:22:41 Well, yes, of course people have written third-party REPL-like things. The discussion just made it sound like there's an official one. 18:26:45 Oh, sorry. FWIW there's no REPL in the Haskell Report either; GHC's REPL is not official. 18:32:19 zzo38: I don't like homoiconic languages, but if you want them, you should consider Amicus 18:32:20 What would defining a module in a repl even mean? 18:33:09 I personally prefer lisp as if it weren't homoiconic, without a quote operator, and in particular, olvashato has syntax similar to lisp but without a quote operator (or eval) 18:34:10 -!- dyeplexer has quit (Ping timeout: 240 seconds). 18:37:56 I suppose it would make sense if your repl were an interface to a persistent environment, rather than holding its own. 18:38:17 in fact I'd be satisfied even with a low-level CPU architecture that isn't homoiconic as far as user software goes, as in, user mode software sees data and code as entirely separate things, you can't read or write code, and you can ask a combination of the CPU and the OS to copy/compile code from a data segment to a possibly slightly different CPU-dependent format into a code segment. the hardware and 18:38:23 the OS would still have to know that code is allocated into normal RAM, so that the OS can split ordinary RAM from the same DDR4 RAM chips split into code memory, data memory (and paging tables and whatever system stuff is needed, and possibly some GPU nonsense) 18:40:44 as for macros, they shouldn't be necessary, but the problem is, our template and generic systems are never expressive enough, so in the end there's always something for which we need macros, even if we rarely dirty our hands with them and enclose them all into modules that export well-behaved abstractions 18:42:36 but if I do have macros, I want them to not work as manipulating data, because I want macros to run only during compile time, and full capability data manipulation only at runtime, though there'll be some core data manipulation behind them because I want macro and runtime alike to add or less-than small integers. and this is indeed what modern languages do. 18:43:15 `"eval" is just the traditional name.` => yeah. python and lua call them something else. 18:43:17 ​"eval"? No such file or directory 18:43:29 we can still call the concept "eval" just fine 18:44:36 -!- Everything has changed nick to Everyone. 18:45:11 -!- Everyone has quit (Quit: leaving). 18:46:00 ais523: I believe rust lets you do that, but you rarely want to, because anything you declare inside a function you usually can't name from outside the function 18:47:11 I think homoiconic can be helpful for some kind of interpreted programming languages, but when doing compiled programming it is not as good. PostScript has a "executeonly" command to prevent reading/writing a procedure; I don't know if any implementation is capable of automatically optimizing a procedure when executeonly is used. 18:47:49 [[Special:Log/newusers]] create * Pyrotelekinetic * New user account 18:54:37 How is "all data values in the language are also valid ASTs of the language"? (I think this is true of XML) 19:00:00 I had Lisp in mind. 19:00:35 At least some of the more basic lisps. 19:02:34 O, OK. 19:06:30 It’s true that it’s not actually “all”, but what I’m getting at is that there’s one data structure that’s used for nearly everything, including to represent nontrivial ASTs. 19:06:33 -!- chiselfuse has quit (Quit: leaving). 19:06:52 -!- chiselfuse has joined. 19:07:05 Melvar: then I still recommend Amicus. there's one data structure that represents code, lists, integers 19:07:35 In PostScript any object can be executed, although if it is not executable (whether or not it is executable is independent of its type, and it can be changed) then it is just pushed to the operand stack instead (so anything is allowed as a part of a procedure). They are not always inspectable; an operator object can only be executed or compared for equality (so you can check whether or not two operators match) 19:07:47 you can't tell in advance which one something in the program is supposed to be, you can only observe how it gets used, and the same thing in the program could get reused as more than one of those 19:07:52 But, yes, Amicus does have only one type (numbers) which is also the type of the program. 19:07:57 it's all untyped 19:10:56 So, I suppose Amicus is the most homoiconic one 19:11:24 it's all untyped 19:11:32 um, sorry for the repeat 19:12:00 zzo38: not necessarily, some of the low-level CPUs also have just one main memory and you can treat values in them as code, numbers, pointers 19:13:00 Yes, although they don't have data structures, I think 19:13:08 especially back in the 6502 days when RAM and CPU were synchronized to a megahertz or two, and caching wasn't a thing yet 19:13:56 zzo38: they have about as many data structures for data and code, so I think it still counts 19:14:14 there are 16-bit integers in both cases 19:14:25 well, more like 16-bit pointers 19:14:48 well 19:15:02 maybe z80 would be a better example for that sort of thing 19:15:07 or one of those motorolas 19:15:53 I do know how to do 6502 programming, though 19:16:22 do you know Amicus programming? nobody wrote more than a few very short example programs for it I think 19:16:48 Not very well, but by reading the documentation I can see how it works 19:20:15 -!- delta23 has joined. 19:58:48 [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=87730&oldid=84403 * Timwi * (+315) Problem creating account 19:59:02 [[User talk:Oerjan]] https://esolangs.org/w/index.php?diff=87731&oldid=71512 * Timwi * (+315) Problem creating account 20:01:44 Hmm. 20:02:05 Someone did manage to create an account just recently, so that's odd. 20:02:39 [[Special:Log/newusers]] create * JakkOfKlubs * New user account 20:04:38 [[User talk:Oerjan]] https://esolangs.org/w/index.php?diff=87732&oldid=87731 * Timwi * (+261) /* Problem creating account */ 20:04:52 [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=87733&oldid=87730 * Timwi * (+261) /* Problem creating account */ 20:06:18 Hrm. No swap, eh? 20:06:26 Oh just a cut&paste accident, nothing to see here, move on. 20:06:42 Next time it'll be another character. 20:07:57 Ah, I don't know. Maybe Discord (which apparently has a befunge-capable bot?) is important enough to support that way 20:08:44 For the record, the CAPTCHA program is of the form 9xxxxxxxxx>\#+:#*9-#\_$.@ where the x's are base-9 digits (0-8). 20:10:14 hmm, I wonder what discord is doing... is that a quoting mechanism, or is it really stripping backslashs? 20:10:24 if it's the former you can use \\\ 20:12:06 I still haven't figured out how to quote formatting characters on Discord. I even looked at their help pages. 20:12:36 `` cat <<<\\\# 20:12:37 ​\# 20:13:11 I largely pretend that Discord doesn't exist 20:14:24 I don't. 20:14:58 but I also don't think feel like we're required to change our captcha just because some interface to an interpreter doesn't like it 20:16:25 I guess \\\ would work (assuming that's what it turns into), though it is a little silly, especially since in both of those cases it's in the bidirectional section, so it'd end up doing five swaps in a row on the left-edge bounce for example. 20:16:35 Historically we've changed it when it stops working. 20:16:49 -!- hendursa1 has quit (Quit: hendursa1). 20:17:03 next we'll have to change our code to not contain a less than signs followed by a letter (without a space between) just because that one webpage with the J interpreter refuses it saying you can't put HTML tags into your code because XSS or whatever 20:17:20 b_jonas: see above, my gut reaction was not to bother 20:17:37 but if there are a lot of people coming from discord, then sure we can fix it, or add an alternate captcha mechanism that they can use 20:17:40 -!- hendursaga has joined. 20:18:00 The \\\ idea came later and seemed cute enough to mention. 20:18:07 I could probably just add a "mind the slashes" warning on the page. 20:18:17 would a \\\ actually work? 20:18:55 If I understood fizzie correctly, even \\ would work... on the Befunge side. 20:19:56 b_jonas: No clue about the Discord side; you seem to be the most knowledgable on that front. 20:20:11 int-e: maybe, but I've no idea how or why it even affects backslashes 20:20:22 or how the befunge interpreter reads it or anything 20:23:20 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=87734&oldid=87723 * JakkOfKlubs * (+139) 20:23:45 [[Special:Log/upload]] upload * JakkOfKlubs * uploaded "[[File:Efghij FANTA function.jpg]]": The FANTA (Fibonacci) function programmed in Efghij, made by JakkOfKlubs 20:24:40 do you know any channels about conlanging/conscripting/conworlding? 20:24:42 [[Efghij]] https://esolangs.org/w/index.php?diff=87736&oldid=81988 * JakkOfKlubs * (+1410) - Added FANTA. 20:25:27 [[Efghij]] https://esolangs.org/w/index.php?diff=87737&oldid=87736 * JakkOfKlubs * (+44) - FANTA fix. 20:27:40 [[Efghij]] https://esolangs.org/w/index.php?diff=87738&oldid=87737 * JakkOfKlubs * (+79) 20:32:25 Hmm. On the topic of just warning about slashes, seems that the CAPTCHA help texts (the in-line description and the linked-to [[Special:Captcha/help]] page) aren't easily editable. Unless there's a convenient way to customize localized strings somewhere. And I couldn't do that for all the 74 translations, anyway. 20:32:27 (Although AFAICT you can't even get the interface in a different language unless you've managed to create an account already, since we don't have Extension:LanguageSelector installed.) 20:33:55 Well, modulo adding ?uselang=X in the URL, I guess. 20:36:11 Oh, I guess all those strings (for the content language) are editable by changing content in the MediaWiki: namespace. Funky. 20:42:39 [[MediaWiki:Questycaptcha-createaccount]] N https://esolangs.org/w/index.php?oldid=87739 * Fizzie * (+347) Warn about backslashes, and also link to the Befunge article. 20:46:17 -!- Lord_of_Life_ has joined. 20:48:40 -!- Lord_of_Life has quit (Ping timeout: 240 seconds). 20:48:41 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 21:06:03 yes, we won't translate everything to every language ever 21:06:17 we have like a dozen translations of the `welcome 21:07:42 ``` /hackenv/bin/t*v*u*a* 21:07:45 Tervetuloa esoteeristen ohjelmointikielten suunnittelun ja käyttöönoton kansainväliseen keskukseen! Lisätietoa saat wikistämme: . (Muu esoteerisuus: kokeile kanavaa #esoteric joko EFnet- tai Dalnet-verkossa.) 21:09:14 ``` grep -Fl welcome.es /hackenv/bin 21:09:15 grep: /hackenv/bin: Is a directory 21:09:19 ``` grep -Fl welcome.es /hackenv/bin/* 21:09:21 ​/hackenv/bin/bienvenido 21:09:27 `bienvenido 21:09:29 ​¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: . (Para el otro tipo de esoterismo, prueba #esoteric en EFnet o DALnet.) 21:15:50 According to netsplit.de, there's still an #esoteric on DALnet but with only one user (registered 2021-06-16, topic "chat about anything esoteric"), and none on EFnet. 21:18:15 Oh, no, it's just a bad search. Yes, the EFnet one seems "right" (if that's the word). 21:19:30 (35 users and a "promising" topic.) 21:21:14 I don't think I've ever joined DALnet. it's not in my IRC config, and that thing goes way back in history 21:22:13 it has freenode, which is now three non-networks or something, and the freenode test servers, which only existed for two "short" (as IRC history goes) periods, and mozilla, which existed for a pretty long time until they destroyed it 21:25:28 I used to hang out on a DALnet channel or two, but I've even forgotten their names. 21:28:02 My "main" IRC log directory has just `auth`, `fizzie` and `nickserv` subdirectories under `dalnet`, all of which have only two files (2005-06.log, 2005-07.log), which I think means at that time I accidentally reconnected to DALnet but did not have any autojoin channels. 21:29:10 Someone else had registered my name on DALnet, it would appear from one of those files. 21:30:30 Hmm, ~/archive/backup/older/colin/old2/irclogs/DALnet has a few channel logs as well. 21:30:38 somehow "b_jonas" isn't a very valuable nick. I could get it almost everywhere. not on github, but I think on github it's an old account that I created at some point and I've no idea how 21:31:39 "fizzie" is moderately hard to grab, at least in more "mainstream" services. 21:32:34 Only one of the four channel logs have any discussion in them, so I think the other three are IRCnet channels where I accidentally typed /join in the wrong network. 21:52:02 -!- immibis has quit (Remote host closed the connection). 22:12:31 -!- Trieste has quit (Ping timeout: 252 seconds). 22:25:35 -!- Trieste has joined. 22:48:15 -!- arseniiv_ has joined. 22:49:40 -!- Noisytoot has quit (Ping timeout: 240 seconds). 22:50:35 -!- Noisytoot has joined. 22:50:40 -!- arseniiv has quit (Ping timeout: 240 seconds). 22:57:16 archive/backup/older -- what will be the next .../ prefix? 23:04:14 I have one called "hitachi" because it was a hitachi drive that died 23:10:46 [[Dc]] M https://esolangs.org/w/index.php?diff=87740&oldid=81545 * TheJonyMyster * (-1) removed comma after last adjective in adjective chain 23:16:44 "colin" is there because it was the hostname of a former computer. 23:36:44 -!- arseniiv_ has quit (Ping timeout: 250 seconds). 23:38:36 [[Efghij]] M https://esolangs.org/w/index.php?diff=87741&oldid=87738 * PythonshellDebugwindow * (+23) Category