作者:sweeteenring | 来源:互联网 | 2023-05-17 08:30
假设我在Haskell中有一些代数数据类型:
data Foo a = ...
我希望有一个能够"提取"这种类型的功能a
并使用它做一些事情,假设它满足某些条件.具体来说,我需要这样的东西:
fun :: Bounded a => Foo a -> a
预期用途如下:
fun foo = maxBound :: a
当然这个符号在Haskell中是不正确的,但我认为我的意图很明确.可以这样做吗?
1> mb14..:
你不需要任何东西,它只是有效.
fun :: Bounded a => Foo a -> a
fun _ = maxBound
编译器知道结果fun
将是一个a
,因此将调用正确的maxBound
.