Yudai Tanabe
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    PLDI 2024 Response # Response We thank the reviewers for their close reading and insightful comments. In what follows, we first give an overview of the response, which summarizes the reviewers' concerns and questions and briefly explains how we will address them. We then list changes we plan to make in the revision and respond to individual concerns, questions, and comments in detail. # Overview - Reviewer A asks whether we can ameliorate the exponential blow-up of coercions incurred by the translation to the space-efficient calculus. We expect it would be possible, but there would be a trade-off between static coercion size and runtime cost. - Reviewer B asks what is lost in our calculus other than the full parametricity. We find no other example of the loss. The property Reviewer B mentioned as an example, which is one case of the dynamic gradual guarantee (a.k.a., graduality), does not hold even if we retain the full parametricity and instead give up space efficiency, as discussed by Toro et al. [2019]. - Reviewer B asks whether there is a hope for mechanization. Siek and Chen [JFP 2021] mechanized $\lambda$S, a simply-typed space-efficient coercion calculus. We could extend that mechanization to polymorphism, but it is challenging and beyond the scope of the present work. - Reviewer C seems to ask what the relaxed parametricity means and why the unbounded number of casts matters in practice. The relaxed parametricity means that the parametricity holds only when polymorphic values are instantiated with non-dynamic types. The unbounded number of casts matters in programs with quasi-tail-recursive functions as the even and odd functions presented in the paper (although they don't use parametricity). - Reviewer C asks whether there are more relaxed solutions to space efficiency. There can be (see below for details), but we believe the proposed approach strikes a good balance between simplicity and what is sacrificed for space efficiency. Note that the solution mentioned by Reviewer C does not lead to space efficiency because space efficiency is a property ensuring that the size of any coercion appearing at run time is _statically_ bounded by some static information of the program. - Reviewer D is concerned with the practicality of the proposed approach. Although we admit the importance of evaluating the design of our space-efficient coercion calculus, in this paper, we are interested in a theoretical question of whether it is possible to gain space efficiency in the presence of polymorphism without giving up parametricity completely, which is a key question that influences the designs and implementations of polymorphic gradually typed languages. We proved it is possible by proposing a novel coercion form $\forall X. s ,\!, t$. Perhaps the design of coercions in this form seems straightforward due to its simplicity, but we believe its discovery and the proof work with it (how it ensures space efficiency and the correctness of the translation from the calculus without it to the one with it) are not straightforward. We consider the development of an efficient implementation based on the idea presented in the paper, as well as its practical evaluation, as a next step. Reference: - [Siek and Chen, JFP 2021] Jeremy G. Siek, Tianyu Chen. Parameterized cast calculi and reusable meta-theory for gradually typed lambda calculi. J. Funct. Program. 31: e30 (2021) # Major Change List for Revision We plan to revise the paper as follows. - We will add a discussion about design decisions. Specifically, we will discuss (1) whether we can relax the exponential blow-up of coercions incurred by the translation and (2) other (more complicated) potential approaches to space efficiency. - We will improve the discussion of why accumulating (an unbounded number of) casts can be problematic. - We will add a discussion about the work of Kuhlenschmidt et al. [PLDI 2019]. We will also address the remaining issues (such as typos and the readability improvement) posed by the reviewers. # Detailed Response ## Reviewer A > p. 13 > > Can you ameliorate the exponential blow-up by pushing the ",," to the leaves of the tree, analogous to the choice calculus of Erwig et al.? Yes, we think so. The current translation produces a coercion whose size may grow exponentially with respect to the size of the original source coercion. By adopting the suggested change, the size of the produced coercion only grows exponentially with respect to the number of type variables appearing in the original coercion. However, we might need to pay the cost at run time. In the current definition ``,,`` only appears immediately under $\forall$ as $\forall X s ,\!, t$. A benefit of this form is that, when a type abstraction with coercion $\forall X s ,\!, t$ is applied to a type argument $A$, what the runtime system needs to do is just to choose either $s$ or $t$ according to $A$. However, when we adopt the suggested change, ``,,`` may not be placed immediately under $\forall$ as it should be in the leaf positions in a type. Then, when facing a type application, the runtime system would need to find ``,,`` in the leaf positions by traversing the type, which is more costly. Also, the definition of the meta-level coercion composition would be (much) more involved. Perhaps we could achieve an efficient implementation that resolves these issues, but whether and how it is possible is left open. > Related Work > > I'd recommend adding a brief discussion of the work of Kuhlenschmidt et al. [PLDI 2019], who show how to compile space-efficient coercions. Thanks for the suggestion. We will discuss the work of Kuhlenschmidt et al. [PLDI 2019] in the revision. Briefly speaking, their coercion calculus involves coercions for tuples, references, vectors, and recursive types, but it does not support parametric polymorphism. It is an interesting direction to extend their language implementation with polymorphism. > p. 3 > > "the coercion calculus λC of Henglain [1994]; Siek et al. [2015b, 2021]" -> "the coercion calculus λC of Henglain [1994] and Siek et al. [2015b, 2021]" > p. 6 > > "suggest that that part of code not be ready (yet)" -> "suggest that part of the code is not yet ready" > p. 12 > > "which case to happen at run time" -> "which case will happen at run time" Thanks for pointing out! We will fix them. ## Reviewer B > The loss of parametricity for *-type applications is one consequence that you discuss. Are there any others? For example, couldn't it now be that a program initially annotated with * for a type application succeeds, but when annotated with a more precise type fails at runtime? As described in the overview section, we have not found other instances of the loss caused by our approach. For the example pointed out by the reviewer (it is covered by the dynamic gradual guarantee), our polymorphic coercion calculus is closely related to GSF, a polymorphic gradually typed language proposed by Toro et al. [2019]. GSF satisfies the parametricity but not the dynamic gradual guarantee. Especially, the property specified by the reviewer does not hold in GSF (Corollary 9.2 in [Toro et al. 2019]). Therefore, we think that even if we give up space efficiency and retain the full parametricity (such a change results in the coercion calculus proposed by Ozaki et al. [2021]), the dynamic gradual guarantee, nor the property suggested by the reviewer, would not hold. > I was confused for a bit in Section 3.5: You say > >> our logical relation relates V1 and V2 at ∀X.A if either of the following holds: for any types B1 and B2, (the one-step reduction results of) type applications V1 B1 and V2 B2 ... > > I was expecting B1, B2 to be qualified so that neither of them at *. And indeed it is so, from looking at your supplement, you have: > >> W ′ .Σ1 ▷ V1 B1 −→ W ′ .Σ1, α := B1 ▷ M1hcoerce+ α (ρ(A)[X := α])i ∧ > >> W ′ .Σ2 ▷ V2 B2 −→ W ′ .Σ2, α := B2 ▷ M2hcoerce+ α (ρ(A)[X := α])i > > in a premise, forcing both of them to be non-*. It would help to say that in the main paper. The paper uses the Blackboard bold font (typeset using \mathbb in our TeX source) to specify the types B1 and B2 (that is, they are displayed as $\mathbb{B}_1$ and $\mathbb{B}_2$ in the paper). As explained in the first paragraph of Section 3.1, they mean non-* types. Therefore, as expected by the reviewer, we intend them to be non-*. To improve the readability, the revision will rephrase that part as "for any _non-dynamic_ types $\mathbb{B}_1$ and $\mathbb{B}_2$, ...". > That said, while I appreciate the detailed and comprehensive 202 page supplement, it's pretty much impossible to check: any hope of this being mechanized? We hope this question is addressed in the overview section. > - Line 805: Typo ... the -1 is not in the exponent Thank you! We will fix it. ## Reviewer C > - The relaxed parametricity needs more discussion. > - This paper needs more examples or case studies demonstrating the practical usefulness of the calculus. > This paper only briefly explains the relaxed parametricity. It is quite hard to internalize what that exactly means: how useful is the calculus in practice and conversely, does the unbounded number of casts really matters in practice? Perhaps additional examples or a suite of case studies showing what's allowed and not allowed by the calculus would make it more concrete. It seems that there are two different concerns, which are mixed: (1) what the relaxed parametricity would mean and (2) how the unbounded number of casts matter in practice. The relaxed parametricity means the behavior of polymorphic values is independent of how they are instantiated (i.e., the parametricity holds) as far as they are applied to non-dynamic types. One of its benefits is that we can still retain "mostly" free theorems as Theorem 3.5 in the paper. Free theorems are useful for, e.g., optimization and program reasoning. The relaxed parametricity requires type arguments appearing in the free theorems to be non-dynamic (see Theorem 3.5, for instance), but we believe there are many cases where such mostly free theorems can be applied (as in fully statically typed parts of gradually typed programs). The importance of addressing the unbounded number of casts is that we can ensure that _quasi-tail-recursive functions_ (functions that look tail-recursive by ignoring casts) can be executed without causing a stack overflow. The even and odd functions are such an example, although they don't use polymorphism. It's also been pointed out that accumulated casts and coercions significantly lower the performance of gradually typed programs. Herman et al. (followed by Siek et al.) solved this problem for a simply typed setting, but it's been a long-standing open question if (and to what degree) the idea can be extended to (parametric) polymorphism. > - It is unclear if the restriction is necessary and whether there are more relaxed restrictions possible. > For space efficiency, the proposed restriction is sufficient. Is it unclear if it is necessary. Some discussions on other possible more relaxed solutions would strengthen the result. For example, a naive solution is to detect the case of the infinite casts at runtime and do something about it then. Would such a runtime solution work and be more parametric than the proposed solution? Thanks for the suggestion. To consider another solution, let us recall the point of the impossibility of a space-efficient implementation with parametricity. As explained at the beginning of Section 3, it is that there exists a program that generates a coercion application $M \langle \alpha !\rangle \cdots \langle \alpha !\rangle$ with $n$ coercions for an arbitrary number $n$, and such a coercion application happens only when the type name $\alpha$ is associated with the dynamic type $\star$. This fact indicates that no problem happens if the body $M$ of a type abstraction $\Lambda X. M$ does not coerce a value of $X$ into $\star$ (that is, does not apply coercions of the form $\langle X! \rangle$). Therefore, we could give a space-efficient coercion calculus where a type application $(\Lambda X.M) A$ generates a type name (i.e., the parametricity is enforced) only when the type argument $A$ is non-dynamic or the body $M$ of the type abstraction does not coerce a value of $X$ into $\star$. This approach relaxes the restriction on the calculus proposed in the paper in that more programs can benefit from parametricity. However, to implement it, we would need some device to detect (either statically or dynamically) whether the bodies of type abstractions perform coercions from type variables to $\star$. We think it is quite challenging (even if possible) to design a coercion calculus equipped with such a device and as simple as the calculus proposed in the paper. > - There is no implementation of the type system. > Finally, it is a pity that the system is not implemented. Otherwise, one could building a large set of tests to empirically evaluate the design. As described in the overview section, the present work focuses on the theoretical aspects of the space-efficiency problem in polymorphic gradual typing, and we consider implementation and its evaluation as a next step. > The notion for coercions in the presence of a type substitution is a bit hard to follow, especially for people who are not experts in gradual typing. A few more concrete examples and high-level explanations would be helpful. We are not quite sure which part the reviewer is referring to. Maybe the definition of type substitution? If the point of confusing the reviewer is made clear, we'll be happy to add a few examples to help understanding. ## Reviewer D > That being said, the presented formalisms seem like mostly straightforward extensions of previous calculi and on their own are not too technically interesting. Further, the formal aspects of gradual typing have already been thoroughly explored from pretty much every angle, so I think any new work needs to focus more on practical issues in order to move the state of the art forward. Thus, I was disappointed that, with the emphasis on a practically important issue such as space efficiency, the submission did not have any actual evaluation of its design decisions or even any way to run such an evaluation. Without looking at a real language with a real code base, one can only speculate on whether the insights of the submission are useful or not. Thus, without at least some practical evaluation of the design choice, I cannot recommend acceptance of the submission. As described in the overview section, the present work aims to study the theoretical aspects of the space-efficiency problem in the presence of polymorphism. In fact, our work sheds new light on the formal aspects of polymorphic gradual typing. This opinion appears to be more or less in agreement with some other reviewers because Reviewer A wrote > Ozaki et al. [2021] showed that it is impossible to simultaneously achieve space efficiency and parametricity for the λC∀ calculus, which many of us took to be the end of the story. and Reviewer B wrote > It tackles a hard problem that many have looked at for the past decade or so. Furthermore, we think introducing the new form $\forall X. s,,t$ of coercions is a non-trivial extension. We agree with Reviewer D about the importance of evaluating the design decisions from a more practical viewpoint. However, it is beyond the scope of the present work and left for future work. > typos > > p1 c1 , c2 two commas? > p6 "that that" > p8 "defined in straightforwardly" > p17 "sematics" For the first one, we cannot find it in the paper. It would be appreciated if the reviewer could point out the line number. We will fix the remaining in the revision. Thanks! --- 以下メモ --- # Review #478A Overall merit 5. Strong accept Reviewer expertise 4. Expert Paper summary The paper shows how to achieve space efficiency in a gradually-typed programming language with generics while only making a minor restriction regarding parametricity. Generics behave according to relational parametricity when they are instantiated with any type other than ★ (the unknown or dynamic type). The paper presents a coercion calculus for this language that gives a straightforward definition of its operational semantics and then the paper presents a space-efficient version of the coercion calculus, following the style of Siek, Thiemann, and Wadler (2015). The paper includes proofs of parametricity, space-efficiency, and that the translation to the space-efficient calculus preserves typing and semantics. Comments for authors Evaluation Ozaki et al. [2021] showed that it is impossible to simultaneously achieve space efficiency and parametricity for the λC∀ calculus, which many of us took to be the end of the story. So it was a pleasant surprise to read this paper and find out that parametricity and space-efficiency can be achieved with just one minor restriction! The language does not perform runtime sealing (needed for parametricity) when a generic is instantiated with the type ★, but does so instantiations at any other types. The technical development is solid and clearly explained. Comments on details p. 3 "the coercion calculus λC of Henglain [1994]; Siek et al. [2015b, 2021]" -> "the coercion calculus λC of Henglain [1994] and Siek et al. [2015b, 2021]" p. 6 "suggest that that part of code not be ready (yet)" -> "suggest that part of the code is not yet ready" p. 12 "which case to happen at run time" -> "which case will happen at run time" p. 13 Can you ameliorate the exponential blow-up by pushing the ",," to the leaves of the tree, analogous to the [choice calculus of Erwig et al.](https://eric.walkingshaw.net/projects/choice-calculus.html)? - 多分根本的に無理で、コストを別のフェーズに押し付けるだけ。 - 理由悦明... - See coercion comp. & coercion Trans. - 最適化の一案:Lazyに展開できないの? - |c|をメタオペレーションではなくcoercionのコンストラクタとして持っておく - その場合;;は定義できるか?が問題 - 最適化の一案:|\X.c| = \X. ~ ,, ~について、cのbodyの全てをコピーする必要はないかもしれない? - トレードオフ: - メモリ削減:choice pointを葉に押し付ける - 実行速度:(平均的にはおそらく)遅い、型代入の度に葉をそぎ落とすので - 合成も... 結局全ての代入のパターンを記録していないといけない。木全体で面倒見るか否か - 何に対して指数が変わる - 出てくる型変数に対して...など Related Work I'd recommend adding a brief discussion of the work of Kuhlenschmidt et al. [PLDI 2019](https://dl.acm.org/doi/abs/10.1145/3314221.3314627), who show how to compile space-efficient coercions. - 多相性の採用の違いあり - 議論は追加してもいいかも # Review #478B Overall merit 4. Accept Reviewer expertise 3. Knowledgeable Paper summary The author's study the problem of gradual typing in a polymorphic setting and aim to give a space-efficient implementation. Prior results note that this is a hard problem, since type abstraction enforced with dynamic seals can lead to towers of uncancellable coercions. The solution offered here is simple, intuitive, and a compelling compromise: give up on parametricity only when type abstractions are instantiated with * but get space efficiency. Comments for authors This is a great paper! It tackles a hard problem that many have looked at for the past decade or so. It explains the problem clearly and then comes up with a clean and elegant solution. It's a great observation that type applications at * are the root and only cause of trouble, rather than the fresh name creation. The technical setup of retaining conceal/reveal for the parametricity proof and then removing them for the space efficiency part was interesting. The loss of parametricity for *-type applications is one consequence that you discuss. Are there any others? For example, couldn't it now be that a program initially annotated with * for a type application succeeds, but when annotated with a more precise type fails at runtime? - Another property: Gradual garanteeとかどうなる? - Toro et al.の段階で成り立たないので多分成り立たない - Prametricity無くなってなぜか回復してる可能性もあるが別の要因 - argument がdynかどうかでしか変わってないので、それ以外のおおまかな性質は変わってないと予想される(たしかめてないけど I was confused for a bit in Section 3.5: You say our logical relation relates V1 and V2 at ∀X.A if either of the following holds: for any types B1 and B2, (the one-step reduction results of) type applications V1 B1 and V2 B2 ... - ちゃんと書いてますが、わかりやすく書き直します I was expecting B1, B2 to be qualified so that neither of them at *. And indeed it is so, from looking at your supplement, you have: W ′ .Σ1 ▷ V1 B1 −→ W ′ .Σ1, α := B1 ▷ M1hcoerce+ α (ρ(A)[X := α])i ∧ W ′ .Σ2 ▷ V2 B2 −→ W ′ .Σ2, α := B2 ▷ M2hcoerce+ α (ρ(A)[X := α])i in a premise, forcing both of them to be non-*. It would help to say that in the main paper. That said, while I appreciate the detailed and comprehensive 202 page supplement, it's pretty much impossible to check: any hope of this being mechanized? - JeremyがAgdaか何かでやってる? - [Github](https://github.com/jsiek/gradual-typing-in-agda?tab=readme-ov-file) - parametricityが大変そうだよね - 上をベースに考えることはできるかもしれないけど...大変かつこの仕事の範囲を超える Line 805: Typo ... the -1 is not in the exponent # Review #478C Overall merit 3. Weak accept Reviewer expertise 2. Some familiarity Paper summary This paper presents a gradual type system with a restricted form of polymorphism so that the space needed for casts at run time is bounded. The key observation is that the dynamic type * needs to be inspected at run time to prevent the generation of infinite number of casts. As a result, the system only satisfies a relaxed form of parametricity. This paper formally defines a coercion calculus and a corresponding space-efficient version of the calculus, proves the relation between these two calculus, and establishes relaxed parametricity theory and space efficiency. Comments for authors Strengths: This paper presents a fundamental result in space efficiency of gradual polymorphic types. The restriction of not generating type names for * is clever and well explained. This paper proves key theorems relating the two calculus and the space bounds. Weaknesses: The relaxed parametricity needs more discussion. It is unclear if the restriction is necessary and whether there are more relaxed restrictions possible. This paper needs more examples or case studies demonstrating the practical usefulness of the calculus. There is no implementation of the type system. This paper is nicely written. The background and motivation sections are enjoyable to read. The main insight that generating type names for * is causing the issue for the corner case of unbounded casts makes intuitive sense. This paper builds out the formalism to show that by not doing the above, the calculus has bounded number of casts. This paper only briefly explains the relaxed parametricity. It is quite hard to internalize what that exactly means: how useful is the calculus in practice and conversely, does the unbounded number of casts really matter in practice? Perhaps additional examples or a suite of case studies showing what's allowed and not allowed by the calculus would make it more concrete. - どんな例を付ければ納得するのか?(... matter in practice?) - polymorphism recursion? The notion for coercions in the presence of a type substitution is a bit hard to follow, especially for people who are not experts in gradual typing. A few more concrete examples and high-level explanations would be helpful. For space efficiency, the proposed restriction is sufficient. Is it unclear if it is necessary. Some discussions on other possible more relaxed solutions would strengthen the result. For example, a naive solution is to detect the case of the infinite casts at runtime and do something about it then. Would such a runtime solution work and be more parametric than the proposed solution? - 頓珍漢な指摘。論文中のspace-efficiencyと関係ない - *Infinite* castの検出法、とは - 検出できたところで、動かしてみてinfinite castがあったからといってなにか出来るとも思えない - ただ、プログラムのコードを解析するとか型システムをリッチにして型代入の有無の解析をすれば、ある意味制限を緩めることはできるかも - そこまでのことはこの研究を超える範囲で、我々は形式化は単純な今の形式がいいと思っている Finally, it is a pity that the system is not implemented. Otherwise, one could building a large set of tests to empirically evaluate the design. - 理論にフォーカスしてるから実装はout-of-focus - 実践的な実装とかその上での実験は次の研究でやります # Review #478D Overall merit 1. Reject Reviewer expertise 4. Expert Paper summary The submission presents a potential solution to the space-efficient gradual-typing-with-polymorphism problem. More specifically, it proposes sacrificing full parametricity---where space efficient gradual typing has been shown to be impossible due to seals which hampers the ability to combine coercions---for "mostly parametric polymorphism", which disallows applying polymorphic values to the dyn type. With this relaxed requirement, previous techniques---a coercion calculus from Siek et al, and seals from Ahmed et al. to enforce parametricity at run time---can be mostly reused and extended with a few more rules to be made both polymorphic and space efficient. Formally, the submission models its ideas via a polymorphic calculus for the surface language with straightforward coercions, a space-efficient version, and a translation from the former to the latter. Finally, submission proves all the required properties that would be expected like soundness. Comments for authors I'm a big fan of gradual typing. It's already one of the biggest success stories to emerge from academic PL research in recent history, but some important practical issues are standing in the way of even more adoption. Thus I was pleased to see that someone is working on new ideas in this space, and in particular focusing on practical issues. Further, I agree with the main insight of the submission, which is that a dyn type argument probably doesnt need to be parametric to be useful, and the submission thoroughly develops the idea with formalisms that seem correct. That being said, the presented formalisms seem like mostly straightforward extensions of previous calculi and on their own are not too technically interesting. Further, the formal aspects of gradual typing have already been thoroughly explored from pretty much every angle, so I think any new work needs to focus more on practical issues in order to move the state of the art forward. Thus, I was disappointed that, with the emphasis on a practically important issue such as space efficiency, the submission did not have any actual evaluation of its design decisions or even any way to run such an evaluation. Without looking at a real language with a real code base, one can only speculate on whether the insights of the submission are useful or not. Thus, without at least some practical evaluation of the design choice, I cannot recommend acceptance of the submission. - choiceの部分は新規性で、しかもこの拡張によりいろんな性質がキチンと保たれるか?という問は全然straighforwardではない - 非自明な点 - bisimulation - coercion choiceがcompとかtransとかの既存の定義にsoundに整合するか(証明に100+pages) - 理論にフォーカスしてる実践的な実装とかその上での実験は次の研究でやります typos p1 c1 ,, c2 two commas? p6 "that that" p8 "defined in straightforwardly" p17 "sematics"

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully