2017-08-16 31 views
2
でIは整数であり、リストを取り、n桁までのリストの文字を繰り返しHaskellのプログラムを記述する必要が

をその一部を取るために:どのように文字列を繰り返し、Haskellの

例えば
Int -> [a] -> [a] 

3 "pink""pin"
6 "blue"を与えるだろうと、私はそうロジックを形成することができないか、それを行うにはどんな機能があるかどうかわからないハスケルに新たなんだ"bluebl"

を与えるだろう。

+4

あなたの質問は何ですか? "これを行うためのコードを書くにはどうすればいいですか"ということに留意してください。ここでトピック上の質問とはみなされません。あなたが思ったことを私たちに示し、あなたがそれを試みたときに何がうまくいかなかったか説明してください。 –

答えて

0

ちょうど使用:take n . cycle


以上明確にするため(cycleなし):

repeatStr :: [a] -> [a] 
repeatStr [] = [] 
repeatStr string = string ++ repeatStr string 

takeN :: Int -> [a] -> [a] 
takeN n string = take n $ repeatStr string 


main = do putStrLn $ takeN 6 "Blue" 

出力:

BlueBl 

はの交換しますcycle 0:

takeN :: Int -> [a] -> [a] 
takeN n string = take n $ cycle string 


main = do putStrLn $ takeN 6 "Blue" 

それとも@Rein Henrichsとしては、言った:

takeN :: Int -> [a] -> [a] 
takeN n = take n . cycle 

main = do putStrLn $ takeN 6 "Blue" 
+0

'repeatStr'は既に' cycle'として存在します。 'takeN n = take n。サイクル。 –

8

を一つの簡単な実装はcycletakeを使用することです:

takeRepeated :: Int -> [a] -> [a] 
takeRepeated n = take n . cycle 
関連する問題