arrays - Haskell 数组的静态边界检查

标签 arrays haskell

有什么方法可以对 Haskell 数组进行静态检查?让我们看一下这段代码:

import Data.Array
let a = listArray (0, 10) [-3.969683028665376e+01, 2.209460984245205e+02, -2.759285104469687e+02, 1.383577518672690e+02, -3.066479806614716e+01, 2.506628277459239e+00]
(0, 10)应该是(0, 5) ,但编译器接受代码。该错误仅在运行时检测到,尽管它可以在编译时检测到。

最佳答案

这在编译时无法检测到,因为列表类型中没有任何内容可以保存其大小,因此 listArray函数不可能执行这样的检查。此外,如果数据来自外部文件(例如),则很难让静态大小检查正常工作。

您需要一个依赖类型系统,例如在 Agda 中找到的那种系统。让这样的事情成为可能。

关于arrays - Haskell 数组的静态边界检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752795/

相关文章:

haskell - 如何删除 Haskell (GHC) 中的 "if ... then ... else ..."关键字?

haskell - 如何在简单的 wai 应用程序中使用 wai-handler-devel

python - 如何加入行的切片以在 python 中创建一个新行

c++ - 向数组添加元素

javascript - 如何在 react 前端将 byte[] 转换为图像

haskell - 为什么解析带有减号的字符串会失败?

javascript - 使用另一个数组从一个数组中查找信息

javascript - 下一个数组元素必须从上一个元素开始

sql - haskell-持久: how to use a foreign key as primary key in a second table

haskell - 在 Haskell 中导入模块