zoukankan      html  css  js  c++  java
  • 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之间,能够互相调用,只是须要一些封装的工作。

  • 相关阅读:
    有些事情,我们需要坚持到底
    SEO策略与细节:细节决定成败
    织梦DEDECMS更新6月7日补丁后出现版权链接的删除办法
    argparse模块的应用
    多态实现原理剖析
    tensorflow中tf.ConfigProto()用法解释
    tensor flow中summary用法总结
    tensorflow-gpu版本出现libcublas.so.8.0:cannot open shared object file
    python3自带工具2to3.py用法
    公司管理系统之设计
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7189567.html
Copyright © 2011-2022 走看看