Frege-基于JVM的类Haskell纯函数式编程语言

Frege是一门受Haskell语言启发而设计的纯函数式编程语言。Frege程序会被编译为Java,并运行于JVM上。它与Haskell是如此的相似,以至于有人称它为JVM上的Haskell。取Frege这个名字是为了纪念德国数学家、逻辑学家、哲学家Gottlob Frege。

语言的主要特色

  • 纯函数式编程语言
    继承了函数式编程语言Haskell的精神,默认就具有不变性(immutability)。
  • 运行于JVM之上
    Frege程序编译为Java bytecode,运行于JVM(Java 7+)之上。Frege代码与Java代码可以互相调用。
  • 非强类型语言
    通过强大的类型推测来判断类型。

语言设计者的背景

Frege是由Ingo Wechsung设计的,Ingo Wechsung大概有34年左右的计算机开发、设计、咨询工作经验。目前领导着Frege项目。

设计这门语言的初衷

之所以设计Frege语言,主要是想把Haskell搬到JVM上来,使得一些Java项目可以充分利用Haskell函数式编程的编码方式。希望把Frege语言设计得强大、简单、富于表现力。

应用领域

暂时Frege还不成熟,没有商业的项目使用该语言。目前主要运用在教育领域,教大家什么是Frege,以及如何使用Frege。

典型场景的代码示例

Frege的Hello World示例代码如下:

module Hello where

greeting friend = "Hello, " ++ friend ++ "!"

main args = do
    println (greeting "World")

值得开发者关注的相关讨论

以下讨论来源于Hacker News。

  1. Frege声称自己是纯粹的函数式编程,可是又允许Frege调用不纯粹的Java代码,这样不
    会破坏Frege的纯粹性吗?

    回答: 把可变的Java代码封装到Frege里面,该代码块会被安排在一个ST monad,这通常都是IO monad。这就意味着,Frege使用Java的Hashset将会迫使调用的代码进入IO monad。所以Frege的纯粹性依然得以保存。

  2. Frege编译器是如何编写的?完全从头编写的,还是说从Haskell借鉴了很多?

    回答: Frege编译器是新写的,和Haskell编译器没有什么关系。

  3. Frege可以调用当前已有的第三方Java库吗?

    回答:当然可以,Frege与Java之间,可以互相调用,不过需要一些封装的工作。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值