【发布时间】:2011-09-12 11:53:47
【问题描述】:
在 Haskell 中,当我需要一个快速的辅助函数或辅助值时,我通常使用数学中广泛使用的素数 (')。例如,如果我要编写一个 reverse 函数并需要一个尾递归工作器,我将其命名为 reverse'。
在 Scala 中,函数名不能包含 '。 Scala 中是否有任何普遍接受的辅助函数和值命名方案?
【问题讨论】:
标签: scala haskell naming-conventions
在 Haskell 中,当我需要一个快速的辅助函数或辅助值时,我通常使用数学中广泛使用的素数 (')。例如,如果我要编写一个 reverse 函数并需要一个尾递归工作器,我将其命名为 reverse'。
在 Scala 中,函数名不能包含 '。 Scala 中是否有任何普遍接受的辅助函数和值命名方案?
【问题讨论】:
标签: scala haskell naming-conventions
为什么不在使用它的方法中声明该方法呢?然后,您可以将其称为“助手”或任何您喜欢的名称,而不必担心名称冲突。
scala> def reverse[A](l:List[A]) = {
| def helper(acc:List[A],rest:List[A]):List[A] = rest match {
| case Nil => acc
| case x::xs => helper(x::acc, xs)
| }
| helper(Nil, l)
| }
reverse: [A](l: List[A])List[A]
scala> reverse(1::2::3::Nil)
res0: List[Int] = List(3, 2, 1)
【讨论】:
loop这个名字,因为它的意义是循环的。
loop。如果内部方法有一种累加器值,我使用后缀Acc。非特定内部方法的典型 Haskell 名称是 go。
如果我记得我在 2004 年参加的 Martin Odersky 的编程课程,我想他使用了 0 后缀作为辅助函数——定义在主函数的主体中。
def reverse(...) = {
def reverse0(...) = {
// ...
}
reverse0(...)
}
【讨论】: