Załóżmy, że chcę poznać wszystkie punkty na płaszczyźnie (x, y)
, które znajdują się w prostokącie has
.Problem uogólniania Haskell (obejmujący rozumienie list)
mogę obliczyć, że przy użyciu wyrażeń listowych, w ten sposób:
let myFun2D = [(x, y) | x <- [0..2], y <- [0..2]]
Teraz, jeśli chcę osiągnąć to samo dla (x, y, z)
przestrzeni, mogę pójść tą samą drogą i robić:
let myFun3D = [(x, y, z) | x <- [0..2], y <- [0..2], z <- [0..2]]
Czy istnieje sposób na uogólnienie tego dla dowolnej liczby wymiarów? Jeśli tak, w jaki sposób?
let myFunGeneralized = ?
Dzięki
Tak, jak istnieją przypadki równania zdefiniowane dla krotek do 15, nie powinno być tak trudno, aby twoja funkcja działała. – fuz
@FUZxxl: Tak, ale wciąż trzeba napisać 15 różnych implementacji dla listy krotek. – kennytm
Sekwencja jako operator permutacji: to takie eleganckie! –