【发布时间】:2021-02-17 12:24:06
【问题描述】:
我有一个带有名称和 ID 的 Person 记录,以及一个返回 Person 而没有 id 的函数 createPerson,将生成 UUID 留给调用者。
-- Person.hs
import Data.UUID (UUID)
data Person = Person { name :: String, id :: UUID }
createPerson name = Person { name = name }
有没有办法在没有id 的情况下键入Person,以通知调用者id Person 将引发异常?我考虑过如下定义PartialPerson:
data PartialPerson = { name :: String }
但是当我想添加或更改字段时,这很快就会变得很麻烦。
【问题讨论】:
-
缺少 id 的记录的简单类型是
UUID -> Person。问题是您无法打印或检查其其他字段。 -
或许你可以考虑using a parametric type for this。