Learning about typed languages, static analysis, and tools

This page summarizes the projects mentioned and recommended in the original post on /r/ProgrammingLanguages

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. vscode-extension-samples

    Sample code illustrating the VS Code extension API.

    1) Pick an editor and get to know its API. VS Code is good as it has a very restricted and simple API that is easy to write extensions for. It has samples for various its various providers. I haven't bothered looking at other editors, but I am guessing they will have similar offerings.

  2. SaaSHub

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

    SaaSHub logo
  3. The-Spiral-Language

    Functional language with intensional polymorphism and first-class staging.

    2) Assuming your editor plugins are in a different language than the one you are writing your own in, you are going to need a way to interface the two across processes. I ended up picking ZeroMQ for linking VS Code editor plugin which is written in Typescript and Spiral's compilation server which is written in F#.

  4. Hopac

    http://hopac.github.io/Hopac/Hopac.html

    3) This third part is the hardest, and that is to get proficient at concurrency itself. For this I had to study various libraries like Rx, but what I settled on after a lot of experimentation was to first compile the various passes to streams of lazy promises. For languages in particular, they have a top down structure and what is needed is to employ a lot of diffing in order to reuse old results. The difficult part is to organize all of this. I can't praise a library like Hopac enough, but even with it, it still took me months to get a grasp on the way the editor support segments should be designed. At the time of writing, I am a day away of finalizing what will be the true design of the language server. It is not that the end result is complex, this latest redesign of the last 1.5 weeks is in fact significantly simpler than what I had before, but concurrency requires different design principles than sequential programming and getting used to the new domain takes an active effort.

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

  • Hopac: Concurrent ML Implementation in F#

    1 project | news.ycombinator.com | 14 Jun 2024
  • How do I get around the lack of MailboxProcessor in Fable?

    2 projects | /r/fsharp | 12 May 2023
  • Recommended method for parallelism in Julia

    1 project | /r/Julia | 7 Apr 2021
  • TikTok could bypass US blockade by making a PWA

    1 project | news.ycombinator.com | 17 Jan 2025
  • Understanding SIMD: Infinite Complexity of Trivial Problems

    3 projects | news.ycombinator.com | 30 Nov 2024