在榆树中,空括号`()`是什么意思?

dgo.a

我发现它们是一个空的元组。但是,它们是否也被Elm程序员用作约定,以表示“值可以忽略”?

is13 : Int -> Result String ()
is13 code =
  if code == 13 then Ok () else Err "not the right key code"

来源:https : //github.com/pdamoc/elmChallenges/blob/master/challenge5.elm

空括号()是所谓的单元类型,即只能有一个值的类型。具有至少一项的元组类型可以具有任意数量的值(例如,定义为一个元组的类型Int可以具有从(-∞)的无限数量的值(+∞))。但是“空元组”有多少可能的值?仅此一个,因此为什么将其称为单元类型。

单位类型的价值在于您可以在其他语言可能具有anullvoidtype的地方使用它,同时避免null随之而来的问题例如,您已经注意到,它经常用在您想说“我不在乎值是什么”的地方。但是那里有一个价值。这不是缺乏价值。

这有很多优点。例如,您可以说“所有函数都返回一个值”,这将是正确的。有时,该值是您不关心的值,但是所有函数都会返回一个值。在某种void类型的语言中,您不能这么说。例如,C#有两种不同的方式来声明函数委托:Func<T>用于函数返回类型T,以及Action用于函数return void在Elm(以及F#和其他使用单元类型的功能语言)中,无需进行区分:所有函数都返回一个值,因此所有函数都可以视为的等效项Func<T>有时typeT是一个空的元组,但这意味着您不必编写的两个版本map

另一个优点是,它使您可以更轻松地编写函数。这是来自Wikipedia页面上有关单位类型的示例在C语言中,您无法执行以下操作:

void f(void) {}
void g(void) {}

int main(void)
{
  f(g()); // compile-time error here
  return 0;
}

这是一个错误,因为不允许您将其void作为参数传递:这是因为缺少值。这意味着你不能使用标准的函数组合到链职能fg在一起。但是这是同一篇文章的另一段,这是C ++的,这显示了如果给C ++一个类似Elm的单元类型它将是什么样子:

class unit_type {};
const unit_type the_unit;

unit_type f(unit_type) { return the_unit; }
unit_type g(unit_type) { return the_unit; }

int main()
{
  f(g(the_unit));
  return 0;
}

现在,因为g返回了实际值(即使它是一个你不关心),你可以撰写fg有意义。从长远来看,这使您的程序更优雅,更易于阅读。

一些可能有助于您的进一步阅读:

  1. https://zh.wikipedia.org/wiki/Unit_type(我已经在此答案中链接了一次)
  2. 如果它支持空类型,为什么还要在F#中使用单位类型?

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在榆树中,“暴露(..)”是什么意思?

来自分类Dev

_在榆树中是什么意思?

来自分类Dev

日志配置字典中的空括号“()”是什么意思?

来自分类Dev

空括号中的星号是什么意思?

来自分类Dev

括号中的变量是什么意思?

来自分类Dev

JavaCC中的括号是什么意思?

来自分类Dev

Node.js中的“ require”声明后,空括号是什么意思?

来自分类Dev

在Node.js中“需要”声明之后,空括号是什么意思?

来自分类Dev

方括号在类型声明中是什么意思?

来自分类Dev

ElectronJs:大括号“ {}”在包json中是什么意思

来自分类Dev

python中for循环中的[]方括号是什么意思?

来自分类Dev

命令附近的括号中的数字是什么意思?

来自分类Dev

html中的方括号是什么意思?

来自分类Dev

Haskell类型签名中的括号是什么意思?

来自分类Dev

括号在SELECT(COLNAME)mysql中是什么意思

来自分类Dev

函数中的方括号是什么意思?

来自分类Dev

方法中包含大括号是什么意思?

来自分类Dev

在MATLAB中的函数调用括号内是什么意思?

来自分类Dev

html中的方括号是什么意思?

来自分类Dev

方括号在PHP中是什么意思?

来自分类Dev

方括号是什么意思?在Java中

来自分类Dev

方括号(例如SomeType [])在TypeScript中是什么意思?

来自分类Dev

SQL表达式中的括号是什么意思?

来自分类Dev

颤振((){})()中的多圆括号是什么意思?

来自分类Dev

命令附近的括号中的数字是什么意思?

来自分类Dev

括号在SELECT(COLNAME)mysql中是什么意思

来自分类Dev

在此Table类中,括号语法是什么意思?

来自分类Dev

双大括号在systemd脚本中是什么意思?

来自分类Dev

AngularJS的“ .module(“ modulename”,[…])”中的方括号是什么意思

Related 相关文章

  1. 1

    在榆树中,“暴露(..)”是什么意思?

  2. 2

    _在榆树中是什么意思?

  3. 3

    日志配置字典中的空括号“()”是什么意思?

  4. 4

    空括号中的星号是什么意思?

  5. 5

    括号中的变量是什么意思?

  6. 6

    JavaCC中的括号是什么意思?

  7. 7

    Node.js中的“ require”声明后,空括号是什么意思?

  8. 8

    在Node.js中“需要”声明之后,空括号是什么意思?

  9. 9

    方括号在类型声明中是什么意思?

  10. 10

    ElectronJs:大括号“ {}”在包json中是什么意思

  11. 11

    python中for循环中的[]方括号是什么意思?

  12. 12

    命令附近的括号中的数字是什么意思?

  13. 13

    html中的方括号是什么意思?

  14. 14

    Haskell类型签名中的括号是什么意思?

  15. 15

    括号在SELECT(COLNAME)mysql中是什么意思

  16. 16

    函数中的方括号是什么意思?

  17. 17

    方法中包含大括号是什么意思?

  18. 18

    在MATLAB中的函数调用括号内是什么意思?

  19. 19

    html中的方括号是什么意思?

  20. 20

    方括号在PHP中是什么意思?

  21. 21

    方括号是什么意思?在Java中

  22. 22

    方括号(例如SomeType [])在TypeScript中是什么意思?

  23. 23

    SQL表达式中的括号是什么意思?

  24. 24

    颤振((){})()中的多圆括号是什么意思?

  25. 25

    命令附近的括号中的数字是什么意思?

  26. 26

    括号在SELECT(COLNAME)mysql中是什么意思

  27. 27

    在此Table类中,括号语法是什么意思?

  28. 28

    双大括号在systemd脚本中是什么意思?

  29. 29

    AngularJS的“ .module(“ modulename”,[…])”中的方括号是什么意思

热门标签

归档