Haskell:使用用户定义数据类型的函数

时间:2017-06-16 00:39:58

标签: haskell

我在Haskell中编写了以下数据类型及其实例:

data Plaster = Plaster [String] deriving (Read, Show)

examplePlaster :: Plaster
examplePlaster = Plaster ["..AEG", "..CD", "DC...", "A.B.", "..EFG"]

我想创建一个函数,它适用于examplePlaster返回列表中的第一个String。我该怎么做?

2 个答案:

答案 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