Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    A

    Ante Blog

    antelang.org · Company blog · on HN since 2022

    The Ante blog covers the design of Ante, a low-level functional language with algebraic effects and safe shared mutability.

    Visit blogHN submissions
    Languages & CompilersProgramming
    What HN says

    Commenters list Ante among effect-based languages, call it the Rust syntax they want, and cite its effects post as a neat abstraction.

    Stats for nerds
    16HN people shared it
    15linked in comments
    886story points
    May 2026last shared
    2022people per year2026

    Top posts on HN

    1. 1
      Ante: A low-level functional language
      6 people · 448 points · first shared 2022 · 217 comments on HN
    2. 2
      Why Algebraic Effects?
      4 people · 296 points · first shared 2025 · 199 comments on HN
    3. 3
      Algebraic effects, ownership, and borrowing
      1 person · 109 points · first shared 2024 · 22 comments on HN
    4. 4
      Programming Language Design: Safe, Shared Mutability with Unboxed Types
      4 people · 14 points · first shared 2024 · Discussion on HN
    5. 5
      A Vision for Future Low-Level Languages
      3 people · 13 points · first shared 2025 · Discussion on HN
    6. 6
      Stable mutable references in the Ante programming language
      3 people · 6 points · first shared 2025 · Discussion on HN
    7. 7
      Language
      1 person · first shared 2022
    8. 8
      Ideas
      1 person · first shared 2022

    What HN people wrote when they linked it

    • verdagonJun 2022

      It's amazing what strides languages are making in the realms of memory safety. I think D's got the right idea, to have pockets of zero-cost memory safety, on top of an overall architecture that embraces shared mutability's benefits.

      A lot of languages are going this direction too:

      * Cone is putting a full borrow checker on top of GC, RC, and single ownership: https://cone.jondgoodwin.com/

      * Vale is putting opt-in "region borrow checking" on top of single ownership with generational references: https://verdagon.dev/blog/zero-cost-refs-regions

      * Lobster is employing an automatic-borrow-checker-esque algorithm on top of RC for some brilliant speedups: https://www.strlen.com/lobster/

      * Ante has some designs for lifetime inference, which I think will work really well: https://antelang.org/

      * HVM is a runtime for Haskell that uses borrow checker semantics and falls back to clone. It's not shared mutability, but Haskell without GC is pretty cool! https://github.com/Kindelia/HVM

      I particularly like D's approach because it's opt-in; we can use it in the areas of the program where we need performance the most, and prioritize flexibility and development velocity everywhere else, which I think is the right balance for most programs developed today.

      It also means one can gradually ease into learning how to use static analysis and their more complex constructs (like return scope, mentioned in the article). One can be proficient in the basic language quickly, and then improve their…

    • jfecherJun 2022

      I'm not a fan of python (it handles significant whitespace somewhat poorly). Cases like mixed tab-space whitespace and single-line only lambdas are python-specific problems for example.

      I chose it mainly because I like the style and I haven't found it to be an issue in practice yet, especially with flexible rules for line continuations. The biggest detriment to me is the lack of auto-formatters for indentation.

      Edit: I'll add to this a point I haven't seen discussed before about functional languages using the `f a b` syntax specifically. Without significant whitespace you cannot really have semicolon ellision with this syntax since almost any line may be interpreted as a function application of the next line. E.g. `a = b + c` and `foo 32` as subsequent lines would be interpreted as `a = b + (c foo 32)`, hence why ocaml requires semicolons. For some people semicolons are fine, but they're just noise to me :)

      There's more detail on the specific significant whitespace scheme used on the website here: https://antelang.org/docs/language/#significant-whitespace

    • rayinerFeb 2024

      The author’s other blog post is also interesting, highlighting some of the complexity in Rust arising from tying together the concepts of shared references and immutability: https://antelang.org/blog/safe_shared_mutability/ (I.e. in Rust, mutability precludes shared references, even when it would be safe, such as when those references could not be shared across threads.)

      Getting rid of explicit lifetime variables is also an interesting choice within this design space.

    • alexisreadNov 2025

      It looks like you've looked over a number of languages, but I don't see anything about Forth, Forsp, Ante, Steps, Austral, Wat or Vale? I'd suggest they all have useful components to steal from :)

      https://github.com/ablevm/able-forth

      https://xorvoid.com/forsp.html

      https://antelang.org/blog/why_effects/

      https://tinlizzie.org/

      https://news.ycombinator.com/item?id=43419928

      https://github.com/GiacomoCau/wat-js/tree/master

      https://verdagon.dev/grimoire/grimoire

    • RuskyApr 2025

      That is true of `&mut T`, but `&mut T` is not the only way to do mutation in Rust. The set of possible safe patterns gets much wider when you include `&Cell<T>`. For example see this language that uses its equivalent of `&Cell<T>` as the primary mutable reference type, and uses its equivalent of `&mut T` more sparingly: https://antelang.org/blog/safe_shared_mutability/

    • epestrMay 2026

      Ante has some points on this issue: https://antelang.org/blog/why_effects. All of this is just different syntax in other languages and solved but the abstraction provided seems to be neater.

    Related

    Evan Ovadiaverdagon.dev60 people

    Borrow Checking, RC, GC, and the Eleven () Other Memory Safety Approaches

    Evan Ovadia
    Personal · last shared 2026
    Lambda the Ultimatelambda-the-ultimate.org615 people

    Simon Peyton Jones Elected into the Royal Society Fellowship

    Lambda the Ultimate
    Publication · last shared 2026
    LessWronglesswrong.com2.4k people

    The Best Textbooks on Every Subject

    LessWrong
    Publication · last shared 2026
    Elm Blogelm-lang.org283 people

    A Farewell to FRP

    Elm Blog
    Company · last shared 2026
    Better Programmingbetterprogramming.pub319 people

    Three programmers got fired, including me, due to a single app crash

    Better Programming
    Publication · last shared 2025
    Coalton Blogcoalton-lang.github.io40 people

    Coalton: How to Have Our (Typed) Cake and (Safely) Eat It Too, in Common Lisp

    Coalton Blog
    Company · last shared 2026
    FP Complete Blogfpcomplete.com201 people

    Monads and GATs in Nightly Rust

    FP Complete Blog
    Company · last shared 2025
    Enfranchised Mindenfranchisedmind.com36 people

    Apple is just Microsoft with better marketing

    Enfranchised Mind
    Publication · last shared 2012