2014-09-05 50 views
6

红宝石?允许在标识符的末尾允许像相当于红宝石...?在haskell

if do_something? do_something

它允许区分功能reture bool从功能做某事。

在Haskell中,显然类型签名告诉你这两个函数之间的区别,但是有没有名称约定或命名模式来命名布尔或选项?

在我的情况下,我想根据选项的值(作为参数传递)生成(或不)一些标签。

明显的代码将

generate options = do 
    when (generateLabels? options) generateLabels 

generateLabels?是无效的名字,我该怎么称呼呢?

+6

我不明白这个问题如何被回答,而不是自以为是。我不知道一个约定,但我可以将它命名为'labelsAreNeeded :: Options - > Bool'。然后它会像英文句子“当需要标签给出选项,生成标签”一样阅读。 – bheklilr 2014-09-05 16:53:25

+0

不,不是。除了给出这样的函数名称的明显惯例外,它们听起来像是代表真实的东西。 – Cubic 2014-09-05 17:05:43

+0

@bheklilr:确实有点自以为是,但共享美可以有一个通用的惯例。但是,我喜欢你的答案,即使它不能作为一般模式工作(如''') – mb14 2014-09-05 17:08:15

回答

6

如果您浏览函数that return Bool,您会注意到约定是使用谓词,当在代码读取中使用谓词时,就像句子一样。例如:

isDenormalized :: RealFloat a => a -> Bool 
isSigned :: Bits a => a -> Bool 
isAlphaNum :: Char -> Bool 

在你的功能,我建议您重命名generateLables?喜欢的东西作为needsLabels在@bheklilr为了使你的代码更易读指出。

+1

我想指出,这个规则有例外,即'even','odd','' null和其他一些,但是在大多数'base'外的库中,在函数名中使用一些动词的惯例是相当普遍的。 – bheklilr 2014-09-05 18:02:12

+0

我通常使用'是...'patttern,但找不到与我的情况相对应的任何内容。 'needsLabels'正是我所需要的。 – mb14 2014-09-05 18:46:28