Tomorrow_Farewell [any, they/them]

  • 4 Posts
  • 364 Comments
Joined 2 years ago
cake
Cake day: January 30th, 2024

help-circle

  • Would be cool if the Western left was more familiar with these histories instead of painting with a broad brush. Moralizing is easy when you use orientalism and do away with the nuances of the revolutionary projects you dislike.

    Not sure if you are trying to imply that I’m a westerner, or that I am against genuinely anti-colonial projects organised/headed by anarchists. I hope that you do not conflate my criticism of anarchists often (but not always) taking the side of the imperial core’s invasions, genocides, and other assorted colonial horrors with claiming that anarchists can never oppose colonialism.




  • That doesn’t mean I think it’s good.

    It’s a state formed as a result of an anti-colonial movement fighting for liberation against your empire. Your empire killed millions of its people, destroyed what they had, and currently maintains a genocidal blockade against it.
    Despite all that, it manages to hang on, and, considering the harrassment and assault from your empire, it also manages to provide its people with much better living standards than what one would expect from many states that you do not complain about (and which are not targets of the same sort of blockades). Also, you just plain haven’t even brought up any wrongdoings that the DPRK has supposedly done.

    Overall, I would say that that does make the DPRK fairly good as far as states go.

    And obviously false memes like the OP don’t convince me that there is any sincerity in its defenders.

    Either you are unfamiliar with the resolution in question and are assuming that the OP lied (without you double-checking), or you know that the OP didn’t lie and are trying to engage in spreading your genocidal empire’s false propaganda.



  • Nor is Putin capable of achieving anything of such scale.

    And, considering the fact that Putin is a liberal, there aren’t even superstructural reasons for him to do so.

    which is what Putin fears the most (that the Russian civilization will terminate in his hands)

    You are trying to engage in mind-reading here, and your claim is contradicted by the fact that Putin was on the anti-communist side when anti-communists were rapidly destroying Russia.

    And even after Stalin’s death, the liberal policies immediately came back.

    Trying to equate attempts at liberalising the economy of the USSR in in the 60s-70s with the current situation is quite silly. The economy was still a planned economy, and the leadership was not a liberal government. The economy of Russia currently is very obviously not that, and the government has neither basic, nor superstructural reasons to turn it into a planned one.




  • The populace of Taiwan need to consent to being governed by the PRC, and currently support for one China in Taiwan is very low, based on what I’ve read.

    The state that currently rules Taiwan engaged in white terror and killed dissidents. The population of Taiwan obviously did not consent to that, but you accept their rule just fine. So, you are inconsistent.

    Furthermore, that state is a collaborator for the most evil polity in the world - NATO. That means that the considerations of their population’s wants are secondary to stopping the horrors that NATO has been inflicting upon the world.






  • When you write lisp, you’re writing s-expressions that will be evaluated later. There are no statements in lisp, only expressions.

    Apologies for nitpicking, but did you mean that all statements are expressions in Lisp? If there were no statements, surely it would be impossible to actually make things that do anything other than calculate some results, wouldn’t it?

    No, they don’t enforce types via the interpreter, but they are not comments because they appear in documentation. Lisp has comments in addition to docstrings similar to Python.

    Yeah, that is what I did mean when I referred to the possibility of docstrings being mere ‘comments’. I excluded their role in documentation, as I was only concerned with their direct effect on the code.

    Yes this is confusing because you have taken out the indentation

    This seems to contradict the formatting used for examples that I see on the Guile Hoot page, as well as your prior factorial example. Wouldn’t that mean that that example should have been formatted as something like the following?

    (defun factorial 
      (n &optional 
        (acc 1))
      (if 
        (zerop n) 
        acc
        (factorial 
          (1- n)
          (* acc n))))


  • REPL is when you load your entire program and then are able to introspect everything while it’s running and make changes. It’s kind of like having a debugger that you use in tandem with writing new code.

    As in, LISP programs are commonly made to run in parallel with their REPL interfaces? I was under the impression that REPL usually requires for a program to finish executing prior commands.

    They took inspiration from lisp

    Apologies, I have tried looking this up, but I have been unable to find anything that would support this claim. Would you mind directing me to a source?

    This is just a comment about liking static typing and there exists lisp dialects that are statically typed. I’ve omitted the Docstring but usually that would tell you what the parameters are.

    It’s not just static typing. In an expression like (a b c) the a seems to be able to be a function call, or a variable, and I do not see a way to determine that at a glance, compared to something like a(b, c) or [a, b, c].
    Also, do docstrings enforce the types, or are they just comments?

    Also like in non statically typed languages, you can infer that n is a number type because it’s being used in procedures like ‘1-’ which are for numbers.

    Sure, but that is still more troublesome than type enforcement, and it’s better for relevant bugs to be caught at the stage of development, instead of being discovered in production.

    For example, just remove all the paranthesis from the lisp snippet and see if you cant get the basic structure.

    That would make things even worse, I would argue. Comparing expressions (a b ((c d) e)) and a b c d e, the former actually informs me of the structure at least somewhat.
    Also, on the note of parentheses, I would much prefer for functions to be called like f(x), rather than (f x). A factor that contributes to that is the fact that, with the former syntax, I can tell that that is a function call, and not just two items of some types in a list.

    I’ve been trying to say that lisp can create these templates automatically just by having things like SXML. I don’t understand what you mean by “building a string with HTML code”

    Not sure how I can rephrase it, but what I have been talking about is composing HTML code the way one would be composing any sort of string, potentially with some additional structures with their methods for manipulating their contents and/or transforming them into the resulting code.

    You can have a iterative loop inside SXML and it follows the same rules as the rest of your lisp code. You have to build a DSL in C-likes.

    Why is running a similar loop over the contents of a structure in a C-like language not enough in this context?


  • I’m curious about a couple of points:

    including changing function definitions

    Is one forced to do it with the standard CLI REPL, or can one edit the code more selectively like how it’s done with text editors?

    and select a restart to call (or just restart from a specific stack frame)

    Do I understand it correctly, that the following scenario is possible:

    • Some function is called
    • Somewhere during its execution a break is evaluated
    • A programmer redefines the function
    • The programmer resumes the program’s execution from the point where the problematic function (which is now redefined) was called
      ?

  • The difference is that in that case the HTML is programmatically distinct from your programming code. For example, Hugo uses Go as its backend but has its own DSL for creating templates which allows you to use variables set by your sites configuration file as well as do loops and other programatic behavior. Using raw HTML isn’t as flexible. Most C-likes have libraries for converting HTML to a data structure that can be manipulated by the language but SXML allows for treating HTML as part of your code with zero abstraction in between because the XML structure works great for s-expressions.

    Not sure what you mean by ‘programmatically distinct from programming code’.
    I’m honestly still not seeing a significant difference between using an SXML structure (and having to also convert it later, according to the sxml->dom example from the provided Guile Hoot page), and building a string with HTML code in C-likes. Though, I dislike both approaches, and prefer templates, due to the fact that the environment can assist with HTML syntax that way.

    I find the opposite is true, Units of code in Lisp are symbolic expressions that are delimited by a opening and closing symbol. You really only have to follow the indentation to know when an expression ends or which expressions belong to each other. If you understand the rules of list notation then you can parse any Lisp code everywhere and anywhere (sans un-hygenic macros).

    I mean, in your example, the first line features several keywords/variables/etc. They are separated by whitespaces (and parentheses), with no punctuation in-between to make their separation clearer, and with no apparent way to discern what sort of thing they are. If I didn’t know the context of what factorials are, I would not be able to tell what n was supposed to be, for example.
    I think that this criticism has actually been voiced by BeanisBrain here.
    Parsing C-like code seems to be much easier.
    How readable do you find Lisp in codebases with thousands of lines of code?

    but lisp specifically emphasizes that property to allow users to extend the language to any domain they want without having to fundamentally recompile the language to a new specification.

    Is this not achievable by just defining functions in most languages?
    Also, with regards to metaprogramming, have you taken a look at defining arbitrary syntax via Rust macros?

    The main draw of Lisp is interactive programming where you’re writing the program itself within said running program and to me feels like the most free way to program.

    I have, so far, not found REPL to be more than a novelty, to be honest, and, as far as REPL goes, I prefer Jupyter Notebook (which supports several languages, including Python, C++, Rust; not sure if it supports Lisp or its dialects, though) to the default Lisp REPL. Even then, I quite dislike it.

    How do you do debugging big projects with REPL?


  • Lisp can be compiled down to machine code.

    However, the fact that Lisp relies on a (‘classic’ GC) means that it will had a mandatory runtime.
    AFAIK, Go is compiled, but it does have a runtime nevertheless, so just being (non-JIT) compiled is not enough.

    I do not have the time to engage with the rest of the reply just yet.

    EDIT:
    Don’t really have much to comment on the rest of the reply itself, so, for clarity’s sake I’d like to address the following first:
    I am taking another look at Lisp’s syntax since more than a decade, and I think I understand why I find Lisp rather confusing to look at (or, at least, I can put my finger on one of the factors). The units of code (so to speak) in Lisp are mostly separated by whitespaces, while, in most of the languages that I have dealt with, they are largely separated by punctuation (including parentheses/brackets; with parentheses being an optional separator in some cases). Also, the fact that functions are also only separated from their arguments by whitespaces (rather than anything else) makes code harder to read.

    Following that example, for static site generators in C-like languages they have to invent their own DSL for creating templates but for Lisp you don’t have that separation.

    I’m not sure how this is different from composing HTML code as a string directly (instead of using a template) in C-like languages.

    Also this isn’t a dig at C or C-replacement languages like C++ or Rust, but to higher level languages that are “like C” in the sense that they are at a higher level of abstraction but use the same metaphor (idk this is hard to explain, basically not Lisp’s “data as code”). Basically my gripe is with things like Python or Java and not with C or its replacements itself.

    Going to just mention that I have not used Java, but I do dislike Python for its (lack of a) typing system.

    “data as code”

    Not sure what this means (in the sense of ‘how is it different from other languages?’).