趣味编程:CPS风格代码(Java 8,Functional Java版)
2024-10-14 18:03:36
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
}
}
最新文章
- [Unreal]学习笔记001
- 【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列
- C(++) Websocket消息推送---GoEasy
- Java中的匿名类
- zoj 3820 Building Fire Stations 树的中心
- iOS打包后收不到推送信息
- 正确使用volatile场景--状态标志
- SharePoint 门户网站的图片轮播-页面定制
- matplotlib简单的使用(二)
- mysql之聚合函数、group by、having
- linux下python安装
- Python分页组件
- VMware与Centos系统安装、重置root密码
- ActiveMq 总结(二)
- Spring 框架(一)
- c++11 多线程新特性学习 (1) 管理线程
- 很重要的处理项目url[www]
- 配置OpenCV报应用程序无法正常启动0xc000007b
- codeforces #301 div2
- 移动web开发基础(一)——像素