monadless VS py2many

Compare monadless vs py2many and see what are their differences.

monadless

Syntactic sugar for monad composition in Scala (by monadless)

py2many

Transpiler of Python to many other languages (by py2many)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
monadless py2many
4 29
275 590
0.4% 2.2%
0.0 8.1
about 2 months ago 15 days ago
Scala Python
Apache License 2.0 MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

monadless

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 | news.ycombinator.com | 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 https://github.com/monadless/monadless

    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 | news.ycombinator.com | 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 https://github.com/monadless/monadless. 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 | news.ycombinator.com | 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 https://github.com/monadless/monadless make it even more explicit, there lift and unlift are exactly generalized versions of async and await).

py2many

Posts with mentions or reviews of py2many. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-06-17.

What are some alternatives?

When comparing monadless and py2many you can also consider the following projects:

pybind11 - Seamless operability between C++11 and Python

PyO3 - Rust bindings for the Python interpreter

PythonNet - Python for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers.

PyCall.jl - Package to call Python functions from the Julia language

julia - The Julia Programming Language

rust-numpy - PyO3-based Rust bindings of the NumPy C-API

Python-Complementary-Languages - Just a small test to see which language is better for extending python when using lists of lists

sqlglot - Python SQL Parser and Transpiler

jq-console - Feature complete web terminal

functorch - functorch is JAX-like composable function transforms for PyTorch.

async-trait - Type erasure for async trait methods

acados - Fast and embedded solvers for nonlinear optimal control