Haskell 在do表示法中使用where语句
是否有一些方法可以使用do表示法中的where语句而不会带来不便:Haskell 在do表示法中使用where语句,haskell,Haskell,是否有一些方法可以使用do表示法中的where语句而不会带来不便: x = do putStrLn "Enter file name" fileName <- getLine putStrLn "Enter file extension" fileExt <- getLine doIO $ fileName ++ "." ++ fileExt doSomeMoreIO $ fileName ++ "." ++ fileExt x=do putStrLn
x = do
putStrLn "Enter file name"
fileName <- getLine
putStrLn "Enter file extension"
fileExt <- getLine
doIO $ fileName ++ "." ++ fileExt
doSomeMoreIO $ fileName ++ "." ++ fileExt
x=do
putStrLn“输入文件名”
文件名其中
,否。让
,是:
x = do
putStrLn "Enter file name"
fileName <- getLine
putStrLn "Enter file extension"
fileExt <- getLine
let file = fileName ++ "." ++ fileExt
doIO file
doSomeMoreIO file
x=do
putStrLn“输入文件名”
fileNamelet
是最简单的方法,但另一种选择可能是使用单独的函数:
x = do
putStrLn "Enter file name"
fileName <- getLine
putStrLn "Enter file extension"
fileExt <- getLine
doFileIO $ fileName ++ "." ++ fileExt
where
doFileIO file = do
doIO file
doSomeMoreIO file
x=do
putStrLn“输入文件名”
文件名使用do
中的let file=…
行where
无法访问像fileName
这样的绑定。您可能也喜欢。我认为如果where
子句可以以这种方式与do
块一起使用,这将是一个非常好的特性。实际上,我有时需要在创建一个大的let
语句内联,或者将一段代码移动到where
子句中,其中包含一组参数,这些参数将仅绑定到do
块中的相同名称和值。两者都使代码更难理解。@jberryman是的,我有同样的经验。尽管角落里有一大堆难题,当我戴上语言设计帽时,我不知道如何回答。