エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

リストのリストにsequenceを適用すると直積が得られる

どう書く?orgのお題より

リストのリストにsequenceを適用すると直積が得られる。

$ ghci
Prelude> sequence [[1,2,3], [4,5,6]]
[[1,4],[1,5],[1,6],[2,4],[2,5],[2,6],[3,4],[3,5],[3,6]]
Prelude> sequence ["abc", "def"]
["ad","ae","af","bd","be","bf","cd","ce","cf"]


だからこうすると、2進数(の文字列)のリストが作れる。

Prelude> sequence $ replicate 4 "01"
["0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"]


どうしてこうなるのかは、ゆっくり考えます。


id:nobsunさんや[1..100]>>=penさんが解説してくれるかも…と密かに期待しているのは秘密です。