什么是函数式编程? C语言为何不是函数式语言?

  • 什么是函数式编程? C语言为何不是函数式语言?

    函数式语言有两个个主要的特点:1. 函数是“头等公民”。2. 数据的“immutability”. 操作的“无副作用”,
    这规避了‘锁’。
    函数式编程的函数是指数学上的函数:给定输入固定的输出,没有副作用。任何语言都可以用函数式的风格,
    只是难易不同罢了。
    比如函数 y = f(x). 和 函数 t = g(z); 在数学上,当 t在f(x)的定义域内时,可以组成复合函数 y=f(g(z));

  • 对于第二个问题,C为何不是函数式语言?

    因为这种效果在C里面不能实现。

    int f(int x) { print x;} ===== y = f(x)
    int f1(int (*g)(int)) { print g(z);} ===== y = f1(g(z))
    int g(int z) {return z;}  =========  t = g(z)
    

    从上面的函数定义可以看到,当函数f(x)的参数定义为int时,便不能将函数g(z)作为形参传递给它。
    反过来看函数f1()也不能接受int作为参数了。

    于是,C达不到数学上函数的那种效果。

    而在clojure里面却可以。

    (defn f [x] (print x))    ======= y = f(x)
    (defn g [z] z)            ======= t = g(z)
    

    这时,(f (g 3)) 和 (f 3) 的结果是一样的,达到了数学上的效果。
    再者,C也不具有函数式语言的特点2.

  • 常见的函数式语言有哪些?

    coljure、scala、Haskell。
    
  • 为什么如python/javascrip这些语言不是函数式语言呢,因为他们不具备函数式语言的特点2.

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值