matijapretnar/eff

Effects Are Missing from Types

Opened this issue · 1 comments

It seems that effects are missing from types.

Using the Eff REPL, when loading a file containing:

effect Whatever : int

let foo x = let bar y = perform Whatever in bar ;;

The REPL produces this output:

val foo : 'a -> 'b -> int = <fun>

It seems to me that there are missing effects on the function type.
I would expect the part !{Whatever} to be there to show that the function foo performs an effect when applied to its second argument.

Indeed, we were promising this for years! But it is more or less done now. In fact, if you use #type (well, now that it works - #84), you can already see some of it. However, the display is still broken: we use internal indices to differentiate parameters instead of renumbered ones that are easier on the eyes and I do not know where the parameter constraints have disappeared.