依赖类型的语言最适合“现实世界”编程? [关闭
-
08-10-2019 - |
题
哪个 依赖类型 编程语言可用于现实世界应用程序开发?
这些是一些观点,我认为很重要:
- 文档
- 示例程序
- 标准库
- 或至少易于使用的外国功能接口
- 一个使用该语言进行现实世界任务的人社区
- 工具支持
其他提示
公认的答案包含错误信息。除非您关闭阳性/终止/宇宙检查,否则在AGDA中的Typechecking是可以决定的。此外,无限过程是在AGDA中编程的,就像IO流程在Haskell中可以编程一样:唯一的限制是执行时无限期地展开无限的过程 在打字过程中. 。您可以在AGDA中实现Turing Machine模拟器:您只是不能说谎言可以保证终止或说服Typechecker以无限的方式运行它。
但是,我同意,在“现实世界”编程方面,依赖类型的语言仍处于实验阶段。我们还不能支持重型发展,但是我们可以在那些关注未来的人中维持重要的爱好,就像过去的功能性语言一样。
正如Twey所建议的那样,伊德里斯(Idris)是最接近“现实世界”的候选人。比AGDA更专注于完成工作。我建议AGDA是更好地掌握依赖类型编程的想法的更好的工具,但是IDRIS是更实用的选择。
我很高兴地说,值得考虑将Haskell的最新发行作为本讨论中的候选人。自GHC 7.4以来,Haskell已开始支持类型级别数据的有用概念,至少有了 辛格尔顿 技术(虽然是kludge),我们确实可以根据运行时值(通过使它们取决于静态变量约束到相等的运行时值)。因此,在尝试依赖类型的早期阶段,Haskell是一种真正的“现实世界”语言。
AGDA并非被设计为通用编程语言。 ATS是一种专为低级编程而设计的依赖性的语言,尽管它比AGDA优雅。 IDRIS是一种专为性能应用程序级程序设计的相关语言。
不隶属于 StackOverflow