1. 28 Apr, 2017 1 commit
  2. 12 Apr, 2017 1 commit
  3. 24 Feb, 2017 1 commit
  4. 15 Feb, 2017 1 commit
  5. 19 Jul, 2016 1 commit
  6. 15 Mar, 2016 3 commits
  7. 06 Mar, 2016 1 commit
  8. 01 Mar, 2016 1 commit
  9. 25 Feb, 2016 1 commit
  10. 09 Feb, 2016 1 commit
  11. 11 Jan, 2016 2 commits
  12. 10 Jan, 2016 1 commit
    • Andrei Paskevich's avatar
      Mlw: allow non-ghost expressions to return (partially) ghost values · 4c79348a
      Andrei Paskevich authored
      this is still work in progress and no testing was done so far.
      
      Highlights of this commit:
      
      - "(ghost 42, 15)" is now a non-ghost expression that can be returned
        from a function and/or matched against a "(ghost x, y)" pattern.
        Only the tuple constructor and direct pattern matching are magical:
        "let z = (ghost 42, 15) in ..." still makes z ghost, and therefore
        "snd (ghost 42, 15)" is ghost, too.
      
      - "if c then e1 else ghost e2" and "let z = e1 in ghost e2" are now
        non-ghost expressions with a ghost result. This means that e1 may
        have visible effects. Of course, if e2 raises exceptions, the whole
        expression is ghostified. Contamination is still done when possible,
        that is, when the contaminated expression has no visible effects.
      
      - "let ghost x = e1 in e2" no longer ghostifies e1.
      
      - "let f (ghost x) = ... in f e1" no longer ghostifies e1.
      
      - new syntax: variables in program patterns may be marked ghost.
        In particular: "let x, ghost y = ...".
      
      - new syntax: the function result type may be written as a partially
        ghost tuple: "val f ... : ghost int" or "any (int, ghost bool)".
        The ghostness annotation is required for top-level and recursive
        functions.
      
      - exceptions can carry partially ghost tuples (API only, WIP)
      4c79348a
  13. 18 Sep, 2015 1 commit
  14. 07 Jul, 2015 1 commit
  15. 05 Jul, 2015 1 commit
  16. 02 Jul, 2015 1 commit
  17. 18 Jun, 2015 1 commit
  18. 09 Jun, 2015 1 commit
  19. 06 Jun, 2015 1 commit
  20. 28 May, 2015 1 commit
  21. 21 May, 2015 1 commit
  22. 29 Apr, 2015 1 commit
  23. 20 Mar, 2015 1 commit
  24. 19 Mar, 2015 1 commit
  25. 22 Jan, 2015 2 commits
  26. 21 Jan, 2015 1 commit
  27. 19 Jan, 2015 2 commits
  28. 18 Jan, 2015 1 commit
  29. 16 Jan, 2015 1 commit
  30. 12 Jan, 2015 1 commit
  31. 21 Dec, 2014 2 commits
  32. 19 Dec, 2014 1 commit
  33. 11 Dec, 2014 1 commit
  34. 10 Dec, 2014 1 commit