我想撰寫一個函式search :: String -> Char -> [Int],該函式回傳第一個引數中所有出現的第二個引數的位置。例如:
search "Bookshop" 'o' == [1,2,6]
search "senselessness" 's' == [0,3,7,8,11,12]
如何使用 function zip :: [a] -> [b] -> [(a,b)]、 functionlength :: [a] -> Int和 term forms[m..n]以及[m..]串列理解來做到這一點?
我正在為此撰寫代碼,并且(如果我錯了,請糾正我)因為輸出不是二進制檔案,所以應該從串列理解中省略字串 one 并且應該使用并行串列理解?
uj5u.com熱心網友回復:
不需要打電話length。很少有,如果有的話。
search :: (Num b, Eq a, Enum b) => [a] -> a -> [b]
search s char = [ i | (i,c) <- zip [0..] s, c==char]
測驗:
> search "senselessness" 's'
[0,3,7,8,11,12]
如您所見,我們從壓縮串列中繪制i和c,如果測驗通過,則用于c比較和輸出i。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316856.html
標籤:哈斯克尔
