繁体   English   中英

为什么会收到“ ...的方程式...具有不同数量的参数”消息?

[英]Why am I getting the “Equations for … have different numbers of arguments” message?

以下函数可以编译和运行:

shares :: Maybe (Int, L.ByteString) -> Maybe Int                                                                                                                                                            
shares a =                                                                                                                                                                                                  
    case a of                                                                                                                                                                                               
        Nothing        -> Nothing                                                                                                                                                                           
        Just (x, y)    -> Just x

但是当以以下形式重写时:

shares :: Maybe (Int, L.ByteString) -> Maybe Int                                                                                                                                                            
shares Nothing = Nothing                                                                                                                                                                                    
shares Just (x, y) = Just x

我收到错误

Equations for ‘shares’ have different numbers of arguments

我认为本质上是一样的。

在Haskell中,函数的参数由空格分隔。 因此,最后一个方程式具有两个参数: Just类型(Int, L.ByteString) a -> Maybe a ,类型(Int, L.ByteString) (x, y) (Int, L.ByteString) 由于您需要一个参数,因此应改为:

shares (Just (x, y)) = Just x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM