在haskell中传递数据

我的问题是关于在Haskell中传递数据。这是我的代码:在haskell中传递数据

c1 x y = x^y 

c3 x y = let

z1 = c1(x y)

in (z1)

有没有人知道为什么这不起作用?

如何将数据从一种方法传递给另一种方法?

回答:

为了详细说明蒂洛的回答是:在Haskell,f x y解析为像f (x y),而不是它实际上解析为(f x) y。这似乎乍一看没什么意义,但实际上它是完全合理的 - 该技术被称为Currying。当您处理高阶函数时,其优势将变得明显。

通常情况下,您不必担心这一点 - 只要从不在函数参数列表的周围放置圆括号。当它们是需要封装的表达式时,仅在单个参数中加上括号。

  • 不要:

    sin (x) 

    (尽管这在原则上完全合法的)你:

    sin x 

  • 不要:

    max (7 5) 

    这将被解析为应用功能7的论点5 ......显然是无稽之谈。不要:

    max 7 5 

  • 不要:

    sin pi*x 

    这将被解析为(sin pi) * x,又名0。这样做:

    sin (pi*x) 

    ,或者preferrably除非它需要把周围的整个事情额外的括号,

    sin $ pi*x 

回答:

与其他语言不同,您不要使用括号中的参数列表调用Haskell函数。

如果您需要将其嵌入到更大的表达式中,它应该只是c1 x y - 或(c1 x y)

c1 (x y)将被称为c1x(函数本身!)的结果被称为参数y

以上是 在haskell中传递数据 的全部内容, 来源链接: utcz.com/qa/266220.html

回到顶部