Live data from Hacker News

The Haskell Elephant in the Room

stephendiehl.com

141–150 of 341 posts

Re: The Haskell Elephant in the Room

#141
post #98

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 chan…

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, a…

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.

Re: The Haskell Elephant in the Room

#142
post #91
post #86

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 a…

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)

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.

Re: The Haskell Elephant in the Room

#143
post #105

Earlier quoted context omitted.

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…

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 prob…

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 , 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.

Re: The Haskell Elephant in the Room

#144
post #9

Earlier quoted context omitted.

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.

Re: The Haskell Elephant in the Room

#145

Earlier quoted context omitted.

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 prac…

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.

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).

Re: The Haskell Elephant in the Room

#146
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.

Re: The Haskell Elephant in the Room

#147

Earlier quoted context omitted.

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…

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…

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.

Re: The Haskell Elephant in the Room

#148

Earlier quoted context omitted.

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.

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.

Re: The Haskell Elephant in the Room

#149
post #122

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 ad…

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.

Re: The Haskell Elephant in the Room

#150
post #120
post #81

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 mark…

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.
Post reply on HN