用 Haskell 打印 10 个数字

Adi*_*ngh 1 haskell

我刚刚开始学习 Haskell。我熟悉 C、C++、Java 和 PHP。我仍然不知道如何在 Haskell 中打印从 0 到 10 的数字,而没有putStrLn不同的行。

在 Java 中,我们会这样做:

for(int i=0; i<=10; i++)
    System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

然而,Haskell 似乎并不支持这一点。我怎样才能产生相同的结果?

ben*_*ofs 5

Haskellfor不像其他语言那样有for each循环,但它确实有循环:

所以,我们只print对每个数字 0 到 10 做:

import Control.Monad       -- forM_ is not part of the syntax itself, but defined as a function

main :: IO ()              -- main does IO
main = do
  forM_ [0..10] $ \n ->    -- for each number 0 to 10
    print n                -- print the number
Run Code Online (Sandbox Code Playgroud)

或更短:

import Control.Monad

main :: IO ()
main = forM_ [0..10] print
Run Code Online (Sandbox Code Playgroud)

  • @Aditya `$` 只是函数应用程序。`\n` 只是一个 lambda(`\n -&gt; print n` 是一个函数,它接受一个数字并打印它)接受一个将绑定到名称 `n` 的参数。但实际上,您应该阅读haskell 教程!如果你只知道 C++/Java/C/...,Haskell 不是一门只需要学习新语法的语言。它与其他语言有很大不同,不仅在语法上,而且在思维方式上。 (2认同)
  • 如果您正在寻找优秀的初学者教程,请尝试 [Learn You A Haskell For Great Good](http://learnyouahaskell.com)。 (2认同)