产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

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

关注

评论

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

redis数据类型以及它们的底层实现数据结构

想要飞的猪

【中秋特辑】嫦娥妹妹,你别着急~

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列

中移链DDC-SDK技术对接全流程(二)

BSN研习社

区块链、

LeetCode-316. 去除重复字母&&1081.不同字符的最小子序列(Java实现)

bug菌

9月日更 Leet Code 9月月更

【C语言深度剖析】重点详解函数的形参和实参、传值和传址

Albert Edison

开发语言 传值 C语音 9月月更 传址

Python 教程之数据分析(7)—— Jupyter Notebook 入门

海拥(haiyong.site)

Python 9月月更

这个中秋,国潮元宇宙的A新玩法是……?

文心大模型

「工作小记」多个页面的相似操作公共化设计方案

叶一一

前端 设计思维 9月月更

Java进阶(十三)servlet监听器

No Silver Bullet

Java Servlet 9月月更

支撑全产业AI,需要怎样的算力服务?

脑极体

Web & Electron 平台即时通讯产品的技术选型

融云 RongCloud

Web Electron 即时通讯

「趣学前端」今日祝福不限量,批量导入在路上

叶一一

前端 设计思维 9月月更

【JS】防抖与节流---在定义时返回的是回调函数

Sam9029

JavaScript 前端 防抖节流 9月月更

ERP是什么?

优秀

ERP

当代用电行为大赏:有人心疼电费,有人靠屋顶光伏“理财”

脑极体

数据治理(十二):Ranger2.1.0源码编译

Lansonli

数据治理 9月月更

LeetCode-448. 找到所有数组中消失的数字(Java)

bug菌

9月日更 Leet Code 9月月更

全球新兴市场移动应用报告

易观分析

移动应用

Nodejs安装及环境配置

nodejs NVM 9月月更

Ansible如何使用lookup插件模板化外部数据

山河已无恙

ansible 9月月更

【JS】两种实现-懒加载的方式-附无限滚动案例

Sam9029

JavaScript 前端 懒加载 9月月更

2022 WAIC 闭幕,融云提供分论坛元宇宙直播技术支持

融云 RongCloud

直播 元宇宙

Java进阶(十)tomcat中context配置

No Silver Bullet

tomcat Context 9月月更

Python 教程之变量(1)—— 变量、表达式、条件和函数

海拥(haiyong.site)

Python 9月月更

云渲染为设计行业带来哪些福利?

3DCAT实时渲染

为什么低代码和专业代码走向融合才能破解低代码困境?

牛刀专业低代码

低代码 低代码平台

哈希索引

急需上岸的小谢

9月月更

2022-09-09:给定一个正整数 n,返回 连续正整数满足所有数字之和为 n 的组数 。 示例 1: 输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数([5],[2,

福大大架构师每日一题

算法 rust 福大大

库调多了,都忘了最基础的概念 《锁与线程2终结篇》

知识浅谈

线程 9月月更

社招前端二面常见面试题

coder2028

JavaScript 前端

C++学习------cmath头文件的源码学习02

桑榆

c++ 9月月更

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