<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects on Aleksey Veresov</title><link>https://veresov.pro/projects/</link><description>Recent content in Projects on Aleksey Veresov</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 01 Jun 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://veresov.pro/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>CSX</title><link>https://veresov.pro/projects/csx/</link><pubDate>Wed, 01 Jun 2022 00:00:00 +0000</pubDate><guid>https://veresov.pro/projects/csx/</guid><description>&lt;p&gt;I think it is an interesting example of how even a language which is considered to be restrictive can turn out to be flexible enough to mimic such a permissive language as LISP.&lt;/p&gt;
&lt;p&gt;The source code is available on &lt;a href="https://github.com/aversey/csx"&gt;GitHub&lt;/a&gt;.
You can read the thesis &lt;a href="https://veresov.pro/projects/csx/veresov-csx.pdf"&gt;here&lt;/a&gt;, although it is available only in Russian.&lt;/p&gt;
&lt;p&gt;In short, all LISP objects are represented as fat pointers in &lt;code&gt;void*&lt;/code&gt;, and vararg functions are used to implement the list notations of LISP.
0 is used as an end marker for the list notations, since all objects are pointers and no valid pointer can be 0.
The library enables writting code like this, intermixing C and LISP-style code:&lt;/p&gt;</description></item></channel></rss>