CPS风格代码(Java 8版)

package fp;

import java.util.function.IntConsumer;

public class CPS {
static int add(int x, int y) {return x + y;}
static int square(int x) {return x * x;}
static int pythagoras(int x, int y){return add(square(x), square(y));}
static void add_cps(int x, int y, IntConsumer f) {f.accept(add(x, y));}
static void square_cps(int x, IntConsumer f) {f.accept(square(x));}
static void pythagoras_cps(int x, int y, IntConsumer f) {
square_cps(x, x_squared ->
square_cps(y, y_squared ->
add_cps(x_squared, y_squared, f)));
}
public static void main(String[] args) {
System.out.println(pythagoras(3, 4)); // 25
pythagoras_cps(3, 4, x -> System.out.println(x)); // 25
}
}

CPS风格代码(Functional Java版)

package fp;

import fj.function.Effect1;

public class CPS2 {
static int add(int x, int y) {return x + y;}
static int square(int x) {return x * x;}
static int pythagoras(int x, int y){return add(square(x), square(y));}
static void add_cps(int x, int y, Effect1<Integer> f) {f.f(add(x, y));}
static void square_cps(int x, Effect1<Integer> f) {f.f(square(x));}
static void pythagoras_cps(int x, int y, Effect1<Integer> f) {
square_cps(x, x_squared ->
square_cps(y, y_squared ->
add_cps(x_squared, y_squared, f)));
}
public static void main(String[] args) {
System.out.println(pythagoras(3, 4)); // 25
pythagoras_cps(3, 4, x -> System.out.println(x)); // 25
}
}

趣味编程:CPS风格代码(Java 8,Functional Java版)的更多相关文章

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

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

  2. 趣味编程:CPS风格代码(C++11, C++14版)

    CPS风格代码(C++11版) #include <iostream> using namespace std; int add(int x, int y){return x + y;} ...

  3. 精练代码:一次Java函数式编程的重构之旅

    摘要:通过一次并发处理数据集的Java代码重构之旅,展示函数式编程如何使得代码更加精练. 难度:中级 基础知识 在开始之前,了解"高阶函数"和"泛型"这两个概念 ...

  4. 2017-07-29 中文代码示例教程之Java编程一天入门

    Java编程一天入门 v0.0.1 alpha 共享协议 本作使用署名-非商业使用-禁止演绎协议共享. 前言 Java入门代码用中文写(举例如下)更能被新手理解. 由于至今没有看到类似教程, 在此抛砖 ...

  5. Java GUI编程-(项目代码_扫雷_弹钢琴)

    --扫雷 package com;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionLis ...

  6. 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》

    终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...

  7. 《Java编程思想》读书笔记-第一个Java程序

    积少成多,欢迎大家关注我的微信公众号,共同探讨Java相关技术 今天的重点是:编写源代码.编译.运行.查看成果.除此之外,还需要搭建起与前面学习的知识的联系. 写本文时依据的系统环境是Windows1 ...

  8. Java网络编程和NIO详解开篇:Java网络编程基础

    Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...

  9. Functional Java 学习笔记

    Functional Java Functional Java是一个在Java语言中实现函数型编程范式的类库. 从接口上看,该类库似乎与Haskell语言关系密切,接口的方法名很多来自该语言. < ...

随机推荐

  1. 使用php在服务器端生成图文验证码(二)

    图文验证码的实现原理: 1):准备些许图片将其存储在数据库,每一张图片对应一个标识字段. 2):在服务器端使用数组的形式将图片与标识字段组合起来. 3):随机给客户端返回图片,并接受用户输入的字段. ...

  2. github高效搜索使用总结

    swoole 普通搜索 in:name swoole 搜索仓库的名称,搜索仓库名称包含swoole关键字的所有项目 in:description swoole 搜索描述中包含swoole关键字的项目 ...

  3. [转]Oracle中trace的几种

    Oracle中trace的几种 标签: 杂谈   我们在Oracle中在做troubleshooting的时候,经常要去做跟踪来查错,那今天就介绍几种trace的方法. 在这之前,我先说说10046事 ...

  4. 解决eclipse中断点调试不起作用的问题

    解决eclipse中断点调试不起作用的问题   eclipsegeneration编译器file工作 最近几天,遇到了一个问题,就是在eclipse中进行断点调试程序到时候,跟踪不到我设置的断点.困惑 ...

  5. Linux下分析磁盘镜像

    我们知道Windows下可以使用WinHex分析磁盘镜像:Linux下可以使用losetup工具.假如我们有一个磁盘镜像disk.img: ## 首先你的系统要支持loop device ## 一般发 ...

  6. 13.MD5对用户密码进行加密

    MD5概述 用户名密码保存在客户端是一种十分危险的行为.所以需要进行加密后保存. 其中MD5就是一种比较常用的加密算法. 与其说MD5算法是一种加密算法,不如说是一种数据指纹(数据摘要)算法. 其特点 ...

  7. [转] Maven.pom.xml 配置示例

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  8. RabbitMQ 主题

    RabbitMQ (三) 发布/订阅 RabbitMQ主题 RabbitMQ Tutorials

  9. [UE4]有限状态机、动画状态机、纯函数

    有限状态机 FSM:Finite State Machine,表示有限个状态以及在这些状态之间转移和动作的数学模型 纯函数: 纯函数: 先后调用顺序不重要,没有修改任何数值,只是获取数值或者临时计算一 ...

  10. [UE4]蓝图函数库小结

    蓝图函数库的功能非常强劲,如果在项目中使用的话有时能达到事半功倍的效果. 蓝图函数库,Blueprint Function Library.可以非常方便的将代码中的函数暴露给所有的蓝图使用,同时也提供 ...