永続型があり、この型から値を投影したいとします。
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
User
name Text
email Text
|]
...
getName :: Entity User -> Text
getName (Entity uid vals) = userName vals
問題は、 を使用して上記のタイプのレンズを生成する場合mkPersist sqlSettings {mpsGenerateLenses = True}
、各投影関数の先頭にアンダースコアを追加するか、レンズ ゲッターを使用する必要があることです。
getName :: Entity User -> Text
getName (Entity uid vals) = _userName vals
getName' :: Entity User -> Text
getName (Entity uid vals) = vals ^. userName
- まず、それをデフォルトの に戻し
userName vals
、アンダースコアを追加してレンズゲッターを使用するにはどうすればよいvals ^. _userName
ですか? - 第二に、なぜこれがこの方法であり、その逆ではないのですか?