我在Haskell中编写了以下数据类型及其实例:
data Plaster = Plaster [String] deriving (Read, Show)
examplePlaster :: Plaster
examplePlaster = Plaster ["..AEG", "..CD", "DC...", "A.B.", "..EFG"]
我想创建一个函数,它适用于examplePlaster
返回列表中的第一个String。我该怎么做?
答案 0 :(得分:6)
与任何其他类型一样,您可以对数据构造函数创建的值进行模式匹配。
getFirst :: Plaster -> Maybe String
getFirst (Plaster (x:xs)) = Just x
getFirst (Plaster []) = Nothing
答案 1 :(得分:1)
您可以使用SELECT productCode, productPrice, SUM(productUnits) AS productUnits, productPrice * SUM(productUnits) AS totals
FROM orders_products
GROUP BY productCode, productPrice
head
功能
Data.List
其中getFirst :: Plaster -> String
getFirst (Plaster []) = ""
getFirst (Plaster xs) = head xs
提取列表的第一个元素,该元素必须是非空的。正如here所述。
并称之为:head :: [a] -> a