Kann mir jemand weniger als fünf Zeilen Code zur Verfügung stellen, die ich als .hs speichern und als Haskell-Programm ausführen kann? Das Internet ist manchmal so kompliziert.Benötigen Sie das einfachste Haskell-Programm
Antwort
main = putStrLn "Hello, World!"
Von http://www.haskell.org/haskellwiki/Haskell_in_5_steps
Das Internet ist nicht so schlecht!
Lol ich gebunden, um genau die gleiche Antwort zu schreiben. – rekire
Ich freue mich darauf, in dieses Tutorial einzutauchen. Danke, Demas. – Emanegux
Diese Antwort ist mehr auf "Sehen die Magie geschehen":
data Expression = Greeting | Leaving
f :: Expression -> String
f Greeting = "Hi there!"
f Leaving = "Ok, bye!"
main = putStrLn (f Greeting)
drucken jede Zahl:
main = mapM_ print [1..]
Abhängig von der Zeilenpufferung kann dies jedoch niemals etwas anzeigen ... – amindfv
'print' fügt automatisch neue Zeilen an, da es äquivalent zu' putStrLn ist. show ', so dass die Ausgabe unter allen Pufferschemen angezeigt wird. Ich habe auch jedes Pufferschema getestet, um sicherzugehen. –
Wie wäre es alle Fibonacci-Zahlen? Nun, Sie können nur so etwas wie 100 von ihnen für die Kürze drucken ..;)
fibs = 1 : scanl (+) 1 fibs
main = print $ take 100 fibs
Sie könnten fröhlich gehen. Hier greet
ist eine Funktion, die einen Namen und macht einen Gruß aus dauert es:
greet xs = "\nHello, " ++ xs
main = do
putStrLn $ unlines ["Hi! I'm a Haskell program.", "Who are you?"]
fmap greet getLine >>= putStrLn
main
verwendet unlines
eine Liste von Strings in einer einzigen Newline getrennte Zeichenfolge zu drehen, dann druckt er mit putStrLn
. getLine
gibt eine vom Benutzer eingegebene Textzeile zurück (ohne das Newline-Zeichen) und wendet dann greet
darauf an. Schließlich schieben wir das als Eingabe in einen anderen putStrLn
.
Dieser ist ein bisschen dicht, und definitiv nicht der einfachste, aber es benutzt die unendliche Liste [1..]
, die man magisch nennen könnte.
described name list = putStrLn ("\n" ++ name) >> mapM_ print (zip [1..] list)
main = let somenums = [1..100] in do
described "Some cubes:" [ x^3 | x <- somenums]
described "Some powers:" $ map (2^) somenums
described "Some triangle numbers:" $ scanl (+) 0 somenums
Die described
Funktion eine Beschreibung druckt und druckt dann eine Liste gepaart (gezippt) mit ihrer Position. Ich verwende es auf ein paar Zahlenfolgen. Ganzzahlige Daten sind standardmäßig auf Integer
eingestellt, weshalb sie Ihnen gerne 2^100
mitteilen können. Der Int
Datentyp ist begrenzter, (maxBound :: Int == 2147483647
), benötigt aber natürlich weniger Zeit und Platz.
Wow, das ist mächtig. Könnte ein bisschen zu viel für mein Gehirn sein, um gerade noch lol zu behandeln. Aber ich werde in naher Zukunft auf diesen Kommentar zurückkommen. Danke AndrewC! – Emanegux
Jemand sollte interact
erwähnt haben, die einfach ist und tatsächlich praktisch:
main = interact reverse
$ cat interact.hs | runhaskell interact.hs esrever tcaretni = niam
und somit mit
main = interact (unwords . reverse . words)
$ cat interact.hs | runhaskell interact.hs words) . reverse . (unwords interact = main
oder mit einem Import
import Data.List
main = interact (intersperse '\n')
$ echo "hello" | runhaskell interact.hs h e l l o
oder, jetzt kompilieren:
main = interact showCharcount
where showCharcount str = show (length str) ++ "\n"
$ ghc --make -O2 interact.hs -o charcount $ echo "hello world" | ./charcount 12
In diesem Fall ist es sinnvoll tut ein bisschen armen Mannes Benchmarking zu starten macht:
$ time cat /usr/share/dict/words | ./charcount 2486813 real 0m0.096s
Sehr schön - vier kurze, klare Programme. – AndrewC
Hamming Zahlen sind Zahlen, die don keine Primfaktoren größer als 5. Dh Sie haben die Form 2^i * 3^j * 5^k. Die ersten 20 von ihnen sind:
[1,2,3,4,5,6,8,9,10,12,15,16,18,20,24,25,27,30,32,36]
Die 500000. ist:
1962938367679548095642112423564462631020433036610484123229980468750
Das Programm, das die 500000. eine (nach einem kurzen Moment der Berechnung) gedruckt ist:
merge [email protected](x:xs) [email protected](y:ys) =
case (x`compare`y) of
LT -> x:merge xs yys
EQ -> x:merge xs ys
GT -> y:merge xxs ys
hamming = 1 : m 2 `merge` m 3 `merge` m 5
where
m k = map (k *) hamming
main = print (hamming !! 499999)
Das ist länger als die 5 Codezeilen, die Sie haben wollten. Natürlich könnte es golfed sein, aber ich würde es lieber natürlich schreiben und sehen, wie viele Zeilen Sie brauchen, um diese Zahl in einer anderen Sprache zu berechnen, mit angemessener Ausführungszeit.
Von Tutorials/Programming Haskell/String IO beachten Sie mehrere Start kurze und einfache Beispiele; beispielsweise auf dem äquivalenten cat < myFile.txt
,
main = interact id
einschlagen, wo interact
eine Funktion (in diesem Fall die Identitätsfunktion id
) auf die Inhalte von der Standardeingabe (hier myFile.txt
) gilt.
Compile und führen Sie es wie folgt,
ghc --make short.hs
./short < myFile.txt
- 1. Welches ist das einfachste Registrierungsformular?
- 2. In Node.JS, benötigen Sie ('net'), benötigen Sie nicht ('Ereignis')?
- 3. Benötigen Sie automatisch
- 4. Benötigen Sie Hilfe Pseudozufallszahlengenerator
- 5. Benötigen Sie Hilfe bei
- 6. Wann benötigen Sie das Windows SDK für MSBuild?
- 7. Benötigen Sie eine Regex, die mit allem übereinstimmt, das kein '?'
- 8. Java - Benötigen Sie ein Protokollierungspaket, das den Stacktrace protokolliert
- 9. Benötigen Sie SSL in WebApi?
- 10. Was ist das einfachste RGB-Bildformat?
- 11. Benötigen Sie Hilfe bei InvalidCastException
- 12. Benötigen Sie Hilfe bei Transaktionsbereich
- 13. Benötigen Sie einen Backend-Compiler
- 14. Benötigen Sie Python datetime magic
- 15. Benötigen Sie Hilfe MPI_Comm_create Verständnis
- 16. Benötigen Sie eine Thesaurus-Datenbank
- 17. (Schienen) Benötigen Sie Javascript Hilfe
- 18. Benötigen Sie Hilfe mit ThemeRoller
- 19. Was ist das einfachste Java ORM, das Sqlite unterstützt?
- 20. Das einfachste Beispiel für das Überschreiben von Methoden mit Generics
- 21. Benötigen
- 22. Benötigen
- 23. Benötigen
- 24. Benötigen
- 25. Benötigen Sie Hilfe bei der Erstellung einer Einstellungsdatei
- 26. Benötigen Sie eine Listbox mit Dropdown-Befehlen
- 27. Benötigen Sie Objekte in einem NSArray aber
- 28. Benötigen Sie eine Python Authentifizierung/Autorisierung Framework
- 29. Ungeordnete Liste Hilfe! Benötigen Sie eine Lösung
- 30. Benötigen Sie Hilfe mit jQuery Versteckte Div
'echo "main = return()" | runhaskell', da Sie nach dem "einfachsten" Programm gefragt haben. :-) – David