需要更清晰地定义表达式

时间:2015-12-01 20:00:46

标签: f#

这句话意味着什么,为什么我会编写这样的代码?

let id x = x in (id 3, id "Three") 
  

F#3.0规范:6.6定义表达式

3 个答案:

答案 0 :(得分:3)

它定义了身份功能:

let id x = x

in这个表达式:

(id 3, id "Three")

因此,此表达式的结果是(int * string):

类型的元组
(3, "Three")

编辑: 您不一定需要编写这样的代码(可能在极少数情况下)。默认情况下,F#使用light语法而不使用in,如下所示:

let id x = x // Define the function
(id 3, id "Three") // Apply it to the elements of tuple

当您使用verbose语法时,您不必遵循空格缩进规则。这里更清楚地描述:http://fsharpforfunandprofit.com/posts/fsharp-syntax/

我相信详细的语法主要用于需要在单行表达式中使用let的样本

答案 1 :(得分:2)

let v = expr in body

定义名为v的新环境绑定到expr,然后在创建的环境中评估body。在这种情况下,id被定义为类型a -> a的函数,它只返回其参数。身体

(id 3, id "Three")
然后使用绑定到上述函数的id来评估

答案 2 :(得分:1)

如果var html = {reward.amount.toLocaleString()} + "&euro;<br>" +{moment(expiracyDate).format('DD/MM/YYYY')} + " <br>"; var e = document.createElement('div'); e.innerHTML = html; 则a)id x = x和b)id 3 = 3。将其放在id "three" = "three"中,如果我们(id 3, id "three"),那么结果就是let id x = x。这是它的要点。