| Yeah, so it's a less good way of accessing record fields than the one present in 99% of other programming languages. Your own description makes this plain. Let's compare to Javascript: * I don't need to import a module to make available the syntax for getting and setting fields of an object. * I can use the same syntax for any object, and don't have to worry about doing a bunch of code generation via a badly-designed metaprogramming hack. * I don't have to worry about adding prefixes to all my field names. * The syntax uses familiar operators that I won't have to look up again on hackage if I stop writing Javascript for a few months. * No-one modifying my code can get "clever" and use one of ~50 obscure and unnecessary operators to save a couple of lines of code. What bugs me is when Haskell advocates try to use all the additional esoteric features of the lens library as an excuse for this fundamental baseline crappiness. Haskell really just needs proper support for record types. Then people could use lenses when they actually need lenses (never?). At the moment, they're using lenses because they want something that looks almost like a sane syntax for record updates. |