Radek Szymczyszyn

Results 186 comments of Radek Szymczyszyn

Hmm, what about `pid(_,_,_)`? ```erlang 16> merl:quote("pid(0,0,0)"). {call,1, {atom,1,pid}, [{integer,1,0},{integer,1,0},{integer,1,0}]} 17> merl:quote("pid(_,_,_)"). {call,1,{atom,1,pid},[{var,1,'_'},{var,1,'_'},{var,1,'_'}]} 19> io:format("~ts\n", [(erl_pp:expr(merl:quote("pid(_,_,_)")))]). pid(_, _, _) ``` `self()` would work, but it suggests some specific pid, which...

Indeed, but exactly the same example would be incorrect with `Q = self()`. I think `pid(_,_,_)` with the wildcards could be interpreted as "any pid", which IMO makes sense. I'm...

I think literally ``` {call,1,{atom,1,pid},[{var,1,'_'},{var,1,'_'},{var,1,'_'}]} ``` or ``` {call,1,{atom,1,self},[]} ``` are the best options (in my personal order of preference).

Up until some point, I don't remember which version exactly, it was not possible to paste into the shell terms which the shell could itself print (pids, refs, and ports)....

It seems `self()` is the least controversial for all of us, so maybe that's the one to use?

Apparently, this false negative is quite common in real world code. It pops up in Gradualizer results on two out of three OTP stdlib files which https://github.com/vrnithinkumar/ETC was benchmarked on:...

This is quite a common pattern in general. Examples in Gradualizer itself: ``` $ make gradualize | grep "cannot be reached" ebin/constraints.beam: The clause on line 43 at column 1...

It's possible to tell from the pattern if it matches on a fixed-size list or on a list of any length - this could be used to make the refinement...

> I think we should avoid extending the type language seen by the user. We do need to distinguish between list patterns that exhausts a list type and one that...