相关疑难解决方法(0)

阴影和嵌套功能

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

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
查看次数

F#记录:具有相同名称的字段

请考虑以下记录定义:

type A = { F1 : int; F2 : int }
type B = { F1 : int; F3 : int } 

// error FS0656: This record contains fields from inconsistent types   
let a1 = { F1 = 1; F2 = 2 } 

// this works
let a2 = { A.F1 = 1; F2 = 2 }
Run Code Online (Sandbox Code Playgroud)

我不明白,为什么a1会导致错误.

我可以找到为什么你必须这样做的所有例子a2-way假设A和B中的所有字段名都有相同的名字 - 这当然是模棱两可的,但是当A和B不应该有区别时至少有一个不同的领域?

也许这只是F#对此进行评估的方式,将类型名称添加到第一个字段当然没什么大不了的,但我只是好奇.

编辑:感谢您的回答,这让我发现了一些相当奇怪的事情:当我第一次评估它时(ALT +在VS 2010中输入),整个片段都有效.

当我第二次尝试评估时,我收到错误.

如果没有人可以重现这个我的VS安装很可能...

EDIT2(好吧,在这里创建一个帐户的时间,对不起编辑)感谢wmeyer(以及其他所有人)花时间看问题并让我意识到我对FSI如何工作的误解.一切都清理了!

f#

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

标签 统计

f# ×2

shadowing ×1