AI 从业者都在关注的 NVIDIA GTC 2023 China AI Day 来了!报名戳 了解详情
写点什么

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:006211
用户头像

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

关注

评论

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

裸辞在家闭关修炼,意外发现一份据说是从阿里内部泄露出来的《Java程序员金三银四面试秘籍》

Java架构之路

Java 程序员 架构 面试 编程语言

会议更流畅,表情更生动!视频生成编码 VS 国际最新 VVC 标准

阿里云视频云

阿里云 视频压缩 VVC

国产监控夜莺v4来了,大幅降低部署维护难度

龙渊秦五

Nightingale 滴滴夜莺

如何打造高效技术团队|专访前美篇首席架构师张超

穿过生命散发芬芳

调查采访能力考核

Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩

阿里巴巴云原生

大数据 容器 云原生 监控 弹性计算

想要写优秀的设计测试用例,不懂这个可不行!

程序员阿沐

软件测试 自动化测试 测试开发 测试用例 测试工程师

凡尔赛?拿到阿里offer只用了29天?

Java架构师迁哥

《专访阿里研究员吴翰清:大数据时代下,如何保障网络安全和用户隐私》(采访提纲)

三掌柜

调查采访能力考核

留存率计算

Flychen

用知识点+实例+项目完全深入地讲解springboot原理,这份《springboot实战派》火了!

Java架构之路

Java 程序员 架构 面试 编程语言

MySQL 表列数和行大小有哪些限制?

码农架构

MySQL 运维

破十亿浏览量的阿里最新Java架构师成长笔记开源!

Java架构追梦

Java 阿里巴巴 架构 面试 成长笔记

skywalking dubbo agent 分析

kaiwen

anyHouse-iOS 高仿ClubHouse

anyRTC开发者

ios 音视频 WebRTC RTC 语音通话

Disruptor 源码解读

lich0079

Java volatile Disruptor CAS Concurrent

iOS 面试策略之算法基础6-7节

iOSer

ios 面试 算法 ios开发 算法解析

中寰-卜钢-采访提纲:车联网行业发展趋势

马踏飞机747

采访

全球案例 | 霍尼韦尔:Atlassian 帮助我们在疫情期间拯救生命

Atlassian

敏捷 Atlassian Jira 远程协作 霍尼韦尔

Spring Boot 两行代码轻松实现国际化

Java架构师迁哥

一天下载量突破9000000!限时分享:阿里Java架构师成长笔记(2021版)

比伯

Java 架构 面试 程序人生 计算机

【只要努力,方能成功。】四面字节跳动Java研发岗,成功斩获Offer。分享4面技术面真题及复习资料!

Java架构之路

Java 程序员 架构 面试 编程语言

从Map和Reduce角度谈Hive优化

五分钟学大数据

hive 4月日更 hive性能优化

第一课作业纠正

杰语

⼤规模短⽂本聚类的设计和实践

百度Geek说

聚类 query 内聚

这几道面试题,难倒了牛客网98%的程序员,刷完后直接斩获9个大厂offer

Java架构师迁哥

Redis持久化方案介绍之RDB方案

大数据技术指南

redis 4月日更

裸辞还可以吊打大厂面试官?四面拿到阿里、字节offer后我还是选择了美团!

Java架构师迁哥

疫情影响到底有多大?《2020年移动互联网报告》深度解读垂直行业变化趋势

Lily

罗美琪和春波特的故事...

阿里巴巴云原生

容器 开发者 云原生 开发工具 消息中间件

当时尚撞上区块链,为潮酷创意赋予专属“ID”

旺链科技

产业链

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