【问题标题】:Unknown syntax in IBM research paperIBM 研究论文中的未知语法
【发布时间】:2020-12-24 15:02:17
【问题描述】:

我正在阅读一篇研究论文高性能动态无锁哈希表 和 List-Based Sets (Maged M. Michael),我不明白这个用于示例的伪代码语法。

具体是这些部分:

〈pmark,cur,ptag〉: MarkPtrType;
〈cmark,next,ctag〉: MarkPtrType;
nodeˆ.〈Mark,Next〉←〈0,cur〉;
if CAS(prev,〈0,cur,ptag〉,〈0,node,ptag+1〉)

例如。 (第 5 页,第 3 章)

更新:

【问题讨论】:

  • 欢迎您回答自己的问题。我在 pseudo codeAPL(以及几乎四分之一世纪后的 Haskell)之间的第二个“借用方向”。我怀疑内积是有意的;我认为它是一种类似于 Python 的临时列表表示法,其中大括号可以比low, high = 2, 8 更频繁地删除。
  • @greybeard 很好地找到了与 运算符的 APL 关系。关于点积语法,它实际上似乎不太可能是点积,因为向量中有两个以上的元素。我不确定我是否理解您对临时列表表示法的理解。能给我举个 Python 的例子吗?
  • 嗯,low, high = 2, 8Python 的示例,与 low, high = [2, 8][low, high] = [2, 8] 相同,与 low, high = (2, 8) 几乎相同
  • (nice find 拥有 60 年代记忆的人都没有那里。)

标签: algorithm data-structures syntax hashmap pseudocode


【解决方案1】:

广角括号表示法似乎是一种特殊的列表表示法,或者是在一行中对多个变量的操作(感谢@graybeard 指出)。它甚至可能是某种元组。

这就是〈pmark,cur,ptag〉: MarkPtrType; 在类似 C 的语言中的样子:

MarkPtrType pmark;
MarkPtrType cur;
MarkPtrType ptag;

// or some list assignment notation
// or a tuple

ˆ. 似乎是一种帕斯卡表示法,用于取消引用指针并访问记录中的变量 (https://stackoverflow.com/a/1814936/8524584)。

箭头是APL 赋值符号,也类似于用于赋值的Haskell's do 符号 运算符。

【讨论】:

    猜你喜欢
    • 2014-04-27
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多