1. цепочка вызовов pow(2,3) = 2 .pow 3 = (2,3) .pow; 2. развертывание присваиваний ArraySet a = {1, 2, 3}; BitSet a = {1, 2, 3}; HashSet a = {1, 2, 3}; function lift: SET -> ArraySet{ src -> foldl (src, include, ArraySet::EMPTY) } operator '=' = lift; 3. вид функции: square: (Number, Number) -> Integer { (15, y) -> let{x = 1, y = 1, z=3} x+ y+ z } { (15, y) : let{ x = 1, y = 2, z=3 } x*y*z, (x, 15) : x*y*z where { x = 1, y = 2, z=3 } } case : let a = 16, b= 8, in a+b switch (XXXX) case (_, 18) :