有没有更简洁的方式来编写这个简单的代码片段?

Jef*_*man 1 haskell

所以我正在尝试学习haskell,在玩Maybe类型时,我想出了这个简单的代码片段

import Data.Maybe
betterDouble :: Maybe Int -> Maybe Int
betterDouble x =
    case x of
         Just y -> Just (y * 2)
         Nothing -> Nothing
Run Code Online (Sandbox Code Playgroud)

这看起来很笨拙而且冗长.我不能帮助,但觉得有更简洁的方式在haskell写这个.什么是惯用或简洁的方法,我可以重写该代码块?

ama*_*loy 7

因为Maybe是Functor,您可以使用它fmap来映射其内容:

betterDouble = fmap (* 2)
Run Code Online (Sandbox Code Playgroud)

  • [推荐LYAH阅读](http://learnyouahaskell.com/functors-applicative-functors-and-monoids). (2认同)