写点什么

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

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

关注

评论

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

互联网寒冬下,程序员如何化解危机?答案全在这份阿里Java知识地图里

比伯

Java 编程 程序员 面试 计算机

大数据ETL批量调度,这几款工具都需要去掌握了解

敏捷调度TASKCTL

大数据 kettle 运维自动化 海豚调度 ETL算法

LeetCode题解:剑指 Offer 40. 最小的k个数,二叉堆,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

咨询师的诱惑

escray

程序员 面试 面经

数字资产钱包系统开发及介绍

京东城市时空数据引擎JUST亮相中国数据库技术大会(附PPT链接)

京东科技开发者

数据库 nosql

博睿数据支持腾讯云函数监控,Serverless时代已来临

博睿数据

Serverless APM 监控

接口测试-使用mock生产随机数据

测试人生路

接口测试

测开之函数进阶· 第5篇《偏函数》

清菡软件测试

测试开发

【得物技术】交易轨迹系统

得物技术

数据 交易 得物 得物技术 自定义

ONES 年终报告 | 功能升级123次,服务超100万客户

万事ONES

研发管理工具 年终报告

完美!这份世界顶级架构师编写的550页Spring5高级编程

Java架构之路

Java 程序员 架构 面试 编程语言

【华为云专家原创】 服务注册与发现如何满足服务治理?

华为云开发者联盟

分布式 服务 注册

年前成功拿下35K+16薪美团Java架构师Offer!考点、面试题分享送给明年金三银四的你

Java架构追梦

Java 架构 面试 美团 offer

从阿里P5到P8=入门到内核?看看这份对标80W+年薪的Java进阶路线图

Java架构之路

Java 程序员 架构 面试 编程语言

太平金科助力“开局之战”顺利启动,博睿数据“A+N”一体化解决方案全力护航

博睿数据

APM npm AIOPS

GitHub上1.3W Stars国内第一的项目实战PDF

Java架构之路

Java 程序员 架构 面试 编程语言

专业基础篇

紫枫

小黄人提前回归?实力与萌力双出动

DT极客

网易有道 iOS二面经验分享

iOSer

ios 面试 网易

花火交易所APP开发|花火交易所软件系统开发

系统开发

Bitmap 续篇-基于 Bitmap 瞅瞅不一样的 Percentile

GrowingIO技术专栏

BitMap

手把手带你入门加密算法的Python实现

华为云开发者联盟

Python 算法 加密

京东将上线社区团购“京喜拼拼”:社区团购是否是一次泡沫大战

石头IT视角

七大步骤,详解预置算法构建模型的全过程

华为云开发者联盟

架构 算法 数据

用138个案例讲明白了Spring全家桶+Docker+MQ

996小迁

Docker 架构 面试 RabbitMQ Spring全家桶

2020H1中国AI云服务市场规模增长远超预期;C++20 标准正式发布

京东科技开发者

云计算 AI IoT

看完这篇,保证让你真正明白:分布式系统的CAP理论、CAP如何三选二

四猿外

架构 分布式系统 CAP CAP原理 CAP理论

由两个问题引发的对GaussDB(DWS)负载均衡的思考

华为云开发者联盟

数据库 数据 负载

架构设计大作业1

仲夏

盘点 2020 | 数据里有你、我、他,关键还是自己

李孟聊AI

大数据 数据中台 感悟 盘点2020

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