簡體   English   中英

第一個Haskell IO程序無法正常工作

[英]First Haskell IO program isn't working

抱歉,這可能真是愚蠢,但是有人可以向我解釋為什么該程序無法編譯嗎? Couldn't match expected type 'a1 -> String' with actual type 'IO String'

import System.Environment

main = do
  [first, last] <- getArgs
  firstnames <- lines . readFile "firstnames_male"
  lastnames <- lines . readFile "lastnames"
  print firstnames

你不能做lines . readFile "lastnames" lines . readFile "lastnames"

readFile函數返回IO String ,而不是String

但是,您可以使用fmap函數(或<$>運算符)來實現此目的:

main = do
  [first, last] <- argArgs
  firstnames <- lines `fmap` readFile "firstnames_males"
  ...

之所以IO是因為IO是函子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM