<div dir="auto"><div>The proposed definition has one drawback: it is strict in its second argument.</div><div dir="auto"><br></div><div dir="auto">It should be possible to make it lazy in its second argument while keeping the single-pass behavior, though. Something like this?</div><div dir="auto"><br></div><div dir="auto">ZipList xs <|> ZipList ys = ZipList $ go xs ys 0</div><div dir="auto">  where</div><div dir="auto">    go [] ys n = drop n ys</div><div dir="auto">    go (x:xs) ys n = x : (go xs ys $! n + 1)<br><br><div class="gmail_quote" dir="auto"><div dir="ltr">On Tue, Jun 5, 2018, 15:36 박신환 <<a href="mailto:ndospark320@naver.com">ndospark320@naver.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:10pt;font-family:Gulim,sans-serif"><p><span style="font-family:courier new,serif">Current definion of (<|>) for ZipLists:</span><span></span></p><pre><span style="font-family:gulim,sans-serif"></span><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicative.html#ZipList" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier m_7228922599614306802hs-var" style="font-family:courier new,serif">ZipList</span></a><span style="font-family:courier new,serif"> </span><a name="m_7228922599614306802_local-6989586621679319881" rel="noreferrer"></a><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicative.html#local-6989586621679319881" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier" style="font-family:courier new,serif">xs</span></a><span style="font-family:courier new,serif"> </span><a name="m_7228922599614306802_local-8214565720323792760" rel="noreferrer"></a><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/GHC.Base.html#%3C%7C%3E" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-operator" style="font-family:courier new,serif"><|></span></a><span style="font-family:courier new,serif"> </span><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicative.html#ZipList" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier m_7228922599614306802hs-var" style="font-family:courier new,serif">ZipList</span></a><span style="font-family:courier new,serif"> </span><a name="m_7228922599614306802_local-6989586621679319882" rel="noreferrer"></a><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicative.html#local-6989586621679319882" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier" style="font-family:courier new,serif">ys</span></a><span style="font-family:courier new,serif"> </span><span class="m_7228922599614306802hs-glyph" style="font-family:courier new,serif">=</span><span style="font-family:courier new,serif"> </span><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicative.html#ZipList" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier m_7228922599614306802hs-var" style="font-family:courier new,serif">ZipList</span></a><span style="font-family:courier new,serif"> </span><span class="m_7228922599614306802hs-special" style="font-family:courier new,serif">(</span><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicative.html#local-6989586621679319881" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier m_7228922599614306802hs-var" style="font-family:courier new,serif">xs</span></a><span style="font-family:courier new,serif"> </span><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/GHC.Base.html#%2B%2B" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-operator m_7228922599614306802hs-var" style="font-family:courier new,serif">++</span></a><span style="font-family:courier new,serif"> </span><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/GHC.List.html#drop" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier m_7228922599614306802hs-var" style="font-family:courier new,serif">drop</span></a><span style="font-family:courier new,serif"> </span><span class="m_7228922599614306802hs-special" style="font-family:courier new,serif">(</span><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Data.Foldable.html#length" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier m_7228922599614306802hs-var" style="font-family:courier new,serif">length</span></a><span style="font-family:courier new,serif"> </span><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicative.html#local-6989586621679319881" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier m_7228922599614306802hs-var" style="font-family:courier new,serif">xs</span></a><span class="m_7228922599614306802hs-special" style="font-family:courier new,serif">)</span><span style="font-family:courier new,serif"> </span><a href="http://hackage.haskell.org/package/base-4.11.1.0/docs/src/Control.Applicative.html#local-6989586621679319882" target="_blank" rel="noreferrer"><span class="m_7228922599614306802hs-identifier m_7228922599614306802hs-var" style="font-family:courier new,serif">ys</span></a><span class="m_7228922599614306802hs-special" style="font-family:courier new,serif">)</span><span style="font-family:courier new,serif"><br><br>doesn't work if the left argument is infinite. It should be:<br><br>ZipList []     <|> ys             = ys<br>xs             <|> ZipList []     = xs<br>ZipList (x:xs) <|> ZipList (_:ys) = ZipList (x : (ZipList xs <|> ZipList ys))<br></span></pre></div></div><table style="display:none"><tbody><tr><td><img src="https://mail.naver.com/readReceipt/notify/?img=JqRCbHFTpz%2FYaqgZKrRZF4tlFx0opzMdM4ivFzk0FrtmpzJvKrt%2Fax%2BSM4k4FuIo%2BrkSKob5W4d5W4C5bX0q%2BzkR74FTWx%2FsWz0Sb4JZ16kqtzCCbrR0Wzm5WXiN.gif" border="0"></td></tr></tbody></table>_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div></div></div>