【发布时间】:2014-09-10 15:51:25
【问题描述】:
我想获得两个可能值中的最小值,或者如果一个什么都没有,则获得一个非无,或者如果两个输入都没有,则什么都不返回。我可以编写一个简单的函数来做到这一点,但我怀疑有一种方法可以在不编写自定义函数的情况下做到这一点。抱歉,如果这是一个小问题,但有没有比使用这个自定义函数更简单的方法?
minMaybe :: Ord a => Maybe a -> Maybe a -> Maybe a
minMaybe Nothing b = b
minMaybe a Nothing = a
minMaybe (Just a) (Just b) = Just $ min a b
【问题讨论】:
-
在我被那个猪工投反对票之前 ;) ... 怎么样:
let minM a b = maybe a Just $ maybe b Just $ min a b? -
n.m,这行得通,但它并不比我开始的简单。