Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
The Haskell Elephant in the Room (stephendiehl.com)
420 points by tenslisi on July 30, 2020 | hide | past | favorite | 329 comments


There are also a lot of traditional finance companies using Haskell[1]. And, historically some of the people who created the language itself and have worked on GHC (and other compilers), or contributed heavily to the ecosystem have worked for traditional banks[2].

I don't mention them to encourage people to attack these people, but it comes off as a bit selective to focus on the people using your language for cryptocurrency when it's also used heavily by traditional fintech companies, as well as defense contractors, and even for large retail chains (Target uses it for data analysis). Facebook also uses it for their spam detection system. Why are all of these uses fine and cryptocurrency is not? And if they also aren't fine, then how should we solve this problem? Start non-profits/charities that specifically use Haskell, and somehow make those the majority of the available jobs that use it? That seems pretty infeasible unless you want to solve the broader problem of these jobs existing in the first place.

[1] https://www.reddit.com/r/haskell/comments/6p2x0p/list_of_com... [2] https://en.wikipedia.org/wiki/Lennart_Augustsson, https://www.linkedin.com/in/ekmett/, https://stackoverflow.com/users/83805/don-stewart


The "What is happening?" and "How is it happening?" sections of the article spend 900 words differentiating legal financial services from cryptocurrency scams.


I disagree with the idea that traditional legal financial services commit less fraud than cryptocurrency scams do. They just get away with it easier.

> Normally these frauds are recognized for what they are quite quickly and the courts and regulatory bodies can clean up the mess and rectify the damages to those who have been misled

That just comes off as total BS to me. How many regular people were awarded damages after the 2008 meltdown, which was due to massive fraud in the mortgage industry?


> regulatory bodies can clean up the mess and rectify the damages to those who have been misled

That seems true. The system relevant banks got their bailout. Regular people OTOHS are not system relevant. So everything's fine. /s


"Legal financial services are bailed out by the state when they destroy the economy, cryptocurrencies don't do that" doesn't take 900 words.


Except when they do get bailed out. Eth.


What exactly are you referring to? Can you link an article to explain, as it sounds like you're saying Ethereum was bailed out by the federal government.


ETH core developers bailed out the rich-in-ETH people who lost money due to the bug in The DAO by forking the currency.

Capitalism for the poor, socialism for those close to the core developers.


I mean, you ask a lot of questions, but the first one is answered by the article and the others aren't really that important given the answer to the first.


The only solution to what the article is ranting about is to grow the ecosystem. Move it beyond all kinds of banking. Move it beyond all kinds of finance. Move it beyond all kinds of any specific industry or endeavor. Otherwise, we'll continue to have people ranting about cars because people drive to and from some kinds of jobs the article writers think are bad.


My rough understanding is that the focus is not on who is using the language, but rather who is funding the language, which of course is a huge distinction.


But banks (particularly Standard Chartered as an example) seem to have also funded a lot of the really early work on Haskell if I'm not mistaken. At least indirectly by hiring people who also work on the core tooling/libraries/etc. Haskell, and functional programming in general has a history of being used and developed heavily in the fintech industry (see Jane Street for OCaml as another example). It's no surprise that cryptocurrency startups would find it attractive and continue that trend. So it really boils down to how ethical you think one group is vs the other, which I think is a ridiculous argument to have. If a specific company or group is doing something unethical/illegal, then name and shame them, but that doesn't seem to be the issue here.


> really early work on Haskell

Only if you are very young.


yes, good point, it's been around since the 90s when all of the work done on it was funded by purely academic institutions. I'm 29 years old, and I started using Haskell in about 2009, and I think that's around the time when it started picking up a larger userbase too.


There are also a lot of traditional finance companies using Haskell[1]

This list is misleading. Sure, there are probably a few people at any of these companies dabbling with Haskell. But the only major financial company where it is mainstream is StanChart.

Also, FTA, Isle of Man, not Mann. How seriously can we take a rant about a place that doesn’t even know how to spell it (source: am in Wales, that Isle is just off our coast).

Fun fact: when Scots say “och aye the noo”, noo is the Manx word for “saint”. English people think noo is “news”. It gives a totally different meaning.


It may well be "pretty infeasible" in the short run but having a morally* solid background for technological development is paramount for it's long-term well-being.

Otherwise the foundations will rot while the establishment thrive and the creative driving forces will find new "cleaner" playgrounds within which to express themselves.

*not talking about absolutist "this must have equal outcome for everyone" style morals but rather the harder kind that deals with the long term societal impact of a given thing. And in this context I totally believe the discussion brought up by Stephen Diehl is exceptionally important!


I agree with your premise. I think we should divest from scammy cryptocurrency companies. I also think we should divest from scammy banks, and companies that supply weapons to be used for killing people overseas as well (specifically referring there to companies like Raytheon), and companies that violate our privacy and manipulate our society negatively (i.e. Facebook).

Obviously if you release something with an open source or FOSS license, then anyone is free to use it though. I'm against any kind of morality clause for free software.


Yup, can agree on those points too.

> Obviously if you release something with an open source or FOSS license, then anyone is free to use it though. I'm against any kind of morality clause for free software.

Absolutely, it's the organisation /& community that needs to have the moral compass in proper order. In my optics it is about fostering the right sort of positive culture for use of a given tech rather than try to enforce it via totalitarian/legal means - the latter is bound to fail.


What iare the killer haskell fintech libraries?


They are likely all in-house tools. Take a look at github projects of this Haskell-using bank for example: https://github.com/barclays

Not sure if this counts, but IIRC in one of the talks, Edward Kmett was describing row-polymorphic language they implemented in Scala to be used internally at S&P (or wherever he was working).


I have great respect for Stephen Diehl and love his writing. But I must respectfully disagree. I think it’s fantastic that Haskell is seeing more paying jobs and corporate sponsored development thanks to crypto, and indeed Haskell can help reduce fraud in cryptocurrency, like what happened with the Ethereum’s DAO.

The comparisons of crypto that he makes to frontier banks are interesting but IMHO profoundly misguided. Crypto is not a fad; it is here to stay (or at least for some currencies!). He may disagree but it’s hard to imagine bitcoin disappearing in the next decade.

I see the challenge more about what excites the current, established Haskell community (linear types! Freer monads!) vs the corporate community, who want maintainable and forward compatible code. Crypto companies could conceivably resist the traditionally fast pace of GHC development. Indeed, a lot of money rides on there being no exploitable bugs.

For all my respect of Stephen and his tremendous technical expertise, I’m disappointed to see this argument being leveled as an armchair economist condemning his peer’s work on moral grounds. I think a different, equally rational person could look at crypto and see a future in it, and I don’t think we should cast aside people for having different future expectations.

Disclosure: I am an investor in Kadena, a blockchain implemented in Haskell


> The comparisons of crypto that he makes to frontier banks are interesting but IMHO profoundly misguided. Crypto is not a fad; it is here to stay

By comparing cryptocurrencies to wildcat banks, he was not making a statement about cryptocurrency's longevity but about its utility.

Money laundering and child pornography are not fads, and for those two reasons alone there will probably always be value in non-fiat currencies that preserve the user's anonymity. That does not make cryptocurrency something any community or individual should want a long-term association with.


> Money laundering

You mean the trade-off between global surveillance and easier life for some sorts of businesses. Is it immediately obvious which of these is more worth supporting?

> and child pornography

Oh yeah, think of the children. Never gets old.


You can replace cryptocurrency with cash there and it's just as true. In fact, cash is much more anonymous than cryptocurrency as there is no paper trail. The value that cryptocurrency provides to criminals is the same value it provides to everybody else: easy transfers across borders, and storing money outside of the control of governments. You might trust your government but what percentage of the world's population should trust their government?


Maybe I'm a bit silly about this, but can't linear or affine types be actually useful for blockchain? To represent something which can be used (spent) only once?


Possibly, but linear types only describe the rules that have to be followed by a program. Enforcing those rules has to be done by something somewhere -- typically for most software by a compiler at compile-time or by a runtime at execution time. In blockchain these rules are enforced by the consensus and validation algorithms.


I'm not disagreeing with you. But a funny note:

You, as an investor are logically positive about this. Cause you want more poeple on board.

Whether cryptos are a fad or not is based on believe. If we believe cryptos are worthless their value will drop. Same for real currencies. However stable countries have monetary systems to fakely keep the value stable using financial instruments. The question is: is that a good thing?


>Whether cryptos are a fad or not is based on believe. If we believe cryptos are worthless their value will drop. Same for real currencies

The value of individual currencies is based on trust in the institutions backing those currencies. The value of cryptocurrency as a technology (and currency in general), is not based on belief but on their real world utility, i.e do they function in some general way to satisfy some real need. (Exchanging value, storing value, and so on).

If crypto-currency can solve all the issues it has concerning speed, stability and so on it might be there to stay, if it can't it's just going to exist on the fringes.


[flagged]


I was a purescript developer and Haskell dabbler way before I was an investor, for what it’s worth, and happy to engage on the substance of my points if you would care to have a collegial discourse befitting of academics!


I'm surprised you associate with such problematic people.


Very much a generic anti-cryptocurrency rant, and very little haskell-specific clarifications. I understand not wanting to name specific projects (Cardano comes to mind; "Cardano is a blockchain platform built on the groundbreaking Ouroboros proof-of-stake consensus protocol, and developed using the Haskell programming language: a functional programming language that enables Cardano to pursue evidence-based development, for unparalleled security and stability."), however it would be interesting to have some examples of haskell developments that are fueled specifically by cryptocurrency applications. FTA: "the economic machinery that shapes everything we do and informs the problems we chose to spend our cycles on"; what are these specific problems?


> very little haskell-specific clarifications

This is about Haskell-the-ecosystem, not Haskell-the-technology. In that way I think it's a valuable contribution.

Stephen is a well known and respected part of the Haskell ecosystem, and has written many popular blog posts about the language and ecosystem.


I agree. Cardano and Pact are fine projects.

Pact (a not complete Turing language for blockchain) is also interesting Haskell code to read and to learn from.


It doesn't work to talk about an "elephant in the room" and then not name names. The whole point of the idiom is that you're criticizing other people for not concretely naming things.


He explicitly calls out the elephants in the last paragraph

Namely Well-typed, FPComplete and Tweag.io who are all consultancy companies working on the Cardano project


> however it would be interesting to have some examples of haskell developments that are fueled specifically by cryptocurrency applications

An article saying "this sector of our community is bad and scamming retail investors" is already burning MAD BRIDGES and putting an enormous target on your back.

"Bob Smith and Joe Brown, specifically, are scamming retail investors" is going even a little beyond that. It's just not necessary.

EDIT: For the writer of the article, that is. We in the peanut gallery obviously want all the details, which is why a little detective work is often required in these cases.


> very little haskell-specific clarifications

The author mentions at least three Haskell-related companies, such as FP Complete, and says he wants to avoid naming specific people for the time being.


If the only charge is that haskell consulting companies are writing code for cryptocurrency projects, then I have misunderstood the article first time around. I assumed the problem was with developments in the haskell language itself.


Exactly this. The article is not about the Haskell language itself -- i.e. not a rant about technical issues -- but about its community and consulting companies getting (allegedly) entangled with crypto businesses. "Making a deal with the devil".

That's why the author rants about crypto and not about Haskell itself.


I am not sure what is "alleged" about Haskell consultancies getting cryptocurrency money. It is pretty easy to confirm. Both Well-Typed and FP Complete got money from Cardano and posted to their blog what amount to advertisements for Cardano. Google a bit if you care.


"Alleged" as in "the article claims this, but I personally haven't double-checked it so don't want to make my post sound as I myself were sure this was the case". "Alleged" doesn't mean "unfounded".

I've written enough comments on HN to know that if I don't word it this way, someone will inevitably start arguing with me as if the assertion was mine.


"...posted to their blog what amount to advertisements for Cardano."

And that would seem to be exactly what Stephen is complaining about.


