Pairs of identifiers

From HaskellWiki
Revision as of 13:27, 13 October 2006 by Lemming (talk | contribs) (moved from Hawiki)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Frequently functions appear in pairs like {{{hOpen}}} and {{{hClose}}}, {{{read}}} and {{{show}}} and so on. Libraries are a lot easier to use if they use a consistent scheme of names for related functions. It is even better if many libraries would share the same scheme. This can be useful both for designing function names and for easy guessing of the counterpart of some function.

Here is a collection of some pairs of identifiers I stumbled on in AmigaOS, MUI, Modula-3, Haskell libraries, and C++ STL. This could be a basis for further discussion.

It would be great if the discussion lead to a more streamlined collection where for instance some duplicates are removed.

|| Create || Delete || || New || Dispose || || Construct || Destruct || || Alloc || Free || || Obtain || Release || Attempt || || Lock || UnLock || || Procure || Vacate || || Forbid || Permit || || Disable || Enable || || Put || Get || || Set || Get || || Write || Read || || Poke || Peek || || Open || Close || || Save || Load || || Load || UnLoad || || Init || Exit || || Setup || Cleanup || || Show || Hide || || Insert || Remove || || Add || Rem || || Push || Pull || || Push || Pop || || Start || Stop || Size || || Begin || End || Length || || First || Last || Number || || Head || Tail || || Front || Back || || Top || Bottom || || Fmt || Lex || || Input || Output ||


Discussion

I think the names {{{read}}} and {{{show}}} in the Prelude of Haskell98 aren't a good choice because the functions can be considered as natural pair but this isn't reflected by their names. Even more {{{read}}} and {{{show}}} sound like some I/O operations which they are not. The choice for the Modula-3 libraries ({{{Lex}}} and {{{Fmt}}}) seems to be more suitable. -- HenningThielemann

I had a nice discussion the other day with someone about the right name for tree nodes and leaves. The constructors I'm using as a result are {{{Branch}}} and {{{Leaf}}}. Anyone feel differently? -- BartMassey