gpt4 book ai didi

haskell - Haskell 中有哪些符号命名空间?

转载 作者:行者123 更新时间:2023-12-03 14:55:45 24 4
gpt4 key购买 nike

我试图减少我对 Haskell 语法的困惑,并想了解 Haskell 中单独的命名空间是什么。

命名空间是指与编译器管理的各种符号表相对应的语法命名空间,而不是代码中定义的名称范围。

例如:

  • 值名称(如函数名称)
  • 数据构造函数
  • 类型构造函数
  • 类型参数(在类型定义中)
  • 实例?
  • ...?

  • 我之所以感兴趣,是因为我在阅读 Haskell 代码时遇到了问题(肯定比任何其他语言都多),因为我经常很难弄清楚我到底在看什么(尤其是数据/类型构造函数/类型声明)。

    Haskell 似乎在许多地方重用了一些句法结构(尤其是 <name> <name> ... )并依赖于上下文 - 结果证明编译器在这方面比我好得多......

    最佳答案

    The Haskell Report §1.4 says

    There are six kinds of names in Haskell: those for variables and constructors denote values; those for type variables, type constructors, and type classes refer to entities related to the type system; and module names refer to modules. There are two constraints on naming:

    1. Names for variables and type variables are identifiers beginning with lowercase letters or underscore; the other four kinds of names are identifiers beginning with uppercase letters.
    2. An identifier must not be used as the name of a type constructor and a class in the same scope.

    These are the only constraints; for example, Int may simultaneously be the name of a module, class, and constructor within a single scope.

    关于haskell - Haskell 中有哪些符号命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10659909/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com