haskell - 在 do 表示法中使用 where 语句

标签 haskell

是否有某种方法可以在 do 表示法中使用 where 语句而不带来不便:

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 ,但这感觉有点奇怪,因为我将业务逻辑与编写方便混合在一起。

最佳答案

哪里,没有。 ,是的:

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

关于haskell - 在 do 表示法中使用 where 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47840355/

相关文章:

haskell - 堆栈空间溢出(可能与mapM有关)

haskell - F# 歧视联合中的函数

Haskell 类型类组合

haskell - 多态函数的特化

haskell - 从servant-0.4.4.7迁移到servant-0.7.1

haskell - 告诉 cabal 主模块在哪里

multithreading - 为什么 `-threaded` 让它变慢?

haskell - 将 Haskell 全新安装到 Windows 10 机器上?

sorting - Haskell——使用不纯函数对列表进行排序

haskell - 从 Haskell 中的 Int 获取 sqrt