4 ms·
>That is, when you're writing Lisp code, that's exactly what people next you would see, no matter what you think. People don't match them. The editor does. Com
by thrown_22 4y ago
>That is, when you're writing Lisp code, that's exactly what people next you would see, no matter what you think.
People don't match them. The editor does. Computers are very good at this. Code editing isn't a spectator sport where you can judge how easy something is by watching someone else do it. Try par-edit-mode from emacs, it's a tree editor in a text editor. You'd have your mind blown from this piece of technology from the 90s that uses nothing but plain text to edit a tree using parens.
>You simply didn't get what I was saying. Even when all the parens were stripped off from a Lisp code, you can easily reinsert parens based on line breaks and indents. So people rely more on indentations for correctly putting parens, rather than being cautions w/ every single editing operation.
Really?
So given
f a b
which of
(f a b)
(f (a b))
((f a) b)
did I strip the parens from?
- esjeon 4y agoI think I get picture here that you're probably taking my comment as some old-school Lisp-parenthesis-meme stuff. That's not it. I'm just freaking annoy by that we're using the same shit after decades. Nothing looks cool to me anymore. > People don't match them. The editor does. Computers are very good at this. Fixing parenthesis is a semi-automatic operation, performed by people aided by machine. People spend brain cycles on it, still in 2022. The tree-editing stuffs are in the same line. It's whole purpose is avoid dealing with parens and nested structures, but using it requires in-brain abstraction and getting used to a different set of operations. Extra costs to cognition and operation of the editor. Nothing difficult, but you have other dozens of "nothing difficult" to stack on top of it. Welcome to the world of complexity. > Try par-edit-mode from emacs ParEdit is an addition to text editor, and it doesn't block you from introducing mismatched parenthesis. It's actually an important feature, because an editor that forbids this will be more painful to use than manually fixing parens. So we still fix parens in 2022. Maybe I should compare this to ";" in C-like languages. There are editors, extensions, and formatters that can automatically insert semicolons, but, for whatever reason, semicolons go missing, so people fix it manually, still in 2022. Worse, in Javascript, missing semicolons often causes unintended behaviors, which makes it difficult to debug. Such a nice bug to have in 2022 on a language from 1990s. Holy Jesus, is this really what we should be dealing with until the last day in our lives? Including all the ancient craps that predates myself? I don't think so. > did I strip the parens from? Your example doesn't have any visual structure, and, in practice, we can just refer to the definition of `f` to solve that. Not an actual problem. What I was talking about is something like this: defun find-frame-class name cond and char= char name 0 #\T not member name '"TXX" "TXXX" :test #'string= ecase length name 3 'text-info-frame-v2.2 4 'text-info-frame-v2.3 string= name "COM" 'comment-frame-v2.2 string= name "COMM" 'comment-frame-v2.3 t ecase length name 3 'generic-frame-v2.2 4 'generic-frame-v2.3 (The original code is from https://gigamonkeys.com/book/practical-an-id3-parser.html https://gigamonkeys.com/book/practical-an-id3-parser.html ) The tree structure is visually represented in the indented code, which is far much easier for human brain to process. You almost immediately notice where parens should go. To recover parens without lines breaks, you should go over each symbol one by one, tracking their contexts. You know, state is evil. So the information embedded in code format is redundant to parens. IIRC, there were people who tried to abuse this to eliminate parens. Not really sure how that went.
- thrown_22 4y ago>ParEdit is an addition to text editor, and it doesn't block you from introducing mismatched parenthesis. It's actually an important feature, because an editor that forbids this will be more painful to use than manually fixing parens. So we still fix parens in 2022. _It does._ This is like trying to explain red to a very obstinate man wearing a blind fold their whole life. >What I was talking about is something like this: I have no idea which of: (ecase length name) (ecase (length name)) ((ecase length) name) you want. What you're complaining about is that operators of arbitrary arity need a termination symbol. That is a feature, not a bug. Basically your code is very simple and you're not using higher order functions. At which point you might as well go back to python. To actually encode the information you're talking using nothing but white space you'd need to do the following: find-frame-class name cond and char= char name 0 #\T not member name quote "TXX" "TXXX" :test #'string= ecase length name 3 'text-info-frame-v2.2 4 'text-info-frame-v2.3 t ecase length name 3 'generic-frame-v2.2 4 'generic-frame-v2.3 or some such. I lost interest in getting it correct since I wasted a rather long time trying to fit a tree in a 2d page at university. The key point is that a tree can be infinite dimensional and a page isn't. When you know that you rather quickly realize that all syntactic sugar is doomed and you spend your life doing more productive things with it.