這是一個將三元素元組的前兩個元素相乘的函式:
f (a, b, _) = a * b
我很好奇是否有可能使這個函式無點。對于像 一樣簡單的對f = uncurry . (*),如果我們有類似的東西tripleToPair,那將使解決方案顯而易見,但該函式也是通過模式匹配以最直接的方式撰寫的。
我問了全能的pointfree.io,但它回傳了錯誤 500。這可能嗎?這個問題純粹是理論上的,在我看來,這個功能是好的。
uj5u.com熱心網友回復:
最簡單的方法是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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374165.html
上一篇:理解foldl的歸約程序
