有什么直觉可以支持在Haskell中将Maybe构造函数称为“ Just”?


11

像这样的可选类型的直觉Maybe Int是:要么没有 Int(因此Nothing存在),要么有一些 Int。那里有东西。

对我来说,我们将类型构造器称为“负数”情况是有意义的Nothing,因为这恰好意味着-那里没有Int。但是,为什么在重点在于实际存在的东西的情况下使用“ 只是 ”一词呢?

对我来说,“ Just”一词的含义是它所描述的事物少于替代事物。与实际存在的事物相反 例如,

你今晚有事吗?

B:没有;我只是待在家里看电视。

答:您是否调查过房屋周围令人毛骨悚然的鬼声?

B:是的,事实证明它实际上只是一只猫头鹰。

显然,我缺乏这种命名选择所基于的直觉。它是什么?因为对我来说,Just字样与它在Maybe类型中的用法相反。


4
在这种情况下,我认为Scala与“ 无”(而不是Scala的发明)相对应,使用了Some的更好的名字。
安德列斯·F

3
@AndresF。至少可以追溯到Odersky确实非常熟悉的ML。
德里克·埃尔金斯

2
@RobertHarvey如果Haskeller Maybe用作单子,他们可能会使用returnmzero而不是Nothing。当Just直接使用,通常Maybe不被在一元的风格在这一点上使用。
德里克·埃尔金斯

2
历史的先例就是这种Option类型。Haskell的设计师可能觉得foo x = Just x“阅读”比更好foo x = Some x。同样,该定义data Maybe a = Just a | Nothing读起来很好,因为“ Maybe ais is Just aor it's Nothing”。Some在那里读得不错,但None不适合data Option a = Some a | None
德里克·埃尔金斯

3
他们还活着。您可以向Phil Wadler和Simon Peyton Jones之类的人发送电子邮件,然后询问他们。或者尝试使用Haskell-Cafe邮件列表。
德里克·埃尔金斯

Answers:


2

过去,西蒙·佩顿·琼斯(Simon Peyton Jones)对此进行了解释。这意味着Nothing不能是值,或者“仅仅是”单个其他类型的值。还有“另一件事”可以作为值返回,或者什么也不能返回。

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.