CPS风格代码(C++11版)

#include <iostream>
using namespace std; int add(int x, int y){return x + y;}
int square(int x) {return x * x;}
int pythagoras(int x, int y) {return add(square(x), square(y));}
template<typename F>
void add_cps(int x, int y, F f) {f(add(x, y));}
template<typename F>
void square_cps(int x, F f) {f(square(x));}
template<typename F>
void pythagoras_cps(int x, int y, F f) {
square_cps(x, [=](int x_squared){
square_cps(y, [=](int y_squared){
add_cps(x_squared, y_squared, f);
});
});
} int main()
{
cout << pythagoras(3, 4) << endl; // 25
pythagoras_cps(3, 4, [](int x){cout << x << endl;}); // 25
}

CPS风格代码(C++14版)

#include <iostream>
using namespace std; int add(int x, int y){return x + y;}
int square(int x) {return x * x;}
int pythagoras(int x, int y) {return add(square(x), square(y));}
auto add_cps = [](int x, int y, auto f) {f(add(x, y));};
auto square_cps = [](int x, auto f) {f(square(x));};
auto pythagoras_cps = [](int x, int y, auto f) {
square_cps(x, [=](int x_squared){
square_cps(y, [=](int y_squared){
add_cps(x_squared, y_squared, f);
});
});
}; int main()
{
cout << pythagoras(3, 4) << endl; // 25
pythagoras_cps(3, 4, [](int x){cout << x << endl;}); // 25
}

趣味编程:CPS风格代码(C++11, C++14版)的更多相关文章

  1. 趣味编程:CPS风格代码(C#,F#版)

    CPS风格代码(C#版) using System; namespace fp { class CPS { static int add(int x, int y) => x + y; stat ...

  2. 趣味编程:CPS风格代码(Java 8,Functional Java版)

    CPS风格代码(Java 8版) package fp; import java.util.function.IntConsumer; public class CPS { static int ad ...

  3. Smack编程库进行代码功能调试

    http://www.tuicool.com/articles/U3Afiy 使用Smack编程库进行代码功能调试 关于Smack编程库,前面我们提到,它是面向Java端的api,主要在PC上使用,利 ...

  4. 少儿编程:python趣味编程第二课,如何在pygame中写文字

    python趣味编程第二课:本文仅针对8-16岁的青少年,所以流程是按如何去教好中小学生走的,并不适合成人找工作学习,因为进度也是按照青少年走的 大家好,我是C大叔,上一篇文章已经跟大家介绍了一款开发 ...

  5. python风格代码荟萃

    今天总结一下在python中常用的一些风格代码,这些可能大家都会用,但有时可能也会忘记,在这里总结,工大家参考~~~ 先点赞在看,养成习惯~~~ 标题遍历一个范围内的数字 for i in xrang ...

  6. Google coding Style Guide : Google 编码风格/代码风格 手册/指南

    1 1 1 https://github.com/google/styleguide Google 编码风格/代码风格 手册/指南 Style guides for Google-originated ...

  7. HTML5 & CSS3编程入门经典 ((美)Rob Larsen) pdf扫描版

    HTML和CSS是构建网页所需要了解的两种核心编程语言,拉尔森编著的这本<HTML5&CSS3编程入门经典>详细介绍了这两种语言. <HTML5&CSS3编程入门经典 ...

  8. Linux系统编程【3.2】——ls命令优化版和ls -l实现

    前情提要 在笔者的上一篇博客Linux系统编程[3.1]--编写ls命令中,实现了初级版的ls命令,但是与原版ls命令相比,还存在着显示格式和无颜色标记的不同.经过笔者近两天的学习,基本解决了这两个问 ...

  9. 联想Z470安装10.11懒人版成功!!特此分享!!

    折腾黑苹果也断断续续好几个月了,在远景也爬了好多贴,遇到问题基本上靠自己解决,自己组的台式机已基本完美,大学期间买的联想Z470现在是“食之无味,弃之可惜”,想想也来试试装个黑苹果玩玩,之前装过10. ...

随机推荐

  1. JZ2440 裸机驱动 第11章 通用异步收发器UART

    本章目标: 了解UART原理: 掌握S3C2410/S3C2440中UART的使用 11.1 UART原理及UART内部使用方法 11.1.1 UART原理说明     UART用于传输串行数据:   ...

  2. Oracle RAC的机制与测试方法

    Oracle RAC的机制与测试方法 标签: rac 机制 测试 2016-05-25 09:54 1150人阅读 评论(0) 收藏 举报  分类: oracle(2)  1.RAC原理 Oracle ...

  3. 动态爬虫——selenium2搭载phantomjs入门范例

    这是我学习爬虫比较深入的一步了,大部分的网页抓取用urllib2都可以搞定,但是涉及到JavaScript的时候,urlopen就完全傻逼了,所以不得不用模拟浏览器,方法也有很多,此处我采用的是sel ...

  4. linux 静态库文件

    1.生成目标文件 gcc -o mylib.o -c mylib.c 2.生成静态库文件 ar rcs libmylib.a mylib.o 查看库信息: nm libmylib.a //====== ...

  5. JAVA课程设计——多源教学数据管理系统

    团队简介 团队名称: 419圣斗士 团队成员 姓名 成员介绍 任务分配 周炳辉(组长) 来自网络的一个大佬,穿女装很合适 poi与servlet 徐宏伟 网络中一个具有强大隐藏实力的大哥 css,部分 ...

  6. bzoj 4929: 第三题

    Description 给定n,b,c,d,e以及A0,A1,···,An−1,定义 xk=b×c^4k+d×c^2k+e f(x)=Sigma(Aix^i),0<=i<=n-1 请你求出 ...

  7. csrf xss sql注入

    1.输入框 sql注入 测试直接在输入框输入1' ,看sql会不会拼接出错 xss攻击 csrf攻击 测试直接在输入框输入 <script>alert(123)</script> ...

  8. pychar入门参考教材

    参考:  http://blog.csdn.net/chenggong2dm/article/category/6137682 让不同py文件运行,直接在文件的标签处右键run即可

  9. C++基本规则

    C++ 程序结构 让我们看一段简单的代码,可以输出单词 Hello World. #include <iostream> using namespace std; // main() 是程 ...

  10. [转]Java. SqlServer 使用

    public void add(Emp emp) throws Exception { String connectionUrl = "jdbc:sqlserver://localhost: ...