小编ٍSh*_*uni的帖子

为什么推断这些参数具有单位类型?

我故意在这个函数的末尾添加了x

let myMax x y =
  if x > y then x else y
  x
Run Code Online (Sandbox Code Playgroud)

我期待x和y参数仍然是'一种类型,但我得到这个签名:

myMax : x:unit -> y:unit -> unit
Run Code Online (Sandbox Code Playgroud)

为什么推断这些参数具有单位类型?

编辑:谢谢@gilles的回答.考虑这两个功能:

let foo x y =
  0              // warning
  x
val foo : x:'a -> y:'b -> 'a

let foo2 x y =
  if x > y then x else y   // no warning
  x
val foo2 : x:unit -> y:unit -> unit
Run Code Online (Sandbox Code Playgroud)

是什么让两个签名不同?似乎在第二个函数中编译器将比较结果 - x或y-作为单位解释

f# types unit-type

7
推荐指数
1
解决办法
111
查看次数

标签 统计

f# ×1

types ×1

unit-type ×1