Ich lerne Haskell über Lernen Sie ein Haskell und ich bin mir ziemlich sicher, dass er irgendwann darüber gegangen ist, aber ich kann nicht herausfinden, wo. Angenommen, ich möchte eine Funktion haben, die ein Paar, eine Liste von Paaren oder ein allgemeines Tupel zurückgibt. Wie ist die Typ-Signatur dafür geschrieben? Zum Beispiel möchte ich für eine gegebene gerade Zahl die Liste eindeutiger Paare von Primzahlen, die sich addieren, zurückgeben. Ich habe eine Funktion isPrime
, die angibt, ob eine Int
eine Primzahl ist oder nicht.Syntax für Funktionen, die Funktionen in Haskell annehmen oder zurückgeben
pairs :: Int -> [(Int a, Int b)]
pairs n
| n < 4 = []
| odd n = []
| otherwise = [(a, b) | a < b, isPrime a, isPrime b, a+b == 1]
Wenn ich versuche, dies zu kompilieren, bekomme ich den Fehler "Int hat zu wenige Argumente." Also habe ich die folgende Syntax stattdessen versucht:
pairs :: Int -> [((Int a), (Int b))]
Aber ich habe den gleichen Fehler. Wie funktionieren also Satzfunktionen mit Paaren im Allgemeinen?
Welche zwei Primzahlen addiert sich zu 1? – chepner
Siehe http://learnyouahaskell.com/making-our-own-types-and-typeclasses#kinds-and-some-type-foo – Yawar
@chepner 3 und -2, natürlich. –