Carp, a compiled Lisp with type inference and a borrow checker
The borrow checker is <i>the</i> reason to use Rust, in spite of its annoyances (clunky syntax, limited type inference, non-interactive programming, long compilation times, etc.), so it&#x27;s always nice to see someone trying to provide the upsides of Rust without the downsides.<p>That being said, your website is disappointingly terse regarding how Carp recovers the advantages of Rust in the context of a Lisp derivative. What makes this particularly suspicious is the fact that, in the past, Lisp programmers have claimed to recover the advantages of other statically typed languages in a Lisp setting, but there have always been huge caveats, like “the system can be very easily circumvented, reducing the benefits of static typing to nothing”.<p>The main reason why I feel confident that Rust is a safe language isn&#x27;t just the fact that rustc seems to catch many bugs in practice. That alone wouldn&#x27;t distinguish it from the countless static analysis tools for C and C++ that have existed for decades. The main reason why, at least in my opinion, Rust is such a trustworthy language in spite of its ginormous complexity, is the fact that its core developers, in particular Niko Matsakis, do a terrific job of communicating the process by which Rust&#x27;s features are conceived and designed. When you read Matsakis&#x27; blog [0], it becomes patently clear that Rust&#x27;s developers take into account the kind of corner cases that in many other languages are only discovered months or years after the feature has been implemented [1][2].<p>Other languages that inspire similar confidence in me are:<p>(0) Standard ML. It has a formal proof of type safety.<p>(1) Pony. It has a formal proof of type safety.<p>(2) Haskell, <i>as specified in the Haskell Report</i> (i.e., without the crazy GHC-specific language extensions), because its type system is similar to Standard ML&#x27;s, and there are no reasons to believe the differences introduce any type safety holes.<p>(3) OCaml, <i>again without the crazy extensions</i> (GADTs, first-class modules, etc.), for more or less the same reasons as Haskell.<p>Links:<p>[0] <a href="http:&#x2F;&#x2F;smallcultfollowing.com&#x2F;babysteps&#x2F;" rel="nofollow">http:&#x2F;&#x2F;smallcultfollowing.com&#x2F;babysteps&#x2F;</a><p>[1] <a href="http:&#x2F;&#x2F;joyoftypes.blogspot.pe&#x2F;2012&#x2F;08&#x2F;generalizednewtypederiving-is.html" rel="nofollow">http:&#x2F;&#x2F;joyoftypes.blogspot.pe&#x2F;2012&#x2F;08&#x2F;generalizednewtypederi...</a><p>[2] <a href="http:&#x2F;&#x2F;io.livecode.ch&#x2F;learn&#x2F;namin&#x2F;unsound" rel="nofollow">http:&#x2F;&#x2F;io.livecode.ch&#x2F;learn&#x2F;namin&#x2F;unsound</a>