Синтаксис `repeat` постепенного типизированного лямбда-исчисления, определенный Racket? - PullRequest
0 голосов

Я не понимаю, что означает repeat (j l h) в следующем фрагменте кода из статьи о постепенном типизированном лямбда-исчислении, алгоритм является быстрой сортировкой, возможно, определение синтаксиса может быть угадано кем-то, кто знает алгоритм:

enter image description here


Редактировать : Насколько я понимаю, алгоритм имеет ошибку, он должен быть: [i: (Ref Int) (box (- l 1))], т. Е. h должно быть l.


ссылка на статью: https://dl.acm.org/doi/10.1145/3314221.3314627#sec -supp

Исходный код их компилятора Grift написан на .rkt так что я надеюсь, что если кто-то знает о Racket, то может помочь, синтаксис повторения определен здесь: https://github.com/Gradual-Typing/Grift/blob/95c56d94b38e9b33adf7a662c6d7768430d977da/src/language/syntax.rkt#L126 enter image description here

Я новичок в функционале Программирование / Ракетка / GTLC +, извините, я изо всех сил старался описать свой вопрос ...

1 Ответ

0 голосов
  1. Значение repeat(j l h) равно for j in a[l]...a[h] (включительно).
  2. Значение [i: Int (box (- h 1))] инициализирует Int переменную с именем i create в куче со значением operator-(h, 1) .
  3. В алгоритме есть ошибка в строке: [i: (Ref Int) (box (- h 1))], я думаю, это должно быть [i: (Ref Int) (box (- l 1))], причина: я считаю h старшим, а repeat l oop будет увеличиваться i когда условие выполнено, это может привести к i > h, что абсурдно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...