f# - F# 函数,它是如何工作的
问题描述
我有这样的功能。
let c = (fun a b ‐> let d = a 10 in d ‐ 4*b) (fun c ‐> c + c) 5
let x = c‐6
这就是我目前所理解的:“fun c -> c + c”是“fun a b”的第一个参数,“5”是第二个参数。"let d" 是一种接受 "a" 和 "b" 并返回结果的函数。但是,如果有人可以解释到底发生了什么:
let d = a 10 in d ‐ 4*b
解决方案
in
在这里用作详细语法的一部分。您可以用轻量级语法重写它以使其更具可读性。它会是这样的:
fun a b =
let d = a 10
d - 4 * b
a
使用 as 参数调用,10
并将结果分配给d
. 稍后d - 4 * b
计算并从函数返回。
对于您的示例,您可以使用returna
来fun c -> c + c
调用它。10
20
20 - 4 * 5 = 0
所以c
设置为0
并将x
是0 - 6 = -6
。
从 F# 交互式:
> let c = (fun a b -> let d = a 10 in d - 4*b) (fun c -> c + c) 5;;
val c : int = 0
推荐阅读
- c# - 我应该在填充数据后更改数据表列数据类型吗
- ios - 如何将 KingFisher 库用于资产文件夹 Swift 中的图像?
- authentication - flask-jwt-extended current_user identity = 从刷新令牌创建非新鲜访问令牌时无
- shell - shell中的“set -e”和“test”
- maven - 我如何获得项目的maven编译数量
- reactjs - 找不到模块:错误:无法解析“react-module-test”
- maven - 如何将 Maven Profiles 值传递给 Spring Bean XML
- android - 在 Android 的 Application 类中为 DI 创建所有模块
- html - 在 Angular 中使用对象的动态选择选项
- c - 删除动态指针数组中单元格的正确方法