gpt4 book ai didi

haskell - Haskell副产品和数据记录字段限制

转载 作者:行者123 更新时间:2023-12-04 05:04:46 25 4
gpt4 key购买 nike

假设我们具有以下类型定义:

data P = PA | PB


(与PA或PB的结构无关)

然后,我们可以定义其他一些记录类型,如下所示(案例1):

data C1 = C1 { field :: P } -- this is fine


但有时您需要定义更受约束的字段类型(案例2):

data C2 = C2 { field :: PA } -- won't compile because PA is a data constructor


Haskell解决此类案件的最自然,惯用的方法是什么?
我试图避免过于复杂或重复的解决方案。

最佳答案

最自然和惯用的方式是使PA(可能还有PB)成为自己的类型:

data PAtype = ...
data PBtype = ...
data P = PA PAtype | PB PBtype

data C1 = C1 { field :: P }
data C2 = C2 { field :: PAtype }

关于haskell - Haskell副产品和数据记录字段限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60993085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com