Например, на схеме (число 1 (1 2 3)) дается 3 и (длина '(1 2 3)) также дает 3.В чем разница между количеством и длиной?
ответ
Это зависит от того, какой интерпретатор вы используете. В стандартной схеме определяется только length
. В других интерпретаторах (скажем, Racket) существует count
, но он отличается, он получает список и предикат и возвращает количество элементов в списке, отвечающем этому условию.
Я не знаю, в каком интерпретатор count
определяется как функция одного параметра, который возвращает длину списка, (В Ракетка (count '(1 2 3))
вызывает ошибку), но мне кажется, что count
это просто псевдоним для length
в вашем интерпретаторе (другими словами: это одно и то же) - убедитесь, пожалуйста, проверьте документацию. Если бы мне пришлось выбирать один, я бы использовал length
, что является стандартным и будет работать везде.
length
возвращает количество элементов в списке.
count
не является стандартной процедурой упоминается ни в одном из официальных отчетов Scheme (я искал R5RS, R6RS и R7RS), так что это не является частью схемы. Во многих реализациях вы получите некоторую ошибку, заявив, что count
не существует. Это радикально отличается от ожидаемого результата, который у вас есть в вашем вопросе, но это более вероятный результат, если вы должны его протестировать в 5 реализациях Схемы.
Нет причин использовать расширение, зависящее от реализации, когда его результат совпадает с length
.
Я попытался (count '(1 2 3))
в Сталине (r4rs), Scm (r5rs), курица (r5rs), гамбит (r5rs), ракетка (оба r5rs и r6rs), Икарус (r6rs), чиби-схема (r7rs), гош/gosh (r7rs). Ни один из них не имеет count
.
[email protected]:/p/n/sylwester$ csi
CHICKEN
(c) 2008-2013, The Chicken Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.8.0.5 (stability/4.8.0) (rev 5bd53ac)
linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ]
compiled 2013-10-03 on aeryn.xorinia.dim (Darwin)
#;1> (count '(1 2 3))
Error: unbound variable: count
Call history:
<syntax> (count (quote (1 2 3)))
<syntax> (quote (1 2 3))
<syntax> (##core#quote (1 2 3))
<eval> (count (quote (1 2 3))) <--
#;1>
[email protected]:/p/n/sylwester$ gsi
Gambit v4.6.9
> (count '(1 2 3))
*** ERROR IN ##raise-unbound-global-exception -- Unbound variable: count
1>
>
*** EOF again to exit
[email protected]:/p/n/sylwester$ ikarus
Ikarus Scheme version 0.0.4-rc1+, 64-bit (revision 1870, build 2012-02-21)
Copyright (c) 2006-2009 Abdulaziz Ghuloum
> (count '(1 2 3))
Unhandled exception
Condition components:
1. &undefined
2. &who: eval
3. &message: "unbound variable"
4. &irritants: (count)
>
[email protected]:/p/n/sylwester$ plt-r5rs
Welcome to Racket v6.1.1.
R5RS legacy support loaded
> (count '(1 2 3))
count: undefined;
cannot reference undefined identifier
context...:
/usr/share/racket/collects/racket/private/misc.rkt:87:7
/usr/share/racket/pkgs/r5rs-lib/r5rs/run.rkt: [running body]
[email protected]:/p/n/sylwester$ echo "(import (rnrs))
(display (count '(1 2 3)))" > test.scm
[email protected]:/p/n/sylwester$ plt-r6rs test.scm
test.scm:2:10: count: unbound identifier in module
in: count
context...:
/usr/share/racket/pkgs/r6rs-lib/r6rs/run.rkt: [running body]
[email protected]:/p/n/sylwester$ chibi-scheme
> (count '(1 2 3))
ERROR on line 1: undefined variable: count
>
[email protected]:/p/n/sylwester$
[email protected]:/p/n/sylwester$ gosh
gosh> (length '(1 2 3))
3
gosh> (count '(1 2 3))
*** ERROR: unbound variable: count
Stack Trace:
_______________________________________
gosh>
[email protected]:/p/n/sylwester$ scm
SCM version 5e5, Copyright (C) 1990-2006 Free Software Foundation.
SCM comes with ABSOLUTELY NO WARRANTY; for details type `(terms)'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `(terms)' for details.
;loading /usr/share/slib/require
;done loading /usr/share/slib/require.scm
;loading /usr/share/slib/require
;done loading /usr/share/slib/require.scm
;loading /usr/lib/scm/Link
;done loading /usr/lib/scm/Link.scm
;loading /usr/lib/scm/Transcen
;done loading /usr/lib/scm/Transcen.scm
> (count '(1 2 3))
;ERROR: "/usr/lib/scm/Iedline.scm": unbound variable: count
; in expression: (count (quote (1 2 3)))
; in top level environment.
;STACK TRACE
1; (#@let ((tail (#@lambda (c) (#@if (#@char? #@c) #@c (#@let* ((...
2; (count (quote (1 2 3)))
>
[email protected]:/p/n/sylwester$ echo "(display (count '(1 2 3)))" > test.scm
[email protected]:/p/n/sylwester$ stalin -On test.scm
test.scm:1:10:Unbound variable
- 1. В чем разница между длиной и длиной()?
- 2. В чем разница между длиной контента и длиной данных?
- 3. В чем разница между длиной функции OpenCL() и fast_length()?
- 4. В чем разница между «длиной» и «размером» последовательности?
- 5. В чем разница между размером и количеством в пандах?
- 6. разница между неровным правым и фиксированной длиной
- 7. Разница между форматом и длиной в SAS
- 8. Разница между maxHttpHeaderSize и длиной содержимого
- 9. разница между количеством тиков и знаками
- 10. В чем разница между «количеством проб» и «количеством ставок» в моделировании руин Игрока?
- 11. В чем разница между «и»?
- 12. В чем разница между `{}` и `[]`?
- 13. В чем разница между == и ===?
- 14. В чем разница между «+» и «\ +»?
- 15. В чем разница между + = и = +?
- 16. В чем разница между/* ... */и/** ... */
- 17. В чем разница между: и +:
- 18. В чем разница между $ {} и # {}
- 19. В чем разница между $ _. и $ _
- 20. В чем разница между = и: =
- 21. В чем разница между && и &?
- 22. В чем разница между $ {} и # {}?
- 23. В чем разница между + и%?
- 24. В чем разница между + = и = +
- 25. В чем разница между # {} $ {} и% {}?
- 26. В чем разница между «» и «»?
- 27. В чем разница между ['#'] и [. = '#']?
- 28. В чем разница между == ~ и! =?
- 29. В чем разница между «/» и «/ *»?
- 30. В чем разница между «./» и «../»?