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))

0 ответов

Другие вопросы по тегам