It does affect Haskell language itself (GHC anyway). See moomin's comment.


This is an article about a giant pot of questionably earned money buying influence in a software ecosystem that he's been a big part of. But this is hardly the first time for this, in other cases the pot of questionably earned money came from selling people's data for ads or from Windows licenses.

The question in all of these cases is what specific bad influences the money can have on the software ecosystem and how community standards and governance can mitigate them. I don't really see a lot of answers in this article besides ill-defined ethical compromise of developers. I skimmed the book he mentioned (The Politics of Bitcoin: Software as Right-Wing Extremism) which sounds interesting but it doesn't really make its own case very well: half of the "extremist" citations are from anonymous online commenters and you can't go 2 paragraphs without straight up name-calling and ham-fisted guilt by association.


It's not buying influence, it's "blood money" -- profiting from crime by selling things to criminals. When Prada sells luxury clothes to drug lords, the problem isn't that the drug lords influence Prada


There is degree of questionableness and I think it makes sense to say that some money is more questionably earned than others.



Key word here is Asterius. Cardano is funding Asterius, Haskell to WebAssembly compiler, Asterius is based on GHC, and changes convenient for Asterius are being merged to GHC.


This isn't really true - several members of the team have been contributing to GHC since before Cardano was a thing.


There is no contradiction here. I didn't claim Cardano started Asterius. But it definitely is funding it.


tweag is funding Asterius.



While Cardano is the biggest of the elephants, there are others, like e.g. Dolla, slightly related to Well-Typed through e.g. https://www.linkedin.com/in/david-feuer-04111a73


I've been concerned about this for Rust too, as a lot of the published jobs and high profile projects (including Libra) are in the cryptocurrency sector. For example, one of the most promising rival GUI toolkits, iced, is being sponsored by Cryptowatch. Fortunately, the growth of other sectors is robust enough that if all cryptocurrency were to fall into the ocean, Rust would be impacted but not massively so.


Rust's adoption in the cryptocurrency sector is massive indeed. Parity Technologies and OpenEthereum is the most well known, but both Stellar Development Foundation and Zcash Foundation (both are among top 30 cryptocurrencies) are rewriting their main node implementation in Rust. I'd say at this point Rust has more adoption than both Haskell (Cardano) and OCaml (Tezos).


There is an ongoing effort to implement a Tezos node in Rust


Grin is perhaps the first cryptocurrency to be written in Rust, starting in October 2016. Its constant 1 Grin per second emission tries to keep speculators at bay.


There was definitely a minor controversy one year where a well known community figure listed "less cryptocurrency" as part of their hopes for Rust in one of the "Rust in $year" posts. Sadly I can't find the details right now.


I think you're referring to: https://llogiq.github.io/2019/11/05/fear.html

ETA, and here's the discussion thread on the original post: https://www.reddit.com/r/rust/comments/dpakxq/rust_2020_more...


I suspect that’s because of the crypto boom. New tech is adopted by new startups, many (maybe even most) new startups are in the crypto space.


Crypto in particular has lots of requirements that would be served by Rust and Haskell that might make them more appealing; where a traditional web startup that mainly serves web traffic can easily choose between Ruby, Python, Javascript, Elixir, etc.


In addition to iced, I need to point out that Debian's Rust packaging is effectively funded by Web3 Foundation. Cryptocurrency money also funded RustCon Asia (held in Beijing).


Cryptocurrency enables people to make anonymous monetary transactions. Also, so does cash. Drug dealers and criminals still very much prefer cash. Is it wrong to work with certain traditional finance companies because of their association with cash? Should we be worried about users associating your favorite language with the seedy world of cash transactions which subvert the traditional role and spying capacity of large financial institutions? This is the first I've ever heard anyone suggest that Haskell is associated with criminality in any way. Its associated with academics, and nerds, and maybe even hobby programmers. But if I bring up Haskell among a group of people, criminal enterprises is not going to be in the 100 top-associated things with that language. There is no elephant, the connection is strenuous, and if such an elephant existed, it would not be worthy of serious consideration.


Hold on. The idea that a means of exchange can be used to purchase seedy or illegal goods is not the problem the author has with cryptocurrencies. The issue is VERY clearly stated - there's a loosely-regulated industry riddled with companies that are pushing essentially scam investments. The author is concerned that these companies are beginning to fund enough Haskell development that it's worth questioning whether they want to be associated with such an industry.

I think this is totally valid to question. To brush it off entirely as a non-issue, unworthy of even a moment's thought, is extremely peculiar.


Exactly. Nobody is saying "get your cash here!" while profiting off of speculators. Ok, maybe countries do but they also back the currency and foster growth. You get no such protection from crypto communities.

Everything in the OP article is spot on and the gp argument is a strawman.


It's worth noting that the author's company is in the private blockchain field, complete with a smart contract language under their belt, in Haskell.

Indeed, it's not the first time that a private blockchain partisan has attempted to tar all of "public" blockchain/crypto as a lawless amoral cesspool. R3 made similar claims in years past. In truth, there's been equal or more FUD thrown at private by public zealots too. But it's not confidence-inspiring to see this kind of tribalism, and it speaks to a conflict of interest (at least in R3's case, who were signalling to governments that "private is safer").

The broad brush is FUD. There are any number of crypto efforts that are not fraudulent. Grin and zcash come to mind. Ethereum itself is hardly a criminal effort. The claim that this technology has not advanced the field is simply laughable. Sure, there's a lot of technobabble and money being raised around nothing, what else is new.

Anybody in the fintech industry pointing fingers at crypto need to take a look in the mirror. Crypto is a tiny speck compared to the modern financial system. That's not to excuse fraud and shady stuff, but companies servicing hedge funds, private equity and megabanks have zero moral ground from which to point fingers.


What private block chain?

Looks like a database backed web app for connecting financial data feeds.

https://www.adjoint.io/connect/


It's a recent pivot/rebrand. As of May 2019 their hero copy was "Adjoint empowers enterprises to achieve new levels of efficiency and control by delivering blockchain technology built specifically for the needs of the financial industry."[1]

Also, Stephen Diehl was actively promoting smart contracts and blockchain technology in Haskell until recently. [2]

1- https://web.archive.org/web/20190513032812/https://www.adjoi...

2 - http://internetofagreements.com/2017/12/18/stephen-diehl-adj...


Cryptocurrencies and blockchains still don't seem to solve a real problem.

It seems like a solution for nothing.

I think cryptocurrencies are detrimental to society and I don't care if you program them in Haskel or brainfuck.


> Cryptocurrencies and blockchains still don't seem to solve a real problem.

Have you ever wanted to send money to someone who wasn't in the same location as you? Alternatively, have you ever wanted to send a large amount of money without dealing with a large volume of cash, gold, or some other physical store of value (making the down payment on a house or car for instance)? Blockchains make it possible for you to do that electronically, and without the enormous and centralized infrastructure of banks, vaults, guards, armored cars, etc.


I'll believe this when somebody buys a house with Bitcoin.


> I'll believe this when somebody buys a house with Bitcoin.

Regardless of whether centuries-old cultural and social infrastructure evolves to take advantage of this, the fact of the matter is that blockchains do actually enable this kind of electronic value transfer. And they do it in a way that results in a number of properties that are significantly different from our existing value transfer systems.

It remains to be seen how important these differences are and how much of an impact they will have on our society. Will it be huge like the crypto-maximalists preach? Or will it be a passing fad that is not much more than a blip? I don't know. But that doesn't change the fact that blockchains were a genuine technological advance that enabled something that we weren't previously able to do.


> I'll believe this when somebody buys a house with Bitcoin.

https://www.cnbc.com/2017/10/16/bitcoin-is-finally-buying-in...

"Our buyer has evolved, they've moved from mom and pops to young people who want to pay with various forms of payment," said Ben Shaoul, president of Magnum Real Estate Group. "Cryptocurrency is something that has been asked of us — 'Can you take cryptocurrency? Can we pay that way?' — and of course when somebody wants to pay you with a different form of payment, you're going to try to work with them and give them what they want, especially in a very busy real estate market."


Spoiler alert: no one bought a house with Bitcoin. A real estate agent advertised a willingness to buy Bitcoin from his customer to facilitate a transaction.


From the same article I linked:

Others, however, are not as comfortable with the relatively new currency. The first ever single-family home sale in Texas involving bitcoin was announced last month. The buyer, who works in the tech industry, purchased the newly built home in Austin using bitcoin, but the seller, a custom homebuilder, wanted the currency converted to dollars during the transaction.

This article is from 2017 I'm sure if I searched for more I'd find more examples but regardless is buying a house really the final test of something's potential as a currency?


You know electronic banktransfers are a thing right? Maybe you pay a transfer fee but that's ok.


> Is it wrong to work with certain traditional finance companies because of their association with cash?

On the contrary, drug dealers and criminals stay away from traditional banks precisely because of this. Are you asking is it wrong to work in the foreign banknote management business, or the Western Union style irreversible wire transfer business, or the gift card trading business, or a business that wants to pay you cash in hand? I would say yes. At some point the criminal uses of a given tool are so overwhelmingly more popular than legitimate uses that the tool itself becomes tarred with criminality.


www.marketwatch.com/story/netflix-documentary-re-examines-hsbcs-881-million-money-laundering-scandal-2018-02-21


The way that whole affair is reported infuriates me. HSBC followed unclear government guidance and advised their clients to do the things that the government said were low risk. That article talks about "money laundering crimes" but nothing HSBC did was ever shown to be criminal, nor should it have been. They moved money in a legal way for their clients, but people would rather blame bankers than drug dealers.


> nothing HSBC did was ever shown to be criminal

HSBC has a sordid history of associating with criminal or unethical behavior, including active participation in money-laundering - far from "moved money in a legal way".

https://en.wikipedia.org/wiki/HSBC#Controversies


When I drilled down into the details it looked like the accusations were all just smoke. It's things like "the law said that transactions from this region should be classified as medium risk or low risk depending on the bank's own judgement, and the bank decided to classify them as low risk", or "the bank provided services to company x, which was found out to be part of a criminal enterprise 10 years later". The only "active participation in money laundering" was that a client company asked them how to send wire transfers from Mexico to the US without violating the regulations, and they told them, which far from being a crime is surely what any responsible company would do.

If you've got concrete facts to the contrary then I'd be happy to be corrected, but I'm convinced it's all just political posturing.


You're right to apply critical thinking and not trust the general sentiment against HSBC. That brings a healthy perspective.

I searched for "HSBC prosecution" and found the following article from December 2019.

https://www.crainsnewyork.com/markets/third-times-charm-hsbc...

The words of Brandon Garrett, a professor at the Duke University of Law, concludes:

> They are recidivists, but they do not receive harsher penalties despite their growing criminal records. Individual criminal defendants are not so lucky.

The article seems to provide factual support to the sentiment, that HSBC has a record of criminal behavior, in legal terms.


> The article seems to provide factual support to the sentiment, that HSBC has a record of criminal behavior, in legal terms.

It doesn't. A deferred-prosecution agreement means that the case never went to court and they didn't admit guilt.

Obviously in theory a company that was confident of their innocence would refuse such an agreement. But the laws are ambiguous, public sentiment is against them, and in practice the industry regulators have a lot of discretion and will make life very hard for you if they decide you're fighting them.

HSBC does seem to have more than their fair share of allegations against them - but in my book circumstantial, ambiguous allegations never amount to a smoking gun even if there's a huge number of them.


> worried about users associating your favorite language with the seedy world of cash transactions

when did we start calling cash transactions seedy? you own a pub, somebody pays in cash is automatically seedy? let's maybe look into offshore banking and US offshore jurisdictions such as New Mexico, Delaware and Nevada first (tax havens in our midst) before bringing out the guns on the little people who have a bad line of credit or are unable to pay by card?


GP was obviously joking, trying to show that crypto-currencies are no different than cash, so anyone who calls crypto-currencies 'seedy' would also have to consider cash 'seedy'.

