有没有办法删除3元素元组的第一个元素,所以我得到了2元素元组而不必为此另外创建一个函数?删除3元素元组的第一个元素
(A,B,C) - >(B,C)
基本上我必须使用一个函数,该函数创建一个3元素的元组,然后我必须使用一个函数,它仅使用它的最后两个元素。
谢谢你的回答。
有没有办法删除3元素元组的第一个元素,所以我得到了2元素元组而不必为此另外创建一个函数?删除3元素元组的第一个元素
(A,B,C) - >(B,C)
基本上我必须使用一个函数,该函数创建一个3元素的元组,然后我必须使用一个函数,它仅使用它的最后两个元素。
谢谢你的回答。
你的问题几乎具有所需功能本身!
\(a,b,c)->(b,c)
是您需要的功能。这是一个动态定义的“匿名”函数,您不必指定它的名字。因此,举例来说,如果你有
someFunc :: someType -> (Int, Char, Bool)
你可以做
(\(a,b,c)->(b,c)) (someFunc someValue)
得到的someFunc someValue
第二和第三部分。
你可以用几个句法结构如let
做模式匹配。所以,你可以这样做:
let (a, b, c) = triTuple in fn (b, c)
您可以使用case
:
case x of (a, b, c) -> (b, c)
其实,这是我想到的第一件事情,但*是*创建一个函数。我认为使用其他提供模式匹配的东西('let'或'where')更适合这样的问题。 –
@TikhonJelvis:的确如此。但由于该函数被定义为“内联”,并且没有引入其他名称,所以我认为它不算太坏。 :-) – Prateek
哈,那其实也是我的逻辑。但后来我想起了一些老师和平地学家可能会无意义地挑剔。 –