我有一个如下所示的数据类型:
data MyAwesomeType = MyAwesomeType {
a :: String,
b :: String,
c :: String,
...
-- 25 in total
} deriving (Show)
Run Code Online (Sandbox Code Playgroud)
我有一些看起来像这样的数据:
let xs = [["A", "B", "C", ...],["D", "E", "F", ...]]
Run Code Online (Sandbox Code Playgroud)
为类型中的每个字段指定一个值.
如何将自定义数据类型应用于上面列表中的每个元素?我试图做这样的事情,这是行不通的:
map (MyAwesomeType) xs
Run Code Online (Sandbox Code Playgroud)
您需要定义一个函数以从给定类型转换为自定义类型.在上面的示例中,您需要一个函数
myAwesomeTypeConverter :: [String] -> Maybe MyAwesomeType
myAwesomeTypeConverter (a:b:c:[]) = Just $ MyAwesomeType a b c
myAwesomeTypeConverter _ = Nothing
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用此函数映射数组
map myAwesomeTypeConverter xs
Run Code Online (Sandbox Code Playgroud)