写点什么

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

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

关注

评论

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

如何快速搭建一个简单的固资管理系统

全象云低代码

开源 前端 低代码 资管系统 低代码平台

星环科技大数据与人工智能应用研究与案例分享

星环科技

人工智能 大数据 数据分析 数据开发 技术专题合集

单体应用与微应用典型架构比对

编程江湖

架构

【CSS 学习总结】第七篇 - CSS 布局-居中布局-水平居中布局

Brave

CSS 12月日更

ONES 事记|ONES 参与信通院牵头编写的《DevOps 通用效能度量模型》

万事ONES

SaaS SaaS平台

Nocalhost:云原生开发新体验

CODING DevOps

云原生 Nocalhost

CNCC 演讲实录| 焱融 YRCloudFile 在 AI 训练中的性能优化实践

焱融科技

云计算 AI 云原生 高性能 文件存储

网易有道 | REDIS 云原生实战

有道技术团队

redis

在线JSON转JAVA工具

入门小站

工具

🍃【Spring专题】「技术原理」Spring Security的核心功能和加载运行流程的原理分析

洛神灬殇

spring spring security 框架搭建 12月日更

恒源云(GPUSHARE)_语音识别与语义处理领域之[机器翻译] 21.7 mRASP2

恒源云

深度学习 机器翻译 语音识别

EasyAds:曾经自研的广告聚合SDK,如今在开源平台中唾手可得

EasyAds

sdk 聚合sdk 广告sdk 聚合广告sdk

Linux之locate命令

入门小站

Linux

Kubernetes容器平台架构之道

巨子嘉

云计算 Kubernetes 云原生

今天谈谈用户故事地图,不是用户故事

华为云开发者联盟

DevOps 敏捷 开发 用户故事 用户故事地图

Shell脚本好学吗?看看这个带你了解shell中色彩处理和awk使用技巧

学神来啦

Linux Shell linux运维 awk linux云计算

【转】Node进阶篇之基于 gRPC 协议的 Node 服务

@零度

前端开发 Node

ONES CTO 冯斌:如何在终身学习中跳出「恐慌区」

万事ONES

ONES

架构实战营 4 期 - 第 3 周作业

周念

「架构实战营」

撬动百亿VRAR产业,让VR们“造”起来

华为云开发者联盟

AR vr 数字人 元宇宙 VR开发应用

如何使用ADLab搭建活动目录实验环境来练习渗透测试技术

H

网络安全 信息安全 计算机

Python代码阅读(第72篇):回文

Felix

Python 编程 字符串 阅读代码 Python初学者

Angular 变化检测详解

PingCode研发中心

angular

大数据开发之Hive SQL内置函数

@零度

大数据 Hive SQL

OPPO大数据计算集群资源调度架构演进

安第斯智能云

大数据 后端

Kubernetes API server工作原理

汪子熙

Kubernetes k8s 28天写作 docker image 12月日更

起点决定高度:ONES 如何践行软件标准化

万事ONES

ONES 软件工具 企业管理软件

年终招聘

张老蔫

28天写作

Java的异常处理

海拥(haiyong.site)

28天写作 12月日更

软件开发中的常见的15个定律和原则释义及应用

码语者

软件开发原则 软件开发定律

年末福利!专业级研发项目管理工具CORNERSTONE开源版正式上线!

优秀

项目管理工具

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