如何在Haskell中使用元组的case表达式?

如何在Haskell中使用元组的case表达式?,haskell,switch-statement,tuples,Haskell,Switch Statement,Tuples,我在Haskell中使用大小写表达式时遇到问题 filterSth::[a]->(b,c)->[a] filterSth (x:xs) (b, c) = case (b,c) of (1,0) -> ... (1,2) -> ... ... 我可以这样做吗?是的,你可以这样做,除了b和c需要一个数字类型,如果你想将它们与数字常量进行模式匹配。是,你可以做一些类似的事情,除了 b>代码>和 c>代码>需要有一个数字类

我在Haskell中使用大小写表达式时遇到问题

filterSth::[a]->(b,c)->[a]
filterSth (x:xs) (b, c) =
    case (b,c) of
        (1,0) -> ...
        (1,2) -> ...
        ...

我可以这样做吗?

是的,你可以这样做,除了
b
c
需要一个数字类型,如果你想将它们与数字常量进行模式匹配。

是,你可以做一些类似的事情,除了<代码> b>代码>和<代码> c>代码>需要有一个数字类型,如果你想将它们与数字常量匹配。

@ Z.Pyyy,你不能在类型签名的中间添加类型限制。正确的语法应该是
Num(b,c)=>[a]->(b,c)->[a]
。找到函数的正确类型签名的一种方法就是不写类型签名,让ghci给你推断出的类型。是的……我一发表评论,我意识到……也许是因为我正在做我的家庭作业,很快就要到了……我的大脑处于混乱状态…谢谢你的帮助~@ SEPP2K:你不是说<代码>(Num B,Num C)= > [A] ->(b,c)-> [Ac]?/Cord>?@ Z.Pyyy。你不能在类型签名的中间添加类型限制。正确的语法应该是
Num(b,c)=>[a]->(b,c)->[a]
。找到函数的正确类型签名的一种方法就是不写类型签名,让ghci给你推断出的类型。是的……我一发表评论,我意识到…可能是因为我正在做我的作业,我的作业应该很快就要交了,但是已经晚了…我的大脑一片混乱…谢谢你的帮助~@sepp2k:你是说
(Num b,Num c)=>[a]->(b,c)->[a]
?#freenode的Haskell也是一个提出小疑问的好来源。你也不必显式地捕捉这一对:
FilterTh(x:xs)pair=case pair of(1,0)->……
#freenode的Haskell也是一个提出小疑问的好来源。你也不必显式捕捉这一对:
FilterTh(x:xs)pair=case pair of(1,0)->(1,0)->……