A brief laundry list:<p>- Arc embraces macros.<p>- You can redefine anything.  (assign + -) (+ 3 4) evaluates to -1.  Not only are you an equal partner to the language, but the language is short enough to carry in your head.<p>- Green threads.  Here&#x27;s a snippet from Laarc which does hot code reloading:<p><pre><code>  (thread
    (on-err autoerr (fn ()
                      (while autoload*
                        (sleep 0.25)
                        (autoreload)))))

</code></pre>
It says &quot;When an error happens, call the &#x27;autoerr&#x27; function.  Every 0.25 sec, check whether any source has changed, and reload it if so.&quot;<p>But green threads make it so easy to do that in parallel.  I never once had to worry about synchronization issues in the case of the autoreloader.<p>- There&#x27;s no FFI for Arc.  However, I&#x27;m in the process of porting Arc from Racket to Lumen, which has a very interesting FFI thanks to LuaJIT: <a href="https:&#x2F;&#x2F;github.com&#x2F;sctb&#x2F;motor&#x2F;blob&#x2F;master&#x2F;motor.l" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sctb&#x2F;motor&#x2F;blob&#x2F;master&#x2F;motor.l</a><p>It&#x27;s literally &quot;copy-paste these C declarations.  Now you can call those C functions.&quot;  It quite simply rocks.<p>If you&#x27;re interested in Arc, consider Lumen as well.  <a href="https:&#x2F;&#x2F;github.com&#x2F;sctb&#x2F;lumen" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sctb&#x2F;lumen</a><p>It has many similarities to Arc, like a powerful macro system, and has some interesting distinctions, like keyword arguments and the FFI facilities.