在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)
将被称为c1
对x
(函数本身!)的结果被称为参数y
。
以上是 在haskell中传递数据 的全部内容, 来源链接: utcz.com/qa/266220.html