• F#学习笔记函数式编程(一)


    F#支持3种编程范式:函数式(Functional Programming), 命令式(Imperative Programming)& 面向对象式(Object-oriented Programming)。函数式范式则是F#中最重要的,也是最能体现F#威力的一种方式。在很长一段时间,我以为函数式编程和命令式编程是一回事,以为在C里面写了一堆函数(方法),一步步调用那些方法,就是函数式的编程,呵呵。其实,函数式编程的思想是以数学的思想,像函数求解一样去编码,而不是一行行的代码告诉电脑如何做(命令式编程)。不过目前我对函数式编程也没有太多的体会,等后面再多看些了,有了更深的体会了,再补一片对函数式编程的理解的笔记吧。PS,在网上看到了篇07年左右微软的几个大牛的访谈记录,从里面摘抄了点内容,从这些话里,似乎对函数式编程的理解更进了一步,比如在C#里大放异彩的LINQ,就是对函数式编程的一种借鉴。

    传统上,如果我们用“命令型语言”编程,我们的基本成份是“语句”。“语句”使用并且共享“状态”,从而导致不太好的“可组合性”。你不能拿着两段语句,然后简单地把它们粘合到一起,因为它们的全局状态不能很好地交互。这就导致“命令型语言”不能很好地组合到一起。如果你看看LINQ,就会发现我们已经更多地采用“函数型语言”的风格,所有的东西都基于表达式。

    “表达式”从其定义来说就是可组合的。你如何创建一个新的表达式?你用小的表达式组合出一个大的表达式。

    既然是函数式编程,那F#里的函数肯定有着与众(C#)不同之处。这篇开始就详细的记录下F#的函数的特点。

    在开始之前,我们首先应该抛弃脑子里的面向对象编程的概念,什么类啊,继承啊统统的都忘掉,如果对函数式编程完全没概念,可以先想想小时候学习C语言的时候,main函数调用a方法,a调用b。。。然后返回,先简单的认为函数式编程就是一堆函数的调用,组合的编程方式。或者想想,小时候解题的时候,套用不同的公式,最后得到答案。。。

    • 不可变性
    • 函数也是类型
    • 递归函数
    • 运算符
    • 函数的组合
  • 相关阅读:
    空值判断(is not null)
    http协议相关面试题
    Linux基本面试题。(感觉也就这几个了)
    1、了解django运行流程
    python笔试常见题
    selenium中一些可能用到的js操作
    元素判断
    二次封装
    关于在阿里云上面安装mysql遇到的一些问题。
    linux常用的一些基本命令
  • 原文地址:https://www.cnblogs.com/FMax/p/1752504.html
Copyright © 2020-2023  润新知