gpt4 book ai didi

Haskell:带条件的自定义类型

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

我是一个haskell新手,我找不到这个问题的答案。

我们可以用条件定义类型吗?例如,简单的用户定义数据类型是:

data MyList = MyList [a]

我可以以某种方式修改此代码,以便 MyList 构造函数只能采用偶数个元素的列表吗?就像是
data MyList = MyList [a] where (even (length a))

谢谢!

最佳答案

不,你不能。

如果真的有必要,就自己写一个类似构造函数的函数。

toMyList :: [a] -> MyList
toMyList l | even (length l) = MyList l
| otherwise = error "Length of list has to be even"

或者如果可能发生错误检查:
toMyList :: [a] -> Maybe MyList

但是根据用例,也许您可​​以通过类型(例如元组或两个列表)而不是通过运行时检查来表达自己。

关于Haskell:带条件的自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317117/

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