开发者

"foop": a naming convention? It's a helper recursive function for "foo"; what does the suffix "p" mean?

I've come across the following code snippet (a function definition):

choose (x:xs) = choosep x xs
  where choosep x [] = x
        choosep x (_:_) = x
        choosep _ (x:xs) = choosep x xs

in Curry programming language in a "standard library"--/usr/lib/curry-0.9.11/Success.curry from Muenster Curry Compiler. Here:

choose :: [a] -> a

and

choosep :: a -> [a] -> a -- BTW, not a _p_redicate

Is the "p" suffix for the helper recursive function choosep a known naming convention? Perhaps it comes from functional programming开发者_StackOverflow tradition (Haskell) or logical programming (Prolog?). What does it mean then?

(This function was considered in Why is the non-deterministic choice function in Curry's std lib not defined straightforwardly but rather with a helper 2-argument function?.)


In this case, I believe p stands for "prime". Rather than calling the helper choose' or chooseprime, they use choosep.


I think it stands for 'prime' -- in OCaml, which allows ' in identifiers, helper functions are frequently named foo'. At a high level, I think this (and the use of 'where' for a post-hoc helper definition) stems from the desire to allow functional programs to resemble their equivalent definitions in pure math.


In this context, as others have noted, it probably doesn't apply, but there is a popular Lisp convention of using a final 'p' to denote a predicate. See jargon p-convention.

I personally prefer the Ruby convention of ending a predicate with a '?'.


P stands for 'predicate'. A thing that returns 'true' or 'false'.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