如何减少/简化此代码(或通常,具有多个输入的代码)?
do
sex <- askSex
name <- askName
sayHello sex name
Run Code Online (Sandbox Code Playgroud)
在这种情况下已经非常短,但当它达到多个输入时,它看起来很乱.有什么方法可以做以下事情:
sayHello askSex askName
Run Code Online (Sandbox Code Playgroud)
?
如果你
import Control.Applicative -- for <$> and <*>
import Control.Monad -- for join
Run Code Online (Sandbox Code Playgroud)
你可以写
join $ sayHello <$> askSex <*> askName
Run Code Online (Sandbox Code Playgroud)
对于您的示例,您只获取两个参数,这不是一个大赢家.但是对于更多的参数,它可以使代码更清晰.
join $ doSomething <$> getFirst <*> getSecond <*> getThird <*> getForth
Run Code Online (Sandbox Code Playgroud)