簡體   English   中英

Haskell編寫一個函數來執行列表上的輸入函數

[英]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) ++ "]" 

這似乎不起作用

暗示:

  1. 首先產生[f x1,...,f xn] ,將f應用於每個成員。
  2. 然后,編寫一個函數,它接受[y1,...,yn]w並產生交錯[y1,w,y2,w,...,yn] 這可以通過遞歸來完成。 (還有一個庫函數,但它並不重要。)
  3. 組合兩者,獲得[f x1, ",", ...] ,然后連接結果。
  4. 在結果字符串中添加括號。

這個怎么樣:

import Data.List

flist f list = "[" ++ (intercalate "," $ map f list) ++ "]"

intercalate將字符串放在其他字符串之間,它(在這種情況下) 是一個可輕微配置的unwords版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM