2017-07-26 1 views
1

Die folgende Funktion kompiliert und arbeitet:Warum bekomme ich die Nachricht "Gleichungen für ... habe unterschiedliche Anzahl von Argumenten"?

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

Aber wenn in der folgenden Form neu geschrieben:

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

bekomme ich Fehler

Equations for ‘shares’ have different numbers of arguments 

Ich denke, dass es im Wesentlichen gleiche.

Antwort

5

In Haskell sind Argumente für die Funktion durch Leerzeichen getrennt. Daher hat die letzte Gleichung zwei Argumente: Just vom Typ a -> Maybe a und (x, y) vom Typ (Int, L.ByteString). Da Sie ein Argument wollen, sollte es stattdessen lesen:

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

Mehr zu dem Punkt, * Muster * sind durch Leerzeichen getrennt. –

+0

Danke für Ihre Hilfe. –

Verwandte Themen