簡體   English   中英

Racket 定義的漸進式 lambda 演算的“重復”語法?

[英]The `repeat` syntax of gradual typed lambda calculus defined by Racket?

我不明白以下代碼片段中repeat (jlh)的含義來自一篇關於漸進式lambda演算的論文,算法是快速排序,也許知道算法的人可以猜到語法定義:

在此處輸入圖像描述


編輯:根據我目前的理解,算法有錯誤,應該是: [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/s語言/語法.rkt#L126 在此處輸入圖像描述

我是函數式編程/Racket/GTLC+ 的新手,抱歉,我已盡力描述我的問題...

  1. repeat(jlh)的含義是for j in a[l]...a[h] (包括)。
  2. [i: Int (box (- h 1))]的含義是用值operator-(h, 1)初始化一個名為i create at heap 的Int變量。
  3. 算法出錯: [i: (Ref Int) (box (- h 1))] ,我認為應該是[i: (Ref Int) (box (- l 1))] ,原因:I將h視為高端,當滿足條件時, repeat循環將增加i ,這可能導致i > h ,這是荒謬的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM