写点什么

从 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:50952
用户头像

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

关注

评论

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

赫夫曼树编码实验报告

我是一个茶壶

数据结构 哈夫曼树 11月月更

Python 操作Mysql

度假的小鱼

pymysql 11月月更 Python操作Mysql

Python 操作Excel(xlrd和XlsxWrite)

度假的小鱼

11月月更 Python xlrd读取Excel Python xlrd

研发管理如何度量「人效」

feijieppm

项目管理 研发效能 技术管理 文化 & 方法 效能度量

Linux yum 命令

芯动大师

yum源 11月月更 Linux系统指令

凝心聚力 开源共建 | 统信软件参与成立OpenKunlun开源固件社区

统信软件

开源 开源社区 开源技术

支持向量机-ROC曲线中的概率和阈值

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

《2022开源大数据热力报告》发布,Flink 摘得「流处理」领域热力值 TOP1

Apache Flink

大数据 flink 实时计算

基于 Apache Flink Table Store 的全增量一体实时入湖

Apache Flink

大数据 flink 实时计算

华为云大数据平台,助力企业数字化转型成效明显

路过的憨憨

深度学习-浅谈keras的扩展性

AIWeker

深度学习 keras 11月月更

Flink CDC 2.3 发布,持续优化性能,更多连接器支持增量快照,新增 Db2 支持

Apache Flink

大数据 flink 实时计算

【web 开发基础】PHP中的数组 (41)

迷彩

php 数据结构 11月月更 关联数组 索引数组

一文了解 Go 标准库 strings 常用函数和方法

陈明勇

Go golang 字符串 11月月更 strings

“后 Hadoop 时代”,大数据从业者如何应对新技术趋势带来的挑战?

Apache Flink

大数据 flink 实时计算

融云全球社交泛娱乐洞察,老资格的「游戏社交」还有哪些想象空间

融云 RongCloud

社交 泛娱乐社交

Python 操作mongodb库

度假的小鱼

mongodb 11月月更 Python 操作mongodb库

开闭原则详细介绍

杨充

企业办公新模式,随时随地云上协同!

秃头也爱科技

python版本管理工具DVC

AIWeker

人工智能 版本管理 11月月更 dvc

制造业要用龙头带动整条产业链发展,阿里云智能制造加速器首次集结

B Impact

投入上百人、经历多次双 11,Flink 已经足够强大了吗?

Apache Flink

大数据 flink 实时计算

单一职责原则详解

杨充

读《程序是怎样跑起来的》体会

听风go

读书笔记 后端 计算机 计算机原理 读书总结

2022-11-29:查找重复的电子邮箱。以下数据中a@b.com是重复的,请写出sql语句。 DROP TABLE IF EXISTS person; CREATE TABLE person (

福大大架构师每日一题

数据库 福大大

支持向量机-SVC的模型评估指标

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

「Go易错集锦」正确使用defer避免代码重复

Go学堂

golang 程序员 个人成长 defer 11月月更

华为云桌面Workspace,让云上工作更高效!

路过的憨憨

细说值传递、引用传递和地址传递

闫同学

编程语言 计算机基础 11月月更

【web 开发基础】PHP 中数组的定义 (42)

迷彩

数据结构 数组 11月月更 数组的定义

【React技术】JSX在企业级项目的运用and一个元素渲染demo

恒山其若陋兮

前端 11月月更

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