[Swan-dev] naming of functions that return something

D. Hugh Redelmeier hugh at mimosa.com
Sat May 8 20:18:16 UTC 2021


[Feel free to ignore this philosophical exploration.]

Algol distinguishes procedures and functions.  Let's use that terminology.

A procedure call is a kind of statement.  Statements are composed by 
sequential execution (left to right, top to bottom).  So it is natural to 
name something like this:

	convert_cat_to_dog(cat, dog);

or (we won't discuss which parameter order is best)

	convert_cat_to_dog(dog, cat);

A function call is composed in functional notation.  Reading 
inner-to-outer is right-to-left.  So this is more natural.

	felix = cat_from_dog(fido)

I'm claiming that htonl would be more natural as nfromhl.

I'm writing this to try to explore why I found the name 
same_chunk_as_in_pbs jarring.

  extern pb_stream same_chunk_as_in_pbs(chunk_t chunk, const char *name);

As I first read it, and even now, I read "as_in" as a unit (a chunk in 
psychological terms).  That made this a "garden path" name.  Oh, English.

I'm not sure what "same" is implying.  Perhaps that the in_pbs doesn't 
have its own copy of the memory.

I might have called this function
	in_pbs_for_chunk

I'm a little bit surprised by a pbs being returned from a function.  When 
I conceived of them, I didn't think of them as copyable.  Perhaps they 
were linked together.  But this turns out to be OK with the current 
implementation.


More information about the Swan-dev mailing list