如果不使用drop,如何在列表中获取和打印备用行(奇数或偶数)?

时间:2015-10-20 06:43:53

标签: list haskell

我在这里使用drop编写了一个工作版本:

main = do cs <- getContents
          putStr $ unlines $ oddL $ lines cs

oddL :: [a] -> [a]
oddL [] = []
oddL (x:xs) = x : (oddL $ drop 1 xs)

但是我想知道是否有办法不掉线?即使效率不高。

3 个答案:

答案 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