<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: _19qg</title><link>https://news.ycombinator.com/user?id=_19qg</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 14:57:08 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=_19qg" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by _19qg in "The evolution of a structural code editor"]]></title><description><![CDATA[
<p>With paredit in GNU Emacs:<p>1) place the cursor on the left parenthesis of the form<p>2) type paredit-wrap-round: M-(<p>3) type: if flag<p>Doesn't appear to be overly complex.</p>
]]></description><pubDate>Tue, 07 Jan 2025 13:06:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=42621928</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42621928</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42621928</guid></item><item><title><![CDATA[New comment by _19qg in "The evolution of a structural code editor"]]></title><description><![CDATA[
<p>see for example a structure editor for Lisp, ca. 1967, described by L Peter Deutsch:<p><a href="https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=028a167a1c72aa817d9d5b8aa6e9099a75bd454f" rel="nofollow">https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&d...</a></p>
]]></description><pubDate>Tue, 07 Jan 2025 00:02:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=42617603</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42617603</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42617603</guid></item><item><title><![CDATA[New comment by _19qg in "Is Iceland getting ready to join the EU?"]]></title><description><![CDATA[
<p>> If the Axis powers had won the war all the countries of Europe would have had even deeper "cooperation"<p>There you've placed a link from Fascism and "National Socialism" to the EU.<p>Nice try.</p>
]]></description><pubDate>Tue, 31 Dec 2024 20:09:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=42561424</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42561424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42561424</guid></item><item><title><![CDATA[New comment by _19qg in "38th Chaos Communication Congress"]]></title><description><![CDATA[
<p>> But the post I replied to implied that socialist=social democratic<p>That's actually largely the case in Western/Middle Europe.<p>> marxist/communists in the far-left parties (and sometimes the whole party)<p>Which are often not seen as socialist. Social/socialist typically signals that the party is inside the system supporting political spectrum. "communist/marxist" usually signals that the party is at least partly outside the system supporting political spectrum.</p>
]]></description><pubDate>Tue, 24 Dec 2024 16:06:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=42502780</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42502780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42502780</guid></item><item><title><![CDATA[New comment by _19qg in "38th Chaos Communication Congress"]]></title><description><![CDATA[
<p>ultra-right parties may have "socialist" in their name, but they are typically not in a sense connected to Marx&Hegel. Example: the "National-Sozialistische Deutsche Arbeiterpartei" (Hitler's NSDAP) was not marxist.</p>
]]></description><pubDate>Tue, 24 Dec 2024 14:22:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=42502070</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42502070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42502070</guid></item><item><title><![CDATA[New comment by _19qg in "38th Chaos Communication Congress"]]></title><description><![CDATA[
<p>For the US reader:<p>> 39 MPs in the Bundestag<p>Out of currently 733 MPs with a parliament with "proportional representation", where the number of seats is proportional to the number of votes (Germany-wide, not local). Die Linke thus has 5.3% seats in the Bundestag. Thus this is not "a lot of votes" in relation to the voting population.<p>> "anti-capitalist" (which seems to be more popular than claiming to be socialist)<p>Anti-capitalism is found in right-wing parties, too. Like the German AFD.</p>
]]></description><pubDate>Tue, 24 Dec 2024 12:25:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=42501472</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42501472</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42501472</guid></item><item><title><![CDATA[New comment by _19qg in "We Are the Robots"]]></title><description><![CDATA[
<p>There is a idea of a robot (on the album "Die Mensch-Maschine", "The Man Machine") as the perfect worker (russian "rabotnik") and also the relationshop to russian suprematism as an art form (see the cover).<p>The robot as an ideal socialist worker.<p>Lyrics:<p><pre><code>    Я твой слуга (Ja tvoi sluga) (I'm your slave)
    Я твой работник (Ja tvoi rabotnik) (I'm your worker)</code></pre></p>
]]></description><pubDate>Sun, 15 Dec 2024 21:20:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=42426046</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42426046</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42426046</guid></item><item><title><![CDATA[New comment by _19qg in "C++ template macroprogramming versus Lisp macros"]]></title><description><![CDATA[
<p>macro programming in Lisp would be "programming programs".<p>I don't see it here. This looks like compile-time execution to compute values. If it would be a macro, it could return source code.</p>
]]></description><pubDate>Fri, 15 Nov 2024 22:03:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=42151697</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42151697</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42151697</guid></item><item><title><![CDATA[New comment by _19qg in "M4 MacBook Pro"]]></title><description><![CDATA[
<p>I'm using them for several years - I still have a Mac mini (from 2012) and an iMac Pro (from 2017) running. I also get a company Macbook which I can upgrade every three years.<p>But there is also another strategy: get a new Mac when they come out and sell it before/after the next model appears. There is a large market for used Macs. A friend of mine has been doing this for quite some time.</p>
]]></description><pubDate>Thu, 31 Oct 2024 06:51:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=42004112</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42004112</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42004112</guid></item><item><title><![CDATA[New comment by _19qg in "M4 MacBook Pro"]]></title><description><![CDATA[
<p>It's a very robust and capable small laptop. I'm typing this to a M1 Macbook Air.<p>The only thing to keep in mind, is that the M1 was the first CPU in the transition from Intel CPUs (+ AMD GPUs) to Apple Silicon. The M1 was still missing a bunch of things from earlier CPUs, which Apple over time added via the M1 Pro and other CPUs. Especially the graphics part was sufficient for a small laptop, but not for much beyond. Better GPUs and media engines were developed later. Today, the M3 in a Macbook Air or the M4 in the Macbook Pro have all of that.<p>For me the biggest surprise was how well the M1 Macbook Air actually worked. Apple did an outstanding job in the software & hardware transition.</p>
]]></description><pubDate>Thu, 31 Oct 2024 06:39:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=42004067</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=42004067</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42004067</guid></item><item><title><![CDATA[New comment by _19qg in "Hofstadter on Lisp (1983)"]]></title><description><![CDATA[
<p>> I'm probably failing to consider edge cases but it seems like a potentially simple tweak that might make lisps more palatable to many<p>Lisp came out in 1960. The s-expression-only syntax was an accident or a discovery - depending on one's view. Over the many years no attempt to add significant indentation syntax without parentheses gained more than a few users. Syntax variants without parentheses (and no significant indentation) only had a marginally better fate. Sometimes it even contributed to the failure of Lisp derived languages (-> Lisp 2, Dylan)...</p>
]]></description><pubDate>Fri, 18 Oct 2024 19:22:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=41882596</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41882596</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41882596</guid></item><item><title><![CDATA[New comment by _19qg in "Hofstadter on Lisp (1983)"]]></title><description><![CDATA[
<p>Generally I agree with what you are saying. I live outside the US and so this stuff from the end 70s / early 80s was very remote. Gladly we had then a well connected university where I got in contact with some of the more interesting stuff mid 80s.<p>The book I found most useful in the early times as an introduction to Lisp and programming with it was LISP from Winston & Horn. The first edition was from 1981 and the second edition from 1984. I especially liked the third edition.<p><a href="https://en.wikipedia.org/wiki/Lisp_(book)" rel="nofollow">https://en.wikipedia.org/wiki/Lisp_(book)</a><p>Lisp on microcomputers in the early 80s was mostly not useful - that was my impression. I saw a Lisp for the Apple II, but that was very barebones. Next was Cambridge Lisp (a version of Standard Lisp) on the Atari ST. That was more complete but programming with it was a pain. Still, I found the idea of a very dynamic&expressive programming language and its interactive development style very interesting. The first useful implementations on smaller computers I saw were MacScheme and Coral Lisp, both for the Macintosh, Mid 80s...<p>There were articles about Lisp in the Byte magazine early on, but having access to the software mentioned was difficult.<p>The early use cases one heard of were: computer science education, functional programming, generally experimenting with new ideas of writing software, natural language processing, symbolic mathematics, ... This was nothing which would be more attractive to a wider audience. David Betz Xlisp later made Lisp more accessible. Which was then used in AutoCAD as an extension language: AutoLisp.<p>Luckily I had starting mid 80s access at the university to the incoming stream of new research reports and there were reports about various Lisp related projects, theses, etc.</p>
]]></description><pubDate>Thu, 17 Oct 2024 07:23:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=41867225</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41867225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41867225</guid></item><item><title><![CDATA[New comment by _19qg in "Hofstadter on Lisp (1983)"]]></title><description><![CDATA[
<p>Practical Common Lisp
<a href="https://gigamonkeys.com/book/" rel="nofollow">https://gigamonkeys.com/book/</a></p>
]]></description><pubDate>Wed, 16 Oct 2024 23:10:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=41864831</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41864831</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41864831</guid></item><item><title><![CDATA[New comment by _19qg in "Refurb weekend: the Symbolics MacIvory Lisp machine I have hated"]]></title><description><![CDATA[
<p>I had a 30 meter (IIRC) console cable for my 3640.<p>Most University labs had a machine room where the Symbolics machines (if they had those) were standing (large, too noisy fans, drawing 1 kw or more electricity, ...). Cables for the console (1 Megapixel b/w screen, keyboard, mouse and digital audio) went from there into the offices. All one could hear were the clicks from the Symbolics mechanical keyboards.<p>The LMI and Explorer machines had some interesting hardware stuff. Too bad, that both companies left the business very early ...<p>Accelerators were available for the Symbolics machines, too. IIRC there were DSPs. Also an interface to the Pixar Image Computer and to Connection Machines. Or the FrameThrower, a programmable Framebuffer.</p>
]]></description><pubDate>Tue, 15 Oct 2024 19:27:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=41852208</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41852208</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41852208</guid></item><item><title><![CDATA[New comment by _19qg in "Germany's 49-euro ticket resulted in significant shift from road to rail"]]></title><description><![CDATA[
<p>Otto von Bismarck introduced much of the social safety net in Germany, incl. health insurance (in 1883). He definitely was not a communist. He once called it "practical christianity" ("praktisches Christentum").</p>
]]></description><pubDate>Sun, 13 Oct 2024 09:28:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=41826464</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41826464</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41826464</guid></item><item><title><![CDATA[New comment by _19qg in "AI Winter Is Coming"]]></title><description><![CDATA[
<p>The first (big) AI winter he refers to was in the mid 70s.<p>The 80s (mid/end) AI winter have had an effect on private companies, but it was also mostly because of government funding was reduced/eliminated, where their revenue was coming from. Much of the revenue of the computer hardware and software companies in the 80s AI bubble was coming from government funding, like the Strategic Computing Initiative and the Strategic Defence Initiative ("Star Wars"), both running from 1983 until 1993, with various levels&aims of funding. That was a part of the effort to win the cold war (here by investing huge amounts of money into modern weapons & defense systems, which meant also into computing and AI) with the Soviet Union , which eventually collapsed, end 80s - early 90s. Also many of the promises of the AI technology did not materialize -> the private sector did not take over the funding.</p>
]]></description><pubDate>Sat, 12 Oct 2024 08:54:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=41817635</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41817635</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41817635</guid></item><item><title><![CDATA[The Liberating Experience of Common Lisp]]></title><description><![CDATA[
<p>Article URL: <a href="https://ds9soft.com/blog/2024/06/the-liberating-experience-of-common-lisp/">https://ds9soft.com/blog/2024/06/the-liberating-experience-of-common-lisp/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41709121">https://news.ycombinator.com/item?id=41709121</a></p>
<p>Points: 125</p>
<p># Comments: 125</p>
]]></description><pubDate>Tue, 01 Oct 2024 14:45:36 +0000</pubDate><link>https://ds9soft.com/blog/2024/06/the-liberating-experience-of-common-lisp/</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41709121</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41709121</guid></item><item><title><![CDATA[New comment by _19qg in "Porting SBCL to the Nintendo Switch"]]></title><description><![CDATA[
<p>> Whether or not computation behind the scenes happens at some particular time (read/compile/run) isn't too relevant.<p>Actually it is relevant: is the object mutable? Are new objects created? What optimizations can a compiler do? Is it an object which is a part of the source code?<p>If we allow [1, 2, (+ 1 a)] in a function as a list notation, then we have two choices:<p>1) every invocation of [1, 2, (+ 1 a)] returns a new list.<p>2) every invocation of [1, 2, (+ 1 a)] returns a single list object, but modifies the last slot of the list. -> then the list needs to be mutable.<p><pre><code>    (defun foo (a)
      [1, 2, (+ 1 a)])
</code></pre>
Common Lisp in general assumes that in<p><pre><code>    (defun foo (a)
     '(1 2 3))
</code></pre>
it is undefined what exact effects the attempts to modify the quoted list (1 2 3) has. Additionally the elements are not evaluated. We have to assume that the quoted list (1 2 3) is a literal constant.<p>Thus FOO<p>* returns ONE object. It does not cons new lists at runtime.<p>* modifying the list may be not possible. A compiler might allocate such an object in a read-only memory segment (that would be a rate feature -> but it might happen on architectures like iOS where machine code is by default not mutable).<p>* attempts to modify the list may be detected.<p>SBCL:<p><pre><code>    * (let ((a '(1 2 3))) (setf (car a) 4) a)
    ; in: LET ((A '(1 2 3)))
    ;     (SETF (CAR A) 4)
    ; 
    ; caught WARNING:
    ;   Destructive function SB-KERNEL:%RPLACA called on constant data: (1 2 3)
    ;   See also:
    ;     The ANSI Standard, Special Operator QUOTE
    ;     The ANSI Standard, Section 3.7.1
    ; 
    ; compilation unit finished
    ;   caught 1 WARNING condition
    (4 2 3)
</code></pre>
* attempts to modify literal constants may modify coalesced lists<p>for example<p><pre><code>    (defun foo ()
      (let ((a '(1 2 3))
            (b '(1 2 3)))
        (setf (car a) 10)
        (eql (car a) (car b))))
</code></pre>
In above function, a file compiler might detect that similar lists are used and allocate only one object for both variables.<p>The value of (foo) can be T, NIL, a warning might be signalled or an error might be detected.<p>So Common Lisp really pushes the idea that in source code these literals should be treated as immutable constant objects, which are a part of the source code.<p>Even for structures: (defun bar () #S(PERSON :NAME "Joe" :AGE a)) -> A is not evaluated, BAR returns always the same object.<p>> Do you have any suggestions on how to talk about this "literal syntax" in another way that won't step on or cause confusion with the CL spec's definition?<p>Actually I was under the impression that "literal" in a programming language often means "constant object".<p>See for example string literals in C:<p><a href="https://wiki.sei.cmu.edu/confluence/display/c/STR30-C.+Do+not+attempt+to+modify+string+literals" rel="nofollow">https://wiki.sei.cmu.edu/confluence/display/c/STR30-C.+Do+no...</a><p>Though it's not surprising that language may assume different, more dynamic, semantics for compound objects like lists, vectors, hash tables or OOP objects. Especially for languages which are focused more on developer convenience, than on compiler optimizations. Common Lisp there does not provide an object notation with default component evaluation, but assumes that one uses functions for object creation in this case.</p>
]]></description><pubDate>Sun, 15 Sep 2024 21:22:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=41550535</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41550535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41550535</guid></item><item><title><![CDATA[New comment by _19qg in "Porting SBCL to the Nintendo Switch"]]></title><description><![CDATA[
<p>> simple version of the {} macro shown in <a href="https://news.ycombinator.com/item?id=1611453">https://news.ycombinator.com/item?id=1611453</a><p>That's not implementing a <i>literal</i> (an object that can be read), but a short hand notation for constructor code. The idea of a <i>literal</i> is that it is an object created at read-time and not at runtime.<p>In Common Lisp every literal notation returns an object, when read -> at read-time. The {} example does not, because the read macro creates code and not a literal object of type hash-table. The code then needs to be executed to create an object -> which then happens at runtime.<p>The ANSI CL glossary says:<p><a href="https://www.lispworks.com/documentation/HyperSpec/Body/26_glo_l.htm#literal" rel="nofollow">https://www.lispworks.com/documentation/HyperSpec/Body/26_gl...</a><p>> literal adj. (of an object) referenced directly in a program rather than being computed by the program; that is, appearing as data in a quote form, or, if the object is a self-evaluating object, appearing as unquoted data. ``In the form (cons "one" '("two")), the expressions "one", ("two"), and "two" are literal objects.''<p><pre><code>    CL-USER 4 > (read-from-string "1")
    1
    1

    CL-USER 5 > (read-from-string "(1 2 3)")   ; -> which needs quoting in code, since the list itself doubles in Lisp as an operator call
    (1 2 3)
    7

    CL-USER 6 > (read-from-string "1/2")
    1/2
    3

    CL-USER 7 > (read-from-string "\"123\"")
    "123"
    5

    CL-USER 8 > (read-from-string "#(1 2 3)")
    #(1 2 3)
    8
</code></pre>
But the {} notation is not describing a <i>literal</i>, it creates code, when read, not an object of type hash-table.<p><pre><code>    CL-USER 9 > (read-from-string "{:foo bar}")
    (LET ((HASH (MAKE-HASH-TABLE))) (SET-HASH-VALUES HASH (QUOTE (:FOO BAR))) HASH)
    10
</code></pre>
This also means that (quote {:a 1}) generates a list and not a hash-table when evaluated. A <i>literal</i> can be quoted. The QUOTE operator prevents the object from being evaluated.<p><pre><code>    CL-USER 13 > (quote {:a 1}) 
    (LET ((HASH (MAKE-HASH-TABLE))) (SET-HASH-VALUES HASH (QUOTE (:A 1))) HASH)

    CL-USER 14 > '(defun foo () "ab cd")
    (DEFUN FOO NIL "ab cd")
</code></pre>
In above example the string is a literal object in the code.<p><pre><code>    CL-USER 15 > '(defun foo () {:foo bar})
    (DEFUN FOO NIL (LET ((HASH (MAKE-HASH-TABLE))) (SET-HASH-VALUES HASH (QUOTE (:FOO BAR))) HASH))
</code></pre>
In above example there is no hash-table embedded in the code. Instead each call to FOO will create a fresh new hash-table at runtime. That's not the meaning of a <i>literal</i> in Common Lisp.</p>
]]></description><pubDate>Sun, 15 Sep 2024 13:58:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=41547557</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41547557</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41547557</guid></item><item><title><![CDATA[New comment by _19qg in "Unix history and the `dc` calculator"]]></title><description><![CDATA[
<p>LISP is short of "List Processor". It was developed as a language & system for processing lists. The programming language LISP was supposed to have M-Expressions (M -> Meta) for code and S-Expressions for data. For example a call to append two lists would have looked like this:<p><pre><code>    append[listvar;(PARIS BERLIN NEWYORK TOKYO)]
</code></pre>
The arguments are enclosed in square brackets. The second argument is written as an S-Expression. S-Expressions were the data notation and were enclosed in parentheses. Symbols were upper case. The names of operators and variables were lower case.<p>The append call then looked like this:<p><pre><code>    (APPEND LISTVAR (QUOTE (PARIS BERLIN NEWYORK TOKYO)))
</code></pre>
A conditional would have been:<p><pre><code>    [eq[car[l];0] → cons[(ZERO);cdr[l]]; T → x]
</code></pre>
Which in S-expression only syntax is:<p><pre><code>    (COND ((EQ (CAR L)) (CONS (QUOTE (ZERO)) (CDR L)))
          (T X))
</code></pre>
As you can see the conditional would have a special infix syntax.<p>> Because of the limitations of the character sets available in old computers, the round parentheses have a dual role in LISP, as delimiters for lists that are data and as delimiters for the lists of arguments used by function/macro invocations.<p>No, the syntax above wasn't actually implemented at first. The M-Expression/S-Expression combination was hand translated into S-Expressions, since the Interpreter and Compiler took lists as input.<p>The reason why the syntax is like this is not a lack of characters or so. The reason is because the language early on worked on code as list data and not on code as text. The input and output was then of list data. The famous "Read Eval Print Loop" reads data, evaluates it and prints the result in data format.<p>It was thought that a later version of LISP had the M-Expression/S-expression syntax as surface syntax. But that did not get any traction, because the S-expressions would be visible in the programming tools anyway: debugger, code inspector, code stepper. Thus it was more convenient to stay in the s-expression syntax, than to convert S-Expressions both from and into M-Expressions/S-Expressions.<p>For example a stepper for LISP code might look like this. :s is the single step command:<p><pre><code>    CL-USER 8 > (step (plus (minus 10 20) (plus 20 30)))
    (PLUS (MINUS 10 20) (PLUS 20 30)) -> :s
       (MINUS 10 20) -> :s
          10 -> :S
          10 
          20 -> :S
          20 
          (- A B) -> :s
             A -> :S
             10 
             B -> :s
             20 
          -10 
       -10 
       (PLUS 20 30) -> 
</code></pre>
and so on. The interpreter internally sees Lisp code as lists and just prints the lists while it steps the code...<p>If we wanted M-Expressions, then the things would needed to be converted everywhere/everytime, which is much less elegant than leaving everything in one notation.<p>LISP 2 was an effort to modernize LISP and to switch to a different syntax.</p>
]]></description><pubDate>Mon, 02 Sep 2024 16:26:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=41426744</link><dc:creator>_19qg</dc:creator><comments>https://news.ycombinator.com/item?id=41426744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41426744</guid></item></channel></rss>