Functional programming is immutable by default. TypeScript and many other typed languages don't really stop you from clobbering things, particularly with concurrency. Rust does. But immutability with GC is a lot easier to use than Rust if you don't need the performance of Rust.
That is only true since people started equating FP with Haskell.
OCaml as the discussion subject on this thread, allows for mutable data structures, and I am old enough to have been taught Lisp as one possible avenue for FP.
But what is functional besides haskell? Purescript? Elm I guess. Ocaml is not. It has for loops even. You can write pure functional ocaml but people don't. It mattered a lot less when it didn't have true concurrency, but now clobbering things in ocaml is quite possible.
My point was that without any escape hatches or magic you can code a segfault starting in ocaml5. That may be true of haskell? It is true of rust too, though the only known way to do it isn't something that is likely to happen by accident and is tracked as a bug. In ocaml5 if you use domain, it is down to experience skill, and some luck to be sure you used atomic when necessary. I'm a bad programmer despite going on four decades of experience. I'm not even remotely methodical. If I adopt ocaml for a project I'm using 4 or adding something that fails the pipeline if it finds domain anywhere.
It shouldn't, the OCaml 5 memory model bounds the reach of data races in both space and time. [1] Thread-unsafe code won't be correct when misused, but it will stay memory safe unless you reach for an additional escape hatch (or you find an implementation bug of course).
You are right! As of 5.1.1 at least it catches the cross domain access I was using to smash things. From what I am reading it sounds like it didn't work in 5.1 I could go try it in godbolt to find out when it was fixed, but I kind of don't care. Very exciting, I like ocaml and was lamenting the changes.
That makes a lot more sense: The earliest 5.x releases weren't stable at all despite the non-prerelease version numbers. I waited for longer than I wanted to before upgrading from the LTS to 5, but right now it should be ok to switch as long as the few regressions, like the GC pacing issue, don't affect you workload.
Pure functional programming languages do not allow mutable state. They can simulate it with monads, and they typically have impurities to allow io sode effects, but a for loop is an inherently imperative construct. Mostly functional languages like ocaml have things like ref. Functional languages aren't just about functions being composable and having no side effects, they also require that once a value is bound to a name, that it does not change. That isn't just pedantry either, it is what allows safe concurrency by default.
Ocaml is immutable. It has ref if you need mutation, this is not the default thing you grab tho. Haskell has unsafe and IORef, that does basically the same thing. Scala, rust etc has all escape hatches.
A loop by itself is not non-fp, as i can do the exact same thing via recursion. Its just syntax.
Hell, i can write a never halting program in lambda calculus with a fixed point combinator causing "undefined behaviour".
The recent move away from phonics has been disastrous, and states that are using phonics now are seeing better results.
> Some have called it the “Mississippi miracle” ...
> A clear policy story is behind these improvements: imposing high standards while also giving schools the resources they needed to meet them. In 2013, Mississippi enacted a law requiring that third graders pass a literacy exam to be promoted to the next grade. It didn’t just issue a mandate, though; it began screening kids for reading deficiencies, training instructors in how to teach reading better (by, among other things, emphasizing phonics), and hiring literacy coaches to work in the lowest-performing schools. Louisiana’s improvements came about after a similar policy cocktail was administered, starting in 2021.
I would be interested to know more about the approach with literacy coaches. I donate to a charity that does 1 on 1 reading tutoring: https://readingpowerinc.org/
If we cannot as a society teach our children how to read, something is very wrong and we need to invest heavily in fixing it.
I know from my earliest memories that reading is possible from whole words if you are read to enough without being formally taught. Granted at that point my attention span was too lacking to really read books by myself, compared to being read to.
But that basically amounts to probably just learning phonics indirectly through examples and drawing patterns, and specifically is an exception and not the norm. And children's books even if they don't use the phonetic alphabet teach through example when read properly.
I don't know enough about whole language learning theory and its development aside from the fact that it has been discredited. Perhaps it was based off of the outliers and wrongly assuming that the higher end of the early literacy bell curve's techniques would be generally applicable?
Is there a way to just use this as a computer monitor?
That’s what the Viture glasses are and it’s great to have a portable monitor that focuses at a longer distance.
Navidrome looks nice but it looks like it is Desktop only. I am using Plexamp as well. I tried some alternatives but couldn't get them to work reliably. People miss Plexamp as an option because they try the regular Plex app and not the simplified Plexamp.
Navidrome is a server. You can use it directly by connecting to it in a browser, but its point is to serve the music to a client, of which many exist for both iOS and Android.
Navidrome is a server, not a desktop app. It's more analogous to Plex than Plexamp. If you want a mobile app that can do Subsonic (the protocol Navidrome uses), Symfonium on Android is amazing.
The book Born Fighting by Jim Webb explains the historical and cultural background of the Scotch Irish including how they value bravery and have been ready to fight for their freedom and beliefs.
I like Orion on iOS- it’s Safari without all the ads showing up. I can run the DarkReader extension at night just like Safari. Unfortunately it’s the most unstable software on my phone- at times regularly freezing up and then I switch back to Safari.
Texas is one of the best climates in the US for renewables but in locations with less sun and wind the math will be different. That math includes batteries for load shifting of which Texas is installing a lot.
As renewable generation increases past a certain level grid stability does require additional effort and that’s a lot more difficult to price in. In Texas their grid is isolated from the rest of the US. This may create a lower ceiling on renewables since they can’t send excess generation anywhere other than their own batteries .
Liftosaur is an interesting project in this space that I use for tracking my weight lifting. The lifting routine is programmable and shareable. They have a database of exercises that are based around linking to YouTube videos.