[Haskell-cafe] Advantages of using qualified names and a uniform
naming convention
Brian Hulley
brianh at metamilk.com
Mon Sep 4 16:00:55 EDT 2006
Henning Thielemann wrote:
> On Mon, 4 Sep 2006, Brian Hulley wrote:
>> -- So related things appear alphabetically together...
>> empty? :: Set a -> Bool
>> empty :: Set a
>
> I think the separation of alpha-numeric characters and other symbols
> simplifies things, and shall be preserved.
>
> In Mathematica 'is' functions are denoted by trailing 'Q' for
> 'Query'. May this be an option?
Or possibly 'P' for 'Predicate', since the Q suffix is already used by
Template Haskell though of course it's possible to use Q Exp instead of ExpQ
in that case, and in fact I'm slightly mystified why Template Haskell
defines type synonyms like:
type ExpQ = Q Exp
when all this does is to force the reader of code, on encountering the
identifier (ExpQ), to have to look for it's definition, when (Q Exp) would
give the definition immediately inline at the "bargain price" of one space
character, and the latter would also fit with the preference for writing (IO
Int) as opposed to defining a type synonym to get (IntIO).
Though an advantage of 'Q' instead of 'P' for predicates would be that 'P'
could then be used to mark partial versions of functions eg:
viewL :: Monad m => [a] -> m (a, [a])
viewLP :: [a] -> (a, [a]) -- when we already know the list is non-empty
>> head tail -- funny cartoon-like image of a list
>>
>> atL atLs -- similar to (x:xs)
>
> I may mix atLs up with today's 'init', because it sounds like "many
> elements beginning from the left".
I see what you mean. The problem seems to be that the rest of the left view
of a list is that portion of the list which lies to the right (!) so there
is a conflict between using the 'L' suffix to mean "this operation refers to
the left view" versus "this operation returns element(s) which are on the
left".
With:
viewLP :: [a] -> (a, [a])
viewRP :: [a] -> ([a], a)
we could use (fst . viewLP) which suggests alternatives to head, tail, last,
init eg (viewLPL) to mean "the left part of the partially defined left view"
ie (head).
I think it is a question of individual psychology whether the name (viewRPL)
is more difficult or easier to understand/remember than (init) - it might be
a mistake to expect a consensus to emerge here. Maybe both methodical and
"folklore" names could exist simultaneously in such cases.
Best regards, Brian.
--
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.
http://www.metamilk.com
More information about the Haskell-Cafe
mailing list