[英]Haskell write a function to perform input function on list
所以我正在嘗試編寫一個函數,它在輸入列表ls
[l1, l2, ..., ln]
上執行輸入函數f
並輸出一個字符串"[" ++ (f l1) ++ "," ++ (f l2) ++ "," ++ ... ++ (f ln) ++ "]"
flist :: (a -> String) -> [a] -> String
flist f ls =
例如:
>flist show [1, 2, 3]
輸出"[1, 2, 3]"
>flist (fun x -> x) ["dog"]
輸出"[dog]"
我試過用foldl'
flist f ls = "[" ++ (foldl' (++) f "," ls) ++ "]"
這似乎不起作用
暗示:
[f x1,...,f xn]
,將f
應用於每個成員。 [y1,...,yn]
和w
並產生交錯[y1,w,y2,w,...,yn]
。 這可以通過遞歸來完成。 (還有一個庫函數,但它並不重要。) [f x1, ",", ...]
,然后連接結果。 這個怎么樣:
import Data.List
flist f list = "[" ++ (intercalate "," $ map f list) ++ "]"
intercalate
將字符串放在其他字符串之間,它(在這種情況下) 是一個可輕微配置的unwords
版本 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.