gpt4 book ai didi

haskell - 是否有一种灵活的方法来指定 Haskell 类型系列的返回类型?

转载 作者:行者123 更新时间:2023-12-02 16:06:07 25 4
gpt4 key购买 nike

最近我开始使用Haskell的Repa库,它严重依赖type families以及相关类型。我可以像这样定义一个 Repa 数组:

ghci> let x = fromListUnboxed (Z :. (5 :: Int) :. (2 :: Int)) [1..10]

并对其进行如下操作:

ghci> computeP $ R.map id x :: IO (Array U DIM2 Double)
AUnboxed ((Z :. 5) :. 2) (fromList [1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0])

其中 U 是关联的数据类型,它将导致结果表示为未装箱的数组; DIM2 是数组维度。我不喜欢我必须指定一个具体的维度,即使它可以被推断出来。相反,我想写这样的东西:

ghci> computeP $ R.map id x :: Shape sh => IO (Array U sh Double)

这是无效的,但我的目的是能够通过传递适当的关联数据类型(本例中为 U)来指定数组类型,但保持形状不变。这样的事情可能吗?

最佳答案

这样的东西有效吗?

asArrayU :: Array U sh a -> Array U sh a
asArrayU = id

computeP $ asArrayU <$> R.map id x

关于haskell - 是否有一种灵活的方法来指定 Haskell 类型系列的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12825426/

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