为什么不像Haskell那样将Scala Option类型称为Maybe?[关闭]


13

为什么不像Haskell那样将Scala Option类型称为Maybe?

也许对我来说更具“语义意义”,但也许Option具有我所不知道的不同行为。

有什么特殊的原因为什么不将Scala中的Option称为Maybe?

Answers:


23

Scala也受到Ocaml的启发,后者使用Option

选项是Ocaml标准类型,可以是None(未定义)或Some xx可以是任何值。选项在Ocaml中广泛用于表示未定义的值(类似于C中的NULL,但是以类型和内存安全的方式)...

我认为所选择的名字是一个品味问题。


8
也是F#。Wikipedia上的页面是en.wikipedia.org/wiki/Option_type。似乎比Maybe
-KChaloux(

2
Ocaml从SML获得名称。快速浏览一下Landin的The Next 700 Programming Languages,我没有注意到选项类型,因此SML可能是名称的由来。
彼得·泰勒

1
支持Option它的一个论点是它是一个optional值(不管是得到还是没有)。Maybe暗含着程序员的某种程度的不确定性。也许有价值?我不知道。我应该获得价值吗?optional value我认为措辞听起来是故意的。
Jochem Kuijpers

6

一个更好的问题是为什么Haskell的期权类型被称为Maybe。ML的选项类型可能是所有选项类型的祖父,它称为option

无论如何,这是一个术语问题,因此不会有原则性的答案。在Haskell中选择名称的人更喜欢它,仅此而已。


2
是什么让您能够在新答案中重复信息,而新答案已经被接受的答案及其基础注释很好地覆盖了?
罗伯特·哈维

4
设置先例的@RobertHarvey ML是新信息,真正的问题是答案甚至是猜测。
djechlin

好。您是否有参考或仅是意见?因为意见可以更好地表示为评论,而不是答案。特别是第二段。
罗伯特·哈维

2
防御 选择:选择的行为;选择。防御 也许; 可能 不确定性 不确定的答复。对于我来说,很难说,从纯粹的语言角度来看,也许“也许”是更好的名字。“选项”意味着有(多种)选择,而单调的名称“也许”更是要点:一件事或一无。但是,是的,首先是ML(因此是Option),所以这可能是命名习惯不好的原因(并且请参见Peter Taylor对上述正确答案的评论-他确实引用了ML)。
fnl 2015年

@fnl查看我对其他答案的评论;我认为有一个合理的理由使option成为的缩写optional。在这种情况下,(多个)选择减少到只有两个:要么存在,要么不存在。
Jochem Kuijpers
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.