Rust和Haskell比较

16-05-20 banq
         

Rust语言从纯正的函数语言Haskell借鉴了一些设计,两者主要区别是:

Haskell 和 Rust都有:

类型/内存安全(Type/memory-safety)

没有空null出错(No nulls)

默认不可变(Immutability by default)

面向富有表现力的语法(比如if-else返回一个值)

高阶函数

象征性的类型(Nominal types)

代数数据类型 (sum types, tagged unions, "enums with data in em", ...)

模式匹配

泛型函数和类型(parametric polymorphism参数多态性)

类型类(Type class,如traits)

本地类型推导

只Haskell有的:

纯正

懒计算(Laziness)

自动/隐式分配(Automatic / implicit allocation)

更高种类型(Higher-kinded types)

全局类型推断(Global type inference)

多态递归(Polymorphic recursion)

尾调用优化(Tail call elimination)

只Rust有:

严密精确

普遍的unboxed数据(Pervasively unboxed data)

内建过程控制流程

仿射型(Affine types "move semantics")

声明周期管理 (region types, borrowing)

自动解构器(Automatic destructor)

数据竞争消除(Elimination of data races)

防止孤独实例(A ban on orphan instances)

嵌套和递归模块(Nested and recursive modules)

原文见:

glaebhoerl 對 What has Rust borrowed? 的留言

[该贴被banq于2016-05-22 08:42修改过]