在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

Spring Boot 2 教程:WebFlux 集成测试及部署(十)

程序员泥瓦匠

通过 Serverless Devs 部署静态网站

刘宇

云计算 Serverless cicd Serverless Devs

Serverless架构下如何上传文件与持久化文件

刘宇

Serverless User Model

刘宇

Golang 问题排查指南

得物技术

Go golang 后端 root

跟小海一起看下雪——用HTML、CSS和JS实现简单的下雪特效

海拥(haiyong.site)

大前端 js 28天写作 签约计划第二季 12月日更

从工具看函数资源评估

刘宇

Serverless 函数计算 Serverless Devs

Custom Container的CI/CD最佳实践案例

刘宇

Serverless cicd 容器镜像 Serverless Devs

在线JSON转typescript工具

入门小站

工具

Serverless 研发效能的变革:Serverless Devs | 引航计划|云原生

刘宇

Serverless 云原生 内容合集 签约计划第二季 Serverless Devs

Spring Boot 2 WebFlux 系列教程分享| 内容合集

程序员泥瓦匠

内容合集 签约计划第二季

Serverless 架构开发/优化案例

刘宇

Serverless Registry Model

刘宇

Serverless Devs Model 与模型简介

刘宇

如何没话找话,聊得不那么尬?(15/28)

赵新龙

28天写作

Serverless架构下传统框架迁移方案与策略

刘宇

Serverless Serverless Devs 传统框架

Vim 编辑器|批量注释与批量取消注释

AlwaysBeta

vim Linux

Prometheus Exporter (二十七)Memcached Exporter

耳东@Erdong

memcached Prometheus 28天写作 exporter 12月日更

Serverless架构下Tensorflow与目标检测系统

刘宇

tensorflow Serverless 目标检测 Serverless Devs

模型升级在 Serverless 架构下的实现与应用

刘宇

人工智能 Serverless PyTorch Serverless Devs

Serverless Devs 与 CI/CD 平台/工具集成

刘宇

Serverless cicd Serverless Devs

大数据开发之常用命令大全

@零度

大数据

让发布更安全的:线上异动感知

刘宇

云计算 Serverless 云原生 Serverless Devs

Serverless Desktop 上手

刘宇

Serverless Serverless Devs

Serverless架构下PaddleOCR项目开发与部署

刘宇

人工智能 paddle Serverless Serverless Devs

6 款开源 Web 性能优化辅助工具推荐

编程江湖

前端

基于Gitee Go的函数代码更新与版本发布

刘宇

Serverless cicd gitee Serverless Devs

初章

阿丞

基于Github Action的SAE自动化流程案例

刘宇

Serverless SAE Serverless Devs

Serverless架构下如何对应用进行调试

刘宇

Serverless 代码调试

虎符重磅启动迎新活动:新用户注册即送VIP2和200USDT 合约体验金

区块链前沿News

Hoo虎符 虎符交易所 虎符送VIP

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