haskell - 使用镜头访问字段
问题描述
我有以下数据类型:
data Car = Car String Integer
deriving (Eq, Ord, Show)
data City =
City
{ cityVehicle :: Car
}
deriving (Generic, Show)
makeLensesWith abbreviatedFields ''Withdrawal
我正在尝试创建一个 lambda 函数来按汽车的“价格”过滤城市,如下所示:
filter (\city -> (city ^. vehicle . ) <= thresholdPrice) cities
但我不确定如何访问第二个字段Car
解决方案
你可以手写镜头(我不知道字段代表什么,所以我猜了型号和价格):
model :: Lens' Car String
model f (Car m p) = fmap (\m' -> Car m' p) (f m)
price :: Lens' Car Integer
price f (Car m p) = fmap (\p' -> Car m p') (f p)
推荐阅读
- c# - EPPlus - 保存在内存中创建的 excel 并在 excel 上打开它会出错
- php - PHP双重比较
- celery - 花用户界面不显示工人
- react-native - Expo分离应用,为Facebook App Review生成iOS模拟器构建
- c++ - 如何使用同步()?
- ruby - 当我运行“gem list”时,捆绑程序(默认值:1.16.2)是什么意思?什么是(默认)部分?
- php - 如何实现数据过滤器?
- python - 使用 python-ldap 连接到 ldaps - 收到意外的 TLS 数据包
- angular - 在 Webpack 4 中使用 SCSS 中的字体
- python - 如何使用 where 条件获取 sqlite3 db 中的最后一条记录