Неизвестный синтаксис в исследовательской статье IBM

Я читаю исследовательскую работу «Высокопроизводительные динамические хеш-таблицы без блокировки». и наборы на основе списков (Магед М. Майкл), и я не понимаю этот синтаксис псевдокода, который используется для примеров.

В частности, эти части:

〈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)

ОБНОВЛЯТЬ:

  • ˆ. кажется нотацией Паскаля для разыменования указателя и доступа к переменной в записи (https://stackoverflow.com/a/1814936/8524584).
  • Стрелка похоже на Haskell, похожую на оператор нотации do для присваивания, который присваивает результат операции переменной. Это немного странно, так как статья почти на десять лет старше, чем Haskell. Вероятно, это какая-то нотация, которую Haskell также позаимствовал. (https://en.wikibooks.org/wiki/Haskell/do_notation#Translating_the_bind_operator)
  • 〈a, b〉 — это математическая векторная запись внутреннего произведения вектора (https://mathworld.wolfram.com/InnerProduct.html)

Вы можете сами ответить на свой вопрос. Я второй «направление заимствования» между псевдокодом и APL (и, почти четверть века спустя, Haskell). Я сомневаюсь, что внутренний продукт предназначен; Я считаю, что это специальная нотация списка, похожая на Python, где фигурные скобки можно опускать чаще, чем в low, high = 2, 8.

greybeard 25.12.2020 14:24

@greybeard хорошая находка об отношении APL к оператору . Что касается синтаксиса скалярного произведения, маловероятно, что оно действительно является скалярным произведением, поскольку в векторе более двух элементов. Я не уверен, что понимаю вас в нотации специального списка. Не могли бы вы привести пример на Python?

bezbos. 25.12.2020 15:39

Гм, low, high = 2, 8 был примером Python, и он такой же, как low, high = [2, 8] или [low, high] = [2, 8], и почти такой же, как low, high = (2, 8).

greybeard 25.12.2020 15:45

(nice find У кого есть воспоминания из 60-х, тот там не был.)

greybeard 25.12.2020 15:47
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
4
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 , также похожая на оператор присваивания do в Haskell.

Другие вопросы по теме

Похожие вопросы