科学与工程

为何选用Haskell?

组合卡尔达诺的协议是分布式的,与密码学结合在一起,需要高度的容错能力。在最佳的日子里,仍然会有拜占庭式的参与者、格式错误的消息和错误的客户,于无意中在网络上造成某种形式的havok。

首先,我们需要一种具有强大类型系统的语言,让我们可以轻松地使用诸如Quickcheck等工具,和更精细的技术,如精简类型,同时对容错有合理的期许。 Erlang风格的OTP模型满足后者,而Haskell和Ocaml等语言则满足前者。

随着Cloud Haskell的推出,Haskell获得了许多Erlang的优势,而不是屈服于自身。此外,Haskell的模块化和可组合性使我们能够为卡尔达诺使用更轻量级的定制库,称之"Time Warp"。

其次,由于广泛的商业实体,如GaloisFP CompleteWell-Typed,Haskell的文库在过去几年中已经有很大的进展。因此,Haskell可用于编写生成应用程序24

第三,PureScript的快速发展为JavaScript世界提供了一个非常需要的桥梁,类似于Clojurescript给予的Clojure。我们期待PureScript可在让卡尔达诺于浏览器中运作,并在开发手机钱包时尤为重要。

第四,于依赖解决方案方面,Haskell在过去几年中一直受到像Michael Snoyman这样的技术专家的技术支持,通过一个叫做堆栈的平台,这个平台很容易使用,并且得到了FP Complete的良好支援。

第五,除了足够的依赖解决方案之外,我们的目标是使我们的软件构建是可重现的。换句话说,使用相同的配置值和依赖性版本,它应该产生完全相同的构建工件。通过堆栈,我们一直在使用NixOps实现重现性,取得巨大成功。

最后,专业从事Haskell的开发人才库相当庞大,相当于同行 - 而且训练有素,具有相应的学术和行业资质。它也充当能力过滤器,因为在没有计算机科学的详细知识的情况下,找到经验丰富的Haskell开发人员是不太普遍的。


24: Bryan O'Sullivan在这里提供了一个关于Haskell工业用途的良好论述。