比较haskell中的两个文件/将两个IO字符串传递给一个函数

use*_*977 4 monads haskell

我是Haskell和monads的新手,我正在尝试编写一个简单的程序,将两个文件加载到字符串中,然后使用比较函数将字符串作为字符列表进行比较(稍后应将其替换为花哨的东西).但我无法弄清楚如何将这些IO列表传递给比较函数和最终的打印输出......在代码中

import System.IO  
import Control.Monad


cmp :: (Eq a) => [a] -> [a] -> Bool
cmp []      []      = True
cmp []      (y:ys)  = False
cmp (x:xs)  []      = False
cmp (x:xs)  (y:ys)  = (x==y) && cmp xs ys

main = do
    l1 <- readFile "dat1"
    l2 <- readFile "dat2"
    print . cmp =<< l1 =<<l2
Run Code Online (Sandbox Code Playgroud)

最后一行

print . cmp =<< l1 =<<l2
Run Code Online (Sandbox Code Playgroud)

不起作用,必须更换......但如何做到这一点?

非常感谢您提前提出的任何建议

Lee*_*hem 5

l1l2已经String,所以你可以使用print $ cmp l1 l2直接.