Syntactic sugar for monad composition in Scala (by monadless)

Monadless Alternatives

Similar projects and alternatives to monadless

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better monadless alternative or higher similarity.

monadless reviews and mentions

Posts with mentions or reviews of monadless. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-08-11.
  • Kind: A Modern Proof Language
    7 projects | | 11 Aug 2021
    The `{..}` is from `RecordWildCards`.

    I do like the omission of `let` and `where` in favor of just variable definitions. For monadic notation, instead of `get` and `return` I'd prefer something like

    The main problem with `do`-inspired monadic notation is that it forces monadic code to always be in A-normal form, which is pretty annoying. It'd be far nicer to allow for monadic code to look the same as normal code, just with say an extra brace (such as "IO { }") to indicate that you're inside a monad.

    7 projects | | 11 Aug 2021
    Well `RecordWildcards` has been around for 14 years... but even without it instead of `{..}` you'd just have `_`s. The main thing that is different is that your Kind example had nested case statements while your Haskell example tried to match everything on one shot, which makes for a non-equivalent comparison.

    > Not sure how that could work, though. Idris had an interesting syntax, but IIRC it wasn't general.

    I assume you're talking about idiom brackets for applicatives? The general syntax is given in something like The idea is to basically take async-await syntax and generalize it to any monad.

    So e.g. your `Maybe` example (using `!` for the equivalent of `await` for concision) would look like

      Maybe {
  • Why asynchronous Rust doesn't work
    10 projects | | 9 Mar 2021
    > If anything, async-await feels like an extremely non-functional thing to begin with

    It, like many other things, forms a monad. In fact async-await is a specialization of various monad syntactic sugars that try to eliminate long callback chains.

    Hence things like Haskell's do-notation are direct precursors to async-await (some libraries such as Scala's monadless make it even more explicit, there lift and unlift are exactly generalized versions of async and await).

  • A note from our sponsor - InfluxDB | 21 Mar 2023
    Ingest, store, & analyze all types of time series data in a fully-managed, purpose-built database. Keep data forever with low-cost storage and superior data compression. Learn more →


Basic monadless repo stats
about 1 month ago
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives