我的問題是關於在Haskell中傳遞數據。這是我的代碼:在haskell中傳遞數據
c1 x y = x^y
c3 x y = let
z1 = c1(x y)
in (z1)
有沒有人知道爲什麼這不起作用?
如何將數據從一種方法傳遞給另一種方法?
我的問題是關於在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
。
那工作!謝謝!!!! –
現在更有意義。謝謝 :) –