Mik*_*ike 1 haskell algebraic-data-types
假设我在Haskell中有一些代数数据类型:
data Foo a = ...
Run Code Online (Sandbox Code Playgroud)
我希望有一个能够"提取"这种类型的功能a并使用它做一些事情,假设它满足某些条件.具体来说,我需要这样的东西:
fun :: Bounded a => Foo a -> a
Run Code Online (Sandbox Code Playgroud)
预期用途如下:
fun foo = maxBound :: a
Run Code Online (Sandbox Code Playgroud)
当然这个符号在Haskell中是不正确的,但我认为我的意图很明确.可以这样做吗?
你不需要任何东西,它只是有效.
fun :: Bounded a => Foo a -> a
fun _ = maxBound
Run Code Online (Sandbox Code Playgroud)
编译器知道结果fun将是一个a,因此将调用正确的maxBound.