【问题标题】:Are integers constructors in OCaml是 OCaml 中的整数构造函数吗
【发布时间】:2021-04-15 00:32:13
【问题描述】:

我正在关注 OCaml 上的 wikibook,他们说整数类型可以这样构造:

type int = 0 | 1 | 2 | (* .... *) | -1 | -2 | (* ... *) ;;

后来,本书指出所有构造函数都是以大写字母开头的单词。还有一些特殊的构造函数,true false 和像 1, 2, 3 这样的整数。

所以,回到顶部。我输入以下内容:

type d = 0 | 1 | 2 ;;

我在 0 上得到一个语法错误。我错过了什么? 0 不是构造函数吗?

【问题讨论】:

    标签: ocaml


    【解决方案1】:

    正如您所说,您可以将整数定义为变体类型并不是真的。构造函数必须是以大写字母开头的标识符。但这是一种思考构造函数(和整数)的方式,在某些方面具有启发性。就是这样。

    顺便说一句,truefalse 在与 int 相同的意义上与构造函数非常相似。它们也不以大写字母开头。但是将它们视为构造函数是很有启发性的。

    【讨论】:

    • 好的,我明白了。快速跟进以确保我完全理解。在我的 d 示例中,我应该说:type d = Zero |一 |两个;;
    • 当然,这是有效的 OCaml,它为您提供了 wikibook 试图达到的想法。想象一下,如果您以这种方式定义所有整数(OneThousandThreeHundredAndTwo 等),然后定义用于加法、乘法等的函数。您可以使用这些(空值)构造函数非常接近地重现整数的行为。
    猜你喜欢
    • 2016-08-17
    • 2012-09-22
    • 2013-12-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2022-12-18
    • 2012-06-30
    相关资源
    最近更新 更多