私は haskell が初めてで、haskell を学ぼうとしています。私が考えることができる最も可能な方法で「複製」のような単純な機能を作成しようとしています。私はすでにパターンマッチングとガードで「複製」を行っています。リスト内包表記内の let では動作しません。リスト内包表記が理想的ではないことは想像できますが、なぜそれが機能しないのかもっと興味があります=]。
私の質問は: なぜ duplicate' は [Int] を生成し、duplicate'' は [[Int]] を生成し、リスト内包内の let を使用して [Int] を生成することさえ可能ですか?
お時間とご協力ありがとうございます:)。
--list comprehension
duplicate' xs = [y | x <- xs, y <- [x,x]]
input => [1,2,3,4]
output => [1,1,2,2,3,3,4,4]
expected? => yes
--list comprehension with let
duplicate'' xs = [y | x <- xs, let y = [x,x]]
input => [1,2,3,4]
output => [[1,1],[2,2],[3,3],[4,4]]
expected? => yes