Ok bekommen, so von my previous question folgenden auf I mit dem folgenden Code am Ende habe:Ausführen eines kompilierten Haskell-Programms; Fehler
module Main where
import Data.List
chain n | n == 0 = error "What are you on about?"
| n == 1 = [1]
| rem n 2 == 0 = n : chain (n `div` 2)
| otherwise = n : chain (3 * n + 1)
chainLength n = (n,length (chain n))
array = map chainLength [1..999]
lengths = map chainLength [1..1000000]
compareSnd (_, y1) (_, y2) = compare y1 y2
longestChain = maximumBy compareSnd lengths
Vom GHCi diese lädt als Modul in Ordnung, aber laufen longestChain endet mit einem Stapelüberlauf auf. Die Lösung für dieses Problem, das kein vollständiges Neuschreiben ist, besteht darin, die Stapelgröße zu erhöhen. So kompilieren ich mit: ghc --make chain.hs
Ich erhalte eine Fehlermeldung:
chain.hs:1:0: The function 'main' is not defined in the module 'main'
Wo ich die Hauptfunktion in platzieren tun müssen, richtig machen es kompilieren.
Dann einmal kompiliert, wie mache ich es die Ausgabe ausführen oder den Befehl verwenden? Ich gehe davon mit:
ghc chain.o +RTS -K128M
Einmal zusammengestellt, ich brauche es nur mit einer großen Stack-Größe zu laufen longestChain.
Danke, du bist ein Lebensretter. Meine Fähigkeiten in Haskell haben sich dank Ihrer Hilfe stark verbessert. –
Ruf mich an, wenn du zu den "bösen" Monaden kommst ;-) –