関数型プログラミング言語Haskell Part13
■ このスレッドは過去ログ倉庫に格納されています
0355デフォルトの名無しさん
2010/12/09(木) 12:12:58Haskell 98 Reportの3.11 リスト内包表記で、
[ x | xs <- [ [(1,2),(3,4)], [(5,4),(3,2)] ], (3,x) <- xs ]
が [4,2] になるという例が載っています。
で、この「3」を変数として与えられるようにしようと、
(\y -> [ x | xs <- [ [(1,2),(3,4)], [(5,4),(3,2)] ], (y,x) <- xs ]) 3
とすると、内包表記内でyのスコープが別にできてしまい、
結果が [2,4,4,2] になってしまいます。
とりあえず、ガードをつけて、
(\y -> [ x | xs <- [ [(1,2),(3,4)], [(5,4),(3,2)] ], (z,x) <- xs, z==y ]) 3
とすれば、望みのことができますが、こうするしかないものなのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています