确实,有一个ignore : 'a -> unit
函数可以做到这一点。
编译器实际上知道ignore
并硬编码通常非常有用的特定行为,但有时可能会带来不便:默认情况下,忽略函数(任何具有 form 类型的函数foo -> bar
)会引发警告。
原因是忘记添加函数的最后一个参数是一个相对常见的错误。你可以写例如
ignore (List.map (fun x -> foo bar))
当你打算写
ignore (List.map (fun x -> foo bar) li)
而您期望看到的效果不是。
因此ignore
在这种情况下会发出警告,而您的手动编码let ignore x = ()
不会这样做。人们有时也会写
let _ = foo in ...
忽略foo
,但这也有同样的缺点(很容易弄错类型实际上是什么)。Kakadu 建议在那里使用类型注释,这是一个合理的建议。
(有些人还使用let _ = ...
他们程序的“主要”表达式。我建议宁愿使用let () = ...
它,因为它强制更高的类型精度。)
最后,有些人更喜欢使用let _ = ...
表单,因为他们处于使用;
会迫使他们添加括号或的情况begin..end
。我建议您始终添加括号或begin..end
在这些情况下,因为使用它很容易使自己陷入困境 -if..then..else..
例如模糊的优先规则。