However, crypto-currencies are in reality not like cash, because fat more than being an anonymous medium of exchange, they are in fact mostly an unregulated speculative investment, and unregulated speculative investments are, in fact, quite seedy.


Because there are a lot of speculators, that makes it seedy? What does the amount of speculators have to do with the seediness of the underlying technology? I thought it was "seedy" because it can be used for fraud?


To be fair, if someone hands off a briefcase full of cash, that's generally considered shady.


If you dive into the crypto world. There's a ton of cons that promise the world just to bump up the cost.

A quick way to make a buck was to look at the dates for crypto roadmap announcement, launch or white paper. Buy crypto a week before, then sell a day before the announcement before everyone else buys in.

This become so popular many coins where created just for this purpose. They would claim the world as the next bitcoin. Then after the announcement, seized to exist.

That brings us to this post. They're using Haskell as the 'new tech' to pump and dump coins.

There's so many scam coins out there. It really shows you how stupid the whole thing is.


I don’t agree with your characterization- anyone who thinks iohk is a pump and dump is woefully misinformed.

Cardano may or may not be the way of the future for who knows what, but the amount of academic work put into it really doesn’t support calling it a pump and dump.


> Is it wrong to work with certain traditional finance companies because of their association with cash?

Cash is much more difficult to move across international borders. It opens up exciting new opportunities for international crime and scammers. Further, cash is not a fungible as you suggest, criminal have to incur vast expense in order launder their money. Cash is also difficult to store in large quantities, which imposes a physical constraint on the amount that can be securely stashed by less sophisticated criminals.

Cryptocurrencies have lead to an explosion of pump and dump schemes, ponzi schemes, outright fraud (see: the recent twitter hack), and other financial schemes design to separate the gullible from their money.

Did these things exist prior to Cryptocurrencies? Yes, but cryptocurrencies democratised the ability to conduct them and made it more difficult for authorities to catch criminals.

Cryptocurrencies are an absolutely terrible idea: born from the minds of techno-utopians, fueled by anarcho capitalists, and weaponised by criminals.


When your language is so tiny and unpopular that a growth of couple of small projects in an industry your don't like can overshadow the whole existing community...

If you create neutral open source tool like a programming language, you have to be OK with people using it to do stuff that you don't approve of.

And also, it's OK to have your own opinion about something and share it, but in complex matters you have to admit that there's a possibility that you're wrong. I think TSLA and a some other money losing overhyped companies are a FED-induced bubble, terrible investment etc. but so far it works for people who invest in them, so maybe I am wrong, and who am I to make decisions for other people anyway?


Let me take a crack at this.

“ When your language is so tiny and unpopular that a growth of couple of small projects in an industry your don't like can overshadow the whole existing community”

So you decide to open your argument with an insult to the community... Not a great showing.

“ If you create neutral open source tool like a programming language, you have to be OK with people using it to do stuff that you don't approve of.”

So I have to be okay with crime and scams? I can’t decide to call attention to it and recommend that people don’t let the bad influence guide the direction of the whole language?

“ I am wrong, and who am I to make decisions for other people anyway?”

Good thing this article didn’t try to do that.


> So you decide to open your argument...

Please don't expect anything too serious from me. :D

> I can’t decide to call attention to it and recommend that people don’t let the bad influence guide the direction of the whole language?

I can't see how even Adolf Hitler and Joseph Stalin teamed up and backed by a lot of money, could break ... let's say... C++ if they got on the design committee. Are they going to make the type system more totalitarian-state friendly? Is memory safety features better for building tools of state oppression? Are they going to introduce new features and libraries that make it more useful as a tool of industrial-level genocide?

> “ I am wrong, and who am I to make decisions for other people anyway?” > Good thing this article didn’t try to do that.

What did it try to do then?

This whole article can be TL;DR with: Some people found Haskell useful to write their software and they support Haskell development now and I don't like what that software is for, so let's do something about it.

Why?

I think there's a lot of people in Open Source community that can't separate technical and free speech (and use) aspects of their work from their moral beliefs and keep conflating the two, trying to use their beloved OS projects as a tool in yet another moral crusade of their choosing.

PS. Come to think of it, maybe Haskell compilers should change the license to some custom non-Open-Source license that says: "only programs that are technically and morally pure can be compiled". ;)


It’s not an either or, you’re making up an extreme purity test that just isn’t there.


