Haskell中的cat仿真器
因此,我试图制作一个程序,从句柄读取数据并写入标准输出,如下所示:Haskell中的cat仿真器,haskell,Haskell,因此,我试图制作一个程序,从句柄读取数据并写入标准输出,如下所示: import IO import System cat w = do fromHandle <- getAndOpenFile w ReadMode contents <- hGetContents fromHandle putStr contents putStr "Done." getAndOp
import IO
import System
cat w = do
fromHandle <- getAndOpenFile w ReadMode
contents <- hGetContents fromHandle
putStr contents
putStr "Done."
getAndOpenFile :: String -> IOMode -> IO Handle
getAndOpenFile name mode =
do
catch (openFile name mode)
(\_ -> do
putStrLn ("Cannot open "++ name ++"\n")
return())
导入IO
导入系统
猫w=do
fromHandle IO句柄
getAndOpenFile文件名模式=
做
catch(打开文件名模式)
(\ \ \->do
putStrLn(“无法打开”++name++“\n”)
return())
我是Hs的新手,看起来这比我自己做的要简单得多。有什么建议可以帮助我更进一步吗
用法是./cat“foo.txt”,并将foo.txt文件中的文本打印到stdOut。下面有一个函数,可以满足您的需要
readFile :: FilePath -> IO String
与putStr一起使用,打印IO字符串有史以来最好的问题标题。・ω・另请参见:。此操作有效,但仅适用于GHCI。如果我尝试使用ghc--make cat.hs编译它,我会得到一个错误“函数'main'未在模块'main'中定义”。编译代码时需要main函数。粘贴的代码没有实际执行cat函数的main函数。在main函数中,您还需要从程序的参数中获取文件名,因为cat将文件名作为参数