• C++ 泛型编程/模板 泛函编程/Lambda/λ演算


    1、泛型编程(C++模板)

    其中,Ada, Delpha, Java, C#, Swift 称之为 泛型/generics; ML, Scala和 Haskell 称之为 参数多态/parametric polymorphism; C++和D语言称之为 模板/template. 《设计模式/Design Patterns》称之为 参数化类型/parameterized type. 因为在这里,参数的类型在一般情况下都是未知的,而泛型编程可以支持多种类型,所以叫泛/generic

    ①函数模板/Function Template:定义一个函数模板,可以支持多种类型的参数

    The format for declaring function templates with type parameters is:

    template <class identifier> function_declaration;
    template <typename identifier> function_declaration;
    

    比如, the C++ Standard Library contains the function template max(x, y) which returns the larger of x and y. That function template could be defined like this:

    template <typename T>
    inline T max(T a, T b) {
        return a > b ? a : b;
    }
    

    当我们调用这个 Template Function的时候,只要max(x1, x2)就可以了,编译器会自动选择对应的typename。

    函数模板/模板函数/Function template 可以 重载/overload,也就是说还可以定义与 函数模板同名的函数。

    例如:

    #include <iostream>
    #include <algorithm>
    
    template <typename T>
    inline T max(T a, T b) {
        return a > b ? a : b;
    }
    
    // 模板函数 重定义/overload/重载
    int max(int a, int b)
    {
    	return a>b ? a : b;
    }
    
    
    int main()
    {
    	std::cout << max(3,7) << std::endl;
    	std::cout << max(3.0, 7.0) << std::endl;
    	std::cout << max(3, 7.0) << std::endl;// 调用 重载/overloaded 的函数
    
    	std::cout << max<double>(3, 7.0) << std::endl;
    
    	return 0;
    }
    

    REFER: Function templates

    ②类模板/Class Template

    REFER: Class Template

    2、泛函编程/函数式编程/Functional Programming

    其,将电脑运算比作 数学 上的函数计算,并且避免使用程序状态以及易变物件。在 Functional Pgramming 中,最重要的基础是 λ演算/lambda calculus。

    纯粹的函数式编程语言: Haskell,Miranda,Concurrent Clean。
    非纯函数式编程语言:F#, Scala, Erlang, LISP, Mathematicar。

  • 相关阅读:
    koa 基础(十)原生node.js 在 koa 中获取表单提交的数据
    koa 基础(九) ejs 模板引擎的使用
    koa 基础(八)koa 中间件的执行顺序
    koa 基础(七)错误处理中间件
    [翻译] KVNProgress
    编写带有点击特效的UIButton
    用Easing函数实现碰撞效果
    EasingAnimation
    什么时候会执行viewDidLoad方法
    UIButton的两种block传值方式
  • 原文地址:https://www.cnblogs.com/xuanyuanchen/p/6039258.html
Copyright © 2020-2023  润新知