containers
hevm
containers | hevm | |
---|---|---|
11 | 10 | |
335 | 2,121 | |
2.1% | 1.1% | |
8.8 | 2.4 | |
18 days ago | about 2 months ago | |
Haskell | Haskell | |
BSD 3-clause "New" or "Revised" License | GNU Affero General Public License v3.0 only |
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.
containers
-
Programming with -XStrict/Unlifted datatypes and associated ecosystem/libraries/preludes
"Make invalid laziness unrepresentable" means you should use strict versions of container types instead of lazy ones. However, for better or for worse, sometimes the "strict version" of a data type is not actually a strict data type, it's just a strict API to the lazy type. Examples include Data.Map.Strict (not Data.Map or Data.Map.Lazy) or Data.HashMap.Strict (not Data.HashMap.Lazy) (sadly there is no Data.Sequence.Strict but perhaps there will be one day).
-
How are Lists & Sequences (from containers package) control structures?
Indeed it's rather subtle. See https://github.com/haskell/containers/issues/752 for more discussion on the matter. Nonetheless, I believe it is "spine strict" in the sense that thunks for all values always exist, even if the spine that holds them can be rearranged due to laziness.
-
An elegant approach to solve this problem?
Note that the list index operator has O(n) complexity. Ideally you'd want to use something like Seq from the containers package
- Monthly Hask Anything (June 2022)
-
Why is seemingly infinite (lazy) recursion faster?
Edison and containers both have sequence types that support efficient, cons, snoc, viewL, viewR, append, map, and length.
-
Haskell - Important Libraries
containers
-
Assessing Haskell (blogpost, slightly negative!)
Calling linked lists Haskell's "primary data structure" seems off-base to me. Yes, there's String, yes, there's built-in syntax for List... but there's also everything in containers, and vector is pretty easy to use in practice, though it would probably be good for more learning material to mention it more prominently.
-
Is a a MONAD in Haskell just the functional equivalent of a generic type (such as in C#) and how do MONADs enable things like saving data?
Haskell has much more sophisticated immutable data structures, you can find them in the "containers" package: https://hackage.haskell.org/package/containers
-
Looking for projects that make heavy use of IntMap which have benchmarks
I asked this on the libraries mailing list but thought posting here would bring in potentially more responses. I made a recent change to the behaviour of lookup and find (see here for more details: https://github.com/haskell/containers/pull/800).
-
Semver doesn't mean MAJOR.MINOR.PATCH, it means FAILS.FEATURES.BUGS
Rust has nothing on Haskell. containers, which might as well be considered part of the standard library, has been out for almost 14 years and is still 0.x
hevm
-
The Ethereum Virtual Machine (EVM) - What Is It and How to Make Business on It?
hevm - written in Haskel
-
Solidity ForwardProxy: easily emulate EOAs in environments where they are not availabe or are cumbersome to use.
However, since we are using a pure Solidity stack, writing tests with ds-test and running them with dapp.tools or foundry, this was a bit more complicated.
-
Jo – a shell command to create JSON
There's also jshon which is a simple stack-based DSL for constructing JSON from shell scripts.
http://kmkeen.com/jshon/
It's written in C and is not actively developed. The latest commit, it seems, was a pull request from me back in 2018 that fixed a null-termination issue that led to memory corruption.
Because I couldn't rely on jshon being correct, I rewrote it in Haskell here:
https://github.com/dapphub/dapptools/tree/master/src/jays
This is also not developed actively but it's a single simple ~200 line Haskell program.
-
Building Smart Contracts with Foundry by Paradigm
It fits into the stack the same way that Hardhat, Truffle, and Dapp Tools do.
-
What are best practices for testing/ci+cd for solidity?
I find it insane that much of Solidity code testing is still happening in external languages. I've recently found https://github.com/dapphub/dapptools and that has blown a lot of my confusion away.
-
What development tools do you guys use?
Honourable mention would be https://github.com/dapphub/dapptools for those who prefer UNIX-like tooling, but I'd say for the most part Foundry seems to be the better choice now.
-
The State of Coordination, Community, and Future Impact
Firstly, I'm warning you that I'm going to shill some amazing things in the Ethereum ecosystem. I would even go so far to say as some of these things are so positive sum and self-evidently public goods that shilling them in the ethereum subreddit should be considered neutral. For example, GitcoinDAO is a place where we all have the permissionless ability to coordinate in building tools and services, like dapptools, for all open-source software, full stop. There's ways to fundraise in public besides joining Discord or sliding into Twitter DM's, like Juicebox. There is a plethora of industry leaders exploring decentralized hosting for bluechip-scale applications, such as Skynet.
- Is "Mastering Ethereum" still the best way to learn Solidity development?
-
What is the best EVM debugger in 2021?
If you're into CLI tools - https://dapp.tools/
-
Barriers to Entry
Dapptools is another framework that has nothing to do with JavaScript.
What are some alternatives?
singletons - Fake dependent types in Haskell using singletons
reach-lang - Reach: The Safest and Smartest DApp Programming Language
miso - :ramen: A tasty Haskell front-end framework
adjunctions - Simple adjunctions
foundry - Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.