ruby和haskell_Lux – Haskell和Clojure的完美结合

ruby和haskell

我们的JVM冒险今天在功能海洋中进行了新的停留。 到目前为止,我们已经遍及整个地图,沿功能海洋和动态海洋停靠。 今天,风和海浪把我们带到了小岛勒克斯(Lux),那里的阳光总是明媚,日落很美。

单击该图像以查看JVM信息图的整个盗版。

勒克斯–背景信息

Eduardo Julian:我对Clojure的设计和缺乏类型感到沮丧。 另一方面,Haskell具有惊人的设计,但仍然存在一些我不满意的缺陷。 而且它的元编程不如我想要的好。

在Lux上开展工作的愿望是将Clojure和Haskell融合在一起,并获得两全其美。 从那时起,我一直在不断研究并提出新的想法,以使Lux超越其前身并成为一门真正的伟大语言。

Lux是静态类型的Lisp,非常适合希望使用静态类型语言的Clojure用户以及想要使用Lisp的Haskell和Scala用户。 它对并发有很大的支持; 提供承诺,功能响应式编程,软件事务存储和参与者模型。

Lux为元编程提供了出色的工具,例如可以访问编译器的状态以及将一流的类型用作数据结构。 它也意味着可以在许多环境中运行并且可以与许多不同的技术(JVM,JavaScript,.Net,Python,Ruby,LLVM互操作,而上帝知道其他什么)。

Eduardo Julian: Lux具有三个主要原则:

#1:优雅而非权宜之计

让我远离Clojure的一件事是,它的大部分设计都像是骇客。 我有很多事情可以原谅,因为它们是想法的结果,这些想法在最初构想时听起来可能很棒,但后来却没有那么好。 但是,我认为Clojure的许多缺陷是疏忽大意,缺乏研究并且倾向于短期实用性而不是好的设计的结果。

在Lux中,我非常努力地完善所有内容,因此该语言及其库的设计是最好的。 我非常重视收到的关于可以改进的所有反馈,因为我从来不想感觉到Lux并没有发挥最大的潜力。

#2:教条的多样性

我相信没有人真正知道如何编写软件。

我们有很多想法和理论,但是任何声称知道哪种真正的软件编写方式是傻瓜还是骗子的人。 因此,Lux采用了向程序员提供工具的方法,让他们可以选择如何设计软件。

Erlang强迫您执行角色,而Go强迫您执行CSP,Lux则为您提供承诺,功能响应式编程,软件事务存储和参与者模型。

是否要使用ML样式的模块? 勒克斯有他们。 是否需要类型类样式多态性? Lux拥有它(从v0.5.0开始)。

作为语言设计师,告诉您如何编码不是我的工作。 帮助您尽最大努力是我的工作。

#3:自下而上,自上而下

我相信软件就像是随着时间而增长的有机体,而不是应该雕刻的巨大大理石块。 因此,Lux非常喜欢可组合的抽象。 甚至Lux的基本数据结构(变量和元组)在类型和值级别上都是可组合的。

这意味着您可以通过使用组合器来组合函数,以生成函数甚至不知道的数据类型。

例如:

(type: PrivacyModifier
  #PublicPM
  #PrivatePM
  #ProtectedPM
  #DefaultPM)
 
(def: privacy-modifier^
  (Syntax PrivacyModifier)
  (let [(^open) Monad]
    ($_ alt
        (this! (' #public))
        (this! (' #private))
        (this! (' #protected))
        (wrap []))))

在此示例中,我可以通过仅组合不知道该类型的单个语法解析器来创建PrivacyModifier的实例。

爱德华多·朱利安(Eduardo Julian):我提到了Lux存储库中的两个程序,如果他们想要获得Lux样本,可以看看。

  1. Lux Tutorial –这是一个玩具项目,可以实现TODO列表。 它相当简单,因为它的目的是演示如何使用语言的某些基本功能以及如何进行JVM互操作。
  1. Luxdoc – Luxdoc是一个更严肃的程序,因为我实际上使用它来生成Wiki的文档。 元编程非常繁琐,因此您可以使用它来学习Lux中的一些更高级的概念,例如编写与编译器数据交互或使用类型进行计算的函数(在这种情况下,生成文档)。

Eduardo Julian: Lux是一种通用语言,我希望能够将其用于后端,前端,移动和桌面开发。

另外,能够使用Lux进行分布式编程和物联网也很重要,因为我已经做了一些工作。

话虽如此,Lux并不是要成为世界上最快的语言,所以您可能还是更喜欢将C和C ++等编译为本地的语言用于计算密集型任务和系统编程。

爱德华多·朱利安(Eduardo Julian): Lux从2016年初我只能使用的东西,发展到足以让其他人尝试的东西。

编译器非常稳定,标准库已经增长很多,而且质量很高。

我认为Lux终于可以让人们尝试编写真实软件了。

爱德华多·朱利安(Eduardo Julian):很长时间以来,我一直在保证Lux可以在多个平台上运行,但是由于我总是要执行多个优先于此的高优先级任务,因此该承诺的交付被延迟了。

0.5.0版本是我通过兑现对Android的支持而兑现了诺言的第一个版本。

对于0.6.0,将添加JavaScript支持,并且我计划在每个版本中将Lux移植到一个新平台,直到实现将Lux成为通用语言的目标为止。

爱德华多·朱利安(Eduardo Julian):开始使用Lux的最佳方法是阅读位于此处的书。 每当发布时,我都确保将其更新为Lux的最新版本。

另外,人们可以加入邮件列表和Gitter聊天室,在这里我可以回答任何问题并提供示例和指导。

最后,任何人都可以通过luxlisp@gmail.com与我联系。

Eduardo Julian自2008年以来一直是一名开发人员。他已经研究了多种编程语言,框架和数据库。 Eduardo是一个多才多艺的自适应程序员。 他热情而Swift地学习,并且渴望所有新事物。

虚拟机

您是否熟悉JVM Universe中的所有编程语言? 你都发现了吗?

如果答案是“否”,那么我们将不遗余力地寻求知识。 因此,JVM信息图表的盗版者随附了一系列文章,其中我们重点介绍了您可能知道或可能不知道的语言。

不要忘了查看JVM系列的Pirates

翻译自: https://jaxenter.com/lux-jvm-series-133693.html

ruby和haskell

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值