原谅我的新问题和潜在的错误术语。为什么Clojure矢量函数的结果不包括停止值?
Clojure矢量函数产生的值不包含停止值。例如:
=> (subvec [:peanut :butter :and :jelly] 1 3)
[:butter :and]
=> (range 1 5)
(1 2 3 4)
的文档的范围明确指出这一点,但没有给出一个合理的:“......返回从开始(含)至结束(独家)NUMS的懒惰序列...”。
在Ruby这些操作包括:
(1..5).to_a => [1,2,3,4,5] [:花生,:黄油,:和, :果冻] [1,3] => [:黄油,:和:果冻]
显然,这些都是非常不同的语言,但我想知道,如果有一些深层的原因,除了个人喜好由语言设计师?
这里没有太多的答案。 Clojure使用独家终端索引,Ruby使用包容性。支持他们两人保持一致。独占与包容并无多大争议。你可能会认为包容性更“直观”,但这取决于你与谁交谈。 – Linuxios
在Ruby中,'1..5'包含5,但'1 ... 5'不包含。 Ruby能够做到这一点。 – Chuck