unison
pocl
Our great sponsors
unison | pocl | |
---|---|---|
17 | 3 | |
5,525 | 59 | |
0.9% | - | |
9.9 | 0.0 | |
7 days ago | over 8 years ago | |
Haskell | ||
GNU General Public License v3.0 or later | - |
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.
unison
- Unison Programming Language
-
Unison Cloud
Short version: no type classes (yet)
Longer version:
Building upon what Quekid5 mentioned, Unison abilities are an implementation of what is referred to as algebraic effects in programming language literature. They represent capabilities like IO, state, exceptions, etc. They aren't really a replacement for type classes, though in some cases you can shoehorn abilities in where you might otherwise use a type class.
For someone coming from a Haskell background, I think that abilities are closer to a replacement for monad transformers. But in my opinion they are much more ergonomic.
Discusson of type classes comes up a lot. Here is a long-standing GitHub issue: https://github.com/unisonweb/unison/issues/502
For what it's worth, I've written Unison quite a lot over the past few years and while I've missed type classes at times, I think that reading unfamiliar code is easier without them. There's no implicit magic; you can see exactly what is being passed into a function. So far I've been happy with a bit more verbosity for the sake of readability.
-
Show HN: Winglang – a new Cloud-Oriented programming language
I've been following the Unison lang [1] for quite some. Wing seem to set similar goals? From the first glance Wing looks more polished, but there's "The Big Idea" behind Unison - is there something similar?
- Unison Language
-
C++ evolution vs C++ successor languages. Circle's feature pragmas let you select your own "evolver language."
in haskell it looks like this, you specify the language extensions you want at the top of the source files: https://github.com/unisonweb/unison/blob/trunk/unison-core/src/Unison/ABT.hs
-
Looking for a new language to learn for Advent of Code that's unlike anything you've tried before? Check out Unison!
they adjusted my ticket to be a bug fix on their part.
-
Syntax Design
I think Unison is going in this direction. Imo this is a mistake, as a program language functions not just as specification for the machine, but also as communication between programmers. Allowing the introduction of arbitrary dialects to suit individual preferences seems like it would interfere with that communication.
- Unison
- Unison Milestone 3
- What if Git worked with Programming Languages?
pocl
- Tree-shaking, the horticulturally misguided algorithm
-
Web bloat impacts users with slow devices
https://github.com/avodonosov/pocl
The unused javascript code can be removed (and loaded on demand). Although I am not sure how valuable that would be for the world. It only saves network traffic, parsing time and some browser memory for compiled code. But js traffic in the Internet is neglidgible comparing to, say, video and images. Will the user experience be signifiqanty better if browser is the saved from the unnesessary js parsing? I don't know of a good way to measure that.
-
Red and blue functions are a good thing
> for such a small piece of work
Don't take the example too literally, some functions calls can be here.
Running computations in parallel is often valuable. Or run computations in parallel with waiting for external resource - why does not the code in the article compute something while waiting for a, b and c?
Anyways, if async functions are so good, why not have all functions async?
The article says this a kind of "documentation" that tells you what functions can wait for some external data and what functions are "pure computation". If it was so, it would be OK. Such a documentation could be computed automatically based on the called function implementations and developer is hinted: "these two functions you call are both async, consider waiting for both in parallel". In reality, the async / await implementations prevent the non-async functions from becoming async without code change and rebuild. This restriction is just a limitation of how async / await is implemented, not something useful.
As other commenter says, the article "embraces a defect introduced for BC reasons as if it's sound engineering. It really isn't."
When my code is called by a 3rd party library, I can not change my code to async. That's the most unpleasant property of today's async / await. What yesterday was quick computation tomorrow can become a network call. For example, I may want to bodies of rarely used functions to only load when called first time (https://github.com/avodonosov/pocl).
The article suggest we have to decide upfront, at the top-level of the application / call stack, which parts can be implemented with as waiting blocks and which should never wait for anything external. This is not practical.
> It's almost always faster to do them in parallel if possible.
What are some alternatives?
nvim-treesitter-context - Show code context
lawvere - A categorical programming language with effects
dark - Darklang main repo, including language, backend, and infra
project-m36 - Project: M36 Relational Algebra Engine
cone - Cone Programming Language
structured-haskell-mode - Structured editing minor mode for Haskell in Emacs
nbdime - Tools for diffing and merging of Jupyter notebooks.
UwUpp - The next generation esoteric language
structured-haskell-m
syntactic_versioning - What if Git worked with Programming Languages?
git-merge-driver - Example of how to configure a custom git merge driver