如何在main中混合纯数据和不纯数据?

lol*_*ley 1 haskell

假设我写了一个纯函数f,其签名是

f :: Int -> Int
Run Code Online (Sandbox Code Playgroud)

如何编写main函数以显示1000个第一个值,如下所示:

(1,f(1)), (2,f(2)), ..., (1000,f(1000))?
Run Code Online (Sandbox Code Playgroud)

Dan*_*ner 12

在Haskell中,它非常简洁(而且,在我明显的偏见中,非常易读):

main = print [(x, f x) | x <- [1..1000]]
Run Code Online (Sandbox Code Playgroud)

  • 无法抗拒:`main = print $ map((,)<*> f)[1..1000]`. (3认同)
  • @ user3237465酷,罕见的"逆转"应用`((,)**f)<$> [1..1000]`(运算符与通常的`f <$> g <*> h`模式相反)! (2认同)