相关疑难解决方法(0)

F#和OCaml等函数式语言中的"let"关键字是什么?

在查看F#,Ocaml和其他函数式语言代码示例时,我注意到let关键字经常被使用.

  • 你为什么需要它?为什么语言设计得有它?
  • 为什么你不能把它留下来?例如:let x = 4变为x = 4

f# ocaml functional-programming

14
推荐指数
2
解决办法
4283
查看次数

阴影和嵌套功能

我想了解阴影和嵌套函数的机制是如何工作的.例如:

let func y =
    let dup y = y + y
    let z = dup y
    let dup y =
        let dup z =
            let y = y * z
            y
        let z = y
        y
    dup z + z;;

val func : int -> int

> func 3;;
val it : int = 12
Run Code Online (Sandbox Code Playgroud)

有人可以解释这里发生了什么吗

f# shadowing

8
推荐指数
2
解决办法
1995
查看次数

有没有办法在Visual Studio中对F#中的值进行阴影警告?

对我来说,隐藏现有的值,如:

阴影和嵌套函数
在F#
f中不可变#重复定义
FSharp,用于娱乐和利润评论

似乎违背了不变性和类型安全的概念,这使得F#如此强大.F#中的阴影效果 C#中的不同.我花了很长时间才发现我的代码中的一个错误是由于在同一范围内无意中隐藏了一个名称.有没有办法让VS中的阴影值有编译器警告?

我知道在某些情况下它可能很有用.例如,Checked Aritmetics.

f# shadowing visual-studio

7
推荐指数
2
解决办法
279
查看次数

FSharp:具有相同名称的多个值

let a = 1
let a = 2
let b = a
Run Code Online (Sandbox Code Playgroud)

这段代码安静地编译、运行和绑定 b = 2。

但这是理想的行为吗?它确实允许编码器重用适当的值名称,没有对象被改变,但是在n行代码中间很容易在同一名称空间中意外再次使用值名称,并且实际上引入了错误通过突变。我想知道这如何符合功能范式,以及是否应该有各种警告。

.net f# mutation

2
推荐指数
1
解决办法
270
查看次数