如何在Haskell中使用'aux'关键字

Tro*_*tin 3 haskell scope

好的,我看过大约4-5个提供教Haskell的网站,而不是其中一个解释了关键字aux.他们刚开始使用它.我只是真的研究过Java和C(如果它存在的话,从来没有看过它),而且我在这个类之前从未真正遇到过它我正在使用Haskell.我真正能说的是它提供了在函数中创建和存储值的实用程序.那究竟它究竟做了什么以及如何正确使用和格式化?特别是,你可以在递归时解释它的用法吗?我不认为它的用途有任何不同,只是为了确保我认为我会问.

Tar*_*mil 7

没有关键字aux,我猜这只是他们用于本地函数的名称.

就像您可以定义顶级值一样:

myValue = 4
Run Code Online (Sandbox Code Playgroud)

或顶级功能:

myFunction x = 2 * x
Run Code Online (Sandbox Code Playgroud)

您可以类似地定义本地值:

myValue =
    let myLocalValue = 3 in
    myLocalValue + 1

-- or equivalently:
myValue = myLocalValue + 1
    where myLocalValue = 3
Run Code Online (Sandbox Code Playgroud)

或本地功能:

myValue =
    let myLocalFunction x = 2 * x in
    myLocalFunction 2

-- or equivalently:
myValue = myLocalFunction 2
    where myLocalFunction x = 2 * x
Run Code Online (Sandbox Code Playgroud)

您的老师只是简单地命名了本地函数aux而不是myLocalFunction.

  • 添加到这个答案:当你使用这样的辅助函数来提高递归时的性能时,调用函数"`go`"是一种常见的习惯用法.除此之外,我实际上从未听说过有人将其命名为"aux".请记住,如果有一个合理的名称,你可能应该使用它而不是像'aux`这样的东西,它不会告诉你这个函数的功能! (5认同)