使用ID管理数据类型(Scala和haskell)

时间:2017-06-01 10:03:21

标签: scala haskell

我一直在阅读一篇关于如何使用id管理数据类型或模型的好文章,有时我们需要与id相同的模型以及没有id的相同模型以及以下内容 article描述了如何对类型进行建模以处理此问题。 下面的例子是用Scala编写的,我希望它的Haskell表示能够更好地理解

case class WithId[A](id: Id, model: A)

// receive data for a new user from the client
val user: User = Json.parse[User](json)

// receive data from the database
val user: WithId[User] = UserService.findByIdOrFail(userId)

对我来说重要的是类型补偿,假设我们有函数findByIdOrFailparse ......

1 个答案:

答案 0 :(得分:3)

class AccessList(list):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._access = []

    @property
    def access(self):
        return self._access[::-1]  # return a reversed copy

    def __contains__(self, item):
        res = super().__contains__(item)  # check if it contains the item
        if res:
            self._access.append(item)     # if it's contained append it to access
        return res