趣味编程:CPS风格代码(C#,F#版)
CPS风格代码(C#版)
using System;
namespace fp
{
class CPS
{
static int add(int x, int y) => x + y;
static int square(int x) => x * x;
static int pythagoras(int x, int y) => add(square(x), square(y));
static void add_cps(int x, int y, Action<int> f) => f(add(x, y));
static void square_cps(int x, Action<int> f) => f(square(x));
static void pythagoras_cps(int x, int y, Action<int> f) =>
square_cps(x, x_squared =>
square_cps(y, y_squared =>
add_cps(x_squared, y_squared, f)));
public static void Main(string[] args)
{
Console.WriteLine(pythagoras(3, 4)); // 25
pythagoras_cps(3, 4, x => Console.WriteLine(x)); // 25
}
}
}
CPS风格代码(F#版)
open System
let add x y = x + y
let square x = x * x
let pythagoras x y = add (square x) (square y)
let add_cps x y f = f (add x y)
let square_cps x f = f (square x)
let pythagoras_cps x y f =
square_cps x (fun x_squared ->
square_cps y (fun y_squared ->
add_cps x_squared y_squared f))
printfn "%d" (pythagoras 3 4) // 25
pythagoras_cps 3 4 (printfn "%d") // 25
趣味编程:CPS风格代码(C#,F#版)的更多相关文章
- 趣味编程:CPS风格代码(Java 8,Functional Java版)
CPS风格代码(Java 8版) package fp; import java.util.function.IntConsumer; public class CPS { static int ad ...
- 趣味编程:CPS风格代码(C++11, C++14版)
CPS风格代码(C++11版) #include <iostream> using namespace std; int add(int x, int y){return x + y;} ...
- 趣味编程:24点(Haskell版)
24 game/Solve import Data.List import Data.Ratio import Control.Monad data Expr = Constant Rational ...
- 使用最新AndroidStudio编写Android编程权威指南(第3版)中的代码会遇到的一些问题
Android编程权威指南(第3版)这本书是基于Android7.0的,到如今已经过于古老,最新的Android版本已经到10,而这本书的第四版目前还没有正式发售,在最近阅读这本书时,我发现这本书的部 ...
- 《代码大全(第二版)》【PDF】下载
<代码大全(第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382264 内容简介 <代码大全(第2版)>是著 ...
- JavaScript 风格指导(Airbnb版)
JavaScript 风格指导(Airbnb版) 用更合理的方式写 JavaScript 原文 翻译自 Airbnb JavaScript Style Guide . 目录 类型 引用 对象 数组 解 ...
- Smack编程库进行代码功能调试
http://www.tuicool.com/articles/U3Afiy 使用Smack编程库进行代码功能调试 关于Smack编程库,前面我们提到,它是面向Java端的api,主要在PC上使用,利 ...
- Android编程权威指南(第2版)--第16章 使用intent拍照 挑战练习
16.7挑战练习:优化照片显示 新建dialog_photo.xml 1234567891011121314 <?xml version="1.0" encoding=&qu ...
- 一起读《Java编程思想》(第四版)
空余时间看<Java编程思想>(第四版)这本书,遇到不懂的知识点就记录在本博客内. 1.复用具体实现 Java代码复用的三种常见方式:继承.组合.代理. 1.继承:使用extends关键字 ...
随机推荐
- yarn 制作 npm 包
yarn publish yarn info [package_name]
- Logback 整合 RabbitMQ 实现统一日志输出
原文地址:Logback 整合 RabbitMQ 实现统一日志输出 博客地址:http://www.extlight.com 一.前言 公司项目做了集群实现请求分流,由于线上或多或少会出现请求失败或系 ...
- 【python】class之super关键字的作用
在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(self): prin ...
- NET中调用存储过程(Output、Input)
NET中调用存储过程(Output.Input) .NET中调用存储过程(Output.Input) 带输入输出参数的存储过程 带输入输出参数的存储过程 create procedure itemCo ...
- Number常用方法函数
Number类型应该是ECMAScript中最令人关注的数据类型了,这种类型使用IEEE754来表示整数和浮点数,并针对Number相关特点定义了一系列相关的方法函数. isFinite() 在Jav ...
- 1048 Find Coins (25 分)
1048 Find Coins (25 分) Eva loves to collect coins from all over the universe, including some other p ...
- [UE4]射中机器人
- 微信小程序 GMT+0800 (中国标准时间) WXSS 文件编译错误
请尝试在控制台输入openVendor() ,清除里面的wcsc wcsc.exe 然后重启工具
- sqlserver操作命令
启动命令:Net Start MSSqlServer 暂停命令:Net Pause MSSqlServer 重新启动暂停的命令:Net Continue MSSqlServer 停止命令:Net st ...
- python 字体颜色的设置
实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27 ...