<story><title>Mezzano: Operating system written in Common Lisp</title><url>https://github.com/froggey/Mezzano</url></story><parent_chain><item><author>blackrock</author><text>What is the reason why Lisp allows you to use the hyphen for an identifier name?&lt;p&gt;This overloads the subtraction operator. And it makes the code very confusing to read.&lt;p&gt;And plus, Lisp also uses the hyphen as the subtraction operator.</text></item><item><author>abhinav22</author><text>You get used to it pretty quickly. Just need a bit of practice.&lt;p&gt;I used to say that proper indenting helps readability but these days I have departed from the standard indenting and do my own thing.&lt;p&gt;That said, this guide on formatting lisp is very useful IMO if you want to learn to read lisp code better:&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;link.medium.com&amp;#x2F;idMRZk93Fdb&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;link.medium.com&amp;#x2F;idMRZk93Fdb&lt;/a&gt;&lt;p&gt;I actually wrote it, but now I don’t follow many of its principles :D perhaps because I got a deeper understanding of it. Check it out if and see if it helps</text></item><item><author>enw</author><text>Does anyone find Lisp readable?&lt;p&gt;I haven&amp;#x27;t used Lisp professionally, but find the code terribly confusing to read (mostly due to the look of it, I assume), while I can usually follow code of an unknown language reasonably well.</text></item><item><author>sanxiyn</author><text>Some starting points:&lt;p&gt;USB mass storage driver: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;drivers&amp;#x2F;usb&amp;#x2F;mass-storage.lisp&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;drivers&amp;#x2F;usb&amp;#x2F;m...&lt;/a&gt;&lt;p&gt;ext4 file system (read-only): &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;file&amp;#x2F;ext4.lisp&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;file&amp;#x2F;ext4.lis...&lt;/a&gt;&lt;p&gt;TCP network stack: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;net&amp;#x2F;tcp.lisp&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;net&amp;#x2F;tcp.lisp&lt;/a&gt;</text></item></parent_chain><comment><author>tsimionescu</author><text>&amp;gt; What is the reason why Lisp allows you to use the hyphen for an identifier name?&lt;p&gt;Lisp has only ~7 special characters: (, ), #, &amp;#x27;, &amp;quot;, ` and wite-space. All others are valid as part of an identifier, alone or together. So for example &amp;quot;---&amp;quot; is a valid Lisp identifier, just as much as &amp;quot;aaa&amp;quot;.&lt;p&gt;There is no subtraction operator in lisp. &amp;quot;-&amp;quot; is simply the name of a function in the standard library that implements addition (technically, it might be a special form and not a function, but that&amp;#x27;s beside the point).&lt;p&gt;&amp;gt; This overloads the subtraction operator. And it makes the code very confusing to read.&lt;p&gt;a-b-c in Lisp is unambiguously an operator. Subtraction would be (- c b a) - you can&amp;#x27;t really confuse these two.&lt;p&gt;Subjectively, I happen to think that hyphenated-names are much easier to read and type than camelCase or snake_case. I think most of the world agrees as well, since this is one of the more common typographical roles of the hyphen: joining words, such as &amp;#x27;pre-approved&amp;#x27; or &amp;#x27;ill-defined&amp;#x27;.</text></comment>
<story><title>Mezzano: Operating system written in Common Lisp</title><url>https://github.com/froggey/Mezzano</url></story><parent_chain><item><author>blackrock</author><text>What is the reason why Lisp allows you to use the hyphen for an identifier name?&lt;p&gt;This overloads the subtraction operator. And it makes the code very confusing to read.&lt;p&gt;And plus, Lisp also uses the hyphen as the subtraction operator.</text></item><item><author>abhinav22</author><text>You get used to it pretty quickly. Just need a bit of practice.&lt;p&gt;I used to say that proper indenting helps readability but these days I have departed from the standard indenting and do my own thing.&lt;p&gt;That said, this guide on formatting lisp is very useful IMO if you want to learn to read lisp code better:&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;link.medium.com&amp;#x2F;idMRZk93Fdb&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;link.medium.com&amp;#x2F;idMRZk93Fdb&lt;/a&gt;&lt;p&gt;I actually wrote it, but now I don’t follow many of its principles :D perhaps because I got a deeper understanding of it. Check it out if and see if it helps</text></item><item><author>enw</author><text>Does anyone find Lisp readable?&lt;p&gt;I haven&amp;#x27;t used Lisp professionally, but find the code terribly confusing to read (mostly due to the look of it, I assume), while I can usually follow code of an unknown language reasonably well.</text></item><item><author>sanxiyn</author><text>Some starting points:&lt;p&gt;USB mass storage driver: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;drivers&amp;#x2F;usb&amp;#x2F;mass-storage.lisp&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;drivers&amp;#x2F;usb&amp;#x2F;m...&lt;/a&gt;&lt;p&gt;ext4 file system (read-only): &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;file&amp;#x2F;ext4.lisp&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;file&amp;#x2F;ext4.lis...&lt;/a&gt;&lt;p&gt;TCP network stack: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;net&amp;#x2F;tcp.lisp&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;froggey&amp;#x2F;Mezzano&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;net&amp;#x2F;tcp.lisp&lt;/a&gt;</text></item></parent_chain><comment><author>kazinator</author><text>C programmers on Unix somehow don&amp;#x27;t get confused by the POSIX shell:&lt;p&gt;&lt;pre&gt;&lt;code&gt;  $ foo-bar()
  &amp;gt; {
  &amp;gt;    echo 42
  &amp;gt; }
  $ foo-bar
  42
&lt;/code&gt;&lt;/pre&gt;
or Make:&lt;p&gt;&lt;pre&gt;&lt;code&gt;  OBJ_COMMON := common.o

  OBJ-$(CONFIG_FOO) += foo.o foo-tab.o
  OBJ-$(CONFIG_BAR) += bar.o

  OBJS := $(COMMON_OBJS) $(OBJ-y)

&lt;/code&gt;&lt;/pre&gt;
even though foo-bar and OBJ-y look like a C subtraction.&lt;p&gt;C programmers on Unix came up with this stuff themselves.</text></comment>