gpt4 book ai didi

haskell - 是否可以在 Haskell 中创建一个返回数据类型构造函数列表的函数?

转载 作者:行者123 更新时间:2023-12-02 10:08:57 25 4
gpt4 key购买 nike

是否可以在 Haskell 中创建一个返回数据类型构造函数列表的函数?

它应该像这样工作:

ghci> getConstructors Bool
[True, False]
ghci> getConstructors Maybe
[Nothing, Just]

最佳答案

想一想:列表的类型是什么? Nothing 的类型为 Maybe a,但 Just 的类型为 a -> Maybe a

不过你可以看看泛型。使用包syb:

Prelude> import Data.Data
Prelude Data.Data> dataTypeConstrs $ dataTypeOf (Just 4)
[Nothing,Just]

请注意,这里的[Nothing,Just]只是它在屏幕上打印的方式,它实际上并不是包含两个构造函数的列表。

Prelude Data.Data> :t dataTypeConstrs (dataTypeOf (Just 4))
dataTypeConstrs (dataTypeOf (Just 4)) :: [Constr]

无论如何,拥有一个带有 [Nothing,Just] 的列表(即使这是正确的 Haskell)并不是真正有用。您将无法对其中的值执行任何操作,因为您不知道它们的类型。

关于haskell - 是否可以在 Haskell 中创建一个返回数据类型构造函数列表的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398444/

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