diff --git a/notebooks/IHaskell.ipynb b/notebooks/IHaskell.ipynb
index 24c8c5cd..34ad0c35 100644
--- a/notebooks/IHaskell.ipynb
+++ b/notebooks/IHaskell.ipynb
@@ -2000,7 +2000,6 @@
"zip _|_ [] = _|_\n",
"\n",
"\n",
- "
\n", + "zip [] _|_ = []\n", + "\n", + "
\n", - "zip [] _|_ = []\n", - "\n", - "
\n", - "zip [] _|_ = []\n", - "\n", - "
\n", @@ -2181,6 +2169,16 @@ "zip [] _|_ = []\n", "\n", "
\n", + "zip [] _|_ = []\n", + "\n", + "
\n", @@ -2202,6 +2200,27 @@ "zip _|_ [] = _|_\n", "\n", "
\n", + "zip [1, 2] ['a', 'b'] = [(1, 'a'), (2, 'b')]\n", + "\n", + "\n", + "If one input list is short, excess elements of the longer list are\n", + "discarded:\n", + "\n", + "
\n", + "zip [1] ['a', 'b'] = [(1, 'a')]\n", + "zip [1, 2] ['a'] = [(1, 'a')]\n", + "\n", + "\n", + "zip is right-lazy:\n", + "\n", + "
\n", + "zip [] _|_ = []\n", + "zip _|_ [] = _|_\n", + "\n", + "
\n", - "zip <x0,...,xn-1> <y0,...,ym-1> = <(x0,y0),...,(xj-1,yj-1)>\n", - "where j = min {n,m}\n", - "\n", - "\n", - "Axioms:\n", - "\n", - "
zip xs ys = zipWith (,) xs ys
\n", + "zip [] _|_ = []\n", + "\n", + "\n", + "
\n", - "zip [] _|_ = []\n", - "\n", - "\n", - "
\n", - "zip [] _|_ = []\n", - "\n", - "\n", "
\n", + "zip [] _|_ = []\n", + "\n", + "\n", + "
\n", + "zip [1, 2] ['a', 'b'] = [(1, 'a'), (2, 'b')]\n", + "\n", + "\n", + "If one input list is short, excess elements of the longer list are\n", + "discarded:\n", + "\n", + "
\n", + "zip [1] ['a', 'b'] = [(1, 'a')]\n", + "zip [1, 2] ['a'] = [(1, 'a')]\n", + "\n", + "\n", + "zip is right-lazy:\n", + "\n", + "
\n", + "zip [] _|_ = []\n", + "zip _|_ [] = _|_\n", + "\n", + "\n", "
\n", - "zip <x0,...,xn-1> <y0,...,ym-1> = <(x0,y0),...,(xj-1,yj-1)>\n", - "where j = min {n,m}\n", - "\n", - "\n", - "Axioms:\n", - "\n", - "
zip xs ys = zipWith (,) xs ys
\n", @@ -3056,6 +3036,13 @@ "contrazip2 :: forall f a1 a2 . Divisible f => f a1 -> f a2 -> f (a1, a2)\n", "URL: https://hackage.haskell.org/package/contravariant-extras/docs/Contravariant-Extras-Contrazip.html#v:contrazip2\n", "\n", + "zip :: List l => l a -> l b -> l (a, b)\n", + "URL: https://hackage.haskell.org/package/List/docs/Data-List-Class.html#v:zip\n", + "\n", + "pair :: Sized f => f a -> f b -> f (a, b)\n", + "URL: https://hackage.haskell.org/package/size-based/docs/Control-Sized.html#v:pair\n", + "Default: pair a b = (,) $ a * b.\n", + "\n", "zip :: (Vector v a, Vector v b, Vector v (a, b)) => v a -> v b -> v (a, b)\n", "URL: https://hackage.haskell.org/package/vector/docs/Data-Vector-Generic.html#v:zip\n", "O(min(m,n)) Zip two vectors\n", @@ -3069,9 +3056,17 @@ "URL: https://hackage.haskell.org/package/rio/docs/RIO-Vector.html#v:zip\n", "O(min(m,n)) Zip two vectors\n", "\n", - "pair :: Sized f => f a -> f b -> f (a, b)\n", - "URL: https://hackage.haskell.org/package/size-based/docs/Control-Sized.html#v:pair\n", - "Default: pair a b = (,) $ a * b.\n", + "zip :: Zip f => f a -> f b -> f (a, b)\n", + "URL: https://hackage.haskell.org/package/classy-prelude/docs/ClassyPrelude.html#v:zip\n", + "\n", + "zip :: Zip f => f a -> f b -> f (a, b)\n", + "URL: https://hackage.haskell.org/package/non-empty/docs/Data-NonEmpty-Class.html#v:zip\n", + "\n", + "zip :: Zip f => f a -> f b -> f (a, b)\n", + "URL: https://hackage.haskell.org/package/keys/docs/Data-Key.html#v:zip\n", + "\n", + "zip :: Zip f => f a -> f b -> f (a, b)\n", + "URL: https://hackage.haskell.org/package/chunked-data/docs/Data-ChunkedZip.html#v:zip\n", "\n", "(>*< ) :: Monoidal f => f a -> f b -> f (a, b)\n", "URL: https://hackage.haskell.org/package/bytestring/docs/Data-ByteString-Builder-Prim.html#v:-62--42--60-\n", @@ -3096,21 +3091,6 @@ "Merge two functors into a tuple, analogous to liftA2\n", "(,). (Sometimes known as **.)\n", "\n", - "zip :: List l => l a -> l b -> l (a, b)\n", - "URL: https://hackage.haskell.org/package/List/docs/Data-List-Class.html#v:zip\n", - "\n", - "zip :: Zip f => f a -> f b -> f (a, b)\n", - "URL: https://hackage.haskell.org/package/classy-prelude/docs/ClassyPrelude.html#v:zip\n", - "\n", - "zip :: (Zip f) => f a -> f b -> f (a, b)\n", - "URL: https://hackage.haskell.org/package/non-empty/docs/Data-NonEmpty-Class.html#v:zip\n", - "\n", - "zip :: Zip f => f a -> f b -> f (a, b)\n", - "URL: https://hackage.haskell.org/package/keys/docs/Data-Key.html#v:zip\n", - "\n", - "zip :: Zip f => f a -> f b -> f (a, b)\n", - "URL: https://hackage.haskell.org/package/chunked-data/docs/Data-ChunkedZip.html#v:zip\n", - "\n", "mzip :: MonadZip m => m a -> m b -> m (a, b)\n", "URL: https://hackage.haskell.org/package/base/docs/Control-Monad-Zip.html#v:mzip\n", "\n", @@ -3134,25 +3114,9 @@ "URL: https://hackage.haskell.org/package/relational-record/docs/Database-Relational-Documentation.html#v:-62--60-\n", "Binary operator the same as projectZip.\n", "\n", - "biunfold :: (Biunfoldable t, Unfolder f) => f a -> f b -> f (t a b)\n", - "URL: https://hackage.haskell.org/package/unfoldable/docs/Data-Biunfoldable.html#v:biunfold\n", - "Given a way to generate elements, return a way to generate structures\n", - "containing those elements.\n", - "\n", - "biunfoldBF :: (Biunfoldable t, Unfolder f) => f a -> f b -> f (t a b)\n", - "URL: https://hackage.haskell.org/package/unfoldable/docs/Data-Biunfoldable.html#v:biunfoldBF\n", - "Breadth-first unfold, which orders the result by the number of\n", - "choose calls.\n", - "\n", "deserializeWith2 :: (Serial2 f, MonadGet m) => m a -> m b -> m (f a b)\n", "URL: https://hackage.haskell.org/package/bytes/docs/Data-Bytes-Serial.html#v:deserializeWith2\n", "\n", - "biunfoldRestrict :: (BiunfoldableR predA predB t, predA a, predB b, Unfolder f) => f a -> f b -> f (t a b)\n", - "URL: https://hackage.haskell.org/package/unfoldable-restricted/docs/Data-Unfoldable-Restricted.html#v:biunfoldRestrict\n", - "\n", - "biunfoldRestrictBF :: (BiunfoldableR p q t, Unfolder f, p a, q b) => f a -> f b -> f (t a b)\n", - "URL: https://hackage.haskell.org/package/unfoldable-restricted/docs/Data-Unfoldable-Restricted.html#v:biunfoldRestrictBF\n", - "\n", "mesh :: Graph g => [a] -> [b] -> g (a, b)\n", "URL: https://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-HigherKinded-Class.html#v:mesh\n", "Construct a mesh graph from two lists of vertices. Complexity:\n",