数値のリストを指定すると、各数値がその値と重複したリストを返す関数レプリケートを定義します。折り目を使用して、地図を作成し、
..>レプリケート[5,1,3,2,8,1,2]
出力:[5,5,5,5,5,1,3,3,3,2,2,8,8,8,8,8,8,8,8,1,2,2]
リスト内包表記と再帰を使用してこれを理解しました。
replicate2 [] = []
replicate2 (n:nn) = take n(repeat n) ++ replicate2 nn
しかし、これを行うためにどのようにfoldとmapを使用しますか?これまでのところ、次のようになっています。レプリケートn = map(foldl1(take n(repeat n))n)nこれは明らかに間違っていますが、私は近いと思います。
だからどんな助けでもいいでしょう、ありがとう!