【问题标题】:What does || mean in Erlang?是什么||在 Erlang 中是什么意思?
【发布时间】:2016-01-13 04:53:28
【问题描述】:

我发现列表操作中有一个|||| 是什么意思?有没有关于||的例子?

lists:sum([A*B || {A, B} <- Foo]).

【问题讨论】:

    标签: erlang


    【解决方案1】:

    用于List comprehensions。列表推导式是一种无需使用乐趣、地图或过滤器即可创建列表的更短的方法。

    来自Programming Erlang

    如果我们有一个列表 L:

    L = [1,2,3,4,5].
    

    而且我们想将每个元素加倍,我们可以这样做:

    lists:map(fun(X) -> 2*X end, L).
    

    但是通过列表推导我们可以做到:

    [2*X || X <- L].
    

    【讨论】:

      【解决方案2】:

      命名法很可能来自集合的数学概念,其中 ||意思是“这样”。

      例如copied from Wikipedia

      F = {n2 − 4 : n 是整数;且 0 ≤ n ≤ 19}

      在这种表示法中,冒号(“:”)表示“这样”,描述可以解释为“F是n2-4形式的所有数的集合,这样n是一个整数范围从 0 到 19(含)。”有时使用竖线(“|”)代替冒号。

      应用同样的东西

      lists:sum([A*B || {A, B} <- Foo]).
      

      意思是:- 生成 A*B 使得 A 和 B 属于元组列表 "Foo"

      【讨论】:

      • 是的。数学在集合推导中使用该符号,这与编程语言中的列表推导不同之处仅在于后者具有明确的顺序,这纯粹是由于计算的顺序性质。在具有惰性求值的语言中,集合和列表推导之间的区别可能会变得模糊,但 Erlang 并没有将惰性求值融入其核心,这与 Haskell 不同。
      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2017-06-11
      • 2018-03-05
      • 2023-03-27
      相关资源
      最近更新 更多