【问题标题】:Using a type of a parameterized data type in a Haskell function在 Haskell 函数中使用参数化数据类型的类型
【发布时间】:2023-03-26 23:46:02
【问题描述】:

假设我在 Haskell 中有一些代数数据类型:

data Foo a = ...

我希望有一个函数可以“提取”这种类型 a 并对其进行处理,假设它满足某些条件。具体来说,我需要类似的东西:

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

预期用途如下:

fun foo = maxBound :: a

当然,这种表示法在 Haskell 中是不正确的,但我认为我的意图很明确。有可能做这样的事情吗?

【问题讨论】:

    标签: haskell algebraic-data-types


    【解决方案1】:

    您不需要任何东西,它就可以工作。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-17
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多