I knew Stephen Diehl rang a bell! He is the author of this very useful primer on tools & basics of the Haskell dev environment: "What I Wish I Knew When Learning Haskell"(http://dev.stephendiehl.com/hask/). I recommend it as a practical overview, though of course it doesn't replace actually learning Haskell.


I think this is a rather strange way of thinking.

Fortran has been extensively used for nuclear weapons development. Let's stay away from Fortran!

C was and is widely used in weapons control systems. Let's stop using C!

Computers themselves were initially designed for artillery fire control, with an explicit intention of killing people. Let's not touch the technology with such a foul pedigree.

This can be continued ad nauseam, until the whole of the civilization is marked as indecent. Nearly every scientific discovery and techology achievement has been used, or attempted to be used, for some purpose one might find objectionable.

Instead we could realize that tools are outside morals. A knife could be used to cut bread or to cut throats, and it's not the knife's decision, but that of its user. The very same thing applies to everything, from nuclear fission to functional programming.

If you know what's the right, virtuous thing to do in the world, do not hesitate, go and do it. Use the most fitting tool for that job. Do not mind if that tool is used for whatever other, less noble purpose, it's not the tool's fault.


I realize the article is very vaguely written, but I don't think the argument is "Haskell has been used for cryptocurrency and that taints it forever."

I read it as "A significant portion of jobs and funding in the Haskell ecosystem come from cryptocurrency organizations, giving them a lot of influence over the future of the language and the community." It's about who controls development of the tool right now, not how the tool might be used, or who has been involved in the past.


Can mathematics be developed for nefarious purposes?

What kind of taint the current influence of the crypto-currency industry could leave on the technical side of the language?

If these guys are toxic within the development community, then, well, we have to somehow handle it — but again, we've seen highly prolific and highly toxic OSS contributors who wielded very different, "more noble" values, in the past. The problem may be the attitude, not the industry affiliation.


The analogy I would make is that there are many mathematicians and computer scientists who are unwilling to work for the CIA, but would be thrilled if a university gave them a lot of funding to research the exact same stuff. The math itself is not nefarious, but the community is.

If Haskell became known as "the crypto people's language", many talented computer scientists and engineers would be unwilling to join the community or invest anything in the language. Partly out of a sense of "I don't want to directly help them", and partly just "I don't know those people and I don't really want to go to their conferences, and all my friends in academia are working on <new language x>, what's that all about".

For someone like Stephen Diehl who is deeply embedded in the Haskell community and has invested a lot in it, that would be a personal and professional loss. You're right that the language itself and its technical features would not be nefarious, and would be replicated in 100 other languages.


If you want to use Fortran today, the jobs are essentially all government contracting. If you want to use Haskell today, the jobs are essentially all cryptocurrency. If you don't want to get into government contracting (which is hard to get out of), or if you don't want to do cryptocurrency, you don't get to use Fortran or Haskell.

What happens if the bottom falls out of the cryptocurrency job market? Does Haskell become Scheme, a language used only for language research?


> If you want to use Haskell today, the jobs are essentially all cryptocurrency

This is not true, by the way.


Fortran is used all over for high performance computing, not just in government contracting. Scheme is not only used for language research. A large part of Julia, a pragmatic language for technical computing, is written in Scheme.


> A large part of Julia, a pragmatic language for technical computing, is written in Scheme.

No, not really. The parser is written in FemtoLisp (a Scheme dialect), but that's it. It's not actually doing anything other than the parsing, and there's actually work being done to replace that with a pure julia parser.


In the first paper¹ describing the language design, by its creators, they state that:

“Our implementation of Julia consists of 11000 lines of C, 4000 lines of C++, and 3500 lines of Scheme”.

[1] https://julialang.org/blog/2012/08/design-and-implementation...


That's from 2012 when the language was in version 0.1. We're now in version 1.4 (1.5 launching soon!). At this point, 3.1% of the julia git repo is femptlisp (scheme), but I can assure you that is not being used for any heavy lifting or scientific computations. It's for the parser.


I think it is too much a reductionist thinking to think it’s the users, not the tools. Math and programming languages (and media like tv or videogames) can easily stand on the sidelines, outside of the range of criticism, by making the claim that it is not the medium, but the users.

But I would argue that knowledge about something is not necessarily within that thing, but around that thing as well. A handle is a handle because we have hands that can grasp the handle. No system in this world is closed (perhaps the universe itself but still doubtful), so any knowledge pertaining to a system (or a tool) must be dependent on its context. A handle acquires meaning because of humans. Same with mathematics, programming, or otherwise.

So I would argue that yes, mathematics can be developed for nefarious purposes. Anything can be. Just because something is more pure and seemingly neutral than others does not mean that thing will stay independent of its context. The outlier example is the statistical farcity and bias in scientific experiments. Take it a step further in the direction of objectivity, and you could also notice that bias plays a role in mathematical experiments.

Another interesting question might be: is uranium evil? Or are videogames evil? Are these seemingly neutral things, containers of things, evil? Or are common manifestations of them, or the way that the medium encourages its content (and the way that Haskell and its ecosystem encourage their application) relevant to the judgment of that particular “container”?

I believe a lot of this has to do with seemingly emotion-less quality of abstractions (i.e. containers). In the abstractions-land, the mathematics land, the “pure” land, only the relevant essence of the thing at hand is extracted, thus the compression seemingly occurs losslessly. However, in the compression from the real to the abstract, we have also lost the sensual, the tactile, the emotional. We go from a soul to a 4.5 million deaths. We go from the wet texture of water to H2O. By compressing, we gain, but also we lose.

A bit sidetracked, but I think any medium can appreciate being examined in such a way.


> Or are videogames evil?

I'll answer that when you give me a definition of the term.

Might want to start with defining "game" and then pare it down.

My point is, you can't say something is evil until you have a coherent definition of what that thing is.


Wut


Interesting that you brought up mathematics. My shallow view of the haskell community is that they think haskell is/should be as theoretically solid as mathematics. And based on this, my interpretation of the underlying fear in the article is analogous to the Russian government somehow duping all the world's mathematicians to only work on the problem domain of breaking cryptos (and incidentally primarily the type of cryptos used by "enemy" nations) and all the mathematicians dropping everything and going "yeah, that sound super cool let's do that, maybe someone else will pick up my work in combinatorial topography"


Why the Russian government specifically? Plenty of nations do encourage this of (some of) their mathematicians and this practice is also poorly regarded by some.


Just an convenient example of an actor with power to influence that easily could be seen to have an non-mathematical ulterior motive.


US fares better on this point, AFAICS.


I assume by tooling the GP doesn't mean something like a monadic http library but something more like an app, like an offshore account balance checker


I have re-read the blog post and I can't find what you mention.

The blog post is basically telling us that cryptocurrencies and its leaders are a giant scam and they don't contribute anything of value to society.

Your interpretation is very generous if you ask me. A blog post with that angle would be interesting to read though. It would have more to do with the Haskell ecosystem than this one and it would be good to have that discussion if the cryptocurrency influence on the ecosystem is too big.


Well yes, if the author didn't think cryptocurrencies were a problem, then he probably wouldn't be bothered by crypto currencies influencing the community. There are always going to be large organizations influencing Haskell, like the UK government and Microsoft in the past. I'm guessing this blog post is aimed at people who work with Haskell and know about the crypto companies in the community, but see them like any other organization that funds open source development.

I agree it would be great to have more details about how big this influence is and how it manifests itself.


It's not about "influence". It's about feeling bad that the Haskell libraries are being paid for by the victims of financial scams.


Cardano was funded with an ICO in Japan, one of the most restrictive country about crypto-currencies. The amount was 64M$ which is not that much for developing a blockchain for 5 years with almost 100 researchers & devs. It's not a scam.


> they don't contribute anything of value to society.

They appear to be funding Haskell development.


is that worth however many percent of the worlds energy usage?


There’s no PoW Haskell chains I’m aware of, they’re POS chains which are far more energy efficient- therefore they reduce energy usage as people move over to them.


Author does not mention energy usage at all. Main problem is that he thinks that crypto is a scam where a lot of people are being tricked. Would you like your language development to be funded by drug cartels or from blood diamonds profits?


i agree crypto is a scam, and it's also a scam that's a giant waste of a huge chunk of the global generated electricity.


It's hard to tell. Haskell could make a big impact on the technology of the future. Or not.


Does anyone have any notion of what language decisions might be affected, especially for the worse, by factoring cryptocurrency considerations into it?


I don't think the concern is that the language is going to get worse, but that funding will be concentrated on the few niches that benefit crypto applications, and that people might start saying "I don't really want to work with these people, I'm gonna go do something else."

Recently a casino was built near me, and they repaved a lot of roads and added bike lanes and stuff as part of the construction. The roads are objectively better now, but I don't want to live next to a casino no matter how good the roads are, and I would have preferred if the city government had funded that work instead, since I trust them more and I have some say in how they spend their money. If you were looking for a neighborhood to move into, the first thing you noticed wouldn't be the smooth bike lanes, it would be the huge casino you can see from anywhere in a 3 mile radius.


You are correct.


I think you're misunderstanding the author here. He doesn't argue that people shouldn't use Haskell because it's used in crypto currencies, quite the opposite he seems to love Haskell and want people to use it. His worry is that being associated with crooks will make the Haskell community less attractive.


My point is exactly that: a technology itself can't be tainted by crooks using it.

Have innumerable script kiddies, scammers, doorway site creators, etc, used PHP for doing bad things? Did / do they constitute a significant part of the user community? Yes.

Has PHP been used to create wonderful and world-changing things, like Wikipedia? Does PHP have great, very nicely designed tools that help people develop good things faster, like Laravel? Has the PHP community done a tremendous work to make the language much better, and its stdlib much nicer? Yes.

Crooks using your favorite tool can be a nuisance in the community, but noble-intentioned people can be jerks, too, which has many times been observed. If the community has a problem with its being nice, welcoming, constructive place, it's usually not because of people's business and even political affiliation.

I'll hazard to link to [1] as a supplementary reading on the topic.

[1]: https://www.lesswrong.com/posts/GLMFmFvXGyAcG25ni/i-can-tole... (It's a copy; unfortunately the author has taken his whole huge blog offline.)


"Have innumerable script kiddies, scammers, doorway site creators, etc, used PHP for doing bad things? Did / do they constitute a significant part of the user community? Yes."

Does PHP have a significant taint to the rest of the development community? Yes. Are its "nicely designed tools" recognized and used outside the PHP community? Not that I've seen.

Wikipedia is a web site I use and sometimes poke at. Am I going to go looking at its code? Nope. In fact, there are several tools that I decided not to fix bugs in, but also not to use myself, when I realized they were PHP.

(Aside: have they ever removed, or even deprecated, any of the layers of hideously broken interfaces in the stdlib? Or are they still lying there as a trap for the unwary?)


Quality of a language's community does affect the experience of using it. PHP is great example to use though - just because people are doing nefarious things doesn't make them unpleasant people.

The difference between this and the PHP case is one of economics. Economic input gives you influence (usually). If people who's approach to life you don't agree with assume influence over the direction of a project, that can be a source of worry.

I'm not sure I think it would be in this case, I think a source of finance is probably going to outweigh it, but I see the logic.


> My point is exactly that: a technology itself can't be tainted by crooks using it.

Reportedly Lisp was hit pretty hard by its association with AI hype collapse ("The AI Winter"). Of course this doesn't change the merits of a language per se, but it can be a blow to the community and investments around it.


"[1]: https://www.lesswrong.com/posts/GLMFmFvXGyAcG25ni/i-can-tole.... (It's a copy; unfortunately the author has taken his whole huge blog offline.)"

Dang it, how come I didn't see this before PG's essay on conformists and individualists?


>the author has taken his whole huge blog offline

Look again



Being associated with broad-brush slander is also a negative. The attack on cryptocurrency broadly was extremely unbalanced, and not even factually correct on some pivotal points. I concede that it a sector rife with opportunism, scammers, and obvious criminal fraud. The core premise that the creation of an economy and system of trade, the codification of contract law in code, is without fundamental value or productive effect is, however, risible, and tightly coupling cryptocurrency with right-wing nuttery is a smear.


Nope. This is a call to the Haskell developer community to stop cooperation with crypto projects, not a general call to stop using Haskell.

I.e., it's a call to the knife makers to stop making their knifes to the specs of mob bosses, not a call to ban knifes.

There are plenty of precedents for this kind of action, e.g. pharmaceutical companies refusing to supply chemicals for executions. (If were already going all life-and-death with the analogies)


This sounds quite reasonable! But if all a knife needs is a sharp blade, there's little to be done in the way of limiting its specific uses.

Also, do cryptocurrency bosses ask the community to shape Haskell in the way suitable for them, e.g. in the core libraries or extensions? Or do they just produce libraries for their own use?


Its more like, would you enjoy your weekend foodball game if you knew that stadium was build by slaves. Theres nothing bad in stadium it self, but the circumstances how it came to be are not acceptable for you.


I consider Stephen to be an extremist when it comes to stuff like this. I follow him on twitter, and he frequently tweets things like:

"More programmers should have the moral fortitude to stand up to the Facebook employees in their communities. This is not a socially acceptable career. Facebook employees have chosen to turn their skills on poisoning the very communities that gave them opportunities to thrive." [0]

"Palantir and Facebook are the largest employers of Rust engineers in the world. Rust Community: What exactly is the point of all of your long codes of conduct and community guidelines if the primary use for your language is the creation of a nightmare surveillance state?" [1]

[0]: https://twitter.com/smdiehl/status/1288532583530323970

[1]: https://twitter.com/smdiehl/status/1288106450707873794


Well, to be honest, the negative beliefs about Facebook and Palantir are pretty common; I suspect rather a lot of people here would agree that Facebook is "poisoning the very communities that gave them opportunities to thrive" and Palantir is creating "a nightmare surveillance state".

If that is the case, it seems like Stephen would be just a little less hypocritical than most, trying to convince programmers to actually follow through.

A short while back, I mentioned here that Henry Petroski said that the origin of engineering ethics is that engineers shouldn't compete solely on price. That hasn't been the case for a long time, not since some bridge fell down and killed a bunch of people. Now, engineering ethics involves saying "no" when you boss wants you to do something you feel is unethical, illegal, or just plain stupid. Nobody wants to do that. It hurts. But some people think it's a part of professional behavior.


I'm certainly not going to argue against your points here, since I agree with them, by and large. I personally am not a fan of FB or Palantir, and I suspect I dislike the surveillance state more than the average HN reader. My comment was more on his word choice (which I find to be a bit hyperbolic)


twitter isnt the place for reasonable nuanced discussion, if you think facebook et al. are bad then you are supposed to agree with the hyperbolic black and white language.

although this isnt twitter, i sometimes feel like the commenters on HN have spent too much time on twitter. i cant stand opinionated twitter "personalities" that tweet more than they code, and it's been bleeding over to other places as well.


> "What exactly is the point of all of your long codes of conduct and community guidelines if the primary use for your language is the creation of a nightmare surveillance state?"

That is a weird point of view, but unfortunately not all that uncommon (when applied as a general worldview) right now. I think it's worth noting that it's generally anti-open source and free software, as it generally boils down to "you should control this thing you created as a group" as opposed to "we all created this and anyone can use it for anything, but maybe we require you to share changes so it's self perpetuating".

In my personal opinion, it's the worst type of small community social pressure taken to unhealthy extremes brought wholesale to the internet age. That is, poorly rationalized, aimed people that associate with the target rather than the target, and in this case "associate" is so tenuous as include the people that made a better hammer because someone used it to build something objectionable.

When I find this I find myself wondering if these people even really believe this, or they just express this as a strategy to influence people? I don't know enough about Dielh to know what I think is more likely.


> include the people that made a better hammer because someone used it to build something objectionable.

This is exactly why I find his argument absurd. Programming languages are just tools, there is no moral judgement attached to them. You don't get mad at people who manufacture other tools that are used for nefarious purposes.


That's very relevant context. I had an impression that he considers Cardano worse than Facebook, while IMO it's mostly harmless project compared to major software employers.


I find it ironic that he should criticize Plantir and Facebook for creating a surveillance state, yet also crypto for allowing anonymous monetary transactions.


I didn't see in this article any criticism of cryptocurrency for _allowing anonymous monetary transactions_.

The criticisms that are made are:

1) That cryptocurrency's "entire existence is purely predicated on the appeal as a speculative investment first and not on its efficacy to transmit value".

2) That crypto exchanges are "effectively digital gambling sites, in which unsophisticated investors trade unregulated products on markets that are directly manipulated by exchanges with no oversight".


> C was and is widely used in weapons control systems. Let's stop using C!

Let's definitely stop using C in weapons control systems.


It’s fine, after killbots kill enough people to fill up their fixed-sized arrays they segfault.


I think it's mostly Ada anyway.


That is not the core argument though? Nobody uses C in order to make their nukes more marketable.

Crypto uses the academic big-brain alpha-nerd reputation of Haskell to make their platform appear more reputable. „Look, written by 100% organic PHD-certified FP programmers, raised on our free-range Monad Farm. Oh btw our whitepapers are Very Legit and definitely not just decorum for an ICO scam.“


Tools are not inherently morally neutral, and I wish that people would stop repeating this lie.

Slot machines are expressly designed to feed on a person's gambling addiction and to take their money. Dirty bombs are designed to murder thousands or millions of innocent civilians. The Nazi gas chambers were designed to slaughter millions of innocent civilians.

Using a programming language benefits that programming language. This is pretty transparently obvious - a larger community means more skilled professionals, more support on stack overflow, more funding for development, and more open-source contributions.

If you strongly believe that the crypto-currency people are doing evil, it makes sense not to aid them. Whether "using Haskell" is worth worrying about is something for individuals to decide on their own. But it's absurd to say that there is no ethical dilemma in incentivizing the development of a tool that is used for evil.


Those things don't sound like tools to me. Better examples would be hammers, screwdrivers, etc..


> Painfully, some of the very founding contributors to Haskell itself are the ones deepest involved in this ring

The author's point is the opposite. He's calling out prominent members of the Haskell community for running cryptocurrency schemes.


These examples are not similar to what is being discussed. Each of those were more commonly used in areas other than the cited ones.

The current discussion is more similar to how Python has become strongly associated with machine learning.

Anyone who cares about the Haskell language and ecosystem should do what they can to avoid it gaining a strong association with questionable crypto or other areas that will negatively impact wider adoption. This will also become a personal association whether warranted or not. This can be through promoting use in those wider areas or as this post does call attention to specific ones that the community should carefully consider rather than participate, because hey Haskell. It's like Haskell's Manhattan Project--choose wisely with eyes open.


Where in the article did the author give any advice on using or not using Haskell? The article was criticizing the Haskell community, of which the author is a member, not Haskell as a tool.


Doesn't stop people from trying to have the cake and eat it too. I think I remember reading about a FOSS project on GitHub that put a clause in the license that said something along the lines of "this software is free to use except for purposes we deem immoral in which case you can't use it" (sorry, I can't remember which project it was)


Yes, there's a nice funny joke of this nature in the JSON license: "The Software shall be used for Good, not Evil." [1]

I remember IBM had to obtain a separate license without this clause, to insure themselves against potential nice funny lawsuits claiming the breach of that clause.

[1]: http://www.json.org/license.html


Was it Learna?

https://github.com/lerna/lerna/pull/1616

https://github.com/jamiebuilds/license

Its proposed license was an extension to MIT which made using it theft for a select list of companies that supported ICE.


