It was a short open-ended question with no additional context. That is not a clear requirement for an answer. Did you even read the README? Do you know anything about Haskell or embedded systems? You wrote a single sentence then complained when I wrote just a few sentences back. That wasn't polite, so my subsequent response wasn't either.
> the only person who responded to it was someone who was incapable of explaining technical concepts
More childish insults. You know absolutely nothing about me.
At least I have contributed something in this thread. Again, reflect on your own behaviour and why you didn't get the outcome you wanted.
What would he have to gain by lying about spending even more customer money? I see it as a boast of how well he was playing the game; and also an admission that he was trying to buy influence.
We don't really know what the split was. SBF has claimed he donated significantly more to the republicans. From your link above:
The GOP donations were "dark-money" contributions, making his claim difficult to verify. Such secret contributions, allowed by the Supreme Court’s 2010 Citizens
United ruling, wouldn’t show up in the FEC disclosures used to compile MarketWatch’s list
If you had put just half as much effort into articulating exactly what you did and didn't understand as you have in bashing me, then there might have been a discussion. Rather than lecturing me on how to participate in the community, you should perhaps reflect on how you yourself come across.
This looks great! Note that Lennart was a member of the original Haskell committee in the 80's and has written numerous compilers (including one still used at Standard Chartered). The combinator approach was originally used by David Turner's Miranda in the 80's and performed well on hardware of that era. Presumably embedded CPUs also favour the combinator approach.
I was speaking generally not specifically about addition. If you create new types and especially new operations on those types, then it will be up to you to add runtime "type checks" to avoid other failures. Try defining equality for a Point class for an example.
There are many practical examples already in Haskell. Pure functional programming is not necessarily about avoiding effects, but about controlling, tracking and managing them. This enables better reasoning and more safety guarantees. For example, software transactional memory, the STM monad, allows optimistic updates to shared mutable state by safely supporting rollbacks.
Not the original poster, but to me it usually refers to a language that is expressive and high-level but usually not fast or efficient enough to implement the actual heavy lifting. It seems fair to call Python a scripting language. This is not a derogatory term, rather it actually describes a great way to build software and explains Python's success.
This is essentially the same argument as "one can write secure software in C++". If it's not enforced by the language and tooling, one can't safely assume anything.
"And C++ is explicitly a multi-paradigm language so there can be affordances for multiple approaches." - In other words, a jack of all trades and master of none. For a systems programming language, I'd want to be able to easily reason about where allocations, memory barriers etc are happening and I'd want an emphasis on correctness/verification (rather than ease of use). C++'s many abstractions, intended for applications programming, actually get in the way of systems programming.
Multiplication and division aren't necessary for arithmetic, why not keep things simple and just use addition for everything? Because by using a more complex language, it actually simplifies many solutions to problems. I do not understand why many software developers seem unable to grasp this.
> Being able to reasonably go days without charging with regular usage is quite nice
No it's much worse than that for us Intel laptop users. Our machines make loud noises, overheat and throttle to the point where it affects Zoom video chats. The fan on my X1 carbon even comes on when booting the machine!
A terrifying accusation. I've had both OpenZFS and Btrfs eat my data, luckily I had backups but did lose a few files. XFS is probably the best bet on Linux, it was beautifully designed and implemented by SGI back in the day. Hopefully the ChatGPT generation don't start modifying that code too much.
Yes it's certainly better, but it definitely slithered out from under the same rock. There are even better languages, designed by folks whose minds where presumably never corrupted by anything on that list.
I once read that "Python" came from Monty Python's Flying Circus. And that's how I've always viewed the language, i.e. something akin to a Terry Gilliam animation.
I use it every day too. Issues are not rare. It can even bluescreen windows (docker garbage collect on a many core workstation). I would not recommend over Linux if one has a choice (I don't).
> sometimes a PL has to go down an unconventional path to make something new.
Absolutely, just look at Haskell as an example.
> most important part is figuring out who is going to use the PL and what problems they are solving.
Completely agree. Rust and Go have received a lot of criticism over the years, but I think that is often down to them not being as general purpose as many people try to claim. The creators had particular users and use cases in mind.
Actually generic types can make reasoning about code much easier. This is the opposite of runtime dynamic types. Generic types tell you what the code doesn't (and cannot) do. Any generic type basically cannot be inspected or unpacked, see the paper "Theorems for free" for examples.