haskell – 有哪些程序很好的例子很容易指定为依赖类型,但实现起
去年我问了“
Dependent types can prove your code is correct up to a specification. But how do you prove the specification is correct?”.投票最多的答案提出以下推理:
这种推理对我来说很有意义. Idris是测试这些概念最容易理解的语言;然而,由于它几乎可以像Haskell一样使用,它常常让程序员在旧概念中游荡,而不知道在哪里应用依赖类型.一些现实世界的例子可以对此有所帮助,那么,在实践中发生的程序的具体例子是什么,很容易表达为类型,但实现起来很复杂?
这对我来说很奇怪,因为我的问题是到处都需要依赖类型.如果你没有看到,那么以这种方式看程序.
假设我们有f :: Ord a => [a] – > [a](我将使用Haskell表示法).我们对这个函数f了解多少?换句话说,你可以预测f [],f [5,8,7],f [1,1,2,2]等应用程序?假设您知道f x = [4,6,8]那么您对x有什么看法?你可以观察到,我们知之甚少. 然后假设我告诉你f的真实名字是排序.那么关于那些相同的例子你能告诉我什么?你能告诉我关于fss = ys中xs的ys是什么意思?现在你知道了很多,但这些信息来自哪里?我所做的只是改变功能的名称;这对程序的正式含义没有意义. 所有这些新信息都来自您对排序的了解.你知道两个定义特征: > sort xs是xs的排列. 我们可以使用依赖类型来证明这两个属性的排序.然后,这不仅仅是我们对分类的外在理解的问题;排序的意义成为程序的内在组成部分. 捕获bug是副作用.真正的目标是作为计划的一部分,在我们的头脑中指定和形式化我们必须知道的内容. 仔细重新考虑您已编写的程序.什么使你的程序工作的事实只在你的头脑中知道?这些都是候选人的例子. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c – Mac OS X上的Qt:如何摆脱QListView的蓝色轮廓?
- javascript结合ajax读取txt文件内容
- JMeter 聚合报告之 90% Line 参数说明
- oracle数据恢复
- Flex 4中Spark组件利用Skin Class外观设计(1)
- 是否可以将__m128变量中的内部值作为C类中的属性进行访问?
- 当作为参数传递给Objective-C中的方法时,迭代va_list
- Node.js获取前端ajax提交的request信息
- c# – 使用包含自定义部分的WebConfigurationManager读取we
- c – 错误Xcode 5.1:未知参数:’ – cclib'[-Wunused