写点什么

从 F#中借用函数化 API

  • 2007-11-21
  • 本文字数:555 字

    阅读完需:约 2 分钟

通用语言规范(Common Language Specification,CLS)确保任何具有一致性的.NET 语言能访问被其他语言创建的函数库。这意味着命令式的语言,如 VB 和 C#,能调用主要为 F#创建的函数化函数库。实际上,许多都能直接地转换为 C#代码。

Dustin Campbell 通过演示一个能被大量简化的 C#表达式是如何地简单来说明这种方式。它以如下代码开始:

int[] a = new int[20];
for (int x = 0; x < a.Length; x++)
a[x] = x + 1;

如果写成 F#即是:

let a = Array.init 20 (fun x -> x + 1)

不使用特殊的代码技巧,F#代码可以表述为(以一种更声明化的方式),“创建一个有 20 个元素的数组,并使用这个函数初始化每个元素。”F#版本一个有趣的特性是数组的类型不需要声明。因为编译成能推断传递到函数的结果(fun x -> x + 1)将会是整数,“a”必须是一个整数数组。

对我来说,这代码是那样的优美。另外,这是声明式的而非命令式;它描述什么将被完成而不是明确地规定将如何完成。 当我看到如此简练的代码,我立刻开始试图想找到 F#中的那些方面,有助提高我日常工作中的 C#代码的书写效率。

Dustin 继续展示了一个 C#函数,允许使用这样的语法。

var a = ArrayEx.Create(20, x => x + 1);

需要提醒的是这样的技术在 VB 中同样可以工作。

查看英文原文: http://www.infoq.com/news/2007/11/Functional-CSharp

2007-11-21 07:50958
用户头像

发布了 254 篇内容, 共 60.3 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

FISCO BCOS 开发环境节点搭建 | 联盟链开发(一)

李大狗

区块链 联盟链 FISCO BCOS 狗哥

Docker 教程(三):Docker 命令

看山

Docker

为何数字人民币要采用“小额匿名、大额可溯”的设计?

CECBC

数字货币

JVM - 类加载器

insight

3月日更

Java8中的 Stream 那么彪悍,你知道它的原理是什么吗?

Java小咖秀

Java 面试 stream java8 开发

hive数据倾斜解决办法

五分钟学大数据

大数据 hive 28天写作 3月日更

(继续码字) 因果有顺序吗?是一种必要充分条件吗?

mtfelix

28天写作 bewriting 胡思乱想

【LeetCode】矩阵置零Java题解

Albert

算法 LeetCode 28天写作 3月日更

大数据中流量分析常见分类

大数据技术指南

大数据 28天写作 3月日更

银行业只是开始,60个可以被区块链改变的行业

CECBC

数字技术

2021十大区块链领域即将起飞

CECBC

区块链 投资

产品训练营第八章作业

Arnold

Python PyAutoGUI 库

HoneyMoose

在离开新手村后,你该如何的走出呢?打造属于你的快与慢的能力。

叶小鍵

控制台的安装与使用 | 联盟链开发(二)

李大狗

联盟链 FISCO BCOS 狗哥

科技强国的使命召唤中,百度AI埋下三根未来“引线”

脑极体

探索 Snabbdom 模块系统原理

Geek_z9ygea

JavaScript Vue Web Vue 3 Snabbdom

OpenCV 写图像也有讲究,取经之路第 5 天

梦想橡皮擦

28天写作 3月日更

Go Channel源码分析

非晓为骁

源码分析 channel Go 语言

新年上班第一天生产环境分布式文件系统崩了!!

冰河

高可用 分布式存储 fastdfs 可扩展 无限扩容

MongoDB中的null类型查询

Kylin

mongodb 3月日更 21天挑战 数据库查询 NoSql查询语法

Seldon使用(一):简介及入门

托内多

tensorflow kubeflow Kubernetes PyTorch seldon

架构 idea

型火🔥

架构 原则 架构之道

Spark详细剖析

五分钟学大数据

大数据 spark 28天写作 3月日更

Vue3源码 | createApp都干了什么?

梁龙先森

源码分析 大前端 Vue3

架构师训练营 4 期 第12周

引花眠

架构师训练营 4 期

uni-app跨端开发H5、小程序、IOS、Android(四):了解uni-app项目结构

黑马腾云

html5 微信小程序 uni-app android iOS Developer

领域驱动设计101 - 通用语言

luojiahu

领域驱动设计 DDD

工作多年后我更明白了UT的重要性

好好学习,天天向上

2.3 Go语言从入门到精通:数据类型

xcbeyond

3月日更 Go 语言

正则表达式的使用与匹配原理解析

Guanngxu

正则表达式

从F#中借用函数化API_.NET_Jonathan Allen_InfoQ精选文章