簡體   English   中英

如何在Haskell中使用合成來更改帶括號的函數調用?

[英]How to change function calls with parenthesis using composition in Haskell?

這是我寫的:( (take 2 (repeat " "))

我想將其更改為沒有括號的expr。

我可以用嗎 ”。” 像這樣:

ceiling (negate (tan (cos (max 50 x))))可以更改為ceiling . negate . tan . cos . max 50 ceiling . negate . tan . cos . max 50

但是我嘗試了(take 2) . (repeat " ") (take 2) . (repeat " ")

(take . (repeat " ")) 2兩者都不起作用?

有人幫忙嗎?

take 2 $ repeat " " 

要么

take 2 . repeat $ " "

要么

take 2 . cycle $ [" "]

但是您真正想要的是:

replicate 2 " "

如上所要求的,它由重復和重復組成。

replicate :: Int -> a -> [a]
replicate n x = take n $ repeat x

你想要的是

 take 2 . repeat $ " "

. 組成功能。 所以在這里我們組成take 2repeat 要轉換更大的東西:

a b c (d e f (g h i))
a b c . d e f. g h $ i

您組成了所有功能以及最里面的功能(在此為ghi )的部分應用程序,以及除最后一個參數以外的所有功能。 從最后一個參數到最終結果,這將創建一個大函數。

然后我們將此函數與$以便優先級正確。 如您所見,由於$只是具有不同優先級的應用程序,因此您可以將parens分組。 但是我個人更喜歡$

好的, (take 2 . repeat) " "可以正常工作。

您似乎想使用(.) ,並且已經發布了方法,但是如果您只想刪除括號,則take 2 $ repeat " "工程。 ($)運營商允許你用替換伴隨開括號刪除最終收盤括號($)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM