什么是函数式语言

作者: iamsonormal2333 | 来源:发表于2017-05-18 21:11 被阅读43次

之前会员培训的时候讲过一些函数式语言的东西,现在干脆整理一下,写到简书上。

函数式语言的有两大指导理念。理解了这两大指导理念也就对函数式语言有了一个基本的认识了。

第一个理念:函数是头等值。这个理念我倾向于分成值和头等两个概念理解。函数是值这个概念我相信还是比较好理解的。值可以被随意地提供给变量或函数等等,如果将函数当作值,就意味着函数可以被当成参数被提供给其他函数,也可以在函数中当作返回值,甚至可以在函数中定义函数。

而头等这个概念则是意味着函数的使用是不受限制的。不妨把Scala中的函数与C/C++的函数指针做比较。虽然函数指针也可以被赋值给变量,也可以被当作参数传递给其他函数,但是函数指针只能指向全局函数,也不能定义匿名函数字面量等等。故函数指针不能被看作函数式编程。

第二个理念是函数英国把输入值映射成输出值,而不是就地修改程序。这句话看起来不太好理解,不如举一个例子。

    //C++
    int s=0;//全局变量
    void a() {
        s++;
    }
    int b(int x) {
        return x+1;
    }
    s=b(s);

这两种方法同样实现了自加操作,但是b函数是将输入值s映射成了输出值s+1,而a方法则是在函数内修改了s的值。

虽然这种明显的影响程序可读性的错误我们不会做,但是下面一种可能就会经常出现了

    //Scala
    for(arg <- args)
        println(arg)
    args.foreach(println)

同样是打印出所有的指令行(args),第二种方式可以说是更典型的函数式用法,当然使用第一种做法是无可厚非的,因为这也是有函数式语言的味道,但这也给我们留下了一些问题,函数式究竟可以写的多简略。

掌握函数式编程的诀窍还是多练习,如果你学习Python或者Scala,那么我觉得多多用函数式编程是种不错的选择

相关文章

  • 什么是函数式语言

    之前会员培训的时候讲过一些函数式语言的东西,现在干脆整理一下,写到简书上。 函数式语言的有两大指导理念。理解了这两...

  • scanf函数

    scanf函数 一、是什么? C语言下的scanf()函数是样式化输入函数,也称为阻塞式函数,有C语言自带的库提供...

  • swift问题小结

    1.swift是面向对象还是函数式编程语言 swift是函数式也是面向对象的语言。swift是面向对象语言,因为他...

  • Python函数式编程

    虽然 Python 不是函数式编程语言(是命令式编程语言),但是支持许多有价值的函数式编程工具。Python 提供...

  • 第六章 函数

    为什么需要函数 函数(有些编程语言中叫做方法)几乎是每个编程语言最重要的内容,无论是函数式编程还是面向对象编程。每...

  • Scala学习笔记(5)-函数式编程

    Scala是一种函数式编程语言,它具有函数式编程范式的诸多特点。需要说明的是,scala并不是一种纯函数式编程语言...

  • Swift特性

    Swift是面向对象还是函数式的编程语言 Swift 既是面向对象的,又是函数式的编程语言。说 Swift 是面向...

  • Dart 基础

    为什么学习dart?谷歌推出了flutter,而flutter是基于dart语言的 dart是函数式编程语言 所有...

  • Haskell学习-monad

    原文地址:Haskell学习-monad 什么是Monad Haskell是一门纯函数式的语言,纯函数的优点是安全...

  • Java函数式编程和Lambda表达式

    什么是函数式编程 相信大家都使用过面向对象的编程语言,面向对象编程是对数据进行抽象,而函数式编程是对行为进行抽象。...

网友评论

    本文标题:什么是函数式语言

    本文链接:https://www.haomeiwen.com/subject/fvcexxtx.html