What the imperative shell of an Functional Core/Imperative Shell language looks like

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

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. Pipefish

    Source code for the Pipefish programming language

    No, it's "shell" as in "shell of the code". The idea is that the imperative bits of the language, the bits that do the mutation of state and the IO, can can call lovely pure referentially transparent functions. But functions can't call commands (otherwise by definition they wouldn't be pure). So all your imperative-ness is reduced to about 1% of your code which lives right at the top of your call stack --- the "imperative shell" of your code. See [here](https://github.com/tim-hardcastle/Charm/blob/main/examples/adv.ch) for an example. The "imperative shell" is the main function --- all 13 lines of it --- and everything everywhere else is pure and immutable.

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. flix

    The Flix Programming Language

    I like it. Modern languages that distinguish between pure and impure programs like Flix, Koka, and Effekt do so on the type level instead of syntactically. This has three advantages:

  4. effekt

    A language with lexical effect handlers and lightweight effect polymorphism

    I like it. Modern languages that distinguish between pure and impure programs like Flix, Koka, and Effekt do so on the type level instead of syntactically. This has three advantages:

  5. promises-spec

    An open standard for sound, interoperable JavaScript promises—by implementers, for implementers.

    Advantage 1, nesting, is the most important here, and it's often the most-overlooked advantage. Overlooking nesting is how Promises in Javascript got to be fundamentally broken.

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

  • Algebraic Effects: Another mistake carried through to perfection?

    2 projects | /r/ProgrammingLanguages | 4 May 2023
  • Is continuation passing style conversion still used as an intermediate language?

    2 projects | /r/ProgrammingLanguages | 11 Apr 2023
  • The Registers of Rust - Without boats, dreams dry up

    1 project | /r/ProgrammingLanguages | 13 Mar 2023
  • An approach to manual memory management and side effect handling system, feedback, ideas and thoughts requested

    1 project | /r/ProgrammingLanguages | 25 Jan 2023
  • Is there a garbage collected, statically typed language, that has null safety, and doesn't use exceptions?

    1 project | /r/ProgrammingLanguages | 28 Sep 2022