`Computers themselves were initially designed for artillery fire control, with an explicit intention of killing people.` any citation for this?


"The first fully functioning electronic digital computer to be built in the U.S. was ENIAC, constructed at the Moore School of Electrical Engineering, University of Pennsylvania, for the Army Ordnance Department, by J. Presper Eckert and John Mauchly. Completed in 1945, ENIAC was somewhat similar to the earlier Colossus, but considerably larger and more flexible (although far from general-purpose). The primary function for which ENIAC was designed was the calculation of tables used in aiming artillery. ENIAC was not a stored-program computer, and setting it up for a new job involved reconfiguring the machine by means of plugs and switches. For many years, ENIAC was believed to have been the first functioning electronic digital computer, Colossus being unknown to all but a few."[1]

[1] https://plato.stanford.edu/entries/computing-history/


> to be built in the U.S.

What about the global situation? Is it the same?


The UK had Colossus a bit earlier, which I believe was the first fully electronic digital computer.


Don't forget about Konrad Zuse's Z3!


In addition to the digital computers in the 2nd half, analog computers for naval guns were commonly fielded in the early parts of the 20th century.[1]

[1] https://en.wikipedia.org/wiki/Rangekeeper


IBM helped with Holocaust.

It also invented PC.


> It also invented PC.

No. Personal computers were around for quite a while before IBM decided to enter the market (with a not very good and very expensive machine, I should add).

The PC mantle probably goes to Processor Technology, or maybe someone a little earlier. I'm counting 8-bit chipsets, the date gets pushed back a LOT farther if you're talking PDP-8s or earlier systems (much less commonly available to the public). Or you could take it forward to 1977/78 and give the title to Apple.

But it's definitely not IBM.


I would go as far as to say IBM was "complicit":

https://en.wikipedia.org/wiki/IBM_and_the_Holocaust#Summary


If you're trying to say that IBM invented the home computer or the personal computer, you are off by about 6 years. (Home computers became available around 1975; home computers that didn't not need any assembly by the buyer became available in 1976 or 1977; the IBM PC became available in 1981.)

If you're trying to say that IBM was the first to officially name a personal computer "PC", I'll give you that one.


It did create a personal computer which was (1) easy to clone and (2) easy to extend with ISA cards. This openness made it a huge success, leading to an explosion of PC-compatible machines.

Most other makers, from Apple to Amiga, vigorously protected their small private markets where they dominated. The original Macintosh has explicitly removed all the expansion capabilities that e.g. Apple II had.


It accidentally made it easy to clone by rushing to market, making false assumptions and hoping the enterprise market would soon lose interest in personal computers.

Rushing to market led to the decision to license the OS from Bill Gates instead of buying the OS or writing it in-house.

An example of a false assumption would be believing that holding the copyright on the BIOS would be enough prevent clones.


S-100 was open.


Yes, and extermely widely used, despite its bitter flaws.


Werner von Braun bombed London with V-2s during WWII and was a Nazi party member above the rank-and-file level.

Werner von Braun has lead the US space program to launching humans to LEO, and then to the Moon.

Again, technology is morally oblivious. A sword that only serves a noble aim is strictly the stuff of fairy tales, and is not implementable in the real world (no, not even with an AGI, since humans are a reasonably good approximation of an AGI).


SS-Sturmbannführer. About the same as a Major. Yes, in the SS.

I may be the only one who giggles when driving past the Werner von Braun Center on Redstone Arsenal. It a very attractive, very new part of Army Missile Command.


“Once the rockets are up, who cares where they come down? That’s not my department”, says Wernher Von Braun. https://youtu.be/TjDEsGZLbio


Technology is not inherently morally oblivious.

Some technology has only one purpose, and is used only for immoral acts. An example of this would be any device invented for torture.

While those examples are uncommon, more technology is built expressly for evil acts, even if it has the capacity for good. If you are distributing plans and technology to make "dirty bombs" - devices intended to disperse lethal amounts of radiation - it's impossible for a reasonable person to believe that it is not intended to murder people via radiation. Furthermore, in the context of today's world, you know that the most likely users of such a device would be terrorist organizations who will target innocent civilians.

An even greater percentage of technology is developed to support people doing evil acts. If you provide software or hardware to people doing evil acts (in this case, the Holocaust), you are giving them material aid. The software written to tabulate Jewish residents in Germany was developed for the Nazi party. Technical support and sales continued well after Nazi Germany had invaded Poland.

The fact that a man (or company) enriched himself by doing both bad and good things does not mean that his actions were morally neutral. Most people alive have done both bad and good things.


The same firearm can be user to assault an innocent person and to protect an innocent person (in the hands of said person or law enforcement / army).

There are certain devices, like napalm bombs, that have a narrow and specific purpose of destruction. But the technologies used to make the bomb shells or the napalm are not specific, and have all kinds of peaceful and constructive uses.

Equally, there can be bad, evil-pursuing programs in a particular general purpose language, but this does not taint that language.


One of the few takeaways I remember from my engineering ethics class is one way to think about the ethical implications of a tool: if you have a situation, and you introduce a tool, how do the possible outcomes of the situation change?

For example, if you have two people arguing without weapons, the likely outcomes of the situation aren't strongly weighted towards one or both of the participants being maimed or killed --- it's difficult and requires commitment to really cause horrific damage if you're just hitting each other.

If you introduce a (supposedly value-neutral) tool, like a gun, into the situation, the outcomes become much more strongly weighted towards someone being maimed or killed.

Even though it's always a human using the tool, the tool itself can be seen as having an ethical character.


I like that lens of analysis, thank you for sharing.


”For a while it has been a public secret the Haskell ecosystem has become increasingly entangled with an unsavoury variety in the cryptocurrency sector as one of primary mechanisms for funding development.”

And those would be? I code in Haskell every day and I have no idea what he’s talking about.


This is one of those articles that attempts to talk about some situation to make it more common knowledge, but is written in such an incredibly abstract way that all you can really take away from it is 'some unknown people are upset about some unknown issue'.

I feel like this 'elephant in the room' article doesn't tell me what the elephant is, why it's in the room, or why people don't want it to be in the room.


Just look at the final section, quoted:

> Painfully, some of the very founding contributors to Haskell itself are the ones deepest involved in this ring.

> In this new era the Haskell community itself has simply become a tool to buy legitimacy and pump token values. The reputation of our community is now used to defraud the public and convince non-technical users of the soundness of an utterly unsound investment.

> I have avoided names ... however core Haskell companies such as Well-Typed, Tweag and FP Complete have been deeply complicit in building up this crypto industry for years now.

The article isn't easy to skim, and I think that's the point. The author wants to focus more on why cryptocurrency is a scam, and less on who's guilty.


Maybe it's just me, but these sentences are so vague and indirect as to mean nothing to me.

I think it's a shame because if you're going to accuse someone of something, at least make your accusation clear and direct so they can respond to it specifically.


I'm not an expert and I don't do value judgments, but I think he's talking about something called 'smart contracts'. Haskell would make it easier to verify smart contracts. I thought he was talking about use cases like those as Cardano and with "some of the very founding contributors" he meant Philip Wadler (amongst others).

EDIT: didn't want to imply that Cardano is a shady company.


No, he's not talking about the technical features of blockchain. He's talking about the general shadiness of a nontrivial number of actors in the cryptocurrency sector itself, which have had a propensity for deceptive marketing, and even outright fraud.

His concern is that if Haskell gets the reputation of being beholden to these interests it will make the Haskell ecosystem undesirable to legitimate actors.


But... who actually thinks this way when they select technologies? If Go was used for a lot of crypto scam, I wouldn’t spend a second thinking about it when I’m deciding to use it for my non-scam, non-crypto’s project.

I have difficulty to understand how it is an issue that a programming language is used for a niche that has bad reputation.


From my view, its less about using the technology for side projects, and more about job prospects using that language. If Haskell jobs are overwhelmingly associated with crypto, and that’s a negative association for most people, they might be less likely to invest time into learning Haskell, as they’re not interested in joining the crypto industry.


That’s fair, thanks for sharing your point of view


The collapse of AI research in the 1980's directly caused a decline in Lisp research.


Anecdotally, almost every Haskell job posting I've ever seen is for a bank or some kind of cryptocurrency thing. I've never done a real analysis and I don't have any numbers to back that up, that's just what it feels like as someone who passively watches the Haskell job market.


I know dfinity was a big one, they had a huge ICO and lots of haskellers.


If you search for Haskel jobs a large number seem to be block chain based.

When you look further a lot seem to be around smart contracts.

If you are interested in language design smart contracts are an interesting research area, you are basically getting paid well to design and research your own language.

What I fail to see is any viable product on the other end. There’s a few companies I can think off who have been recruiting Haskel developers for smart contracts but I can’t see a product, devs are just taking paid work in a language they like using and these companies are sucking up vc funding.

I refuse to speak to recruiters about a blockchain company heavily recruiting where I am as I am not smart enough for language design/research and more importantly I don’t see a viable product. I know a few other friends/colleagues refuse to speak to the same company due to being blockchain/not seeing a product. When I see things like this it also reaffirms my thoughts, VC backed companies heavily pushing through blockchain but it’s not a ready product https://smallcaps.com.au/asx-delays-launch-blockchain-settle...


No matter your position on this, please take a moment to watch the excellent response by Charles Hoskinson.

https://youtu.be/dHo_EUyShOg


I find it rather telling that almost none of the crypto advocates in this thread make any argument that cryptocurrencies are not shady. Instead, the counterarguments brought forward are essentially:

- "it's not the tool's fault that it's used for shady stuff"

- "so what, other people are scammers, too!"

- "there are so many warnings against cryptocurrencies, it's getting boring"

- "yes, crypto has scams, but maybe some of them are good scams!"

- "the author is biased!"

- "the author should give more details!"

That's not exactly a confidence-inspiring picture of the crypto community.


To be fair, many of those counterarguments would be seen as valid if we were discussing, say, private messengers instead of cryptocurrency:

* It's not Signal Messenger's fault that it's used for shady stuff.

* There are so many warnings against unbreakable strong encryption, it's getting boring.

* Many people are biased against strong encryption

In the end, like private messaging, cryptocurrency is just a tool that can be used for good or evil. I don't think that the general concept needs to be "defended as not being shady" any more than any other technology that enables scams, e.g. phones, youtube[1], the internet.

[1] https://www.theverge.com/2020/7/23/21335554/steve-wozniak-yo...


"Crypto community" is not a unified group of people, holding hands and singing "kumbaya", you know?

Quite the opposite - fights and accusing almost all competing projects of technical and/or moral failures are a bread and butter of crypto.

It's safe to say that most people in crypto space admits that the space is somewhat shady. How else could it be? Money are involved so it attracts people trying to exploit it and brings the worst side of many, otherwise decent participants, and anyone can create yet another crypto project and there's nothing to stop them. And it's always "your word and opinion against mine" kind of thing.

BTW. It's funny how many people on HN, have no problem with "regular" SV companies often based on: praying on dark marketing patterns, human dopamine addiction, data collection, overly optimistic return projections and so many other "sins", but are quick to discredit "crypto" as a whole, to the point where they would ban it from using their favorite programming languages. :D


I didn't see anyone discussions banning crypto users from Haskell - it's certainly not in the original article. The point was about which actors have the most influence on the community. Apparently the author is also very concerned about companies like Facebook which you might call more respectable.


I don't really understand what you think it is telling of. I am perfectly fine with expressing that I agree with the article - a lot of the crypto currencies out on the market today are very close to or actual scams.

At the same time I very much think that the idea/technology of crypto currencies has potential.

I also think that language like Haskell, that prides itself in correctness and bug-free code, fits perfectly with developing that idea. I would say that is one of the large problems even more established cryptos has - they might have a bug.

I neither really see the reason why the Haskell community should be scared of having crypto people among them. What is the worst thing they could really do with the language? Fill up youtube with a lot of haskell+crypto speeches? Add crypto - related lib and code to the language? Is that really a bad thing?


