haskell中的点运算符,具有多参数功能

Eri*_*son 6 haskell pointfree dot-operator

我想在haskell中编写一个无点函数,为了简单起见,我想说要创建这个函数:

maxmin :: Ord a => a -> a -> a -> a
maxmin a b c = max a (min b c)
Run Code Online (Sandbox Code Playgroud)

我可以改进这个

maxmin a b = (max a) . (min b)
Run Code Online (Sandbox Code Playgroud)

但有没有办法摆脱a和b?

app*_*tor 8

我不会说这更简单但是你走了:

maxmin :: Ord a => a -> a -> a -> a                                             
maxmin = (. min) . (.) . max 
Run Code Online (Sandbox Code Playgroud)

(使用pl来自lambdabot http://www.haskell.org/haskellwiki/Pointfree的工具生成)

lambdabot> pl maxmin a b c = max a (min b c)
maxmin = (. min) . (.) . max
Run Code Online (Sandbox Code Playgroud)