Dire, se voglio creare un prodotto cartesiano di due liste, potrei fare (qui in Haskell, ma posso fare lo stesso ad esempio in Scala o qualsiasi altra lingua in grado di FP)
cartesianProd = liftM2 (,)
quindi
>cartesianProd [1,2] [3,4]
>[(1,3),(1,4),(2,3),(2,4)]
Ovviamente, usando (sollevamento) +
invece di paia di tuple, produrrà una lista di somme di tutte le combinazioni.
Per definizione FP, " lifting è un concetto che ti consente di trasformare una funzione in una funzione corrispondente all'interno di un'altra ( di solito più generale). " Il modo in cui lo capisco, se ho argomenti monadici, posso trasformare la mia funzione binaria in modo che funzioni con loro tramite liftM2. Ma da dove viene il prodotto cartesiano? Intuitivamente, mi aspetto [(1,3), (2,4)]
dall'esempio sopra.