簡體   English   中英

如何將函數應用於Haskell列表中的每個元素?

[英]how to apply function to every element in a list in Haskell?

我想將resolve_on應用於列表c1中的每個元素,例如

for(Char c:c1){
resolve_on c c1 c2;}

那么我該如何使用map函數呢?

resolvents :: [Char] -> [Char] -> [[Char]]
resolvents c1 c2 =  map (//what should I do) c1

resolve_on :: Char -> [Char] -> [Char] -> [Char]
resolve_on c c1 c2

如有疑問,請從列表理解開始:

-- for (Char c) in c1:                     do { c <- c1
--   yield (resolve_on c c1 c2)               ; return (resolve_on c c1 c2) }

resolvents c1 c2 = [ resolve_on c c1 c2 | c <- c1 ]

    -- read it:    a list of
    --              (resolve_on c c1 c2)
    --                                  for        -- or: for every
    --                                    c
    --                                      in c1

這確實是一張map

                 = map (\c -> resolve_on c c1 c2) c1

這使用lambda (即,未命名) 函數 ,接收一個名為c參數。

注釋中的do代碼也將起作用。 它以do表示,等效於列表理解。

暫無
暫無

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

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