首页 > 解决方案 > Exp / Acc 中的实复类型转换

问题描述

我需要将Accelerate 库Exp的orAcc类型中的 实数值转换为其对应的值,例如:Complex

toComplex :: Exp Double -> Exp (Complex Double)
toComplex' :: Acc (Vector Double) -> Acc (Vector (Complex Double))

我试图像这样进行模式匹配

toComplex :: Exp Double -> Exp (Complex Double)
toComplex a = (\(r, i) -> constant $ r :+ i) $ (a, constant 0)

并怀疑liftunlifthttps://www.acceleratehs.org/examples/mandelbrot.html中可能会以某种方式解决此问题,但无法弄清楚这些问题的正确应用。

因为我的尝试ghc抱怨说

• Couldn't match type ‘Exp Double’ with ‘Double’
      Expected type: Exp (Complex Double)
        Actual type: Exp (Complex (Exp Double))

标签: haskellaccelerate-haskell

解决方案


推荐阅读