Ruby で a,b,c = 123,"Hello",'a' と書くと a,b,c にそれぞれに対応する値が設定される。
irb(main):001:0> a,b,c = 123,"Hello",'a' => [123, "Hello", "a"] irb(main):002:0> a => 123 irb(main):003:0> b => "Hello" irb(main):004:0> c => "a"
これが Haskell になるともっと凄いことになる。
-- tuple の要素が束縛される。 ghci> let (a,b)=(1,"hello") ghci> a 1 ghci> b "hello" -- tuple がネストしていてもOK。 ghci> let (a,b,(c,d,e))=(1,"hello",("world",234,True)) ghci> e True ghci> a 1 ghci> b "hello" -- list の要素もそれぞれ束縛される。 ghci> let [a,b]=["hello","world"] ghci> a "hello" ghci> b "world" -- list の list も OK。 ghci> let [[a],[b]]=[["hello"],["world"]] ghci> a "hello"