2013年9月15日

摘要: haskell中有两种定义局部变量的方法let和where,方法分别如下roots a b c = ((-b + det) / (a2), (-b - det) / (a2)) where det = sqrt(b*b-4*a*c) a2 = 2*aroots a b c = let det = sqrt (b*b - 4*a*c) a2 = 2*a in ((-b + det) / a2, (-b - det) / a2)这两种方法都可以使全局变量定义失效det = "He... 阅读全文
posted @ 2013-09-15 22:53 a++ 阅读(2587) 评论(0) 推荐(0) 编辑
 
摘要: haskell中的io模块主要是用于读写文件屏幕的,通过import IO来导入其中有如下常用定义data IOMode = ReadMode | WriteMode | AppendMode | ReadWriteModeopenFile :: FilePath -> IOMode -> IO HandlehClose :: Handle -> IO ()hIsEOF :: Handle -> IO BoolhGetChar :: Handle -> IO CharhGetLine :: Handle -> IO StringhGetContents :: 阅读全文
posted @ 2013-09-15 15:33 a++ 阅读(676) 评论(0) 推荐(0) 编辑
 
摘要: 在haskell中,有一个do的语句专门用来做一些不那么“干净”的事情,比如读写都需要用do来开头一开始以为do的作用是做monad,后来发现是错误的,其实do做的事情是包裹一个顺序操作比如在如下代码中main=do if 2>1 then do putStrLn "Step 1" putStrLn "Step 2" else putStrLn "Step 3"第三行中的do如果缺少的话,编译器会报这个错误 The function `putStrLn' is applied to three arguments, bu 阅读全文
posted @ 2013-09-15 12:54 a++ 阅读(754) 评论(0) 推荐(0) 编辑