Phi*_*ber 6 haskell accelerate-haskell
我需要将Accelerate 库的Exp
orAcc
类型中的 实数值转换为其相应的值,例如:Complex
toComplex :: Exp Double -> Exp (Complex Double)
toComplex' :: Acc (Vector Double) -> Acc (Vector (Complex Double))
Run Code Online (Sandbox Code Playgroud)
我试图模式匹配
toComplex :: Exp Double -> Exp (Complex Double)
toComplex a = (\(r, i) -> constant $ r :+ i) $ (a, constant 0)
Run Code Online (Sandbox Code Playgroud)
并怀疑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))
Run Code Online (Sandbox Code Playgroud)