Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!think.com!barmar From: barmar@think.com (Barry Margolin) Newsgroups: comp.lang.scheme Subject: Why memq vs memv vs member, etc.? Message-ID: <1991May10.230057.15591@Think.COM> Date: 10 May 91 23:00:57 GMT Sender: news@Think.COM Organization: Thinking Machines Corporation, Cambridge MA, USA Lines: 14 Originator: barmar@godot.think.com Given Scheme's orientation in favor of the use of procedural arguments, I'm curious about why it uses the old MacLisp style of list searching procedures, where the equivalence predicate is implicit in the choice of the procedure, rather than an explicit procedure argument to a single searching procedure. This seems to be an area where Common Lisp does what I'd expect Scheme to do; CL has a single MEMBER function with a :TEST option, while Scheme has MEMQ, MEMV, and MEMBER. Why not (member eq?) instead of (memq )? The same goes for all the other functions that come in three varieties like this. -- Barry Margolin, Thinking Machines Corp. barmar@think.com {uunet,harvard}!think!barmar