这是我写的:
(take 2 (repeat " "))
我想在没有括号的情况下将其更改为expr.
我可以用吗 "." 像这样:
ceiling (negate (tan (cos (max 50 x)))) 可以改为
ceiling . negate . tan . cos . max 50
但我试过了 (take 2) . (repeat " ")
而(take . (repeat " ")) 2
这两个不工作?
有人帮忙吗?
The*_*net 10
take 2 $ repeat " "
Run Code Online (Sandbox Code Playgroud)
要么
take 2 . repeat $ " "
Run Code Online (Sandbox Code Playgroud)
要么
take 2 . cycle $ [" "]
Run Code Online (Sandbox Code Playgroud)
但你真正想要的是:
replicate 2 " "
Run Code Online (Sandbox Code Playgroud)
如上所述,其中包括take和repeat.
replicate :: Int -> a -> [a]
replicate n x = take n $ repeat x
Run Code Online (Sandbox Code Playgroud)
你想要的是什么
take 2 . repeat $ " "
Run Code Online (Sandbox Code Playgroud)
.组成功能.所以我们在这里撰写take 2和repeat.要转换更大的东西:
a b c (d e f (g h i))
a b c . d e f. g h $ i
Run Code Online (Sandbox Code Playgroud)
你组成了最内部函数的所有函数和部分应用(这里g h i)以及除了它的最后一个参数之外的所有函数.这会从最后一个参数到最终结果创建一个很大的函数.
然后我们应用此函数,$以便优先级正确.正如您所发现的,因为$只是具有不同优先级的应用程序,您可以只使用parens进行分组.但我个人更喜欢$.
| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |