我在这里使用drop编写了一个工作版本:
main = do cs <- getContents
putStr $ unlines $ oddL $ lines cs
oddL :: [a] -> [a]
oddL [] = []
oddL (x:xs) = x : (oddL $ drop 1 xs)
但是我想知道是否有办法不掉线?即使效率不高。
答案 0 :(得分:8)
oddL :: [a] -> [a]
oddL (x:_:xs) = x : oddL xs -- "forget" the even element
oddL [x] = [x]
oddL _ = [ ]
答案 1 :(得分:5)
提示:将BILL01 -10.00
BILL03 35.00
BILL05 -90.00
模式替换为x:xs
模式和[x]
模式。
答案 2 :(得分:0)
您也可以重复使用library代码,例如
import Data.List.Split
oddL = map head . chunksOf 2