This week's topic is quite programming heavy, sorry to all non programmers doggirl-gloom

https://xkcd.com/312/

yap

LISP stands for LISt Processing and was invented by John McCarthy, who was looking computation with symbols and recursive functions in the 1960s.

John McCarthy was the son of immigrant Communists (members of the CPUSA), but after witnessing the failed counter-revolution in Prague in 1968, he himself became a Republican lenin-dont-laugh.

A Lisp program consist of a few basic building blocks:

  • Symbols - basically text without whitespace, for example: +, hello123, if, nil, etc.
  • Numbers, Strings, etc.
  • Cons cells - a Pair, denoted as (cons 1 2) or dotted (1 . 2)
  • Lists - a linked list of Cons cells with the final element being the symbol nil.
    • (list 1 2 3) is the same as (1 . (2 . (3 . nil))).

As you may have noticed, cons and list are inside the parentheses, thats because a function call like f(x,y) is written instead as (f x y). This is called a Symbolic expression and all Lisp code looks like this.

(+ 1 (* 2 3) 4)
;; multiply 2 times 3 => (+ 1 6 4)
;; add 1 6 and 4      => 11

;; the names 'car' and 'cdr' are ancient relics from some assembly instructions
;; basically first and second element of a cons cell
;; or head and tail of a list
(car (cons 1 2)) ;; => 1
(cdr (cons 1 2)) ;; => 2

This in turn means that any code can be turned into a list, so that it can be modified like data. I think thats quite neat and unique among programming languages (it even has a fancy word: this property is called homoiconicity).

Functions that operate on code are called macros.

;; generate a function 'name' that adds 'value' to the input
(defmacro defun-adder (name value) 
  (list 'defun name (list 'x) (list '+ 'x value)))
 
(defun-adder plus5 5)
;; define the function plus5(x) as x + 5 
;; => (defun plus5 (x) (+ x 5)))

(plus5 10) ;; => 15

To make sure the interpreter does not try to evaluate a symbol, it needs to be "quoted". Since this comes up quite often, it gets the shortcut of ' at the beginning.

Theyre much nicer to work with than for example macros in C:

#define PI 3.14159265

this C macro just searches and replaces the string PI in the C source code before compilation and theres lots of ways to mess up, for example

#define DOUBLE(x) x + x

if x is a function call that does something else, like printing, then that message will appear twice. Operator prescedence is also not considered: DOUBLE(1) * 3 will expand to 1 + 1 * 3, so 4 not 6 like one would expect.

The last thing I want to yap about is Lisp1 vs Lisp2. This refers to the amount of namespaces any programming language has. if functions and variables are allowed have same names, then there needs to be a namespace for each.

for example in CL:

(defvar x 1)
(defun x () (+ 1 1))

x   ;; variable      => 1
(x) ;; function call => 2

is perfectly fine, while in other languages like Python or C or Scheme this wouldnt work.

Shoutout to respected comrades lilypad and sodium_nitride who are also true Lisp patriots.


___ Join our public Matrix server! https://rentry.co/tracha#tracha-rooms ___

As a reminder, please do not discuss current struggle sessions in the mega. We want this to be a little oasis for all of us and the best way to do that is not to feed into existing conflict on the site. Also, be sure to properly give content warnings and put sensitive subjects behind proper spoiler tags. It's for the mental health of not just your comrades, but yourself as well.

Here is a screenshot of where to find the spoiler button.

spoiler

Common Lisp Logo, an alien holding a flag with the word LISP on it
you are viewing a single comment's thread
view the rest of the comments
[–] 6 points 19 hours ago*

I think in our social context, broadly western - so apologies if that's not you, most post menopausal women would be a bit offended if one suggested theyre no longer Women (capital W) just because they can't reproduce anymore. I can see the archeology there that sex is way more than just a binary so there could be categories like post menopausal woman (femalen) that exist. But I certainly wouldn't call anyone else that unless they self ID'd as it. The anxiety around low T and demasculinzation to me reads more like patriarchy than anxiety around category confusion (i.e. as if theyre not really Men but some different sex or gender category and that comes with too much baggage in transphobic patriarchal society) - if anything, they are just bog standard men who want to be men hence the fear of losing that because, dubiously, of low T.

I'm working in a broadly western context too, and I do agree a menopausal Woman would be rightly offended at the suggestion that they aren't Women anymore because they can't reproduce. With an equal amount of right, as you or I would have if someone were to suggest we were not Women because we might not be able to reproduce anymore.

Apologies that last paragraph was more an appendix to my loose ramblings. I don't personally think we should have those categories, I just think we've kind of already worn them into society a bit, like footsteps on a grass path, not yet formalized by paving. It's just tied into the broader musings that perhaps sex and gender categories might already be kind of loosey-goosey. I've mentioned my work in the past to you. The largest population I work with in my job is cis menopausal woman, far more than trans people. And it's just...interesting, how much a lot of stuff post menopausal cis women go through overlaps a lot with trans women.

The cis men stuff is interesting more just I think historically how common it has been through history to have enunachs and other third sexs that are basically men who are not men, more of those than the ocaisonal cool transfem ones that pop up. I've had a few people I've worked over the years who have been Cis Men without testicles due to Trauma or cancer, it's been interesting how much anxiety there is around the idea that people might find out.

But thank you for your reply, this is just stream of consciousness stuff.

  • source
  • parent