Được rồi, điều này có vẻ giống như một câu hỏi vô lý, nhưng làm thế nào để bạn trả về một danh sách trong lược đồ.?Đề án cách tạo danh sách
Trả lời
Có thể bạn chỉ muốn: '(2 3 5 7 11)
hoặc (list 2 3 5 7 11)
?
Bạn cũng có thể xây dựng danh sách bằng cách xác định một phần tử và một danh sách để thêm nó vào: (cons 2 (cons 3 '()))
Dưới đây là một ví dụ về việc trả lại một danh sách từ một hàm:
(define returnlist
(lambda(a b c)
(cons a (cons b (cons c '())))
))
(returnlist 2 3 4)
giá trị Return sẽ danh sách : (list 2 3 4)
Một cách không quá nổi tiếng để làm điều này:
> ((lambda x x) 2 3 5 7 11)
(2 3 5 7 11)
có nghĩa là, "danh sách" chức năng chính nó có thể được định nghĩa là:
> (define list (lambda x x))
Dựa trên nhìn thấy một số câu hỏi khác của bạn, tôi nghĩ bạn có thể gặp khó khăn trong việc đầu quấn quanh các khái niệm trung tâm của một chức năng ngôn ngữ như Scheme.
Ở cấp độ bạn đang học Scheme (novice), mọi hàm bạn viết đều có đầu vào và đầu ra, và phần thân của mỗi hàm là một biểu thức duy nhất. Bất kỳ giá trị nào biểu thức đánh giá được trả về bởi hàm. Không cần phải "trả lại" bất cứ điều gì một cách rõ ràng như bạn sẽ làm trong một ngôn ngữ bắt buộc như Java hoặc C; nó chỉ xảy ra như một hậu quả trực tiếp của việc đánh giá biểu thức.
Nội dung của hàm là một biểu thức duy nhất. Nó không giống như Java, nơi mà phần thân của phương thức bao gồm một loạt các hướng dẫn:
do this
then do that
then do something else
then return something (maybe)
Các hàm lược đồ đánh giá một biểu thức; chỉ có bấy nhiêu thôi. Dưới đây là một chức năng đơn giản mà bổ sung thêm 5 thành bất kỳ số được thông qua như là một cuộc tranh cãi:
(define (add5 x)
(+ x 5))
Các cơ quan chức năng là (+ x 5)
, mà chỉ là một biểu hiện được đánh giá. Giá trị của x
được cắm vào, chức năng +
(bổ sung) được áp dụng cho x
và 5, và kết quả được trả về.
Danh sách không khác nhiều. Tất cả những gì bạn cần là một biểu thức sẽ xây dựng một danh sách. Hai đã được đề cập: danh sách được sử dụng để xây dựng danh sách từ đầu nếu bạn đã có tất cả các yếu tố; cons được sử dụng để thêm một phần tử vào danh sách hiện có và thường được sử dụng đệ quy.
Dưới đây là một chức năng mà tiêu thụ một số n
và xây dựng danh sách (n n-1 n-2 ... 0)
(define (makelist n)
(if (= n 0)
(list 0) ; base case. Just return (0)
(cons n (makelist (- n 1))))) ; recursive case. Add n to the head of (n-1 n-2 ... 0)
Trong cả hai cơ sở và các trường hợp đệ quy, một danh sách được trả lại bằng cách đơn giản đánh giá một biểu thức có sử dụng một trong những chức năng danh sách xây dựng .
Đây là một ví dụ khác.Cái này sử dụng chức năng add5
của chúng tôi để thêm từ 5 đến từng yếu tố của một danh sách các số (lon):
(define (add5list lon)
(if (null? lon)
`() ; base case: lon is empty. Return an empty list.
(cons (add5 (car lon)) (add5list (cdr lon))))) ; recursive case.
; Add 5 to the head of lon and prepend it to the tail of lon
Một lần nữa, cả hai cơ sở và các trường hợp đệ quy đang quay trở lại danh sách bằng cách đánh giá biểu thức mà kết quả trong danh sách.
Điều quan trọng cần nhớ về Đề án là tất cả các hàm trả về một cái gì đó, và điều gì đó đơn giản là kết quả của việc đánh giá một biểu thức. Phần thân của hàm Scheme là một biểu thức duy nhất.
- 1. Tệp tiêu đề danh sách trong dự án Visual Studio C++ được tạo bởi cmake
- 2. Cách tạo danh sách `kwargs`?
- 3. R. cách tạo danh sách các danh sách trong R?
- 4. Tạo danh sách các danh sách theo cách pythonic
- 5. Cách tạo danh sách phụ trong sharepoint
- 6. PhpStorm Danh sách các dự án
- 7. Cách tạo Danh sách từ Phạm vi
- 8. python: tạo danh sách các hàng từ danh sách
- 9. Tạo danh sách dưới dạng Danh sách QVariant hoặc Danh sách QVariant
- 10. Tạo danh sách trong Erlang
- 11. jekyll - tạo danh sách trang.tags
- 12. Danh sách con được tạo trong danh sách
- 13. Danh sách Android với tiêu đề phần
- 14. Cách khởi tạo danh sách bằng hàm tạo?
- 15. Đề án: Phát hiện các phần tử trùng lặp trong danh sách
- 16. Đề án: thay đổi giá trị của một phần tử trong một danh sách
- 17. Cách tạo Danh sách <string> {get; set;} cho mỗi chủ đề,
- 18. Cách tạo hộp danh sách với chủ đề Office XP như hình chữ nhật chọn?
- 19. Danh sách khởi tạo hàm tạo dài
- 20. Tạo danh sách thẻ neo
- 21. Vấn đề về danh sách Python
- 22. Tại sao Đề án có cả danh sách và báo giá?
- 23. Chức năng Đề án để tìm một phần tử trong danh sách là gì?
- 24. Đề án (Lazy Racket) một danh sách vô hạn các số tự nhiên
- 25. Khởi tạo danh sách inline
- 26. Tiêu đề xem danh sách Android
- 27. cách làm phẳng danh sách các danh sách trong R
- 28. Đề án phân bổ Malloc
- 29. Gọi hàm tạo của lớp khác thông qua danh sách Khởi tạo. Có vấn đề
- 30. Tiêu đề danh sách không hiển thị
Bạn có thể thấy điều này hữu ích: http://www.r6rs.org/. Nó không phải là quá kỹ thuật cho hầu hết các phần và có thể trả lời nhiều câu hỏi như thế này. Đây là một hướng dẫn rất hữu ích trong việc hiểu cách các chương trình Đề án được tạo ra từ các cấu trúc dữ liệu phổ biến nhất trong Đề án. – avpx