【发布时间】:2016-05-29 16:01:53
【问题描述】:
我如何创建类似于ADTs 的 Yesod Persistent 实体:
import Data.Ratio
data Work = Work { name :: String
, payment :: WorkPayment
, duration :: WorkDuration }
data WorkPayment = WorkPaymentUndefined
| WorkPaymentEstimated { workPaymentEstimatedUnity :: TemporalUnity
, workPaymentEstimatedValue :: Ratio Int }
| WorkPaymentTotal { workPaymentTotalValue :: Ratio Int }
data WorkDuration = WorkDurationUndefined
| WorkDurationEstimated { workDurationEstimatedUnity :: TemporalUnity
, workDurationEstimatedQuantity :: Int }
| WorkDurationPermanent
data TemporalUnity = Hour | Day | Week | Month
可以通过使用单独的模块来避免长名称,但在本示例中我更喜欢将它们放在一起。
为了简单Enums,这似乎很简单,但我无法弄清楚这种情况下的表会如何,就像在 MySQL 之类的关系数据库中
【问题讨论】:
标签: database haskell functional-programming yesod