Haskell编写一个函数来执行列表上的输入函数

Haskell编写一个函数来执行列表上的输入函数,haskell,Haskell,因此,我试图编写一个函数,在输入列表ls[l1,l2,…,ln]上执行一个输入函数f,并输出一个字符串“[”++(f l1)++”,“++(f l2)++”,“++…++(f ln+””。 例如: >flist show [1, 2, 3] 将输出“[1,2,3]” 将输出“[狗]” 我试着用foldl' flist f ls = "[" ++ (foldl' (++) f "," ls) ++ "]" 这似乎不起作用提示: 首先生成[f x1,…,f xn],对每个成员应用f 然后

因此,我试图编写一个函数,在输入列表
ls
[l1,l2,…,ln]
上执行一个输入函数
f
,并输出一个字符串
“[”++(f l1)++”,“++(f l2)++”,“++…++(f ln+””。

例如:

>flist show [1, 2, 3]
将输出
“[1,2,3]”

将输出
“[狗]”

我试着用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) ++ "]"
    
    插入
    将字符串放在其他字符串之间,它是(在本例中)

    flist f ls = "[" ++ (foldl' (++) f "," ls) ++ "]" 
    
    import Data.List
    
    flist f list = "[" ++ (intercalate "," $ map f list) ++ "]"