It's impossible to build a money system that isn't at some level shady, outside making it completely totalitarian. Just based on simple definitions and some logic.


You should have zero confidence in "the crypto community". On expectation, anyone who describes themselves in those terms is probably a scammer.

Bitcoin is not a scam, and maybe a small number of other "cryptocurrencies", but the same can not be said for any of the zillion products that try to ride on Bitcoin's coattails.


Very fair assessment of the situation.


To someone not familiar with Haskell funding, can anybody explain the quote below?

"For a while it has been a public secret the Haskell ecosystem has become increasingly entangled with an unsavoury variety in the cryptocurrency sector as one of primary mechanisms for funding development."

I mean, what exactly is this "unsavoury variety in the cryptocurrency sector" and how is Haskell tied to it?


If you write Haskell and want a job, most of the positions available are with crypto related companies.


This sheds some light on the topic - thanks. Still, the author states that Haskell's reputation is used to legitimize bad business. It seems to me that shady companies using the language internally is not enough to raise alarm about it.

Is there some kind of (un-)official sponsorship from (supposedly) shady actors?


Worked at a Haskell crypto startup. Your analysis of cause and effect is wrong -- crypto people are attracted to Haskell because it has features that are excellent for the domain, not because they are interested in "copping shine" from it or whatever.


To be clear, it's the author's analysis, which I'm trying to understand, not mine.


Haskell isn't that large of a language. I'm not confident if the heavy usage by shady crpyto companies is enough to ruin the image of a language but I think at the very least the advice to not depend on it financially to grow the community is a sound one.


Maybe it’s about the metaphorical ed whom is neither an elephant nor responsible for crypto’s thirst....


I'm not sure where you are - but that's not true in London (source: been working here a long time, plus have been hiring for Haskell recently)


the morality and potentially negative effects of finance are real but if Haskell wants a gold-niche to appear worthy for the mainstream world then it's a very potent one.


Also, since it might be unfamiliar to many, here's another article that puts forward a criticism of Bitcoin, many of which are for ethical issues:

https://blog.habets.se/2017/11/Why-bitcoin-is-terrible.html

It's about bitcoin, and not everything applies to other cryptocurrencies, but most of these arguments do apply.


It doesn't really have anything to do with the article though. It's just an anti-bitcoin article of which there are many. The article here is about cryptocurrencies that pull in money through ICOs and that turn out to be fraudulent and that use Haskell and sprinkle some right wing politics on top. In the end the article doesn't really say anything if you ask me and I don't really see the link with Haskell. Haskell just has properties well suited for cryptocurrencies so it gets used more than certain other programming languages for this specific purpose. This seems more like the author disagreeing with consultants, who happen to use Haskell, that take on (according to him) dubious jobs.


Most people can read "unsavoury variety in the cryptocurrency sector" as everything except bitcoin. A minority of people will read it as "all crypto", and if you're reading it as "only shitcoins" you're probably a little unsavoury yourself.


"Adjoint Treasury is a real-time payments and settlement platform for corporate treasury"

Stephen Diehl CTO and Founder at Adjoint

I feel our author may not be entirely impartial here...


I am not sure what you are trying to imply.


I think the implication is "old school financial institutions don't like cryptocurrencies because they will make them obsolete".

so don't agree with the statement or the implication that it's relevant, but I think that's what the person above meant.


This is not what I meant.


Weird, seeing this is Stephen Diehls company summary:

"Automate financial controls and processes in your corporate treasury with inter-company loans, virtual account management, powerful APIs and a distributed ledger made for financial audibility & compliance."

https://www.adjoint.io/


What are you getting at?

There's a pretty big difference between corporate treasury software and cryptocurrency scams? Unless you're trying to argue that anything related to finance is a scam?

I don't see what point you're trying to make, it seems such an irrelevant comment that it makes me question your motive and wonder if you're trying to smear Stephen.


He's working on the same ledger tech but centralised, and calling out firms working on blockchains unrelated to scams like OneCoin.

Edit: To be clear, I like his blog posts normally and am not trying to smear him. I'm just saying it's not a fair comparison.


> He's working on the same ledger tech but centralised

Cryptographic ledger technology has been around since forever (the 70s to be precise): just look at Git, SUNDR, etc.

I believe he's specifically calling out firms working on cryptocurrencies; cryptocurrencies are just one application of cryptographic distributed ledgers.


Sure, but the companies he specifically named are working on similar projects that's all.

Edit: In fact I don't know of a single company using Haskell in the crypto space I'd define as a 'scam'


What is bitcoin if not a distributed ledger?


Using cryptographic primitives to implement a non-productive asset is one thing; using cryptographic primitives as some kind of ledger goes back to the 70s, heck even Git uses Merkle trees.


I think they are trying to imply that, because some crypto projects are targeting similar markets, there might be some conflict of interest that motivated Diehl to create his post.

To me this reads less like a smear and more just "this could be why he dislikes crypto that much".


They aren't really targeting similar markets (at least from my perspective): pretty much any multinational firm can benefit from better corporate treasury management; cryptocurrencies are just one application of this technology, and Stephen is calling out specifically those which are attempting to defraud (or at least benefit from the the gross ignorance of) retail investors.

Those seem like entirely different markets to me.


Exactly. A cryptocurrency is driven by speculation. A treasury system helps manage flows of capital in and out of a business. Said company pays to use the proprietary system. Sure, they're both backed by a ledger, but Adjoint isn't turning profit by encouraging or even allowing people to speculate on the future value of their platform. They're selling a service.


In my opinion, a non-insignificant amount of cryptocurrencies tout a global low-friction exchange system with good APIs as their main feature. I am not qualified to say how related the markets are, but it seems like there is at least some overlap. (E.g. one of the first results I get when googling Adjoint is an interview conducted by a crypto company)

I think our disagreement stems from how vague Stephens post is. By not naming any names he could be accusing any crypto company, including those that might indirectly compete with him, of being fraudulent.

My stance would probably change if someone were to point out one of the "right-wing conspiracy theory cult" Haskell companies that Stephen is alluding to, but as it stands this mainly seems like fearmongering to me.


I see this problem with formal methods, which are also increasingly used in the cryptocurrency world. I compare their use there to the claim that a tightrope is safe because it's anchored to towers assembled from cards made of the strongest titanium alloy.

Having said that, I doubt the impact of Haskell's reputation on cryptocurrency users, technical or otherwise. The myth that Haskell results in more correct programs might still be alive in portions of the Haskell community despite the failure to support the claim with any evidence, but few outside that community have ever heard of that myth, let alone believe it.


I think that fact that Haskell is being used in this way is a great thing for the language.

Criminals and criminal enterprises operate in a high pressure, high-stakes environment. If criminals are using a tool for something it typically means that tool works and works well. That's why those pictures you see in the news of terrorists in Afghanistan always show a bunch of guys in the back of Toyota pickup with a 50 cal mounted on it. Toyota makes a great vehicle that does the job. I'm sure Toyota is not thrilled about the association, but it speaks to the build quality of their vehicles.


"Haskell elephant" is such a missed portmanteau opportunity.


I don't really care for how naïve this description of "how economy works" is or isn't, but being upset that instead of Haskell being used virtually nowhere, it is finally used somewhere is pretty hilarious.


Haskell's unofficial motto is "avoid 'success at all costs'", which is referenced near the end of the article. Piggybacking on crypto fraud would be a cost that's worth avoiding.


Very well-put, thank you.


At this point, the entire financial sector is decoupled from actual productivity, and to pass moral judgement of one highly exploitative industry over another solely due to one's ability to be regulated seems myopic, at best.


What is it about Haskell that makes it a hot candidate for use in cryptocurrency applications? Can someone here shed some light? Read the article but it mostly seems to be a diatribe against crypto on philosophical grounds. I wish it were meatier on the technical reasons for this alleged relationship between Haskell and crypto industry.


> What is it about Haskell that makes it a hot candidate for use in cryptocurrency applications?

The community opinion is that Haskell is good for building robust and correctly behaving applications. There's some evidence that very strong type systems can help with this.

Financial software is an area where people typically want deep correctness guarantees, another good example area being cryptography.

Between these I think it's probably a good thing that crypto-currency applications and applications like exchanges are being built with "safe" technology like Haskell, rather than technologies that provide much less safety (many Ethereum hacks have boiled down to Solidity contracts being relatively loosely typed).

This is however not an opinion on what crypto is doing to the Haskell ecosystem. I don't know about that.


Apparently there's "right wing" people in Haskell now. This is such a paper thin threat on unspecified persons who must know they're being targeted.

Seriously, I don't think the readership of HN is in any disagreement about how new cryptocurrencies are "short long con" jobs, but the author teases that the influx of this money is toxic to the Haskell community because... right wing people?


The influx of money is toxic because Haskell's traditional reputation (roughly: difficult to learn, but fast, smart & correct) is being co-opted to add a veneer of legitimacy to crypto scams.

I also wouldn't say the problem is to do with "right wing people". Nobody's born with a political affiliation: we learn and digest information and experience all through our lives, swinging towards and away from different values at different times. This can especially depend on our social circles, our information-bubbles, what benefits us personally, etc.

The crypto-bubble tends to discourage regulation, accountability, etc. which makes it attractive to right-wing politics, whether as a libertarian free-for-all; or money-laundering for the gentry; or whatever. When this sector has an outsized influence on a particular community, the political gradient will be tilted accordingly, and bias people's random walks to the right.

Haskell may be great at solving the technical problems with crypto, but that doesn't solve its ethical or philosophical problems. Yet, as the old saying goes, "It is difficult to get a man to understand something, when his salary depends on his not understanding it".


Are you saying that cryptoscammers are "right wing", or that threatening cryptoscammers to get rid of them is "right wing"? In what sense dealing with "unsavory varieties" can be considered a partisan issue?


There’s a deep connection between Types and Logical Proofs (Curry Howard Correspondence). Haskell has a rich type system that allows you to “prove” (i.e. typecheck) many properties of your program. This is valuable when getting right the first time is important such as smart contracts. I put prove in quotations because all type systems of Turing complete languages are unsound, but this doesn’t matter too much in practice. If you wanted to be really sure, you’d use a total language like Idris or Coq.


That's not true... all turing complete type systems are unsound (where the type metalanguage itself is a turing complete language), but you can have a sound type system of a turing complete language, and in fact haskel itself has such a type system.


All types in Turing complete languages are inhabited by non terminating terms (looping forever, throwing exceptions), which means all propositions are provable.

For instance in Typescript,

  const absurd = <A>(): A => absurd()

  const unimplemented = <A>(): A => { throw new Error(“Unimplemented”) }

  const uninhabited: string & number = absurd()

Intuitively you can think of it like, “Yeah sure, I can build you a term of any possible type, as soon as I get back to you.”, but then the function just ghosts you by looping forever. But it hasn’t lied. However, so long as you’re aware of these gotcha’s they don’t come up much in practice which is why viewing types as proofs is still useful. Just don’t stake your career on one.


