pha*_*age 2 haskell functional-programming applicative
函数的类型签名(*>)是这样的:
Run Code Online (Sandbox Code Playgroud)(*>) :: f a -> f b -> f b序列操作,丢弃第一个参数的值.
有人可以解释为什么这有用吗?如果第一个参数被丢弃,似乎反直觉.
请举例说明.谢谢.
让我们假设我们的应用函子已经是monad了.我们可以实现*>并<*喜欢这样:
x *> y = do
x
y
x <* y = do
result <- x
y
return result
Run Code Online (Sandbox Code Playgroud)
所以你可以使用<*和*>编写简单的东西,比如:
askForNumber :: IO Int
askForNumber = putStr "Please enter a number: " *> readLn <* putStrLn "Thank you."
Run Code Online (Sandbox Code Playgroud)
所以你可以看到,当"结果"被丢弃时,结果只是monadic动作或applicative functor动作的一部分.