gpt4 book ai didi

types - 榆树中的 "number"是什么

转载 作者:行者123 更新时间:2023-12-04 23:12:40 30 4
gpt4 key购买 nike

我对 number 感到困惑.它似乎是一种类型,类似于 Int 的父类(super class)型和 Float ,如 java.lang.Number , 但:

  • 它以小写字母书写,因此在语法上类似于值的名称(我使用“值”来避免使用名称“常量变量”)
  • 实际上可以声明一个名为 number 的值。 .

  • 观察:
    > 1024
    1024 : number
    > 1024.0
    1024 : Float
    > floor(1024)
    1024 : Int

    让我们使用一个值名称 number :
    > number = 144
    144 : number
    > number
    144 : number
    > number = floor(144)
    144 : Int
    > number
    144 : Int

    并且:
    > Result.Ok 12 
    Ok 12 : Result error number
    > Result.Ok 12.0
    Ok 12 : Result error Float
    > Result.Ok (floor 12)
    Ok 12 : Result error Int

    什么是 number ?

    它是一个被尴尬地命名的联合类型吗?语法不合理?

    (异想天开:为什么不对“类型世界中的事物”使用特殊语法,例如 ↑Int,而另一种用于“来自元类型领域的事物”的特殊语法,例如 ⇈X。榆树,设计上的注释很差是有时很难破译。)

    最佳答案

    据我了解,number是一种内置类型类,类似于Java中的接口(interface),描述了可以对实现该接口(interface)的类型执行哪些操作。但是在 Java 中,从消费者的角度来看,接口(interface)被指定为普通类型,类型类是对类型变量的约束,按照约定使用“魔术”类型变量名称来指定,例如 number。或 comparable .

    在具有“正确”类型类支持的语言中,例如 Haskell,您将单独指定约束,即 Number a => a -> a .但是在 Elm 中,只有几个内置类型类,我认为为了能够使用一些相当直观的内置类型类而必须学习概念和语法的负担被认为是不必要的。虽然您可能无法直观地理解它的确切含义,但您应该能够很好地理解它,至少能够使用大多数功能,以 number s 或 comparable s 作为参数。然后可以稍后解释它的确切含义(尽管我有时确实想知道官方解释将在多长时间之后......)。

    我希望这足以回答您的问题,但如果仍然不清楚,请告诉我。

    关于types - 榆树中的 "number"是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52678445/

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