如何在Scheme中创建连续数字列表?
在Python语言中,创建一个从1到10的整数列表的方法是range(1,11)
。是否有与Scheme等效的方案?
mzscheme --version
给了Welcome to Racket v5.2.1.
编辑:每个https://stackoverflow.com/a/7144310/596361的要实现范围功能,需要以下代码:
#lang racket
(require srfi/1)
(iota 5 1)
发布于 2012-10-16 16:16:04
查找iota (如SRFI-1中所定义)。
示例:(iota 10 1)给出从1开始的10个连续整数(而不是默认值0)。
iota不接受与range相同的参数,但它复制了所有的功能-升序范围,降序范围,如果只给出一个界限,则从0开始,并能够指定间隔。
发布于 2012-10-16 17:16:18
这是一个版本,如果第一个数字较小,则执行升序范围;如果第一个数字较高,则执行降序范围:
(define range
(lambda (n m)
(cond
((= n m) (list n))
(else (cons n (range ((if (< n m) + -) n 1) m))))))
这里有一个改进的版本,它可以接受1到2个参数;如果只给出一个参数,它的范围是从0到给定的数字:
(define range
(lambda (n . m)
(let
((n (if (null? m) 0 n)) (m (if (null? m) n (car m))))
(cond
((= n m) (list n))
(else (cons n (range ((if (< n m) + -) n 1) m)))))))
发布于 2014-05-24 15:17:31
在球拍中有一个内置的range函数,它的行为类似于Python。
> (range 10)
'(0 1 2 3 4 5 6 7 8 9)
https://stackoverflow.com/questions/12909856
复制相似问题