簡體   English   中英

定義返回類型IO [a] Haskell

[英]Define return type IO [a] Haskell

我想返回預期的IO類型[a]

我試過了:我想要的類型

fc :: [a] -> IO [a]
fc a = sequence $ map show list

> fc [1,2,3]
> [1,2,3]

我能做什么?

如果您有一個純值,則轉換為單值的方法是使用return (aka pure )函數:

fc :: [a] -> IO [a]
fc list = return list

但是,如果要將show函數映射到列表中,結果將為[String] ,因為函數show :: a -> String會將任何值轉換為String ,因此:

fc :: Show a => [a] -> IO [String]
fc list = return $ map show list

注意Show a約束。 它告訴編譯器,無論類型a是什么,都必須支持show函數。 沒有它,該功能將無法進行類型檢查。

sequence函數完全位於該點的旁邊,因為它將單價值列表轉換為一個單價值列表。 如果要使用該函數,則傳遞給它的列表必須是單子值列表,例如:

fc :: Show a => [a] -> IO [()]
fc list = sequence $ map print list

在這里, print是一個IO ()操作,它打印出一個值。

如果您想要更精確的答案,則需要更明確地指定要執行的操作。

暫無
暫無

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

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