Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/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
我需要帮助破译这个clojure密码_Clojure - Fatal编程技术网

我需要帮助破译这个clojure密码

我需要帮助破译这个clojure密码,clojure,Clojure,答案是:((0123)(23)) 有人能解释一下发生了什么事吗?我无法破译这个密码 谢谢 Clojuremap可以在函数操作数之后获取多个seq,并为每个seq压缩一个元素。当第一个序列用完时,映射结束 在您的表单中,您给出了map两个seq:'(01)和'((01 2 3)(1 2 3)),这两个seq都有两个元素。因此,代码描述了两个drop调用: (map drop '(0 1) '((0 1 2 3) (1 2 3))) 希望这份文件有助于澄清这一点(我的重点): 返回由应用结果组成的

答案是:((0123)(23))

有人能解释一下发生了什么事吗?我无法破译这个密码


谢谢

Clojure
map
可以在函数操作数之后获取多个seq,并为每个seq压缩一个元素。当第一个序列用完时,映射结束

在您的表单中,您给出了
map
两个seq:
'(01)
'((01 2 3)(1 2 3))
,这两个seq都有两个元素。因此,代码描述了两个
drop
调用:

(map drop '(0 1) '((0 1 2 3) (1 2 3)))
希望这份文件有助于澄清这一点(我的重点):

返回由应用结果组成的延迟序列 将f应用于每个coll的第一个项目集,然后将f应用于 每个coll中的第二个项的集合,直到任何一个coll被删除为止 筋疲力尽的。忽略其他Coll中的任何剩余项。功能
f应该接受colls参数的数量


请注意,Clojure的
map
是一个非常灵活的函数,因为它可以在您需要其他语言中的不同函数时执行多种操作

例如,它完成了这三个Haskell函数的所有功能:

clojure.core/map ([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls])
在哪里

map :: (a -> b) -> [a] -> [b]
zip :: [a] -> [b] -> [(a, b)]
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
因此,在clojure中,您可以使用
map
做两件不同的事情:

a) 将序列元素转换为相同长度的序列。在哈斯克尔和其他语言中,这就是所谓的“地图”

b) 将两个或多个序列压缩到一个元素中,得到与最短输入序列一样长的序列。这在Haskell中被称为“zipWith”

所提供的函数必须接受与输入序列一样多的参数,并返回应进入输出序列的元素

您给出的代码在其第二个函数中使用了
map
。它从
(0123)
中删除
0
元素,从
(1233)
中删除
1
元素。结果是
(0 1 2 3)
(2 3)
进入结果序列。

(仍在编写,意外发布)在这种情况下,您可以删除问题,编辑它,然后再次取消删除它。
map :: (a -> b) -> [a] -> [b]
zip :: [a] -> [b] -> [(a, b)]
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
zip = zipWith (,)