【发布时间】:2020-08-20 14:29:22
【问题描述】:
假设我有一个类似的 Haskell 记录
data HaskellRecord = HaskellRecord {
_key1 :: Maybe String
, _key2 :: Maybe String
, _key3 :: Maybe String
}
有没有办法构造函数
getKey :: HaskellRecord -> String -> Maybe String
这样与
let haskellRecord = HaskellRecord { _key1 = Just "value1"
, _key2 = Just "value2"
, _key3 = Just "value3"
}
然后
getKey haskellRecord "value1" == Just "_key1"
getKey haskellRecord "value2" == Just "_key2"
getKey haskellRecord "value3" == Just "_key3"
getKey haskellRecord "value4" == Nothing
【问题讨论】:
-
所以你想返回键而不是值?
-
您是在问是否可以手写,还是在问是否有一些预先存在的机器使用泛型或模板 Haskell 或其他东西来为您编写?
-
@JosephSible-ReinstateMonica 最好避免使用 Template Haskell?但如果这是必需的,那么可以。
-
当记录包含不同类型的字段时
getKey应该如何表现? -
为什么要这样做?拥有
String后,您将如何处理它?我怀疑对于您想要实现的任何顶级效果都有更好的设计。
标签: haskell