三重对对免点方式

Triple to pair point-free way

这是一个将三元素元组的前两个元素相乘的函数:

f (a, b, _) = a * b

我很好奇是否有可能使这个函数无点。对于像 f = uncurry . (*) 这样简单的对,如果我们有像 tripleToPair 这样的东西,那将使解决方案显而易见,但该函数也是通过模式匹配以最直接的方式编写的。

我问了大神pointfree.io,却返回错误500,这还能行吗?纯理论题,我觉得功能还是不错的

最简单的方法是 liftA2 (ab) 对函数使用 Applicative 实例

import Control.Applicative

-- This two functions are defined in module Data.Tuple.Extra from extra package
-- You could use lenses too, I guess
fst3 (a,_,_) = a
snd3 (_,b,_) = b

f = liftA2 (*) fst3 snd3