在符号中使用where语句

时间:2017-12-15 21:52:28

标签: haskell

有没有办法在没有不便的情况下使用符号表中的语句:

x = do
  putStrLn "Enter file name"
  fileName  <- getLine
  putStrLn "Enter file extension"
  fileExt   <- getLine
  doIO $ fileName ++ "." ++ fileExt
  doSomeMoreIO $ fileName ++ "." ++ fileExt

拥有where file = fileName ++ "." ++ fileExt会很高兴。有办法吗?

我想有一种方法是拥有file <- return $ fileName ++ "." ++ fileExt,但这有点奇怪,因为我将业务逻辑与写作的便利性混合在一起。

2 个答案:

答案 0 :(得分:9)

where,不。 let,是的:

x = do
  putStrLn "Enter file name"
  fileName  <- getLine
  putStrLn "Enter file extension"
  fileExt   <- getLine
  let file = fileName ++ "." ++ fileExt
  doIO file
  doSomeMoreIO file

答案 1 :(得分:2)

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>是最简单的方法,但另一种选择可能是使用单独的函数:

let

根据具体情况,由于可读性提高,此选项可能更为可取。