Grift icon indicating copy to clipboard operation
Grift copied to clipboard

Type-based-casts and coercions are not equivalent

Open LuKuangChen opened this issue 6 years ago • 1 comments

The blame labels are different.

$ grift --type-based-casts p1.grift 
$ ./a.out 
Implicit cast in ascription on expression at p1.grift:2:2
$ grift --coercions p1.grift 
$ ./a.out 
Implicit cast in ascription on expression at p1.grift:1:1

Here is the content of p1.grift

((ann
  (ann
   (ann
    (lambda ([x : (Tuple Int Int)]) x)
    ((Tuple Int Int) -> (Tuple Dyn Dyn)))
   ((Tuple Int Int) -> (Tuple Dyn Bool)))
  ((Tuple Int Int) -> (Tuple Bool Bool)))
 (tuple 1 2))

LuKuangChen avatar Sep 29 '19 20:09 LuKuangChen

This seems like a fundamental problem with the way tuple coercions are currently implemented. Good to know! We will need to talk about this on Tuesday.

akuhlens avatar Sep 30 '19 14:09 akuhlens