Copy from stdlib.scm