写点什么

Idris 趋近发布 1.0 版

  • 2016-12-29
  • 本文字数:901 字

    阅读完需:约 3 分钟

据 Idris 开发团队披露,基于依赖类型的Idris 语言即将完成0.99 版本,该版本可被看成是1.0 版的Alpha 版本。Idris 1.0 版有望于2017 年2 月左右发布。

Idris 是一种纯函数式编程语言,目标在于注重语言通用性及满足系统编程所需效率的同时,让更多的编程人员使用基于类型的程序验证技术。

Idris 的主要理念是依赖类型。正如函数表述了值之间依赖性,依赖类型旨在表示类型与值之间的依赖性。举个例子,我们可以定义一类返回值为一个列表的函数,要求列表中的元素值依次递减,只有满足了该属性,才会去编译该函数所采用的任何具体实现。对于可被 Idris 所表示的软件属性,其它的例子还包括数组范围验证以及分布式或并发系统中的协议正确性,譬如确保所有程序遵循特定的协议访问文件句柄。下面所示的代码段使用 Idris 定义了 Vect 向量的依赖类型,并向 vapp 函数中添加了两个向量:

复制代码
infixr 5 ::;
data Vect : Set -> Nat -> Set where
VNil : Vect a O
| (::) : a -> Vect a k -> Vect a (S k);
vapp : (Vect A n) -> (Vect A m) -> (Vect A (plus n m));
vapp VNil ys = ys;
vapp (x :: xs) ys = x :: vapp xs ys;

编译器可以检测到上面代码段中所涉及类型的误用。例如,下面的 vapp的实现就破坏了依赖性

复制代码
vapp : Vect a n -> Vect a m -> Vect a (plus n m);
vapp VNil ys = ys;
vapp (x :: xs) ys = x :: vapp xs xs; -- BROKEN

据 Idris 核心开发人员介绍,决定发布 1.0 版的主要原因是该语言正步入稳定。这并不意味着 Idris 已“可用于生产环境”,因为开发团队还不可能做到提供长期支持或是保证实现的质量。即使如此,作为一种探究如何使用依赖类型编程的研究工具而言,Idris 还是颇具价值的。

Coq 类似,Idris 也支持交互定理证明,其中包括了反向推理,但是在用于定理证明之前,Idris 意在首先成为一种通用的编程语言。Idris 程序将被编译为C 语言,其内存管理依赖于并使用了垃圾回收机制。

查看英文原文: Idris Getting Close to Version 1.0


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-12-29 18:006306
用户头像

发布了 227 篇内容, 共 68.4 次阅读, 收获喜欢 26 次。

关注

评论

发布
暂无评论
发现更多内容

常用正则表达式最强汇总(含Python代码举例讲解+爬虫实战)

Python研究者

8月日更

比POSTMAN更好用!在国产接口调试工具APIPOST中使用Mock

Proud lion

大前端 后端 Postman 开发工具 接口文档

[TcaplusDB知识库]腾讯云TcaplusDB架构的简单说明

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]腾讯云TcaplusDB守护您的数据安全

数据人er

数据库 nosql 腾讯云 TcaplusDB

基于 Formily 的表单设计器实现原理分析 ​

全象云低代码

JavaScript 低代码开发 表单设计

使用接口文档快照机制,让接口文档不在频繁变动

CodeNongXiaoW

大前端 测试 后端 接口文档

[TcaplusDB知识库]腾讯云TcaplusDB数据库表定义

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]腾讯云TcaplusDB为游戏而生的技术介绍

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]限制腾讯云TcaplusDB无敌的情况介绍

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]腾讯云数据库TcaplusDB数据读写的奥秘

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]腾讯云TcaplusDB数据恢复详解

数据人er

数据库 nosql 腾讯云 TcaplusDB

秋招开局痛击!迷惑的阿里三面反手一个感谢信,最终被字节捞起

编程susu

Java 编程 面试 计算机 技术宅

如何支持亿级用户分流实验?AB实验平台在爱奇艺的实践

爱奇艺技术产品团队

测试 开发 精准测试 AB testing实战

最佳实践 | 单元测试+回归测试在SRS代码提交中的实践总结

腾讯云音视频

SRS

APP DIFF自动化解决方案

爱奇艺技术产品团队

测试 开发 精准测试 Diff i技术会

模块六作业

燕燕 yen yen

架构实战营

你还在认为TypeScirpt 是 AnyScript ?

程序员海军

typescript 大前端 javascri

[TcaplusDB知识库]数据库支撑底盘引擎计算层介绍

数据人er

数据库 nosql 腾讯云 TcaplusDB

👊【SpringCloud技术专题】超级详细的Gateway网关的技术指南

洛神灬殇

网关 SpringcloudGateway SpringCloud Gateway 8月日更

算法推荐规制!《互联网信息服务算法推荐管理规定(征求意见稿)》公开征求意见

郑州埃文科技

[TcaplusDB知识库]如何通过TcaplusDB客户端管理数据库

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]腾讯云TcaplusDB到底有多安全?

数据人er

数据库 nosql 腾讯云 TcaplusDB

[TcaplusDB知识库]腾讯云TcaplusDB的“骨骼”架构介绍

数据人er

数据库 nosql 腾讯云 TcaplusDB

Shopee物流业务核心数据库架构演变——权衡取舍的艺术

Shopee技术团队

架构 #数据库 #物流 #供应链 #Shopee

是的你没看错,HTTP3来了

程序那些事

HTTP 程序那些事 http3

[TcaplusDB知识库]腾讯云TcaplusDB合理分配存储空间的秘籍

数据人er

数据库 nosql 腾讯云 TcaplusDB

这一次!我在百度告诉你,当你请求百度时都发生了什么...

程序员 架构 面试 计算机

[TcaplusDB知识库]4步教你查看TcaplusDB集群状态

数据人er

数据库 nosql 腾讯云 TcaplusDB

Idris趋近发布1.0版_函数式编程_Sergio De Simone_InfoQ精选文章