containers
hevm
Our great sponsors
containers | hevm | |
---|---|---|
11 | 10 | |
314 | 2,040 | |
0.3% | 0.4% | |
6.2 | 4.8 | |
1 day ago | 7 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).
- 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.
-
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
-
Monthly Hask Anything (July 2021)
When I was first learning I did a bunch of leetcode/codewars to get familiar with the containers library and GHCI repl workflow. Then using Real World Haskell as a reference I implemented a few coreutils to play with IO.
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.
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?
-
Barriers to Entry
Dapptools is another framework that has nothing to do with JavaScript.
What are some alternatives?
foundry - Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
web3.py - A python interface for interacting with the Ethereum blockchain and ecosystem.
singletons - Fake dependent types in Haskell using singletons
ethereum-analyzer - An Ethereum contract analyzer.
EdisonAPI - Edison: A Library of Efficient Data Structures
ethereum-rlp
igraph - Incomplete Haskell bindings to the igraph library (which is written in C)
miso - :ramen: A tasty Haskell front-end framework
eattheblocks - Source code for Eat The Blocks, a screencast for Ethereum Dapp Developers
reach-lang - Reach: The Safest and Smartest DApp Programming Language
ethereum-client-haskell