【发布时间】:2019-02-15 05:32:31
【问题描述】:
我有这个功能:
wrap :: Text -> [Text] -> Text
wrap x = intercalate "" . map ((<> x) . (x <>))
其目的是用给定的字符串包装列表的每个元素并将它们连接在一起。
map 的第一个参数周围的括号让我很恼火,“”的使用也是如此。所以我想知道有没有更优雅(或者我猜是通用)的方式来表达这个功能?
【问题讨论】:
-
您可以使用
foldMap f而不是intercalate "" . map f。请注意,intercalate ""等同于 Data.Text.concat。 -
啊,太好了。现在我有
wrap x = foldMap $ (<> x) . (x <>) -
没有进口。
wr x str = [ x++s++x | s <- str]和concat.wr "!" $ ["one","two","fix"] -
我总是忘记我可以对字符串使用列表推导,非常酷。
标签: function haskell parametric-polymorphism