Small ZipList optimisation

In (<|>) for ZipList, avoid processing the first argument twice (both as first
argument of (++) and for its length in drop count of the second argument).

Previously, the entire first argument was forced into memory, now (<|>) can run
in constant space even with long inputs.
25 jobs for master in 273 minutes and 32 seconds (queued for 3 seconds)
Status Job ID Name Coverage
  Tool Lint
passed #699716
lint
lint-linters

00:05:50

failed #699719
lint allowed to fail
lint-submods

00:05:35

passed #699720
lint
lint-submods-branch

00:05:39

passed #699717
lint
lint-testsuite

00:05:48

passed #699718
lint
typecheck-testsuite

00:05:48

 
  Quick Build
passed #699722
x86_64-linux
hadrian-ghc-in-ghci

00:10:46

passed #699723
lint
lint-libs

00:09:10

passed #699721
x86_64-linux
stack-hadrian-build

00:09:23

 
  Full Build
failed #699727
aarch64-darwin-m1 allowed to fail
validate-aarch64-darwin

01:00:21

failed #699728
aarch64-linux allowed to fail
validate-aarch64-linux-deb10

02:14:24

failed #699729
aarch64-linux allowed to fail
validate-aarch64-linux-deb10-llvm

03:10:05

passed #699730
x86_64-linux
validate-i386-linux-deb9

03:11:27

failed #699726
x86_64-darwin-m1 allowed to fail
validate-x86_64-darwin

00:04:56

passed #699731
x86_64-linux
validate-x86_64-linux-deb9-debug

01:50:40

passed #699734
x86_64-linux
validate-x86_64-linux-deb9-dwarf

02:01:42

passed #699724
x86_64-linux
validate-x86_64-linux-deb9-hadrian

01:35:36

passed #699732
x86_64-linux
validate-x86_64-linux-deb9-integer-simple

01:36:05

manual #699733
x86_64-linux allowed to fail manual
validate-x86_64-linux-deb9-tsan
passed #699725
x86_64-linux
validate-x86_64-linux-deb9-unreg-hadrian

02:50:11

passed #699735
x86_64-linux
validate-x86_64-linux-fedora27

01:32:08

passed #699736
new-x86_64-windows test
validate-x86_64-windows-hadrian

01:37:51

 
  Packaging
passed #699737
x86_64-linux
doc-tarball

00:05:39

 
  Testing
manual hackage
passed #699740
x86_64-linux-perf
perf

00:03:02

failed #699739
x86_64-linux allowed to fail
perf-nofib

00:06:29

 
Name Stage Failure
failed
validate-aarch64-darwin Full Build
ghc-arm64-apple-darwin.tar.xz: found 1 matching files and directories 
WARNING: junit.xml: no matching files
Uploading artifacts as "archive" to coordinator... ok
id=699727 responseStatus=201 Created token=F8ayZUsc
Uploading artifacts...
Runtime platform
arch=amd64 os=darwin pid=68887 revision=v13.9.0 version=13.9.0
WARNING: junit.xml: no matching files
ERROR: No files to upload
Cleaning up file based variables
ERROR: Job failed: exit status 1
failed
validate-x86_64-darwin Full Build
WARNING: ghc-amd64-apple-darwin.tar.xz: no matching files 
WARNING: junit.xml: no matching files
ERROR: No files to upload
Uploading artifacts...
Runtime platform
arch=amd64 os=darwin pid=82966 revision=v13.9.0 version=13.9.0
WARNING: junit.xml: no matching files
ERROR: No files to upload
Cleaning up file based variables
ERROR: Job failed: exit status 1
failed
lint-submods Tool Lint
Entering 'libraries/xhtml'
Entering 'nofib'
Entering 'utils/haddock'
Entering 'utils/hsc2hs'
Executing "step_script" stage of the job script
$ git fetch "$CI_MERGE_REQUEST_PROJECT_URL" $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
fatal: no path specified; see 'git help pull' for valid url syntax
Cleaning up file based variables
ERROR: Job failed: exit code 1
failed
validate-aarch64-linux-deb10 Full Build
Uploading artifacts...
ghc-aarch64-linux-deb10.tar.xz: found 1 matching files and directories

junit.xml: found 1 matching files and directories

performance-metrics.tsv: found 1 matching files and directories

Uploading artifacts as "archive" to coordinator... ok
id=699728 responseStatus=201 Created token=GsZX-R7E
Uploading artifacts...
junit.xml: found 1 matching files and directories

Uploading artifacts as "junit" to coordinator... ok
id=699728 responseStatus=201 Created token=GsZX-R7E
ERROR: Job failed: exit code 1
failed
perf-nofib Testing
mk/ghc-recurse.mk:65: recipe for target 'boot' failed
make: *** [boot] Error 1
make: Leaving directory '/builds/trac-sheaf/ghc/nofib'
Uploading artifacts for failed job
Uploading artifacts...
WARNING: nofib.log: no matching files
ERROR: No files to upload
Cleaning up file based variables
ERROR: Job failed: exit code 1
failed
validate-aarch64-linux-deb10-llvm Full Build
Uploading artifacts...
ghc-aarch64-linux-deb10.tar.xz: found 1 matching files and directories

junit.xml: found 1 matching files and directories

performance-metrics.tsv: found 1 matching files and directories

Uploading artifacts as "archive" to coordinator... ok
id=699729 responseStatus=201 Created token=6TbQ6hsA
Uploading artifacts...
junit.xml: found 1 matching files and directories

Uploading artifacts as "junit" to coordinator... ok
id=699729 responseStatus=201 Created token=6TbQ6hsA
ERROR: Job failed: exit code 1