This is due to how it easily lends itself to transforming unstructured inputs into structured outputs, and also because of its amazing asynchronous programming model.
592 karma · joined April 15, 2014
This is due to how it easily lends itself to transforming unstructured inputs into structured outputs, and also because of its amazing asynchronous programming model.
That's definitely not true, even if that was true maybe 6 years ago. As someone who's uses Haskell daily and also many other languages, I can see Haskell's tooling as more advanced than many others.
It has been a great experience so darn it makes processes very resilient against change and very easy to come back to after years.
The library is open source too:
It has a feature-rich LSP, code formatter, package manager, dead-code checker, configurable linter, thread debugger, memory debugger, vulnerabilities checker, and much more.
That’s just what is provided by external tooling. Then, it also has everything the compiler has to offer, which is bit more than what most languages do. For example, you can now compile to JavaScript or WASM.
It will not. We use it at work for all transactions and its is very performant.
users
& map validate
& catMaybes
& mapM persist result <- do
a <- someEitherValue
b <- anotherEitherValue
return (doStuff a b)
In the above example the do notation will unwrap the values as an and b, but if one of the results is Left, the computation is aborted, returning the Left value.This is one just of the many techniques available to make error checking linear.
In Haskell that’s Debug.Trace.traceShow. You can use it in pure code too.
I also agree the parties should disclose the public key and the parameters to calculate the hash.
The code and the keys are stored in a database that is audited by political parties before the election. What I’m not certain about is whether they have access to it at this time.
Proving the validity of the acts should be trivial, especially for any party who had access to the audited database. There is little point in forging fake ones.
Each copy must be signed by all witnesses and also contains a digitally-signed hash of the tally at the bottom of the receipt.
Political parties have access to the signing key and can verify that the signature matches.
Multiple copies are printed. One goes to the CNE, another goes to the military, and several others are given to witnesses representing different political parties.
Each copy must be signed by all the witnesses, including the representative from the CNE.
The opposition candidate gathered as much as 80% of the total printouts and made them available for everyone to see and analyze.
Printouts can be validated because the result is digitally signed with a key that is known to the political parties and other organizations. The signature is at the end of each printout.
We use GitHub actions for deployment and database migrations are just one step of the pipeline. The step invokes sqitch deploy which runs all the pending migration files.
Then, all the approval process is standard for the environment. We require approvals in pull requests before merging to the main branch.
Hiring was actually Haskell’s strong side. I managed to hire 6 engineers in only one month. There were more than 50 applicants to the position. Just the idea of using Haskell in production is attractive to many.
It’s been a great experience overall. I worked at a python company before this one and it’s been refreshing not having unexpected runtime errors. Moving money around requires more robustness than your typical app.