0

这里使用的语言是FP

我不明白 和 的使用之间的<>区别[]

例如:

2 : <3,4,5> -> 4

+ o [1,2] : <2,3> -> 5

为什么第一个序列是用[]而不是写的<>

谢谢!

4

1 回答 1

3

您的问题的答案实际上在您提供的 wiki 链接中。While<...>用作列表的表示法(例如,<3,4,5>是带有元素34和的列表5),[...]只是 FP 已经提供的函数的语法。它被称为构造并定义为

[f1, ..., fn]:x =  <f1:x, ..., fn:x>

如果你熟悉 Haskell:它类似于

map (\f -> f x) [f1, ..., fn] = [f1 x, ..., fn x]

也就是说,这[...]是某种映射函数,另请参见高阶函数以将多个函数应用于一个参数

在你的具体例子中

2:<3, 4, 5> 

选择给定列表的第二个元素,并且+ o [1, 2]:<2, 3>可以按如下方式“评估”(函数组合o在哪里):

+ o [1, 2]:<2, 3>  => (definition of composition)
+:([1, 2]:<2, 3>) => (definition of construction)
+:<1:<2, 3>, 2:<2, 3>> => (select list elements)
+:<2, 3> => (addition)
5
于 2013-03-18T03:02:48.710 回答