Haskell's type system is unsound. Here's an example, where we can prove that 1 + 1 = 1:

    {-# LANGUAGE GADTs, TypeFamilies #-}

    -- Peano arithmetic: these types represent '0' and '1+n'
    data Zero
    data Succ n

    -- We can define 1 as '1+0', 2 as '1+1', and so on
    type One = Succ Zero
    type Two = Succ One

    -- A closed type family is a function at the type level.
    -- This function implements addition of the above Peano numbers.
    type family Add x y where
      Add Zero     y = y
      Add (Succ x) y = Succ (Add x y)

    -- 'Equal a b' is a proof that types 'a' and 'b' are the same.
    -- It works by forcing the type variable 'x' in 'Refl' to unify with both.
    data Equal a b where
      Refl :: Equal x x

    -- The type checker will accept this proof that 1 + 1 = 2, giving:
    -- >[1 of 1] Compiling Main
    -- Ok, one module loaded.
    truePositive :: Equal (Add One One) Two
    truePositive = Refl

    -- The type checker will reject this proof that 1 + 1 = 1, giving:
    -- >[1 of 1] Compiling Main
    -- x.hs:24:16: error:
    --  • Couldn't match type ‘Zero’ with ‘Succ Zero’
    --    Expected type: Equal (Add One One) One
    --  Actual type: Equal One One
    --  • In the expression: Refl
    --  In an equation for ‘trueNegative’: trueNegative = Refl
    --     |
    --  24 | trueNegative = Refl
    --     |
    --trueNegative :: Equal (Add One One) One
    --trueNegative = Refl

    -- However, the type checker will accept this (unsound) proof
    -- that 1 + 1 = 1, giving:
    -- >[1 of 1] Compiling Main             ( x.hs, interpreted )
    -- Ok, one module loaded.
    falsePositive :: Equal (Add One One) One
    falsePositive = falsePositive
The unsound proof works because our type 'Equal a b' doesn't only contain proofs that a = b (AKA 'Refl'); it also contains infinite loops, like 'falsePositive = falsePositive' (AKA "bottom"). We can use this to undermine any guarantee we try to enforce using Haskell's type system. In fact, we can make a generic version, which can be used to satisfy any type constraint:

    loop :: forall a. a
    loop = loop
In theory, any time we actually try to use 'loop' our program will freeze; so we might think we're safe from any bad consequences; e.g. if we have 'launchTheMissiles :: PresidentialApproval -> IO ()' we can trick it with 'launchTheMissiles loop', but we're safe since that program contains an infinite loop, right?

Wrong! Haskell is lazy, so it won't bother evaluating arguments which aren't needed. Even if we try forcing the value, we can't be sure that the compiler won't optimise it away! In practice this means that we can't rely on the mere existence of well-typed values as proof of their types; we can be sure that our data dependencies exist (i.e. those values which are forced as part of our computation, which can't be optimised away), but we still won't know that beforehand (i.e. the program may crash or freeze at any point before a particular expression, due to the presence of "bottom" somewhere).


Is this what people mean when they say, Haskell's type system is sound?

We know Haskell's type system includes bottom as an inhabitant of every type which enables us to shrug and hand-wave away proofs of termination. As long as one understands that consequence doesn't it pass Milner's definition?

I'm happy writing proofs in Lean or Agda but having to avoid or prove termination would be a pain in the rear end for most large programs. And in practice I still think of Haskell's type system as sound. I always thought of "unsound" as programs with terms that are logically inconsistent with respect to the theorems proposed by the types, eg: early version of TypeScript or Java. Put another way, that you could write a proposition in they type system that wasn't satisfied by the program (proof).


> Is this what people mean when they say, Haskell's type system is sound?

It depends on the context, but it's certainly in common use (e.g. see https://stackoverflow.com/questions/21437015/soundness-and-c... although I switched 'positive' and 'negative' in my example: e.g. I treat 'true positive' as 'correct program was accepted', that link treats 'true positive' as 'error message was justified')

> As long as one understands that consequence doesn't it pass Milner's definition?

Milner's definition is usually summarised as "well-typed programs have well-defined behaviour". Haskell does fit this description, although certain optimisations may be unsound (e.g. library-supplied rewrite rules).

To me, the key deficiency is that Haskell can't ignore 'absurd' branches. For example, let's say we have a function like this:

    foo :: a -> b -> LessThan a b -> Foo
    foo  Zero          (Succ y)  _ = bar y
    foo (Succ x) (Succ (Succ y)) _ = baz x y
If 'a' and 'b' represent numbers (with singleton values), and 'LessThan a b' describes proofs that a < b (see e.g. http://chriswarbo.net/blog/2014-12-04-Nat_like_types.html for how to encode such proofs), then these two branches form a complete definition of 'foo': the combinations 'foo _ Zero _' and 'foo (Succ x) (Succ Zero) _' can't occur, if we trust the 'LessThan a b' proof. In Agda, Coq, etc. we can either leave out those absurd branches (if the compiler can spot their absurdity), or in more complicated cases we can satisfy the type checker by proving they lead to a contradiction.

In Haskell we can't do this: the type of one argument can't rule-out values of another. Hence we must define those branches (or else leave the implicit "unmatched pattern" error, which is a "bottom"), and we need them to return values of type 'Foo' (which may be impossible to construct, unless we return "bottom"). This satisfies Milner's definition, but also goes too far: we're specifying well-defined behaviour for programs which aren't well-typed! In practice, this leads to redundant branches like 'Nothing -> error "Shouldn't happen"', which (a) introduce potential crashes and (b) are so close to being statically avoided!

> having to avoid or prove termination would be a pain in the rear end for most large programs

It can be. If we're being lazy, we can just wrap things in a 'Delay'/'Partial' type (described a little in the above "nat-like types" link, and also at https://news.ycombinator.com/item?id=17472926) or run proofs in Coq's Mtac language ( https://plv.mpi-sws.org/mtac )

> And in practice I still think of Haskell's type system as sound.

Me too. This tends to be called "fast and loose reasoning" https://www.cs.ox.ac.uk/jeremy.gibbons/publications/fast+loo...


I think it's the possibility of nontermination that leads to unsoundness. You can construct a well-typed program that never produces a result, which means the fact that a program has a particular type does not mean you've proved a particular proposition.


This is touched upon in the text :

"the Haskell community itself has simply become a tool to buy legitimacy and pump token values."


I was at a hackathon and this big shot legal person from NY was telling me about a hot crypto company and them using Haskell was like the first thing he told me. In fact, all he told me was they raised a bunch of money in an ICO and they use Haskell. And then he sat there waiting for me to be impressed


Every company that has the ability to do this as a recruiting tool will do it. We're using Elixir / we're using OCaml / we're using Clojure (we're using NLP / we're using ML). In every case there will be some "business" guy who understands just enough to try to impress some potential recruit. If you don't understand the domain and their actual usage of the tool or language enough to fall for this and not ask further questions, it's kind of a problem on your part.


Middle-out block exchange gets you 2x the fees and 1/4 the confirmation latency.

Add in "and every dev gets dual monitors" and it would have been 1999.


It attracts the same kind of intellectuals who like the idea of cryptocurrency.

It's like a double-whammy.


There is a certain class of computer programs that can best be described as a really big table. Basically, an input taken from a finite set, you get an output taken from a finite set. This type of program is really easy to write in Haskel because you can prove that both the conplete input set and output set are covered using the type system. In other words you can prove that you deal with every possible case (though you can't prove that you deal with every possible case correctly!!!), and that there is no ambiguity (one input has multiple correct outputs) A good example of such a program is an insurance contract (or a derivitive contract in a bank)


That's basically a DAG - directed acyclical graph. Data is transformed from inputs to outputs with no state or branching on the macro level of the transform. Lots of programs have parts that map to this very well. The cracks show when someone realizes this and thinks it is a silver bullet to build an architecture that ONLY does this. Then the parts that inevitably do need branching, state, and complex loops become a big problem. Combined with resource management (which can be thought of as mixing in branching and state) and the simplistic approach that seemed like a silver bullet turns into a nightmare once the realities of real software set in.


Hm, what's the issue with state and branching?


If you build a language that is based around doing everything with stateless data transformations but doesn't address state and branching, it will eventually be a problem, because the reality is that the vast majority of non trivial software needs to deal with plenty of state and branching, not to mention the state and branching that will go in to managing resources.

There are a lot of domain specific tools that are used for specific tasks where the main software is taking care of architecture, high level decisions and resources. Shaders are one example of this. Trying to write non trivial software like this is problematic because the structure you are using is so disconnected from what the software needs to do.


> If you build a language that is based around doing everything with stateless data transformations but doesn't address state and branching, it will eventually be a problem

I'm assuming you are referring to Haskell? It's a general purpose programming language so of course it handles state, branching, etc...

  data Tree a = Empty | Leaf a | Node a [Tree a]
    deriving stock (Show, Functor, Foldable, Traversable)

  label :: Tree a -> Tree (a, Int)
  label t = evalState (traverse f t) 0 where
    f t' = state (\c -> ((t', c), c + 1))
The above code labels nodes of a multiway tree using a counter. State and branching.


That's not state or branching on a high level of a program. It is in some ways the opposite of what I was talking about and a good representation of the problem.

This looks like it is lazily evaluating parts of a tree, which means that you aren't controlling that state, you are hoping that everything works out when you query it with regards to resources, caching, memory layout, memory freeing, etc.

In a non-trivial program that either will need to optimize memory and cpu usage to scale or be careful about how things are structured to maintain interactivity, something like this is likely to be a big problem if that tree gets big.


Haskell always struck me as a language you'd want to use to feel superior to the people who code in JS and python, and crypto always struck me as a field you'd want to work in to feel superior to the people who work in industries that actually generate profits.

Also, another possible reason is that many crypto people tend to confuse complexity with ingenuity. While the bitcoin whitepaper tries to make a complex topic as simple as possible, a great many crypto companies and people purposely use language that is needlessly convoluted and verbose.

Perhaps they're doing it on purpose to seem smarter?


Do you even know what "verbose" means? Haskell is obviously the exact opposite of verbose. In fact some more verbosity often makes it easier to understand.


In context, the "language" GP was referring to was the (presumably English) language in crypto currency white papers which is "needlessly convoluted and verbose". This was being contrasted with the concise language of the original Bitcoin white paper. It's not about programming languages.


Yea what this guy said ^


There's no actual technical reason. People fell into this as typesafe = "code must safe & secure". Its also a difficult language to understand unless you've trained under it compared to others. There's an innate obfuscation as a result.


So Haskell may have a lot of ties to cryptocurrency and related things.

That makes me wonder:

If a language has a large group of what might be seen as unsavory groups, people, or just a lot of folks with a specific ideology / opinion(s). (let's just assume it is true for argument's sake here, I don't know enough / I'm not really saying it is true about Haskell)

DOES that change how the language develops?

Does it change, anything?

Have we ever seen that happen before?

Granted even if not I'm not dismissing the article, just wondering.


Two things come to mind as relevant to this query.

First, the Red language (a variant of Rebol) tied itself to blockchain and created a token, though looking at their homepage now this seems less of a central focus.

Second, the Urbit project (which incorporates the Nock and Hoon languages, among other things), was founded by a controversial neo-reactionary figure. The project seems to be moving forward without him, and does not seem to be promoting those ideologies, but still carries that association. In addition to that, the "business model" for Urbit also seems to be tied to cryptocurrency.


A significant aspect of Urbit is its use of the Ethereum blockchain (called UrbitID), but not to produce any form of cryptocurrency—it's used to produce a form of cryptographic asset that more closely resembles property, since ownership of that asset (called a ship) confers value in the form of an identity within a network. DNS is to ICANN as UrbitID is to Ethereum. The regulatory aspect of who's who is decentralized rather than centralized.

Business models on Urbit don't really have to do with sale of ships though—they're finite and not meant for high-frequency trading. Business models that are emerging are more likely to involve providing services to users of the network, just as domain sales are a small fraction of the "business model" for the internet.


I would equate crypto currency more with trading collectables. If Haskell was financed with profits from trading magic the gathering cards, would it be different? Some people trading MTG cards might be unsavory, some might try to scam you, but that's the market, not the collectable itself.

Because this article, in my opinion, misidentified the scam, I just don't agree that crypto profit supporting Haskell is a problem. If there are unsavory actors in the community, that's also a different thing, and isn't the fault of crypto.

It seems this piece leaves no room between scammer and victim. It's certainly just an opinion that crypto is a scam, and it seems the author is projecting that opinion on individuals in the Haskell community, but it sounds like those individuals benefit the community more than harm it.


Idk I think the haskell elephant in the room is the poor beginner and intermediate resources,poor tooling,lack of libraries and poor documentation but maybe that's just me people totally don't want to use haskell because it's involved in some cryptocurrency scams


so many people are fond of saying "porn launched all these different technologies" (I say it that way because I am not fond of saying it) that I think this post would better be summed up as "crypto is the new porn"

