【F#学习】“变量”?绑定!

news/2025/9/19 22:40:56/文章来源:https://www.cnblogs.com/qmazon/p/19101817

绑定

在F#中,给一个值标记上名字的过程叫作绑定binding)。绑定是不可更改的,就像C#语言中的readonly或者const一样。因此,我们称这样的东西为绑定而非变量。由于F#是静态类型语言,所有的绑定必须在编译期就明确类型。

通过关键字let来创建绑定。在大多数情况下,编译器足够聪明,能够推断出绑定的类型。(学习了type关键字之后,你就会惊叹编译器已经聪明到难以想象的程度了!)

// 自动类型推断
let fingers = 10

函数其实也是普普通通的绑定,只不过带有参数而已。函数的最后一行会作为他的返回值。无论是函数参数,还是函数的返回值,编译器都会尽量地去自动推断。

// 如下的两个函数完全相同
let add x y = x + y
let add (x: int) (y: int) :int = x + y

类似于Haskell,调用函数的时候不需要括号和逗号。这点和C#有很大的不同,但你很快就会接受的。

let five = add 2 3

当编译器无法推断类型的时候,必须使用冒号:来明确标注类型。(这种情况非常之罕见!当然,在任何情况下,你都可以明确标注类型。)

let fingers: int = 10
let add (x: int) (y: int): int = x + y

必须先定义绑定才能使用。这似乎类似于C++,毕竟在C++里,函数也必须先声明再使用。

// 这么做会无法通过编译。报错。
let seven = add 3 4
let add x y = x + y

在F#中,缩进是重要的,就像Python一样。

let toes =let left = 5let right = 5left + rightlet multiplyPlusTwo x y =let product = x * yproduct + 2

F#的绑定一般在module(类似于C#的static class)下进行。

module Calculatorlet pi = 3.14
let add x y = x + y

可变绑定(let mutable variable = ...)暂不介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/908136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023 CCPC 深圳 F

F. Gift 基环树处理环。 给一棵基环树,要求删掉一条边后还是一棵树,说明只能删掉这棵基环树上的环上的边。 删掉边后还要保证以 \(p\) 作为根节点时,其他节点的儿子数量不超过 \(3\),说明根节点的度数一定是小于等…

完整教程:【算法】双指针(三)[快慢指针]-快乐数

完整教程:【算法】双指针(三)[快慢指针]-快乐数pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

9.19做题资料:哈希表查找时间复杂度分析

好的,我用一个简单的比喻来解释,就像你在学校里找座位一样!1. 哈希表是什么? 想象一个教室里有好多桌子(这些桌子就是哈希表)。每张桌子都有一个编号(比如1号桌、2号桌、3号桌……)。老师规定:每个同学必须坐…

CF2143F Increasing Xor

我咋天天忘。还怎么学 OI 啊。 题意 给定长度为 \(n\) 的序列 \(a\),\(q\) 次询问给定 \(l,r\),每次查询提取出 \([l,r]\) 这段子区间,在这段子区间中你能执行任意次操作,每次操作任选 \(l\le i\le j\le r\) 然后 …

提到链接,你能想到什么

linux中的链接文件和虚拟机的克隆技术一.链接文件 在了解链接文件两种类型之前,必须先了解的知识: 文件在Linux中被分成两部分:数据(data block)和文件元数据(inode) inode与block 每个文件都有一个 inode(索引节…

实用指南:容器逃逸漏洞

实用指南:容器逃逸漏洞pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

实用指南:容器逃逸漏洞

实用指南:容器逃逸漏洞pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

深入解析:卷对卷(Roll-to-Roll,R2R)技术的应用领域和技术进展

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:卷对卷(Roll-to-Roll,R2R)技术的应用领域和技术进展

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

三种方式处理SpringBoot全局异常

在SpringBoot开发web项目时,异常处理是必不可少的一部分。在应用中,异常可能出现在任何地方,例如在控制层,服务层,数据访问层等等。如果不对异常进行处理可能会导致应用崩溃或者出现未知的错误。因此对于异常的处…

解题记录说是 | P3695 CYaRon!语

小模拟link 起因 闲的没事找模拟做,发现这个部分分的档次很多,而且好想挺好做,就做了。 是分着部分分做的,而且完全就是那种苦(封装各种实现)尽甘(飞速写完 ihu hor while)来的感觉,很爽的。 code goes first…

分享一个极度精简的绿色的 五笔输入法

这个输入法是本人修改过的 柚子输入法,极度精简,绿色无需安装,释放之后即可使用. 功能说明请看 压缩包的说明文件. 通过网盘分享的文件:youziIME2025-9-19.rar 链接: 百度网盘 如果需要修改功能,你需要懂一点Auto…

[GDKOI2023 提高组] 游戏 题解

一种比较简短的写法: 拉出直径,再在直径的每一个点上跑一下最长链,为 $ mx_i$ 这里设三点的路径交点为 \(rt\)。 假设 \(rt \rightarrow u,v,w\) 的距离为 \(dis1,dis2,dis3\) 。 容易知道 \(dis1 = (x+y-z)/2,dis2…

CSP-J/S 2025 游记

突然发现今年忘记写游记了…… [2025.6.30,2025.8.1) 中考。 [2025.8.1,2025.8.31] 暑假集训 15 天,一天比赛一天专题。早上 8:00 到机房训到 12:00 然后和高三抢饭,下午 14:00-17:00 继续搞,晚上 19:00-22:00。只有…

2025.9.19 计数dp小记

[CQOI2011] 放棋子 本题有一个性质,棋子间互不关联,又因为数据范围小,很容易 \(dp\) 记 \(f_{p,i,j}\) 表示考虑前 \(p\) 种颜色,放了 \(i\) 行 \(j\) 列的方案数 则枚举 \(p\) 放了几行几列,有 \[f_{p,i,j} = \s…

实用指南:AI推理范式:从CoT到ReAct再到ToT的进化之路

实用指南:AI推理范式:从CoT到ReAct再到ToT的进化之路pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

sign up - Gon

如果注册github时出现 Unable to verify your captcha response. Please visit https://docs.github.com/articles/troubleshooting-connectivity-problems/#troubleshooting-the-captcha for troubleshooting informa…

ctfshow web入门 信息搜集

有些题目会了就没写了,只记录一下自己不会写的题目,不过信息搜集还是很重要的ctfshow web3(自带网络工具包查看数据)查看源码什么也没有扫目录也什么都没有只能说信息收集能力还欠佳, 我们可以先尝试使用浏览器自带…

完整教程:数据结构:单链表的应用(力扣算法题)第二章

完整教程:数据结构:单链表的应用(力扣算法题)第二章pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

CF2039E Shohag Loves Inversions

CF2039E Shohag Loves Inversions 题意: 给你一个数列,初始数列为 $ a = [0, 1] $ ,现在重复进行以下操作若干次:将当前数组中逆序对个数 \(k\) 插入当前数组中任意一个位置,包括开头或者结尾。其中 \(n\le 1e6\)…