←back to thread

1371 points yett | 1 comments | | HN request time: 0.22s | source
Show context
pmarreck ◴[] No.43774498[source]
My takeaway, speaking as someone who leans towards functional programming and immutability, is "this is yet another example of a mutability problem that could never happen in a functional context"

(so, for example, this bug would have never been created by Rust unless it was deeply misused)

replies(8): >>43774636 #>>43774657 #>>43774734 #>>43774921 #>>43775019 #>>43775231 #>>43775948 #>>43780177 #
jdndndb ◴[] No.43774734[source]
Could you elaborate? I cannot see how a functional programming language would have protected you from reading a non existing value while not providing a default
replies(3): >>43775498 #>>43780255 #>>43780979 #
1. smcl ◴[] No.43780255[source]
It's more that functional languages just happen to be stricter in various ways that would've mitigated against this. You could quite happily design a functional language that has an unsafe equivalent to sscanf in its stdlib, or has big parts of the spec which are "undefined behaviour" that may differ depending on the underlying OS/compiler/runtime/stdlib in use. But the more popular functional languages have gained traction in part because they tend to have a "if you model the types correctly, the program basically works" philosophy around them. I don't think things like Haskell, Ocaml or F# would allow this if you wrote idiomatic code, you'd probably need to do something a little hacky or sketchy.