[英]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 2
並repeat
。 要轉換更大的東西:
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.