List 在不使用drop的情况下,如何获取并打印列表中的备用行(奇数或偶数)?
我已经使用drop-here编写了一个工作版本:List 在不使用drop的情况下,如何获取并打印列表中的备用行(奇数或偶数)?,list,haskell,List,Haskell,我已经使用drop-here编写了一个工作版本: main = do cs <- getContents putStr $ unlines $ oddL $ lines cs oddL :: [a] -> [a] oddL [] = [] oddL (x:xs) = x : (oddL $ drop 1 xs) main=do cs[a] oddL[]=[] oddL(x:xs)=x:(oddL$drop 1xs) 但我想知道是否有一种方法可以做到不滴水?即
main = do cs <- getContents
putStr $ unlines $ oddL $ lines cs
oddL :: [a] -> [a]
oddL [] = []
oddL (x:xs) = x : (oddL $ drop 1 xs)
main=do cs[a]
oddL[]=[]
oddL(x:xs)=x:(oddL$drop 1xs)
但我想知道是否有一种方法可以做到不滴水?即使没有那么有效。提示:将
x:xs
模式替换为[x]
模式和x1:x2:xs
模式。提示:将x:xs
模式替换为[x]
模式和x1:x2:xs
模式。您也可以为此重用代码,如中所示
oddL :: [a] -> [a]
oddL (x:_:xs) = x : oddL xs -- "forget" the even element
oddL [x] = [x]
oddL _ = [ ]
import Data.List.Split
oddL = map head . chunksOf 2
您还可以为此重用代码,如中所示
import Data.List.Split
oddL = map head . chunksOf 2
谢谢你!我已经想出了一个类似于泽塔的答案的方法,但我的方法没有达到最后一行。谢谢!我已经想出了一个类似于泽塔的答案的方法,但我的方法缺少最后一行。