【问题标题】:How to create Haskell-like sum types in Python?如何在 Python 中创建类似 Haskell 的求和类型?
【发布时间】:2021-05-24 06:19:47
【问题描述】:

如果我在 Haskell 中有一些简单的求和类型,比如

data Owner = Me | You

如何用 Python 方便地表达它?

【问题讨论】:

标签: python-typing sum-type


【解决方案1】:

Enum 或 Union 最接近 Python 中的 tagged unionsum type

枚举

from enum import Enum

class Owner(Enum):
     Me = 1
     You = 2

联合

https://docs.python.org/3/library/typing.html#typing.Union

import typing

class Me:
    pass
class You:
    pass

owner: typing.Union[Me, You] = Me

【讨论】:

  • 如果您可以尝试翻译问题中给出的示例,将会很有帮助。虽然这些构造在理论上很接近,但我并不完全清楚这两者是否真正符合所需的效果。由于 Python 值本身是用它们的类型“标记”的,因此可以通过其他方式实现标记联合的效果——例如,什么都不做。
猜你喜欢
  • 1970-01-01
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 2015-02-03
相关资源
最近更新 更多