
Seems to work for me:
$ ghci
GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /Users/ivan/.ghci
Prelude> import Control.Applicative
Prelude Control.Applicative> let zAppend (ZipList xs) (ZipList ys) =
ZipList (xs ++ drop (length xs) ys)
Prelude Control.Applicative> take 10 (getZipList (ZipList [1..4] `zAppend`
ZipList [5..])) :: [Int]
[1,2,3,4,9,10,11,12,13,14]
Prelude Control.Applicative> take 10 (getZipList (ZipList [1..] `zAppend`
ZipList [5..])) :: [Int]
[1,2,3,4,5,6,7,8,9,10]
Prelude Control.Applicative>
(After all, the `length` call will never get evaluated.)
However, I do prefer your solution to avoid traversing the first list
twice, so +0.5 from me.
On 5 June 2018 at 13:36, 박신환
Current definion of (<|>) for ZipLists:
ZipList http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicativ... xs http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicativ... <|> http://hackage.haskell.org/package/base-4.11.1.0/docs/src/GHC.Base.html#%3C%... ZipList http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicativ... ys http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicativ... = ZipList http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicativ... (xs http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicativ... ++ http://hackage.haskell.org/package/base-4.11.1.0/docs/src/GHC.Base.html#%2B%... drop http://hackage.haskell.org/package/base-4.11.1.0/docs/src/GHC.List.html#drop (length http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Data.Foldable.html... xs http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicativ...) ys http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicativ...)
doesn't work if the left argument is infinite. It should be:
ZipList [] <|> ys = ys xs <|> ZipList [] = xs ZipList (x:xs) <|> ZipList (_:ys) = ZipList (x : (ZipList xs <|> ZipList ys))
_______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com