(let [input "whatever" [v1 v2] [(input:match "([aeiou]).*([aeiou])")]] (print :vowels v1 v2)) ;; local input = "whatever" ;; local v1,v2 = input:match("([aeiou]).*([aeiou])") ;; print("vowels", v1, v2) (fn x [] (values a b)) ;; local function x() ;; return a, b ;; end (let [[y z] [(x)]] (print y z)) ;; local y,z = x() ;; print(y, z) (let [[x [y z]] [(values a [(x)])]] (print z y z)) ;; local _let_1_ = {a, {x()}} -- <- Table Created ;; local x0 = _let_1_[1] ;; local _let_2_ = _let_1_[2] ;; local y = _let_2_[1] ;; local z = _let_2_[2] (let [(x [y z]) (values a [(x)])] (print z y z)) ;; local x0, _let_3_ = a, {x()} -- <- Table Created ;; local _let_4_ = _let_3_ ;; local y = _let_4_[1] ;; local z = _let_4_[2] ;; return print(z, y, z) (let [(x (y z)) (values a (x))] (print z y z)) ;; Compile error: can't nest multi-value destructuring