Во-первых, обратите внимание, что map
разрешает разрешать пустые списки, но, конечно, если есть один пустой список, то все они должны быть пустыми.
Во-вторых, посмотрите на srfi-1 версия map
- она особенно отличается от версии R5RS следующим образом:
Эта процедура расширена от ее спецификации R5RS, чтобы позволить аргументам бытьнеодинаковой длины;он заканчивается, когда заканчивается самый короткий список.
В-третьих, большинство программистов Scheme очень бы предпочли
(map (lambda (arg) (+ num arg)) lst)
Я предполагаю, что Scheme отличается от Python тем, что делаетlambda
выражения становятся все более читабельными, когда вы привыкаете к языку.
И, наконец, есть некоторые реализации, которые поставляются с некоторой формой понимания списка.Например, в Racket вы можете написать:
(for/list ([arg lst]) (+ num arg))