函数式语言(function language)

function language

一、函数式语言(function language)

  函数式语言(functional language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言。函数式语言主要成分是原始函数、定义函数和函数型。这种语言具有较强的组织数据结构的能力,可以把某一数据结构(如数组)作为单一值处理;可以把函数作为参数,其结果也可为函数,这种定义的函数称为高阶函数,程序就是函数,程序作用在结构型数据上,产生结构型结果,从根本上改变了冯·诺伊曼式语言的“逐词”工作方式。

二、Include
(1)纯函数式编程语言

  ①强静态类型

  Concurrent Clean
   简称Clean,它与Haskell有很多相似之处,是由c编写的。Clean程式很容易跨平台,在大部分情况下,要转移到另一个平台只需在那里重新编译一次即可,不用改动源代码。
  Haskell
  是一种标准化的,通用的纯函数式语言,有非限定性语义和强静态类型。它的命名源自美国逻辑学家哈斯凯尔加里。在Haskell中,“函数是第一类物件”。作为一门函数式语言,主要控制结构是函数。Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母“λ”(Lambda)作为自己的标志。Haskell具有“证明即程序、命题为类型”的特征
  Miranda
  一种编程语言,采用惰性求值的纯粹函数编程语言,由英国学者大卫·特纳(David Turner)所设计。采用来自ML语言与Hope语言的概念,他用此来作为他先前所设计的SASL语言与KRC语言的后继者。稍后发展出的Haskell语言,采用了很多由Miranda所发展出的概念。这个编程语言由英国的研究软件公司(Research Software Ltd.)研发,这间公司拥有这个编程语言的商标权。在1985年首次发表以C语言写成的直译器,能够在类UNIX系统上运作。随后在1987年与1989年发行了更新版。
   ②弱类型
    Lazy K
  
(2)非纯函数式编程语言
  ①强静态类型
  F#
  F#是由微软发展的为.NET语言提供运行环境的程序设计语言,是函数编程语言(FP,Functional Programming),函数编程语言最重要的基础是Lambda Calculus。它是基于OCaml的,而OCaml是基于ML函数编程语言。有时F#和OCaml的程序是可以交互编译的。
  ML
  ML是一个通用的函数式编程语言,一般被归为非纯函数式编程语言,因为它允许副作用和指令式编程。
  OCaml
  最早称为Objective Caml,是Caml编程语言的主要实现,由Xavier Leroy,Jérôme Vouillon,Damien Doligez,Didier Rémy及其他人于1996年创立。OCaml是开放源代码项目。此项目的管理和大部分维护工作交由INRIA。
  Scala

  是一门多范式的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。
  ②强动态类型
  Clojure
  Erlang
  Lisp
  LOGO
  Mathematica
  R

  Scheme

  ③弱类型
  Unlambda
 
(3)其他函数式编程语言
  APL语言
  XSLT

 三、Why Popular
  函数式编程语言相对于其他编程语言具有以下意义:首先,函数式编程语言的代码十分简单,加快了开发的速度。并且由于在使用函数式编程语言时,程序员会大量使用到函数,从而减少了重复的代码,因而程序比较短。其次,函数式编程语言更加接近我们使用的自然语言,程序员在学习和使用它的时候更加快捷容易。函数式编程语言的自由度很高,十分接近自然语言写出的代码。另外,函数式编程语言的代码管理更加方便。函数式编程不会对外部产生依赖,也不会修改外界的状态。程序员只需把指定的参数给函数,相同的参数其返回的结果必定是相同的。另外,函数式编程语言还支持并发编程,这就使得程序员在进行函数式编程时完全不用考虑死锁的问题,因为它根本就不修改变量,所以就不存在锁线程的问题。最后,函数式编程语言的代码支持代码热升级。

原文地址:https://www.cnblogs.com/wudidd/p/10548867.html

时间: 2024-10-12 17:38:38

函数式语言(function language)的相关文章

函数式语言

函数式语言(functional language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型. 这种语言具有较强的组织数据结构的能力,可以把某一数据结构(如数组)作为单一值处理:可以把函数作为参数,其结果也可为函数,这种定义的函数称为高阶函数,程序就是函数,程序作用在结构型数据上,产生结构型结果,从根本上改变了冯·诺伊曼式语言的“逐词”工作方式. 编程语言种类有很多,如果按照程序设计的方法,可分为以下几种程序语言: (1)结构化编程语言

【转】函数式语言的宗教

很早的时候,"函数式语言"对于我来说就是 Lisp,因为 Lisp 可以在程序的几乎任意位置定义函数,并且把它们作为值来传递(这叫做 first-class function).可是到后来有人告诉我,Lisp 其实不算"函数式语言",因为 Lisp 的函数不"纯"(pure). 所谓"纯函数",就是像数学函数一样,你给它同样的输入,它就给你同样的输出.然后你就发现在这种定义下,几乎所有程序语言里面的随机数函数(random),

Atitit.编程语言的主要的种类and趋势 逻辑式语言..函数式语言...命令式语言

Atitit.编程语言的主要的种类and趋势 逻辑式语言..函数式语言...命令式语言 1. 编程语言的主要的种类 逻辑式语言..函数式语言...命令式语言 1 2. 逻辑式语言,,不必考虑实现过程而只需考虑定义和结果 1 3. 第五代语言 1 1. 编程语言的主要的种类 逻辑式语言..函数式语言...命令式语言 在FAQ3里说过,世界上有C和LISP两种编程语言,你现在学了C,以后学了C++.Java..NET 等等,也仍然只认识了半个世界.LISP和 Haskell构成了另外半个世 2. 逻

安装语言包(LANGUAGE PACKAGE)

by 枫竹丹青 一.说明 在SAP ECC 安装好后,如果是生产版本,通常只有两种语言--英语和德语.这时如需中文环境,则需定义支持的语言类型并导入语言包.如果安装的是IDES版,则系统中已包含了几十种语言包,只需设置一下配置参数就可使用中文了. 不同的SAP产品.不同的版本,对应的语言包也不相同,例如ECC 6 SR2与ECC 6 SR3的语言包就是两个不同的卷标.除SAP产品外,安装/更新某些组件包也需要安装相应的语言包. 本文示例的是安装ECC 6 SR3的语言包,安装文件的卷标为5103

为什么函数式语言会火

一.首先什么是函数式语言: 个人认为函数式语言就是函数式编程中使用的程序设计语言,函数式语言有两个特点:1.函数是头等值,是“头等公民”,即函数的使用是不受限制的.2.函数把输入值映射成输出值,给定输入,固定的输出,且没有副作用. 二.函数式语言包括: 最早的函数式语言当然是Lisp,现在有两个分支:Common lisp 和Scheme.Common lisp 是一个庞大的语言,支持多种编程范式,Scheme是Common lisp的子集,二者都是ANSI标准.Scheme 由于语言核心很小,

对函数式编程语言的理解

1.什么是函数式语言? 函数式语言(functional language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型.这种语言具有较强的组织数据结构的能力,可以把某一数据结构(如数组)作为单一值处理:函数式编程语言最大的特点就是函数可以作为参数.结果也可以是函数,这种定义的函数称为高阶函数,程序就是函数,程序作用在结构型数据上,产生结构型结果,从根本上改变了冯·诺伊曼式语言的“逐词”工作方式. 函数式编程(英语:functional p

认识C和内存管理

认识C和内存管理 C程序内存空间分为下面5类: stack栈: 存放着局部变量和函数参数等数据,向下生长 (可读可写可执行) heap堆:  给动态分配内存使用,向上生长 (可读可写可执行) bss segment:BSS段   用来存放未初始化的全局变量.未初始化的静态变量 和 这两种变量初始化值为0的情况 data segment:数据段  保存已初始化的全局变量和初始化的静态变量(初始化值都不为0)   (可读可写不可执行) code segment/text segment:代码段  用

21/CLASS - C Language Style for Scalability——ZeroMQ官网建议的C语言命令规范

http://rfc.zeromq.org/spec:21 Table of Contents License Change Process Language Goals Quality Aspirations Common Problems General Style Definitions Language Naming Project Style Project Focus Project Name General Layout Dependencies Project Header Fi

Scala语言学习之环境安装(1)

==> Scala语言简介 --> Scala编程语言抓住了很多开发者的眼球.如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式编程和函数式编程风格 --> 不太久之前编程语言还可以毫无疑意地归类成"命令式"或者"函数式"或者"面向对象".Scala代表了一个新的语言品种,它抹平了这些人为划分的界限. ==> Scala有几项关键特性表明了它的面向对象的本质 -->