Ich habe den folgenden Code in HaskellInstanziierung Fehler in Haskell
type Year = Int
data MonthData = Jan | Feb | March | Apr | Mar | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving (Eq, Show, Ord)
type Month = (MonthData, Year)
days :: Month -> Int -> Int
days(m, d) = 31
Wenn ich versuche, es in den Umarmungen Interpreter auszuführen, habe ich folgende Fehlermeldung:
ERROR Instance of Num (Int -> Int) required for definition of days
Der Fehler ist in der letzten Zeile meines Codes, FYI.
Kann mir jemand erklären, warum ich diesen Fehler habe? Ich kann nicht herausfinden, wie mein Funktionsaufruf nicht mit meiner Funktionsdeklaration übereinstimmt.
Chepner antwortete, bevor ich konnte, aber nur um ein wenig Kontext zu seiner (richtigen!) Antwort hinzuzufügen, falls es Ihnen hilft - in Haskell, Funktion Definition/Anwendung erfolgt mit Leerzeichen statt Klammern und Kommas. Dies führt dazu, dass viele Leute aus C-ähnlichen Sprachen kommen - was "x (y, z)" bedeutet, wird zu "x y z". –
Diese Frage ergibt sich eindeutig aus der Sicht des Lernens Haskell; für jeden, der diese Frage durch Suchen findet und versucht, Haskell zu verwenden (statt zu lernen), werfen Sie einen Blick auf [gregorianMonthLength] (http://hackage.haskell.org/package/time-1.6.0.1/docs/ Data-Time-Calendar.html # v: gregorianMonthLength) aus dem Paket 'time' für diese Funktionalität. –