Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme:对元组列表使用apply_Scheme_Apply - Fatal编程技术网

Scheme:对元组列表使用apply

Scheme:对元组列表使用apply,scheme,apply,Scheme,Apply,如何使用apply in Scheme将每个元组的第一个元素乘以一个数字 例如,如果我的列表x=((12)(34)) 我想做一些类似的事情:(apply*2(car x)),这样它就会返回 ((2 2)(6 4))我认为您并不完全理解方案的所有要素是如何结合在一起的 首先,术语“tuple”有点模棱两可。Scheme没有任何正式的元组类型,它有对和列表。列表本身是由对构建的,尽管这通常是处理高阶函数时的一个实现细节。您的列表是两个元素的列表还是成对的列表 其次,apply不是您想要的。apply

如何使用apply in Scheme将每个元组的第一个元素乘以一个数字

例如,如果我的列表x=
((12)(34))

我想做一些类似的事情:
(apply*2(car x))
,这样它就会返回
((2 2)(6 4))

我认为您并不完全理解方案的所有要素是如何结合在一起的

首先,术语“tuple”有点模棱两可。Scheme没有任何正式的元组类型,它有对和列表。列表本身是由对构建的,尽管这通常是处理高阶函数时的一个实现细节。您的列表是两个元素的列表还是成对的列表

其次,
apply
不是您想要的。
apply
函数接受一个函数和一组参数,然后使用提供的列表作为其参数调用该函数。相反,您需要的是
map
,它接受一个列表和一个应用于列表中每个元素的transformer函数,并返回通过将该函数应用于所提供列表中的所有元素而创建的列表

最简单的方法是使用一个简单的lambda表达式。这对列表和对都有效,因为在每种情况下访问第一个元素是相同的

(map (lambda (x)
       (cons (* 2 (car x)) (cdr x)))
     '((1 2) (3 4)))

这将使用列表中的每个元素调用提供的匿名函数,该函数返回一个新的对,第一个单元格是其输入值的两倍,第二个单元格保持不变。

对于Scheme的所有这些元素如何组合在一起,我想您还不完全了解

首先,术语“tuple”有点模棱两可。Scheme没有任何正式的元组类型,它有对和列表。列表本身是由对构建的,尽管这通常是处理高阶函数时的一个实现细节。您的列表是两个元素的列表还是成对的列表

其次,
apply
不是您想要的。
apply
函数接受一个函数和一组参数,然后使用提供的列表作为其参数调用该函数。相反,您需要的是
map
,它接受一个列表和一个应用于列表中每个元素的transformer函数,并返回通过将该函数应用于所提供列表中的所有元素而创建的列表

最简单的方法是使用一个简单的lambda表达式。这对列表和对都有效,因为在每种情况下访问第一个元素是相同的

(map (lambda (x)
       (cons (* 2 (car x)) (cdr x)))
     '((1 2) (3 4)))

这将使用列表中的每个元素调用提供的匿名函数,该函数返回一个新的对,第一个单元格是其输入值的两倍,第二个单元格保持不变。

对于Scheme的所有这些元素如何组合在一起,我想您还不完全了解

首先,术语“tuple”有点模棱两可。Scheme没有任何正式的元组类型,它有对和列表。列表本身是由对构建的,尽管这通常是处理高阶函数时的一个实现细节。您的列表是两个元素的列表还是成对的列表

其次,
apply
不是您想要的。
apply
函数接受一个函数和一组参数,然后使用提供的列表作为其参数调用该函数。相反,您需要的是
map
,它接受一个列表和一个应用于列表中每个元素的transformer函数,并返回通过将该函数应用于所提供列表中的所有元素而创建的列表

最简单的方法是使用一个简单的lambda表达式。这对列表和对都有效,因为在每种情况下访问第一个元素是相同的

(map (lambda (x)
       (cons (* 2 (car x)) (cdr x)))
     '((1 2) (3 4)))

这将使用列表中的每个元素调用提供的匿名函数,该函数返回一个新的对,第一个单元格是其输入值的两倍,第二个单元格保持不变。

对于Scheme的所有这些元素如何组合在一起,我想您还不完全了解

首先,术语“tuple”有点模棱两可。Scheme没有任何正式的元组类型,它有对和列表。列表本身是由对构建的,尽管这通常是处理高阶函数时的一个实现细节。您的列表是两个元素的列表还是成对的列表

其次,
apply
不是您想要的。
apply
函数接受一个函数和一组参数,然后使用提供的列表作为其参数调用该函数。相反,您需要的是
map
,它接受一个列表和一个应用于列表中每个元素的transformer函数,并返回通过将该函数应用于所提供列表中的所有元素而创建的列表

最简单的方法是使用一个简单的lambda表达式。这对列表和对都有效,因为在每种情况下访问第一个元素是相同的

(map (lambda (x)
       (cons (* 2 (car x)) (cdr x)))
     '((1 2) (3 4)))

这将使用列表的每个元素调用提供的匿名函数,该函数返回一个新的对,第一个单元格是其输入值的两倍,第二个单元格保持不变。

您可能希望使用
map
,而不是
apply
。您可能希望使用
map
,不
apply
。您可能想使用
map
,而不是
apply
。您可能想使用
map
,而不是
apply
。好的,谢谢。我对Scheme很陌生,所以感谢您澄清这些术语的正确用法!好的,谢谢。我对Scheme很陌生,所以感谢您澄清这些术语的正确用法!好的,谢谢。我对Scheme很陌生,所以感谢您澄清这些术语的正确用法!好的,谢谢。我对Scheme很陌生,所以感谢您澄清这些术语的正确用法!