Ich bin mir nicht sicher, wie Sie erwarten, dass Ihr Code funktioniert (vielleicht gab es ein Problem, als Sie den Code gepostet haben). Nämlich, ein Teil Ihrer Liste Verständnis ... x quick $ p + x
macht keinen Sinn für mich - x
ist keine Funktion und es ist keine Liste, so reverse x
macht auch keinen Sinn. Für diese Angelegenheit haben Sie beschattet x
- beachten Sie die x
in Ihrer Liste Verständnis ist nicht das gleiche wie die x
in ratslist (x:xs)
.
Eine einfache Lösung existiert, die Zahlen zu Listen von Ziffern lesen und zeigen, konvertieren (na ja, Zeichen, aber es funktioniert) und zurück:
import Data.List
myRats = 1 : map ratify myRats
-- Alternatively: myRats = iterate ratify 1
ratify :: Integer -> Integer
ratify n = sortRat (n + rev n)
where
rev = read . reverse . show
sortRat = read . sort . show
Und in GHCi:
*Main Data.List> take 10 myRats
[1,2,4,8,16,77,145,668,1345,6677]
Hinweis: Sie möchten wahrscheinlich die 'sort' von' Data.List' verwenden. Quicksort in Haskell * liest * großartig, aber eigentlich ist es "O (gruselig)". – delnan
"Aber es funktioniert nicht". Bitte posten Sie weitere Informationen dazu. Fehler kompilieren? Laufzeitfehler? Falsche Ausgabe? – luqui
Es würde helfen, wenn Sie angeben, was genau Sie tun möchten. rlist ist kompletter Unsinn: Es gibt keinen Typ, so dass der Typ von x (beide x) gleichzeitig eine Zahl und eine Funktion und eine Liste ist. Ich bin mir nicht einmal sicher, ob du versuchst, eine unendliche Liste umzukehren und sie dann zu sortieren ?! oO – comonad