Try our demo: https://groq.com/
Careers at Groq: https://groq.com/careers/
Contact me: http://web.jaguarpaw.co.uk/~tom/contact/
- tomeNot sure if you're making a joke about this, but Ed Witten tried a number of fields before settling on theoretical physics.
- This is hilarious and I'm looking forward to seeing what it says about itself.
- > > Not quite, static typing is used at runtime, python type annotations are not
> No, static typing is usually used AOT (most frequently at compile time), not usually at runtime (types may or may not exist at runtime; they don't in Haskell, for instance.)
In fact, Haskell then allows you to add back in runtime types using Typeable!
https://hackage.haskell.org/package/base-4.21.0.0/docs/Data-...
- I see. So who are these "agents of a certain agency" you're referring to? Can you be specific?
- > I don't believe any of the above makes me antisemite. It is very typical of agents of a certain agency to frame like that though.
An astonishing pair of sentences.
- If you liked this, you're going to love
git commit --verbose --patch - > The standard library is full of exceptions
By the way, the number of partial functions is base that throw compiler warnings is increasing, for example:
https://hackage.haskell.org/package/base-4.21.0.0/docs/Prelu...
I hope it will increase further.
- That's a rather drastic generalization! As a counterpoint I've worked on professional teams with, what, 20 or 30 different Haskellers over the years and the number of "toxic, dramatic, dogmatic people" in that set is zero (or one if I really stretch the definition, and then only dogmatic, not toxic or dramatic). None were poor at their jobs, and the proportion of truly excellent software engineers with deep capability in the hard and soft skills needed to get code shipped was far greater than 50%.
That said, if toxic behavior occurs it can be more visible in smaller communities, just by how the numbers work out, so I don't doubt you've had a hard time interacting with some Haskellers, and I sympathize with you. Please point me to any toxic behavior you see in the public Haskell community and I'll do my best to address it with whatever authority I have.
- I prefer the slogan without "probably", "If it compiles it works", because then at least it's clear it's a slogan and not a formal claim. Everyone knows that if you write
then it will compile but not work, so they don't take it literally. But it is a pithy statement of the lived experience of many users of strongly typed programming, which is more accurately described by something like "if it compiles then it will probably do something at least basically sensible and often be pretty close to what you actually wanted".multiply x y = x + y - How did your tests pass if you didn't handle state?
- > People nowadays are just desperate to have a diagnosis. Everybody wants to be special and unique
I've never managed to understand this when it comes to autism. Autism used to be considered something as extreme as a severe disability (e.g. Rain Man), and latterly with the inclusion of Asperger's into the spectrum, at the very least a collection of undesirable behavioural characteristics. Do people really want to be diagnosed with something wrong with them, or has the perception of autism shifted to at least neutral (if not positive)?
- You can do this
but you can also do thismain = do let x = foo putStrLn "foo was never executed"
What's the difference?def main(): x = foo print("foo was never executed") - Ah! My favourite Haskell discussion. So, consider these two programs, the first in Haskell:
and the second in Python:main :: IO () main = do foo foo foo :: IO () foo = putStrLn "Hello"
For the Python one I'd say "I/O is done inside `foo` before returning". Would you? If not, why not? And if so, what purpose does it serve to not say the same for the Haskell?def main(): foo() foo() def foo(): print("Hello") - Not a synonym, but `Monad` is one of the commonly used interfaces in Haskell (not the only one).
- Is it necessary that a monad "builds up a computation and then runs"? In fact it's very hard for a monad to do that because the type of bind is
so you can really only make progress if you first build a bit (`m a`), then run it (to get `a`) then build the next bit (applying `a` to `a -> m b`), then run that. So "building" and "running" must necessarily be interleaved. It's an odd myth that "Haskell's IO purely builds an impure computation to run".(>>=) :: m a -> (a -> m b) -> m b - And for comparison, here's Haskell's (or rather Bluefin's) equivalent of Zig's `Io` parameter:
https://hackage-content.haskell.org/package/bluefin/docs/Blu...
- > 1. a description of how to carry out I/O that is performed by a separate system
> 2. does the I/O inside the function before returning
How do you distinguish those two things? To put my cards on the table, I believe Haskell does 2, and I think my Haskell effect system Bluefin makes this abundantly clear. (Zig's `Io` seems to correspond to Bluefin's `IOE`.)
There is a persistent myth in the Haskell world (and beyond) that Haskell does 1. In fact I think it's hard to make it a true meaningful statement, but I can probably just about concede it is with a lot of leeway on what it means for I/O to be "performed by a separate system", and even then only in a way that it's also true and meaningful for every other language with a run time system (which is basically all of them).
The need to believe that Haskell does 1 comes from the insistence that Haskell be considered a "pure" language, and the inference that means it doesn't do I/O, and therefore the need that "something else" must do I/O. I just prefer not to call Haskell a "pure" language. Instead I call it "referentially transparent", and the problem vanishes. In Haskell program like
I would say that "I/O is done inside `foo` before returning". Simple. No mysteries or contradiction.main :: IO () main = do foo foo foo :: IO () foo = putStrLn "Hello"https://hackage-content.haskell.org/package/bluefin/docs/Blu...
- > It’s an extremely facile work and reads exactly like a high school essay: “In having his character consider execution to protect his and his family’s reputation, Doyle explored the societal expectations of Victorian masculinity and how men struggled with such pressures.”
Not to mention that that the character in this particular story is not actually struggling with debt, he simply discovers, somewhat incredibly, whilst researching for a newspaper story, that he can earn far more money begging than in his job as a reporter. There simply is no pressure, he just lacks integrity.
- Is it even remotely appropriate to blame without first understanding? In which case, doesn't this perspective completely rule out the possibility of any appropriate blame?