446

LESSWRONG
LW

445
Programming
Frontpage

26

Losing Metaphors: Zip and Paste

by jefftk
29th Nov 2023
jefftk
1 min read
6

26

Programming
Frontpage

26

Losing Metaphors: Zip and Paste
3the gears to ascension
3Samuel Hapák
2jefftk
1Shankar Sivarajan
2jefftk
1Shankar Sivarajan
New Comment
6 comments, sorted by
top scoring
Click to highlight new comments since: Today at 4:54 PM
[-]the gears to ascension2y31

it could have been transpose((a, b, c)) = zip(a, b, c)

Reply
[-]Samuel Hapák2y30

I would say that zip and unzip can be understood as an equivalent to rar and unrar, tar and untar. I wouldn’t say that it necessarily needs anyone imagining a bag being zipped. But, it might as well be the fact that English isn’t my first language.

Reply
[-]jefftk2y20

I think people mostly aren't imagining it, though you do see the metaphor in icons and hear it in explanations.

Reply
[-]Shankar Sivarajan2y10

In Python, you can zip more than two arrays: the metaphor of a zipper was always a stretch. The word "zip" is common, short, close enough in meaning to "interleave," and has a convenient inverse. "Pack" would probably work too, but "imbricate" would have been a fun choice!

Reply
[-]jefftk2y20

Or transpose?

Reply
[-]Shankar Sivarajan2y10

If you think of matrices as lists of vectors, yeah, that works. But I think that's akin to thinking of integers as strings of digits.

Reply
Moderation Log
More from jefftk
View more
Curated and popular this week
6Comments

In python (and several other languages) if I have two lists and want to process corresponding elements together I can use zip:

>>> for number, letter in zip(
...    [1,2,3,4], ["a", "b", "c", "d"]):
...  print(number, letter)
...
1 a
2 b
3 c
4 d

The metaphor is a zipper, taking the two sides and merging them together. It's not perfect, since a zipper interleaves instead of matching pairs, but it's pretty good.

In unix, there's a command line tool, paste that does the same thing:

$ paste <(echo 1 2 3 4 | tr ' ' '\n') \
        <(echo a b c d | tr ' ' '\n')
1 a
2 b
3 c
4 d

This time the metaphor is pasting: physically putting one column next to another.

I found a discussion on the origin of these terms, which traces paste back to at least 1978 at Bell Labs Center 127. The earliest use of zip I've found is 1988's Introduction to Functional Programming (p57).

What I find interesting about these names is that they've both "lost" in a sense: paste and zip generally mean something else to computer users:

  • Pasting is now almost always used in the "copy and paste" sense of moving data through the computer's clipboard from one program to another.

  • Zipping is used to mean archiving, after the PKZIP tool. Which seems to have become a metaphor only retroactively: it's creators called it "ZIP" as in "zippy", and the idea of zipping and unzipping an the way you would a bag seems to have come later. Perhaps a retrometaphore?

Older names for this are less metaphorical: APL used the comma-operator, and in Lisp this would be done with the more general mapcar function.