50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

观测云接收 OpenTelemetry Collector 数据最佳实践

观测云

OpenTelemetry

技术文档 | Pulsar 中的消息保留、过期及积压机制解析(上)

AscentStream

消息队列 pulsar

SeaTunnel MCP Server 入选《中国信通院开源商业产品及企业典型案例集(2025)》

白鲸开源

AI 开源商业化 Apache SeaTunnel 白鲸开源 MCP Server

【8.14 直播】快速上手 IoTDB 官方可视化工具 Workbench

Apache IoTDB

具身智能竞速时刻,百度百舸提供全栈加速方案

科技热闻

基于某中心Bedrock的提示工程在合规检测中的应用

qife122

生成式AI 提示工程

北京卫视《为你喝彩》今晚 21:04:“铁头乔”的创业修行

Apache IoTDB

YashanDB ALTER AUDIT POLICY语句

YashanDB

数据库

YashanDB ALTER DATABASE LINK语句

YashanDB

数据库

运维提效技巧:用标签给资源 “归类”,关联告警模版省心又省力

华为云开发者联盟

VectorDB+FastGPT一站式构建:智能知识库与企业级对话系统实战

科技热闻

AI Compass前沿速览:RynnVLA视觉-语言-动作模型、GLM-4.5V 、DreamVVT虚拟换衣、 WeKnora框架、GitMCP、NeuralAgent桌面AI助手

汀丶人工智能

Apache DolphinScheduler 7 月社区月报 | 关键修复与性能优化全面推进

白鲸开源

Java 大数据 开源 大数据任务调度 Apache DolphinScheduler

巅峰对决!PAC 2025全国总决赛终极之战—— 谁将问鼎冠军宝座?

科技热闻

Text2SQL准确率暴涨22.6%!3大维度全拆

京东零售技术

YashanDB WM_CONCAT函数

YashanDB

数据库

Dify入门篇(3)| 配置你的第一个LLM:OpenAI/Claude/Ollama

测吧(北京)科技有限公司

人工智能 自动化测试 测试开发 dify

基于RankSVM改进相似案例检索排序性能

qife122

机器学习 法律AI

4个月、2个人、1个霸榜的开源项目 !这位98年的校招生做到了!

京东零售技术

荣耀应用市场直投下载功能开放丨开发加油站

荣耀开发者服务平台

下载 荣耀开发者服务平台 应用市场 荣耀HONOR 荣耀应用市场

从数据血缘到AI Agent:天翼云 × DolphinScheduler 的云上调度新篇章

白鲸开源

大数据 开源 Apache DolphinScheduler 用户案例 天翼云

为什么你拿捏不住客户的“真”需求?

IPD产品研发管理

产品 产品经理 产品设计 需求 软件研发

邀请函|2025 Altair 教育赋能:诚邀各大高校共建产品创新设计核心课程《面向3D打印的结构优化与创新设计》

Altair RapidMiner

机器学习 AI 仿真 建模 CAE

穿越回1995?利用Microsoft 365直送功能发起钓鱼攻击的技术分析

qife122

网络安全 Microsoft 365

分布式数据高效可靠检索新方法

qife122

分布式计算 信息检索

云监控(CES)2025年7月全新升级

华为云开发者联盟

低代码平台赋能高校学生,构建职业能力与企业需求的动态适配

中烟创新

融云IM、网易云信IM等39款即时通讯SDK适配鸿蒙5,社交协作更高效

新消费日报

深度学习在计算机视觉领域的现状与未来

qife122

深度学习 CVPR

2025年2月安全更新深度解析:微软与Adobe关键漏洞修复指南

qife122

安全更新 微软补丁

邀您参与 “直通乌镇” Spring AI Alibaba 开源竞技挑战赛!

阿里巴巴云原生

阿里云 云原生 Spring AI Alibabab

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