haskell - 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)
并怀疑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))
解决方案
推荐阅读
- php - 使用 BrowserSync 的 Gulp v.4 CSS 注入不起作用
- c++ - 如何在 C++ 中逐行填充二维数组(从 .txt 文件中读取)
- laravel - 基于 Laravel 子域的身份验证在生产中不起作用
- elasticsearch - 我可以将两个 couchbase 存储桶复制到单个弹性索引中吗?
- javascript - 茉莉花测试,.not.toHaveBeenCalled();
- c# - 从 .Net REST API 发送电子邮件的 Plesk 问题
- java - 如何符号链接 Maven 项目中的 jar 文件以供另一个本地项目使用
- java - 将 ByteBuffer 字段写入 Cassandra 的异常
- python - 如何在列表理解中将变量的名称提取为字符串?
- python - 通过函数运行列表