Haskell,本地定义和变量,混淆了:/

时间:2018-11-25 11:37:19

标签: haskell

f0 :: Int -> Int -> Int -> Int
        f0 a b c = x a b - x a c - x b c
           where x b a = a + b

有人可以向我解释一下函数到达目的地时如何知道吗?

    where x b a = a + b

...声明?它只是翻译成这样吗?

f0 a b c = (a + b) a b - (a + b) a c - (a + b) b c

2 个答案:

答案 0 :(得分:4)

  
    

[...]还是仅仅是“ x”只是另一个需要两个变量并将其相加的函数[...]

  
     

完全正确。 x b a = a + b是一个函数定义(恰好具有局部作用域)。 f0 0 0 1 = x 0 0 - x 0 1 - x 0 1。 – duplode

答案 1 :(得分:1)

在其他一些伪语言中,它看起来像这样。

int function fo(int a, int b, int c){
  int function x(int a, int b){
     return a + b;
  }
  return x(a,b) - x(a,c) - x(b,c)
}

您的提问方式

  

f0 a b c =(a + b)a b-(a + b)a c-(a + b)b c

它看起来像C宏一样的内联替换。这不是简单的代码替换。它更像是内联函数。 X是被调用的函数。