Real-Complex преобразование типов в Exp / Acc
Мне нужно преобразовать реальное числовое значение в пределах Exp
или же Acc
тип библиотеки ускорения до соответствующей 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))