phizy
Joined 6 years ago
Joined 6 years ago
The stdout buffer.
Just because mutation isn't explicit doesn't mean it isn't there. Programming languages are not syntax devoid of meaning: they have semantics. What happens at runtime is part of what a programming language does. (Arguably, that is the most important part of what they do.)
>What this means is that imperative primitives must exist for any programming to work.
That's completely untrue. Imperative languages can be implemented as a subset of functional ones[1] and vice versa. Again, they're just different models. No language can do anything if it isn't implemented in a machine. A machine isn't "imperative"[2], it's a pile of atoms that do what atoms do, without paradigm or instruction. You absolutely could implement a pure functional assembly language. The reason nobody has, is because it doesn't matter: any Turing complete language can be used to implement any other language[3].
Try to implement `volatile` in C without using another language. Does that mean C fails to model real hardware? No, because it has `volatile` to get volatile semantics! Just like Haskell has IO to get I/O side-effects. Or ST to get mutation semantics.
> Use your algebra to make it work. You'll find it's impossible.
Don't assert it, Prove it. Show me one computable function that cannot be computed using boolean algebra.
[1] https://www.microsoft.com/en-us/research/wp-content/uploads/... [3] https://en.wikipedia.org/wiki/Lisp_machine [2] https://en.wikipedia.org/wiki/Turing_completeness
"Oh, you're one of THOSE people." (What people?)
"Trump is not being impeached." (Simple to verify, not up for debate.)
"Biden is not Trump's opponent." (Didn't need to be questioned, but apparently it's also up for debate?)
"There is no truth." (Then what are we talking about?)
"You can't trust CNN." (But anyone with a YouTube account and a webcam is trustworthy.)
"Vindman is from Ukraine, so we don't know what his loyalties are." (You can't tell how trustworthy a person is based on where they were born. Textbook racism.)
"Watch the DOJ." (My spy van is in the shop and I lack a desire to confirm your biases.)
"I love you." (You can't cross a bridge after you've just burned it to the ground.)
The fact is, a person can only form correct beliefs if they test those beliefs in the crucible of reality. Sitting on the couch in some shit-smelling hoarder's hovel living off of your retirement is not a recipe for finding the truth.
Beliefs must have consequences, and as a consequence of their beliefs, they won't be seeing me alive again. It's really the least I can do. I'm not interested in playing a stooge for them to gleefully fling their ignorance at.
I have no bias for FP. I just don't understand what you're getting at.
>the purity of haskell does not remove the necessity of mutating data in that database.
That's great, because the purity of Haskell does not inhibit mutability. It just constrains it to lie within some mutable context.
>Modelling mutation with purity does not eliminate the problem it only moves the problem to another location.
Location? What is a location? It's like you're saying you can't truly add 3 + 3, because someone still has to add 1s under the hood. It's just a different model of the same problem.
Honestly, it sounds to me like you've never used the language, and your criticisms come off a bit like standing on an aircraft carrier shouting about how iron boats will never float.
Either way, it is unclear what you're actually trying to say. Haskell has methods for modelling change of state through pure objects, but you're talking about that as though it were an inherently flawed or invalid approach, rather than one of many equally valid approaches to modelling state transformations.
This is completely untrue. You may not be familiar with the math, but that doesn't mean it doesn't exist. If you can model something well enough to understand it, then you can model it mathematically. There really isn't any domain of knowledge that math is unsuitable for, excepting if you don't know any relevant math to do.
Haskell is a pretty awesome language, but it doesn't make it easy to incrementally optimize programs.
But what if they don't want a conversation? What if they want a "silent majority" that they will then claim to represent? What if they interpret a lack of resistance as evidence of support?
You may not be changing people's minds outright, but you do have some impact on the strength of their convictions, and their sense of how broadly held they are.
I won't be responding, and they seem to think they're quite the expert in this sort of thing.