我需要将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)
并怀疑lift
或unlift
在https://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))