bos
If you do, then a quick glance at whether you’re using foldl’ or foldr tells you about what the function is allowed to do, which cuts down a little on comprehension.
List traversals are typically compact enough that there’s not a huge difference either way.
One advantage of using a fold, even in these cases, is that newcomers to Haskell often get so carried away with (and confused by) the power of pattern matching that they’ll write bizarre overly-complicated list traversals by hand, when a simpler mechanism exists that they just haven’t yet internalized.
My e-reader lost its stripes
The first attested use is from 1945, on the nose of a P-47 Thunderbolt flown by Captain Milton Thompson of the 509th Fighter Squadron. And his art was exactly what you'd expect: a charging bull with the words "balls out".
And there are numerous such examples. “That was half true. The kill chain ran. The interceptor did not.”
LLMs produce staccato, ugly chains of sentence stumps like this all the time. They’re easy to spot, and your essay is littered with them.
If anything, spending a week on a project like this seems liable to blind you to the shortcomings of the prose, because after putting in a lot of effort you can’t read it with fresh eyes. That’s what editors are for, but an LLM is by nature very weak at editing LLM-generated text.
I want to be able to offer constructive feedback on the structure of the overall essay, for example that the interspersed animated/interactive models often don’t seem strongly connected to the text, but simply reading the words makes this a grind.
Liberty Utilities has nothing to do with libertarian separatists. It's a brand name of Algonquin Power & Utilities Corp, a boring Canadian infrastructure conglomerate that buys regulated water, gas, and electric systems across North America. They bought this chunk of rural California grid from NV Energy in 2009. That's it.
Codeville also used a weave for storage and merge, a concept that originated with SCCS (and thence into Teamware and BitKeeper).
Codeville predates the introduction of CRDTs by almost a decade, and at least on the face of it the two concepts seem like a natural fit.
It was always kind of difficult to argue that weaves produced unambiguously better merge results (and more limited conflicts) than the more heuristically driven approaches of git, Mercurial, et al, because the edit histories required to produce test cases were difficult (at least for me) to reason about.
I like that Bram hasn’t let go of the problem, and is still trying out new ideas in the space.
> To be kind, we’ve spent several decades twisting hardware to make the FP spherical cow work “faster”, at the expense of exponential growth in memory usage, and, some would argue, at the expense of increased fragility of software.
There is not one iota of support for functional programming in any modern CPU.
https://www.facebook.com/199535516767620/posts/4006006656120...
One example is the open source tool Infer, which we run on very large bodies of native and Java code at Facebook. http://fbinfer.com
Facebook's evolutionary search for crashing software bugs
Most readers seem to be misinterpreting Mike as anchoring off other popular programming languages of today, whereas he's looking for language features for which there's (a) no consensus that they'll actually be good when they exist, and (b) don't yet exist. (I'm highly skeptical of dependently typed programming.)
I think that there's a case to be made that numeric programming in Haskell, relative to the state of the art of today rather than the year 2100, really isn't so great – but my concerns are very different than Mike's, and revolve around libraries rather than type system features.
Source: have done a bit of Haskell in my day.
There's also a vast range of engineering projects, from VR through video, mobile apps, machine learning, compilers and programming languages, operating systems, on to data centers.
The more abstract code is great when it works well, and when it falters I can easily drop down to something more concrete, or even to C, and still have most of my code benefit from that higher level of thinking.
Markup.rocks – in-browser markup edit, preview and conversion
Here's a Pusher message.
{
"event": "pusher:error",
"data": {
"message": String,
"code": Integer
}
}
Here's the corresponding Haskell. {-# LANGUAGE DeriveGeneric #-}
import GHC.Generics
-- a generic wrapper type for all Pusher events
data Event a = Event {
eventType :: Text,
eventData :: a
} deriving (Generic)
instance ToJSON a => ToJSON (Event a)
instance FromJSON a => FromJSON (Event a)
data Error = Error {
message :: Text,
code :: Integer
} deriving (Generic)
instance ToJSON Error
instance FromJSON ErrorIt doesn't always fit (typically when your data structures don't resemble the wire encoding), but it kills all the boilerplate when it does.
Since you say that you can magically get away without boilerplate in Ruby in this case, I would expect that the Generics approach will give exactly the same result.