我想在haskell中编写一个无指向的函数,为了使事情简单,可以说我想创建此函数:

maxmin :: Ord a => a -> a -> a -> a
maxmin a b c = max a (min b c)

我可以改善这一点
maxmin a b = (max a) . (min b)

但是有什么方法可以摆脱a和b吗?

最佳答案

我不会说这比较简单,但是您可以进行以下操作:

maxmin :: Ord a => a -> a -> a -> a
maxmin = (. min) . (.) . max

(使用pl http://www.haskell.org/haskellwiki/Pointfreelambdabot工具生成)
lambdabot> pl maxmin a b c = max a (min b c)
maxmin = (. min) . (.) . max

10-06 00:59