需要最简单的Haskell程序

Ema*_*gux 6 haskell

任何人都可以为我提供少于五行的代码,我可以保存为.hs并作为haskell程序运行并看到魔术发生了吗?互联网有时很复杂.

sli*_*sec 12

main = putStrLn "Hello, World!"
Run Code Online (Sandbox Code Playgroud)

来自http://www.haskell.org/haskellwiki/Haskell_in_5_steps

互联网并不是那么糟糕!

  • 大声笑我写的完全相同的答案. (2认同)

app*_*ive 11

有人应该提到interact哪些是简单而实际的:

main = interact reverse 
Run Code Online (Sandbox Code Playgroud)
$ cat interact.hs | runhaskell interact.hs
esrever tcaretni = niam

因此

main = interact (unwords . reverse . words)
Run Code Online (Sandbox Code Playgroud)
$ cat interact.hs | runhaskell interact.hs
words) . reverse . (unwords interact = main

或者带导入

import Data.List
 main = interact (intersperse '\n')
Run Code Online (Sandbox Code Playgroud)
$ echo "hello" | runhaskell interact.hs
h
e
l
l
o

或者,现在正在编译:

main = interact showCharcount 
  where showCharcount str = show (length str) ++ "\n"
Run Code Online (Sandbox Code Playgroud)
$ ghc --make -O2 interact.hs -o charcount
$ echo "hello world" | ./charcount
12

在这种情况下,开始做一些穷人的基准测试是有道理的:

$ time cat /usr/share/dict/words | ./charcount
2486813
real 0m0.096s


ami*_*dfv 7

这个答案更侧重于"看到魔法发生":

data Expression = Greeting | Leaving

f :: Expression -> String
f Greeting = "Hi there!"
f Leaving  = "Ok, bye!"

main = putStrLn (f Greeting)
Run Code Online (Sandbox Code Playgroud)


jto*_*bin 5

所有斐波那契数字怎么样?好吧,为简洁起见,你可以打印100个这样的东西..;)

fibs = 1 : scanl (+) 1 fibs
main = print $ take 100 fibs
Run Code Online (Sandbox Code Playgroud)