具有静态,结构类型和全局类型推断的命令式语言

时间:2012-10-26 23:08:04

标签: type-inference static-typing imperative-programming structural-typing

我知道像Haskell这样的语言是静态类型的并且具有类型推断。但是,是否存在具有全局类型推断的非函数式语言,相当于类似推理和结构类型的C语言。

3 个答案:

答案 0 :(得分:1)

OCaml 是我所知道的唯一可以是命令式/面向对象的,它是静态类型的,垃圾收集并支持全局类型推断和结构类型,尽管它本质上是一种函数式语言。 / p>

Scala不是像OCaml这样的函数式语言,而是支持结构类型的命令式/面向对象语言,但不具备type inference you're looking for类型。但它仍然支持功能结构。

如果“非功能性”是指一种根本不支持函数式编程的语言,那么我认为没有。

答案 1 :(得分:1)

OCaml不再是唯一的竞争者了。近年来出现了许多结构类型的命令式语言:

  • F#OCaml一样,是一种支持复杂模式匹配以及命令式和函数式编程的多范式语言。作为OCaml衍生物,这两种语言实际上与barring minor feature differences they are practically source-compatible非常相似。主要的[dis?]优势是它可以在.NET上运行。
  • Go是最初的Unix / Plan 9 / Inferno团队的爱好者,因为他们已经进入谷歌,基于他们在这些系统的编译器上的数十年的工作。 Go支持结构多态,因为对象组合是它的主要子类型机制,并且不需要显式实现该方法接口。
  • Haxe是一个ActionScript衍生产品,可以编译成令人印象深刻的各种平台,包括C ++(!)。它支持完全结构类型和枚举(与OCaml联合等价)以及C#风格的对象层次结构,并拥有复杂的宏系统。

答案 2 :(得分:0)

还有Crystal,但它处于pre-alpha阶段:

https://github.com/manastech/crystal