在存储到变量(Haskell)之前对用户getLine结果的操作

在存储到变量(Haskell)之前对用户getLine结果的操作,haskell,Haskell,这是我的代码: askPointer = do input <- getLine let newInput = map toUpper input [..here I will re-use new Input..] return () 是否可以使用lamba表示法,使代码仅在一行中缩短 我的尝试失败了: input <- (\a b-> do toUpper (b <- getLine ) ) 有什么建议吗 编辑:进行少量编辑,使此问题寻找更一般的答

这是我的代码:

askPointer = do
  input <- getLine
  let newInput = map toUpper input
  [..here I will re-use new Input..]
  return ()
是否可以使用lamba表示法,使代码仅在一行中缩短

我的尝试失败了:

input <- (\a b-> do toUpper (b <- getLine ) )
有什么建议吗

编辑:进行少量编辑,使此问题寻找更一般的答案,而不限于返回函数

这应该可以:

askPointer = getLine >>= return . map toUpper
如果导入Control.Applicative,则可以使其更短:

askPointer = map toUpper <$> getLine
考虑到最后一次编辑:

input <- getLine >>= return . map toUpper

这应该起作用:

askPointer = getLine >>= return . map toUpper
如果导入Control.Applicative,则可以使其更短:

askPointer = map toUpper <$> getLine
考虑到最后一次编辑:

input <- getLine >>= return . map toUpper


在使用之前将函数应用于IO操作的结果是对fmap功能的极好描述


fmap确实是一个非常有用的函数。你可以在这本书中读到更多,我最后写了一个迷你教程

在使用之前将函数应用于IO操作的结果是对fmap功能的极好描述


fmap确实是一个非常有用的函数。你可以在这本书中读到更多,我最后写了一个迷你教程

我如何获得输入的值?你能用更详细的信息来表达吗?@haskellguy:input>=return。map toUpper或input当我只输入“do”块中我得到的最后一条语句的第一行时,它必须是一个表达式,我如何得到输入的值?你能用更详细的方式表达吗?@haskellguy:input>=return。map toUpper或input当我只输入“do”块中的第一行时,我得到的最后一条语句必须是表达式