gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:12:47 24 4
gpt4 key购买 nike

有什么方法可以对 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com