A new F# compiler feature: graph-based type-checking

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

CodeRabbit: AI Code Reviews for Developers
Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
coderabbit.ai
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • Fable: F# |> BABEL

    F# to JavaScript, TypeScript, Python, Rust and Dart Compiler

    https://fable.io/

    Here build times are not really an issue as it seems to be hot-transpiling to js, so save and site is reloaded almost instant (at least small sites):

    My small tools site built with Fable: https://peheje.github.io/compare.html

    If you look at the JS - that's of-course the production minimized build, the transpiled JS is pretty nice and readable.

    Super simple site - vanilla JS seems wonderfully easy with F#, easy to hide its warts and build easy re-usable items.

    But there's of course also smarter stuff with two-way bindings via html annotation and builders etc. I am actually using Feliz.ViewEngine, which is building the HTML using F#, but only for the navigation bar. Might try converting a page to it.

  • CodeRabbit

    CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.

    CodeRabbit logo
  • elmish

    Elm-like abstractions for F# apps

  • clojure

    The Clojure programming language

    I have a tangential question that is related to this cool new feature.

    Warning: the question I ask comes from a part of my brain that is currently melted due to heavy thinking.

    Context: I write a fair amount of Clojure, and in Lisps the code itself is a tree. Just like this F# parallel graph type-checker. In Lisps, one would use Macros to perform compile-time computation to accomplish something like this, I think.

    More context: Idris2 allows for first class type-driven development, where the types are passed around and used to formally specify program behavior, even down to the value of a particular definition.

    Given that this F# feature enables parallel analysis, wouldn't it make sense to do all of our development in a Lisp-like Trie structure where the types are simply part of the program itself, like in Idris2?

    Also related, is this similar to how HVM works with their "Interaction nets"?

    https://github.com/HigherOrderCO/HVM

    https://www.idris-lang.org/

    https://clojure.org/

    I'm afraid I don't even understand what the difference between code, data, and types are anymore... it used to make sense, but these new languages have dissolved those boundaries in my mind, and I am not sure how to build it back up again.

  • HVM

    A massively parallel, optimal functional runtime in Rust

    I have a tangential question that is related to this cool new feature.

    Warning: the question I ask comes from a part of my brain that is currently melted due to heavy thinking.

    Context: I write a fair amount of Clojure, and in Lisps the code itself is a tree. Just like this F# parallel graph type-checker. In Lisps, one would use Macros to perform compile-time computation to accomplish something like this, I think.

    More context: Idris2 allows for first class type-driven development, where the types are passed around and used to formally specify program behavior, even down to the value of a particular definition.

    Given that this F# feature enables parallel analysis, wouldn't it make sense to do all of our development in a Lisp-like Trie structure where the types are simply part of the program itself, like in Idris2?

    Also related, is this similar to how HVM works with their "Interaction nets"?

    https://github.com/HigherOrderCO/HVM

    https://www.idris-lang.org/

    https://clojure.org/

    I'm afraid I don't even understand what the difference between code, data, and types are anymore... it used to make sense, but these new languages have dissolved those boundaries in my mind, and I am not sure how to build it back up again.

  • ApiSurface

    Library to ensure the consistency and documentation coverage of an F# assembly's public API

    May I plug https://github.com/G-Research/ApiSurface/ ? It ensures this as part of your testing pipeline, and requires an appropriate minor or major SemVer bump if you alter the API in a non-breaking or breaking way.

  • free-vscode-csharp

    Free/Libre fork of the official C# extension for VSCode

    I only tried F# for few days, but it was a pleasant experience on both macos and linux.

    dotnet CLI should take care of build process, it can even generate self-sufficient executable (that bundle parts of .NET in them). The infamous required XML boilerplate has also been cut down to near-zero.

    My biggest gripe is that Microsoft's debugger is closed-source and proprietary (though free for users of official VSCode builds). There is open-source netcoredbg by Samsung, so you can use VSCod[e,ium] with https://open-vsx.org/extension/muhammad-sammy/csharp , but YMMV.

  • sqlx

    🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, and SQLite. (by launchbadge)

    SQLX has entered the chat [1].

    [1] https://github.com/launchbadge/sqlx

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • manifold

    Manifold is a Java compiler plugin, its features include Metaprogramming, Properties, Extension Methods, Operator Overloading, Templates, a Preprocessor, and more.

    Nice.

    Java has what looks like SQLx on steroids with the manifold project coming down the pike.

    https://github.com/manifold-systems/manifold/blob/master/man...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Rama on Clojure's terms, and the magic of continuation-passing style

    6 projects | news.ycombinator.com | 14 Oct 2024
  • Exploring a foreign F# codebase

    4 projects | dev.to | 24 Feb 2024
  • Rust & MySQL: connect, execute SQL statements and stored procs using crate sqlx.

    3 projects | dev.to | 11 Sep 2023
  • Comparing Objective Caml and Standard ML

    5 projects | news.ycombinator.com | 15 Feb 2023
  • Rust metaprogramming vs C++

    3 projects | /r/rust | 9 Feb 2023

Did you konow that F# is
the 48th most popular programming language
based on number of metions?