gpt4 book ai didi

各种数据类型的 Haskell IO 函数

转载 作者:行者123 更新时间:2023-12-02 07:05:04 26 4
gpt4 key购买 nike

我对几乎一无所知我正在阅读大量教程和代码示例以了解 Haskell 的 IO,但我仍然不清楚。

所有的例子都是这样的:

main = do  
putStrLn "Hello, what's your name?"
name <- getLine
putStrLn ("Hey " ++ name ++ ", welcome !")

他们从 IO 中读取一个字符串,还有许多其他示例对我不理解的输入进行一些自定义。

我的问题很简单:如何像使用 一样读取 IntFloatDoubleChar >scanfC 中使用格式字符串?

谁能帮我清楚地解释 IO 自定义或技巧?

Hint: if the code comes with a main function that would be great - it would make testing easier.

我在 CC++JavaC#Matlab 方面有很好的编码经验PHP

最佳答案

最直接的方法是使用read(你通常需要提供一个明确的类型),如

main = do  
putStrLn "Hello, what's your age?"
age <- liftM read getLine :: IO Int
putStrLn ("Hey " ++ (show age) ++ ", welcome !")

如果您知道该字符串仅包含单个值(如果它无法将字符串解析为所需的数据类型,则会抛出异常),这会很有效。对于更复杂的解析,我通常直接跳到 Parsec解析器组合器库(这可能是您在 Haskell 中需要的所有解析器,但也能以最小的开销处理简单的作业)。如果这不适合你,快速搜索 Hackage 会发现一些候选库提供更简单的类似 scanf 的函数:请参见,除其他外,Text.XFormat.ReadText.PrintScan ,尽管我个人不能保证任何一个。

关于各种数据类型的 Haskell IO 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com