[erlang-questions] Process scope variable
Richard A. O'Keefe
ok@REDACTED
Fri Feb 20 01:26:16 CET 2015
On 20/02/2015, at 2:16 am, Imants Cekusins <imantc@REDACTED> wrote:
>> "ok, a method called 'fred'. Wonder what it does?"
>
> well let's just say if I understand program flow, this is not a
> problem.
If it is unfamiliar code, then by definition I don't understand
the control flow.
Last week, a test case failed in my Smalltalk system.
I had refactored A -> C to A -> B -> C. This was in most
respects a nice win -- half of C had disappeared -- and I'd
been using the new C for a while. But the new test case
used a different constructor, and suddenly it blew up in
a strange way. It took me an hour to disentangle the
control flow, and I had written every line of it all.
There were actually two bugs.
(1) a method was being called during construction when it expected
to be called after. The control flow had changed.
(2) a method override that wasn't needed now that B was there
still existed and was being called. A control flow should have
changed but hadn't.
As Dijkstra pointed out back in the 60s, when we have to play
computer in order to figure things out, we're in trouble.
> If I do not understand it, long explicit signatures are not
> of much help.
That's not my experience.
In particular, a function
foo(State0, Input) -> {State1, Output}
is a function I can understand in isolation, and I can use
type checking to constrain its uses. A function
foo(Pid, Input) -> Output
is something I can't understand without understanding a
great deal about the process Pid refers to, without any
type/state system telling me about that.
More information about the erlang-questions
mailing list