Live data from Hacker News

Viewing profile — nathanrf

nathanrf

HN member
Joined
Mon, May 31, 2021, 2:21 AM UTC
HN karma
250
Public activity
18 items

About nathanrf

No profile information was provided.

Recent public activity

  1. comment
    Comment #45883872

    GADTs let you do similar things in the simplest cases, they just don't work as well for complex constraints. Like, append: Vector n t -> Vector m t -> Vector (n+m) t. With GADTs yo…

  2. comment
    Comment #45883776

    In the style of the linked post, you'd probably define a generic type (well, one of two generic types): type ExactlyStatic : (0 t: Type) -> (0 v: t) -> Type type ExactlyRuntime : (…

  3. comment
    Comment #45859396

    The two commands affect the same account balance, so they don't commute, so these commands conflict. Every EPaxos worker is required to be able to determine whether any two command…

  4. comment
    Comment #45276422

    This is the (pre-print) paper produced from that project - i.e. it is a self-contained, complete description of the work completed so that it can be reviewed, and then cited. The u…

  5. comment
    Comment #45276368

    It is as simple as: the person who contributed the proofs/implementations chose Rocq. I did some small proofs in Dafny for a few of the simpler deciders (most of which didn't end u…

  6. comment
    Comment #45275488

    Here's a high level overview for a programmer audience (I'm listed as an author but my contributions were fairly minor): [See specifics of the pipeline in Table 3 of the linked pap…

  7. comment
    Comment #43335231

    I'm not involved in this rewrite, but I made some minor contributions a few years ago. TSC doesn't use many union types, it's mostly OOP-ish down-casting or chains of if-statements…

  8. comment
    Comment #40790476

    The quoted paragraph is correct as written. E.g. if f: ∀A, B. A -> B -> A Then we have poly type π = "∀A, B. A -> B -> A". The monotype μ = Str -> Int -> Str is a specialization of…

  9. comment
    Comment #39957688

    The paper defines them as programs in a process calculus (which is fairly standard as far as theory for protocols is involved): Definition 1 (Asserted protocols) Asserted protocols…

  10. comment
    Comment #39895222

    Feral != Native. There are no honeybee species native to North America; all honeybees, including the feral ones, are descended from colonies imported from Europe (e.g. the "Western…

  11. comment
    Comment #39889872

    It is a good thing that cppfront lets you do that, then! Cppfront generates #line pragmas which tell the generated .cpp file which source lines to "blame" for each piece of generat…

  12. comment
    Comment #39889827

    Unfortunately, C++ uses ++ and -- for iterators, many of which cannot reasonably implement += or -=. This distinction is baked into the type system to tell whether or not an iterat…

  13. comment
    Comment #37911389

    The distortion comes from trying to map R^2 onto the surface of the mesh, since they have different curvature, so they only "match" near the origin. But the random-walk algorithm d…

  14. comment
    Comment #37886335

    `const`-as-comment is specifically limited to pointers and references - `const` on objects definitely does change semantics (it is always UB to attempt to modify a `const` object).…

  15. comment
    Comment #37885172

    That is saying exactly the same thing that I said; the qualification of the pointer is irrelevant; you get UB when modifying a const object . In the code snippets above, int x; // …

  16. comment
  17. comment
    Comment #37884609

    In C and C++, `const` on pointers/references is basically just a comment to programmers - it is part of the type, but doesn't "mean" anything to the abstract machine; the rules don…

  18. comment
    Comment #37883897

    It is unsound to transmute `&'a T` into `&'static T`, but it is not UB - as long as all of the subsequent uses of the transmuted reference obey the "real" lifetime of the original …