在Haskell函数中使用一种参数化数据类型

时间:2015-03-21 08:40:23

标签: haskell algebraic-data-types

让我们说我在Haskell中有一些代数数据类型:

data Foo a = ...

我想要一个可以提取"的功能。这种类型a并对其做一些事情,假设它满足某些条件。具体来说,我需要这样的东西:

fun :: Bounded a => Foo a -> a

预期用法如下:

fun foo = maxBound :: a

当然这个符号在Haskell中是不正确的,但我认为我的意图很明确。有可能做这样的事吗?

1 个答案:

答案 0 :(得分:6)

你不需要任何东西,它只是有效。

fun :: Bounded a => Foo a -> a
fun _ = maxBound

编译器知道fun的结果是a,因此会调用正确的maxBound