Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell中的cat仿真器_Haskell - Fatal编程技术网

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将文件名作为参数