gpt4 book ai didi

list - Scheme如何创建一个列表

转载 作者:行者123 更新时间:2023-12-04 00:03:41 31 4
gpt4 key购买 nike

好吧,这听起来可能是一个荒谬的问题,但是您如何返回方案中的列表。?

最佳答案

基于看到您的其他一些问题,我认为您可能无法理解功能语言(如 Scheme)的核心概念。

在您学习 Scheme(新手)的级别,您编写的每个函数都有一个输入和一个输出,并且每个函数的主体都是一个单独的表达式。表达式计算的任何值都由函数返回。不需要像 Java 或 C 这样的命令式语言那样显式地“返回”任何东西;它只是作为评估表达式的直接结果而发生的。

函数体是单个表达式。它不像 Java 那样方法体由一系列指令组成:

do this
then do that
then do something else
then return something (maybe)

Scheme 函数计算单个表达式;而已。这是一个简单的函数,它将作为参数传递的任何数字加 5:
(define (add5 x)
(+ x 5))

函数体是 (+ x 5) ,这只是一个要评估的表达式。 x的值已插入, + (加法)功能应用于 x和5,返回结果。

列表没有太大的不同。您所需要的只是一个构建列表的表达式。已经提到了两个: 列表如果您已经拥有所有元素,则用于从头开始构建列表; 缺点 用于将单个元素添加到现有列表中,并且经常递归使用。

这是一个消耗数字 n 的函数并建立列表 (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)

在基本和递归情况下,通过简单地计算使用列表构建函数之一的表达式来返回列表。

这是另一个例子。这个使用我们的 add5将 5 添加到数字列表 (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

同样,基本情况和递归情况都通过评估导致列表的表达式来返回列表。

关于 Scheme,要记住的关键是所有函数都返回一些东西,而这些东西只是对表达式求值的结果。 Scheme 函数的主体是单个表达式。

关于list - Scheme如何创建一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2542213/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com