写点什么

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

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

关注

评论

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

入驻快讯|欢迎ShowMeBug正式入驻 InfoQ 写作平台!

InfoQ写作社区官方

SAP CRM Survey调查问卷的模型设计原理解析

汪子熙

中间件 CRM SAP C4C 11月日更

人脸检测实战:使用opencv加载深度学习模型实现人脸检测

AI浩

一起来写 VS Code 插件:实现一个翻译插件

狂奔滴小马

JavaScript vscode 大前端 vs

一起来写 VS Code 插件:VS Code 版 CNode 已上线

狂奔滴小马

JavaScript vscode 大前端

“2021ISIG中国产业智能大会低代码峰会”即将开幕,钉钉宜搭叶周全受邀出席

一只大光圈

阿里巴巴 互联网 钉钉 低代码 钉钉宜搭

Flutter设置App的应用名字和应用logo图标的方法

坚果

flutter 11月日更

被Chrome坑惨了!

Jackpop

netty系列之:在http2中使用framecodec

程序那些事

Java java 并发 程序那些事 11月日更

使用 NextJS 和 TailwindCSS 重构我的个人博客

狂奔滴小马

大前端 Blog nextjs

今日谈:BoltDB数据库,一款纯Go实现的KV数据库

恒生LIGHT云社区

数据库 Go 语言 BoltDB

Golang Gin 框架之分组路由(五)

liuzhen007

11月日更

模块四作业:设计千万级学生系统的试卷存储方案

Geek_99eefd

模块四 「架构实战营」

分析23个赛季NBA数据,我发现10条难以置信的信息!

Jackpop

使用 ABAP 代码提交 SAP CRM Survey 调查问卷

汪子熙

CRM SAP abap 11月日更 问卷模型

Linux学习有用吗?《Linux一学就会》

侠盗安全

Linux linux运维 云计算架构师 linux电子书

管理纪要

KoLee

使用 Omnibus 安装极狐GitLab

极狐GitLab

极狐GitLab 安装使用

零基础学习前端开发技术的方法分享

@零度

大前端

[Pulsar] 消息生命历程(三)——客户端发送消息

Zike Yang

Apache Pulsar 11月日更

图论算法:稳定婚姻问题,如何找到最适合自己的另一半

博文视点Broadview

Android C++系列:Linux进程间通信(一)

轻口味

c++ android 11月日更

用 NodeJS 开发一版在线流程图网站

狂奔滴小马

JavaScript 大前端 Node

StarRocks Hacker Meetup 小记 Part 2|实时更新场

StarRocks

大数据 Meetup StarRocks

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPullConsumer的实现原理及源码分析

码界西柚

阿里巴巴 RocketMQ 消息队列 11月日更 Apache RocketMQ

一文讲透如何用明道云构建物料需求计划系统

明道云

一起来写 VS Code 插件:为你的团队提供常用代码片段

狂奔滴小马

vscode 大前端

java语言前景怎么样,到底需不需要参加培训

@零度

Java JAVA开发

Prometheus Exporter (八)kube-state-metrics

耳东@Erdong

Kubernetes Prometheus exporter 11月日更 kube-state-metrics

《深入理解JVM虚拟机》读书笔记:第一章

Joseph295

Vue都使用那么久了,还不了解它的生命周期吗

CRMEB

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