←2025-02-11 2025-02-12 2025-02-13→ ↑2025 ↑all
00:11:37 -!- Sgeo has joined.
00:24:57 -!- fungot has quit (Ping timeout: 246 seconds).
00:36:27 -!- Celeo has quit (Quit: Celeo).
00:49:56 -!- Noisytoot has quit (Killed (tantalum.libera.chat (Nickname regained by services))).
00:50:00 -!- Noisytoot has joined.
01:07:03 -!- Lykaina has joined.
01:55:40 -!- amby has quit (Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement).
01:56:18 -!- simcop2387 has quit (Ping timeout: 252 seconds).
01:56:31 -!- simcop2387_ has joined.
01:57:59 -!- simcop2387_ has changed nick to simcop2387.
02:16:08 <esolangs> [[Interlude]] https://esolangs.org/w/index.php?diff=151785&oldid=81264 * Kaveh Yousefi * (+7) Rectified the Hello, world! and truth-machine examples, which seemed to impute a stack rather than a queue, supplanted the cat program, which also relied on a last-in first-out (LIFO) data structure, by a perpetual variant, and amended the claim about a stack's involvement
02:18:08 <esolangs> [[Interlude]] https://esolangs.org/w/index.php?diff=151786&oldid=151785 * Kaveh Yousefi * (+170) Added a hyperlink to my implementation of the Interlude programming language on GitHub.
02:19:03 <esolangs> [[SLet]] https://esolangs.org/w/index.php?diff=151787&oldid=151763 * I am islptng * (+180)
02:35:18 -!- ais523 has quit (Quit: quit).
03:14:12 -!- molson_ has quit (Ping timeout: 268 seconds).
04:22:23 -!- Lykaina has quit (Quit: Leaving).
04:23:26 <esolangs> [[Translated ZhongWen/PSTF Again Chapter VII]] N https://esolangs.org/w/index.php?oldid=151788 * PrySigneToFry * (+5255) Created page with "[[Translated ZhongWen/Mihai Again8]] is still not enough, so let's make it CRZIER!!!! ah..."
04:23:58 -!- molson has joined.
04:24:24 <esolangs> [[Translated ZhongWen/Mihai Again8]] https://esolangs.org/w/index.php?diff=151789&oldid=141860 * PrySigneToFry * (+93)
07:38:01 <esolangs> [[Translated ZhongWen/islptng]] N https://esolangs.org/w/index.php?oldid=151790 * I am islptng * (+1521) Created page with "1. [[Translated_ZhongWen/PSTF_Again_Chapter_VII|]] <pre> 1696 Tnt 1709 n4mEasy Some N4M CRF 1696 1 2 1696 Tnt n4m crf 1696 Tnt n4m DN 1709 crf </..."
07:43:33 <esolangs> [[Translated ZhongWen/islptng]] https://esolangs.org/w/index.php?diff=151791&oldid=151790 * I am islptng * (+2335)
07:45:57 <esolangs> [[Translated ZhongWen/islptng]] https://esolangs.org/w/index.php?diff=151792&oldid=151791 * I am islptng * (+33)
07:51:52 <esolangs> [[Translated ZhongWen/islptng]] https://esolangs.org/w/index.php?diff=151793&oldid=151792 * I am islptng * (+407)
07:54:30 <esolangs> [[Translated ZhongWen/islptng]] https://esolangs.org/w/index.php?diff=151794&oldid=151793 * I am islptng * (+408)
07:58:50 -!- craigo has joined.
07:58:50 -!- craigo has quit (Client Quit).
07:59:49 -!- craigo has joined.
08:09:09 -!- molson_ has joined.
08:12:39 -!- molson has quit (Ping timeout: 260 seconds).
08:13:49 <esolangs> [[User:I am islptng/Sandbox]] https://esolangs.org/w/index.php?diff=151795&oldid=151329 * I am islptng * (+1892)
08:14:56 -!- lisbeths has joined.
08:42:48 -!- Sgeo has quit (Read error: Connection reset by peer).
08:55:08 <esolangs> [[Translated ZhongWen/PSTF Again Chapter VII]] https://esolangs.org/w/index.php?diff=151796&oldid=151788 * I am islptng * (+77)
10:04:48 <esolangs> [[Translated ZhongWen/PSTF Again Chapter VIII]] N https://esolangs.org/w/index.php?oldid=151797 * PrySigneToFry * (+6069) Created page with "1. [[Translated ZhongWen/islptng|]] <pre> 16961122 HN2 1696 HN2polya J2C 1709 HN 2CRF ZF 2 FIV ..."
10:05:23 <esolangs> [[Translated ZhongWen/islptng]] https://esolangs.org/w/index.php?diff=151798&oldid=151794 * PrySigneToFry * (+51)
10:06:37 <esolangs> [[User:PrySigneToFry/Sandbox/StormLang discussion]] https://esolangs.org/w/index.php?diff=151799&oldid=151774 * PrySigneToFry * (+18)
10:38:37 -!- tromp has joined.
11:38:23 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
12:21:55 -!- ais523 has joined.
12:24:26 -!- amby has joined.
12:36:47 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=151800&oldid=151783 * Allen123456hello * (+164) /* Introductions */
12:42:06 <esolangs> [[99 bottles of beer]] https://esolangs.org/w/index.php?diff=151801&oldid=150808 * Allen123456hello * (+1355) /* List of implementations */ add Language
12:44:14 <esolangs> [[User:PrySigneToFry/Sandbox/StormLang discussion]] https://esolangs.org/w/index.php?diff=151802&oldid=151799 * I am islptng * (+0) MY NAME IS NOT ISLPTNG IT'S islptng PUT MY NAME DOWN ARGHHHHHHHHHHH
12:47:23 <esolangs> [[User:XKCD Random Number]] https://esolangs.org/w/index.php?diff=151803&oldid=150375 * Allen123456hello * (+297) /* Implementations */ add language
12:47:41 <esolangs> [[SickPig]] https://esolangs.org/w/index.php?diff=151804&oldid=101568 * PrySigneToFry * (+193)
12:50:52 <esolangs> [[User:PrySigneToFry/Sandbox/StormLang discussion]] https://esolangs.org/w/index.php?diff=151805&oldid=151802 * PrySigneToFry * (+119) I'm sorry to have entered your username incorrectly. However, I always thought that your username was actually an abbreviation, so I used capitalization. If you ignore the case, this username is also correct.
12:53:35 <APic> Hi
12:53:42 <esolangs> [[User:PrySigneToFry]] https://esolangs.org/w/index.php?diff=151806&oldid=151541 * PrySigneToFry * (+209)
12:55:26 <esolangs> [[User:PrySigneToFry/Sandbox/My words]] https://esolangs.org/w/index.php?diff=151807&oldid=151462 * PrySigneToFry * (+1)
13:00:25 <ais523> hi
13:03:45 <esolangs> [[JC-0715]] N https://esolangs.org/w/index.php?oldid=151808 * Allen123456hello * (+505) new esolang
13:04:05 <esolangs> [[JC-0715]] https://esolangs.org/w/index.php?diff=151809&oldid=151808 * Allen123456hello * (+12) /* Commands */
13:05:03 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=151810&oldid=151733 * Allen123456hello * (+14) /* J */
13:06:02 <esolangs> [[JC-0715]] https://esolangs.org/w/index.php?diff=151811&oldid=151809 * Allen123456hello * (+9) /* JC-0715 */
13:07:06 <esolangs> [[JC-0715]] https://esolangs.org/w/index.php?diff=151812&oldid=151811 * Allen123456hello * (-9) /* JC-0715 */
13:14:26 <esolangs> [[User:PrySigneToFry]] https://esolangs.org/w/index.php?diff=151813&oldid=151806 * PrySigneToFry * (+168)
13:31:20 -!- tromp has joined.
14:09:13 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
14:10:51 -!- tromp has joined.
14:28:13 <esolangs> [[OwOlang]] N https://esolangs.org/w/index.php?oldid=151814 * BrainFuckGirl * (+3408) Created Page for OwOlang
14:29:03 <esolangs> [[OwOlang]] M https://esolangs.org/w/index.php?diff=151815&oldid=151814 * BrainFuckGirl * (-1)
14:46:56 <esolangs> [[User:PrySigneToFry/Sandbox/StormLang discussion]] https://esolangs.org/w/index.php?diff=151816&oldid=151805 * PrySigneToFry * (+7)
15:05:44 -!- Sgeo has joined.
15:08:55 -!- ais523 has quit (Ping timeout: 268 seconds).
15:43:57 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
16:17:13 -!- ais523 has joined.
16:21:56 -!- FreeFull has joined.
16:36:40 <esolangs> [[Zudjn]] https://esolangs.org/w/index.php?diff=151817&oldid=145864 * DevThatCodes * (+2122) /* Links */
16:39:43 <esolangs> [[Zudjn]] https://esolangs.org/w/index.php?diff=151818&oldid=151817 * DevThatCodes * (-21)
16:53:30 -!- tromp has joined.
17:38:40 -!- craigo has quit (Quit: Leaving).
17:47:22 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
17:48:38 -!- tromp has joined.
18:40:50 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
18:40:56 -!- Lord_of_Life_ has joined.
18:42:17 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:00:20 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
19:38:56 -!- tromp has joined.
20:17:19 <esolangs> [[Diner]] M https://esolangs.org/w/index.php?diff=151819&oldid=151738 * Buckets * (+16)
20:17:35 <esolangs> [[User:Buckets]] M https://esolangs.org/w/index.php?diff=151820&oldid=151732 * Buckets * (+1)
20:23:17 <esolangs> [[Language list]] M https://esolangs.org/w/index.php?diff=151821&oldid=151810 * Buckets * (+18)
20:23:27 <esolangs> [[User:Buckets]] M https://esolangs.org/w/index.php?diff=151822&oldid=151820 * Buckets * (+17)
20:23:31 <esolangs> [[,*"':;!?.+]] N https://esolangs.org/w/index.php?oldid=151823 * Buckets * (+3285) Created page with "{{wrongtitle|title=,*"':;!?.+_}} ,*"':;!?.+_ is an Esoteric programming language created by [[User:Buckets]] in 2024, To be specific It wasn't named But It's just The order of the Commands Shown. {| class="wikitable" |- ! Commands in order !! Instructions, also in or
20:24:32 <esolangs> [[Sipes]] M https://esolangs.org/w/index.php?diff=151824&oldid=150654 * Buckets * (+2)
20:25:19 <esolangs> [[User:Buckets]] M https://esolangs.org/w/index.php?diff=151825&oldid=151822 * Buckets * (+1)
20:26:45 <esolangs> [[-1]] M https://esolangs.org/w/index.php?diff=151826&oldid=150886 * Buckets * (+33)
20:27:14 <esolangs> [[-1]] M https://esolangs.org/w/index.php?diff=151827&oldid=151826 * Buckets * (+1)
20:37:26 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
20:43:23 -!- tromp has joined.
20:46:11 <b_jonas> I'm trying to think about languages that can be implemented with either of two different type systems, and what advantages and drawbacks this has, and which combinations there are good example for.
20:48:12 <b_jonas> So let's say at first approximation that there are three possible type systems. Untyped means that neither the compile time nor the runtime tries to follow what type values have, and so there's no type dispatching, if you want both an integer addition and a floating-point addition function you need to use different names for them. Typical examples are x86 machine code or forth.
20:49:14 <b_jonas> Dynamically typed means that the runtime tries to follow what type each value has, and so you may be able to dispatch on the type of input values, or at least check them to catch type errors at runtime. A typical example is Cpython.
20:50:29 <b_jonas> Statically typed means that you figure out the type of values at compile time, and then you typically don't need to tag them at runtime, you can do dispatching between integer and floating point addition at compile time, and at runtime the code that you compiled to already knows which of these two operations you need.
20:53:04 <b_jonas> Now if you have an untyped language, then it's usually not hard to make a dynamically typed interpreter for it. The dynamically typed interpreter is less efficient, but more easily able to catch type errors in the code. Sometimes you also want to make the dynamically typed interpreter memory safe too, which is easy in most cases, but can be hard if the program that was originally written for a language
20:53:10 <b_jonas> designed to be untyped does some scary tricks like casting an integer to a pointer.
20:53:52 <zzo38> Something that does not quite match, but is similar, to the first and second, is MESH:Hero and Free Hero Mesh; MESH:Hero uses the first kind, but operations can usually be mapped directly to Free Hero Mesh which uses the second kind. It is like the example you specify, actually.
20:54:19 <b_jonas> If you have a dynamically typed language then you often can't make an untyped interpreter for it, because the code will sometimes deliberately want to use the type tagging information as a free distinguished union.
20:55:04 <zzo38> However, some things will result in "type mismatch" errors that do not do so in MESH:Hero, but this usually indicates a bug. (A case where it doesn't is using the address of objects for random numbers, although this is usually undesirable anyways.)
20:55:26 <b_jonas> So to design a language that can be ran either untyped or dynamically typed, you just design it as untyped but forbid most of the cases when the program would use the wrong type -- you can still allow some of them, which the dynamic interpreter may have to support with implicit conversions.
20:55:34 <zzo38> But, you are right, and they are the kind of things I had noticed when designing Free Hero Mesh, actually.
20:55:46 <zzo38> And, it does work much like what you described.
20:58:28 <b_jonas> Now if you start from a statically typed language, you can usually *compile* it to an untyped language, but you may not be able to *interpret* it with an untyped interpreter, because there can be compile-time type dispatching necessary to distinguish between overloaded functions.
20:59:55 <b_jonas> But if you design a new language, you can design it to work as either untyped or statically typed. The program will be more verbose because it can't use compile-time type dispatching, but will still often need some type annotations, such as to give the type of parameters for a function definition.
21:02:22 <b_jonas> If you start from a statically typed language, then of course you can compile it to dynamically typed, but you can very often also *interpret* it dynamically typed. You can dispatch on the types of function arguments in a way that gives the same results for the two ways to interpret the language, though you can't dispatch on the return types only, because that's possible only in a statically typed
21:02:25 <zzo38> OK, I suppose that will work, and may be useful for some kind of uses. (It might be useful for some kinds of intermediate code that is meant to be either interpreted or compiled, and be portable to multiple types of computers, maybe.)
21:02:28 <b_jonas> language.
21:02:40 <zzo38> (I mean for one that is designed to be either untyped or statically typed)
21:03:02 <b_jonas> But it's possible to design a language to work as either statically typed or dynamically typed, in which case again the program will need type annotations for the statically typed version.
21:03:13 <b_jonas> (Olvashato does this by the way.)
21:05:31 <zzo38> It may also be possible to make it so that a compiler supports combining them, e.g. that anything that does not have a type annotation will use a tagged union and run less efficiently when compiled to statically typed code.
21:06:04 <b_jonas> I was thinking about this mostly because I want to design the esolang whose gimmick is using columns in the source code as variable names, and I want to figure out what type system that language has. I want to support at least two types, as in fixed-size integer and array of those integers, so I need some type system. Once I have two types working it's easy to extend the language with more types later.
21:06:19 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
21:08:25 <b_jonas> This isn't the only problem, there are other things that I have to decide about this language.
21:11:14 <b_jonas> I also want to add the additional gimmick that you can make the source code right-aligned and have programmer-defined tab stops, which makes this esoteric because there is probably no existing editor that supports that in full generality.
21:11:23 -!- tromp has joined.
21:12:29 -!- tromp has quit (Client Quit).
21:14:43 -!- tromp has joined.
21:17:24 <esolangs> [[Zudjn]] https://esolangs.org/w/index.php?diff=151828&oldid=151818 * DevThatCodes * (-31)
21:19:13 <esolangs> [[Zudjn]] https://esolangs.org/w/index.php?diff=151829&oldid=151828 * DevThatCodes * (+4)
21:22:27 <esolangs> [[Zudjn]] https://esolangs.org/w/index.php?diff=151830&oldid=151829 * DevThatCodes * (+47)
21:32:54 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
21:41:59 -!- tromp has joined.
21:50:38 -!- Celeo has joined.
21:51:43 <b_jonas> Static typing has the advantage that it can allow for better optimizations, especially the program wants to be portable and compiled to different platforms, and it allows you to use existing optimizing compiler backends.
21:53:09 <b_jonas> I could of course have two variants, so if you write your program without type annotations then it only works interpreted, but if you add type annotations (and get your types consistent in first place) then you can also use a hypothetical statically typed compiler.
22:08:15 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
22:15:54 <b_jonas> If I want to allow both untyping and dynamic typing, that actually makes static typing easier to add, because the untyping means functions can't dispatch on types, so I rarely need type annotations. If a value either comes from a return value of an ordinary function or is passed as an argument to an ordinary function then its type is fixed. I only need type annotations when the value is both created and
22:16:00 <b_jonas> consumed only by builtins that can handle generic types.
22:18:07 <b_jonas> The reason why I don't want too many type annotations is that I want every function definition to know at compile time how many parameters and return values it has, because I do want to dispatch function calls at compile time on the number of arguments and return values. (Functions are named only, not first-class values.)
22:18:25 <b_jonas> Ok, that's not a very clear explanation admittedly.
22:18:30 <b_jonas> And it might even be wrong.
22:18:53 <b_jonas> I'll have to think more about this.
22:22:42 <b_jonas> I think I have an idea. What I should do is that function arguments and return values should be listed in the same place, at the function head, rather than listing return values at a return statement or the end of the function scope or something like that. The drawback is that it makes the function head and return statements look less like an ordinary call syntactically, but that's fine.
22:24:09 <b_jonas> Sorry, I know this monologing is hard to follow.
22:30:03 <b_jonas> of course some of this works because this is to be a small toy language
22:32:23 -!- tromp has joined.
23:20:50 <ais523> b_jonas: re: your typing discussion: I have been seriously considering "a statically typed language that uses monomorphization, but the debug builds compile into a dynamically typed language instead to save compile time"
23:21:11 <ais523> like, if you aren't doing a properly optimizing build, you save monomorphization time by just using dynamic typing instead
23:21:57 <ais523> hmm, does type erasure count as / imply dynamic typing?
23:22:16 <ais523> I guess it has to, a type-erased value needs to carry a vtable around so that you can actually call methods on it
23:23:04 <ais523> also, Prolog famoulsy has arguments and return values all mixed together in the function head (and even in the function call)
23:23:18 <ais523> it makes complex expressions a little awkward to write
23:23:46 <ais523> e.g. length_plus_one(List, LengthPlusOne) :- length(List, Length), LengthPlusOne is Length + 1.
23:24:20 <ais523> have to have two separate "statements" to do the length measurement and the addition because the function doesn't have a traditional return value to add 1 to
23:26:23 <korvo> Also, the multiple distinct type systems don't have to be related to each other. They don't even have to have the same signature for the type-checking function.
23:49:00 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
←2025-02-11 2025-02-12 2025-02-13→ ↑2025 ↑all