4 ms·
"Functional record update" [1] was the one missing feature that bothered me most about Standard ML. If you want to change one element in a record, you've got t
by Mindless2112 13y ago
"Functional record update" [1] was the one missing feature that bothered me most about Standard ML. If you want to change one element in a record, you've got to specify explicitly that every other element in the record didn't change.
[1] http://www.pllab.riec.tohoku.ac.jp/smlsharp/docs/1.0/en/Ch4.S4.html http://www.pllab.riec.tohoku.ac.jp/smlsharp/docs/1.0/en/Ch4....
- mackwic 13y agoYou can also update one field in OCaml, I really like this language.
- p4bl0 13y agoI wouldn't use "update" since it imply that there is a modification of the value in the original record. This is possible with mutable field of course, but I think the feature of OCaml (and apparently, SML#) you're talking about is the `with` keyword: # type foo = { bar: int ; baz: string };; type foo = { bar : int; baz : string; } # let a = { bar = 42; baz = "hello" };; val a : foo = {bar = 42; baz = "hello"} # let b = {a with baz = "bye"};; val b : foo = {bar = 42; baz = "bye"} # a;; - : foo = {bar = 42; baz = "hello"}
- mackwic 13y agoYou are completely right, thanks for the precision and code sample.