趣味编程: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关键字 ...
随机推荐
- c# list排序的三种实现方式 (转帖)
用了一段时间的gridview,对gridview实现的排序功能比较好奇,而且利用C#自带的排序方法只能对某一个字段进行排序,今天demo了一下,总结了三种对list排序的方法,并实现动态传递字段名对 ...
- 转jmeter --JDBC请求
做JDBC请求,首先要了解这个JDBC对象是什么,然后寻找响应的数据库连接URL和数据库驱动. 数据库URL:jdbc:sqlserver://200.99.197.190:1433;database ...
- golang kafka client
针对golang的 kafka client 有很多开源package,例如sarama, confluent等等.在使用sarama 包时,高并发中偶尔遇到crash.于是改用confluent-k ...
- socket()函数介绍
socket()函数介绍 socket函数介绍 函数原型 domain type protocol errno 示例 函数原型 socket()函数的原型如下,这个函数建立一个协议族为domain.协 ...
- 服务端REST与SOAP的探讨(转)
声明: 闲来逛论坛看到一篇不错的文章,阅读后受益匪浅. 本文从一个简单的应用场景出发,使用REST和SOAP两种不同的架构风格实现,通过对REST与SOAP Web服务具体对比,旨在帮助读者更深刻理解 ...
- php 非常简单的导入sql文件
在网上找了很多,都是写了一个类 做了各种处理.还真是累哦 当然之前也做了各种尝试 source 客户端命令 mysql_query()是不支持的 load_file 在where 之后执行可以,但是 ...
- 两个DataTable关联查询(inner join、left join)C#代码
using System; using System.Collections.Generic; using System.Text; using System.Data; namespace Cons ...
- php让页面记住表单提交后的信息方法
<body> <?php $name = $_POST['name']; echo $name; $gender = $_POST['gender']; echo $gender; ...
- ES之六:ElasticSearch中Filter和Query的异同
如下例子,查找性别是女,所在的州是PA,过滤条件是年龄是39岁,balance大于等于10000的文档: { "query": { "bool": { &quo ...
- innodb的锁、update单条记录的花费时间压测
观察innodb的锁时间,需要关注: mysqladmin extended-status -r -i 1 -uroot | grep "Innodb_row_lock_time" ...