meaning, it more than doesn't matter if a technology finds a unsavory butlucrative market, precisely that lucre is what funds early stage development of the technology to the point where it can grow into commodity markets.

(and this is more "the elephant in the Haskell room" than any type of Haskell elephant)


I get why he doesn't like crypto currency stuff. Why is it so toxic if haskell is used for it? Is there a suggestion that those that participate in coin related projects should be persona non grata.

Is there really no discussion about software as a dual use technology?


The issue the author is worried about is that the crypto companies are taking advantage of Haskell's public prestige to imply a level of robustness and rigor that doesn't actually exist: this incredibly incredibly shady company can't be that shady since they're using such fancy technology.

> In this new era the Haskell community itself has simply become a tool to buy legitimacy and pump token values. The reputation of our community is now used to defraud the public and convince non-technical users of the soundness of an utterly unsound investment.

So when people realize that 50% of crypto entrepreneurs are scammers and the other 50% are deluded, and the bubble pops, there is a serious concern that Haskell will be publicly understood as a "cryptocurrency" language and will suffer a reputational hit.


Although I think this article is informative about pointing out the crypto connection (there sure are many well known haskell devs related to crypto, to Cardano specifically), but I think it's way too negative. There are scams in cryptocurrencies, sure, but do some of them have real value? I think they do.

But perhaps somebody knows the answer to these questions instead:

- is Cardano itself a scam? (= are the people related immoral?)

- are there more cryptocurrencies developed in haskell and are these scams?

Other than that, I don't really see the influence on the ecosystem - what are some concrete examples here?


You made me look up the IOHK (Cardano developers) team page again, it's hilarious: https://iohk.io/en/team/


I dont share the concern. I remember that the Haskell project took a lot MS money in research grants, and this was discussed as "potentially damaging to the project".

Crypto currency is no different for me from other financial products: they have the potential to be very dangerous for the users of such services. Now often this is because of a lack of information (ponzi schemes, sub-prime mortgage packages), but with crypto all the rules of the game are opensource :)


> "what economists call non-productive assets"

That's not a technical term nor a "term of art" in economics. Google Scholar returns results from management and accounting journals, as well as some pseudo-economics ("heterodox") pamphlets.


How do you know what's "pseudo" and not "pseudo" in economics? Given that it isn't a science. I'm genuinely curious.


There's something called "economics", much like there is something called "psychiatry". [Maybe we need more sociology in policy-making. Maybe economics is too narrow a view on the world. But it is a specific field of study.]

There are good reasons to be critical of psychiatry, but it's a red flag if someone tries to pass palmistry off as psychiatry.

The problem here is that economics does have some prestige still, which is why predatory political activists try to pass their "heterodox" writings as belonging to it.


Given by whom? Economics is regarded as one of the major social sciences.


Economics is a science. You get an idea what's 'pseudo' or not by working in or familiarizing yourself with the field. Say, The New neoclassical synthesis is very much as standard as it gets, whereas Marxist or Austrian economics exist on the fringes.

In general something is pseudo-scientific if it operates outside of the formalisms or tools of that particular discipline, especially if it pretends that it does not.


"Modern mainstream economics is sure very rigorous — but if it’s rigorously wrong, who cares?

Instead of making formal logical argumentation based on deductive-axiomatic models the message, we are better served by economists who more than anything else try to contribute to solving real problems. "

https://larspsyll.wordpress.com/2020/07/28/why-economics-is-...


I'm not sure what that critique has to do with the original question about the distinction between science and pseudo-science, but I'll respond anyway.

The purpose of science is the generation of knowledge, it's to have a formal understanding of a system and essentially a language and methodologies to make inquiries.

Economics as a science does solve real world problems, but it's not the dominant purpose of a science as such. It's the task of problem solvers to take scientific results and then turn those say, into actionable policies. Scientific work does not exist for the purpose of solving 'real problems' in the sense of being subjected to that goal. Scientists are not engineers. When Computer Scientists talk about Big-O complexity they often do so in a way that's not really applicable to real-world software development, but that isn't their job.

That said economic theory actually does very much factor sucessfully into decision making. Be that macro-economic policy, central banking, the design of markets and incentives, and so on.


Economics is not something that can be tested easily on a large scale, so most of it becomes about trying to explain why things happened in retrospect.


Which can be restated as "Economic theories, on average, have little predictive power."

I'm glad I took econ classes, but it is not a very practical discipline.

And, yes, I think it's a stretch to call it a science when you can't do meaningful experiments.

I object to calling geology a science for the same reason.


I would probably agree, but saying something is difficult to test is not the same as saying that many theories don't seem to be true in practice.


Valid point.


You can say exactly the same thing about archaeology or geology or cosmology...



WTAF does this have to do with Haskell? Please consider a retitle to "Haskell Developer Does Not Like Cryptocurrency."


An important aspect of life for many of us is the opportunity to be a moral agent. Being a successful moral agent as part of a profession in the world I know is not an easy goal to achieve. Diehl deserves kudos for posting this so that young people planning a career can be aware of some possible pitfalls and negative moral influences down the road when they include particular technological skill sets in their long-term road-maps.

I'm generally not in a technological workplace as I once was, but my recollection (from circa 1990) is that the ACM and the software section of the IEEE each had codes of ethics for their members to consult when knotty problems of good vs evil arose. Do current versions of those codes contain anything that might assist a responsible professional addressing the issues that Diehl describes?


https://standardcrypto.wordpress.com/2020/07/30/whiny-progra...

"Well… then don’t buy bitcoin Stephen! Nobody is forcing you to hodl bitcoin. Unlike all those people in argentina and tin pot places where you can’t freely convert the currency, and it is jail time if you try.

I roll my emoji eyes…"


> The value of these assets is only determined by what other people are willing to pay for them.

According to William Stanley Jevons, Léon Walras, and Carl Menger, the value of every asset is only determined by what other people are willing to pay for it. It seems a good match for cryptocurrencies.


Mentions FP Complete, who worked on cardano I think. So is the accusation that cardano is running a shady exchange and stealing from people?

I don't follow the crypto space, but it seems like we might actually want to know which companies are being accused of being shady.


The accusation is that the whole crypto space is shady. There is no value being created, instead investors are being defrauded. And part of the con game is pretending to have very intelligent people keep making progress building very complicated things. Haskell works great to give that impression, though Rust seems to work just fine these days, too.


I don't think Cardano is running a shady exchange, but Cardano sure is traded in shady exchanges and people are losing money trading Cardano. I don't think that's a controversial statement.


People are losing money trading a lot of things, including but not limited to stocks, commodities and cryptocurrencies such as Cardano. I don't really see the issue with that?

I'm guessing it's the shady exchanges. There are several exchanges that have been around for a few years now, do you take issue with all of them or are you thinking of a specific one?


Whoa, FP Complete is doing crypto? It never appeared to me like that. Is there a citation?


Sure they do. It really is a public secret. See https://www.fpcomplete.com/blog/fp-complete-and-cardano-bloc...


Printed money is also something based on perception and belief that it is worth something


This is one of the best "We're not thinking critically about cryptocurrency" articles I've read.

What's more surprising is it didn't get flagged to death. Maybe because the title isn't attracting attention?


A response from one companies CEO which Stephen called out: https://www.youtube.com/watch?v=dHo_EUyShOg


Rebuttal by Founder of Cardano https://www.youtube.com/watch?v=dHo_EUyShOg


Haskell developer community should support the right projects https://www.reuters.com/article/us-global-carbontrading-repo...


Pot calling kettle black...


As an outsider to both the Haskell and Crypto communities, I find it extremely hard to properly verify any of these claims. For example, I was convinced that Tweag was a highly reputable company. Would anyone here who is less invested in not burning any bridges be willing to name just one "obviously shady" crypto project using Haskell?


I found the description of the cryptocurrency-space as a religion well-written and interesting.

Of course, comparisons such as that are relatively common and has been made many times for the free software movement as well for example.

However, his criticisms of cryptocurrencies are quite off IMO.

> However cryptocurrency companies do not produce anything, instead they offer synthetic financial products which are marketing to the generic public as investments

MakerDAO is basically a decentralized lending facility (i.e. "banks") and Compound is a decentralized money market.

These are actual financial products, they serve real purposes that can also be found in the legacy financial system.

Cryptocurrency engineers are building an alternative, decentralized financial system that cuts out middle men and allows anyone access to financial services (such as accepting money from anywhere in the world, or being able to lend out your capital) that were previously only available to select people.

In one month, July 2020, the Federal Reserve printed more money than the first 200 years of the existence of the USA.

There are serious problems with the legacy financial system, and it's good that people are building systems in parallel.


MakerDAO created DAI, which is yet-another-stable-coin pegged to 1 USD.

If the Federal Reserve can't be trusted with USD, surely DAI isn't reliable either.


Out of a thousand cryptocurrencies you found two that are not harmful; congratulations. It's virtually impossible for people to discover the good stuff without being radicalized by the bad stuff.


There are thousands of scam penny stocks as well. The number of programming languages tainted after being used by them is 0.


"However cryptocurrency does not provide any technical answers to the inefficiencies since its entire existence is purely predicated on the appeal as a speculative investment first and not on its efficacy to transmit value."

Pure nonsense.


obnoxious grandstanding


If you have ethical concerns with this, but still love FP, just come over to OCaml. You get 80-90% of what you love about Haskell, and there is an established industry in many sectors. Big players here like Ahrefs, Jane Street, and, of course, Messanger and Facebook.


Tezos uses Ocaml; doesn't the same argument apply? (I don't agree with the argument, personally, and I'm a big fan of Ocaml... I just don't see how it deserves an "ethical concern" exception here.)


I am ignorant of the primary users of Tezos, but I imagine given it's low value relative to other coins, it isn't the prime target for black market deals, money launderers, and other criminals.

I love Tezos, personally, and think it's one of the more technically superior blockchains, and can see it having a better chance than other stable coins of having broad applicability to more than one or two industries.


The question would be what fraction of the OCaml community is paid by Tezos. If it's over half you may have a problem.


And the answer is, no where near half, maybe close to a couple percentage points, if that.


I would agree. :) Is that the case with Haskell? The OP only says that "some of the very founding contributors to Haskell itself" are deeply involved in this.


If you have ethical concerns, adopt the language used by an SEO consultancy, a hedge fund, and Facebook?

(i know Jane Street isn't actually a hedge fund, but how many people here know what a prop shop is?)


You're right. Let's all abandon our frivolous jobs, live in a communal and sing kumbayah around the 100% eco-friendly heat source, congratulate ourselves for abolishing the evils of capitalism, and stand in our bread lines.


Haskelephant


nocoiner


It's funny, I remember looking at Quorum's anonymity layer Constellation and thinking to myself how odd it was they wrote it in Haskell; generally a sign there are no adults in the room when coming from a JPMC tier company where actual money will be piped through it. It turned out they had to rewrite it in Java to get it to function reliably.

I have no opinion on Cardano,but obviously something from the ML family is useful if you want to build smart contracts.


Lazy and poorly-considered article. It conflates Bitcoiners with shitcoin grifters like Cardano. It's also beyond stupid to purity-police the uses of a programming language. There's no collective tradeoff we have to make here. It doesn't cost me anything as a Haskell dev if someone is using it in some scam somewhere.


That's interesting. What's wrong with Cardano?



Does Haskell have a legible GC free subset that is an alternative to Rust? If not, that is the elephant.


I'm not sure you understand what "elephant in the room" means? The fact that Haskell has a GC is not an uncomfortable truth that everyone avoids discussing.


I feel like the only elephant in the room with Haskell is that Haskell people are obsessed with jumping in on any other FP language and trying to turn it into Haskell. Scala was/is awash with it, much to the detriment of the community.


It's not just a Haskell problem, but I think that Haskellers would rather care about stuff like cryptocurrency, which is obviously unctuous graft, rather than fix the other social problems in their community, like sexism or overly-strict versioning.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: