我遇到了以下代码片段(函数定义):
choose (x:xs) = choosep x xs
where choosep x [] = x
choosep x (_:_) = x
choosep _ (x:xs) = choosep x xs
在Curry programming language中的“标准库” - / usr / lib / curry-0.9.11 / Success.curry来自Muenster Curry Compiler。这里:
choose :: [a] -> a
和
choosep :: a -> [a] -> a -- BTW, not a _p_redicate
帮助递归函数 choosep
的“p”后缀是一个已知的命名约定吗?也许它来自函数式编程传统(Haskell)或逻辑编程(Prolog?)。那是什么意思呢?
答案 0 :(得分:2)
在这种情况下,我相信p
代表“素数”。他们使用choose'
而不是调用助手chooseprime
或choosep
。
答案 1 :(得分:2)
我认为它代表'prime' - 在OCaml中,它允许标识符中有'
,辅助函数通常被命名为foo'
。在高层次上,我认为这(以及使用'where'作为事后帮助定义)源于希望允许函数程序在纯数学中类似于它们的等价定义。
答案 2 :(得分:1)
在这种情况下,正如其他人所指出的那样,它可能不适用,但有一种流行的Lisp惯例,即使用最终的'p'来表示谓词。请参阅jargon p-convention。
我个人更喜欢使用'?'来结束谓词的Ruby约定。
答案 3 :(得分:0)
P代表'谓词'。返回'true'或'false'的东西。