import Data.List
import System.IO
import Data.STRef
import Data.Char
main = do
let x = dup 'a' "the cat in the hat has a fat head"
putStrLn $ show $ x
に与えられた文字のすべての出現を複製Haskellの関数を書くにはどうすればよい、私は私はこれは私がこれまで持っているものである文字列
import Data.List
import System.IO
import Data.STRef
import Data.Char
main = do
let x = dup 'a' "the cat in the hat has a fat head"
putStrLn $ show $ x
に与えられた文字のすべての出現を複製Haskellの関数を書くにはどうすればよい、私は私はこれは私がこれまで持っているものである文字列
あなたは:
を使用することができ、ここでフォームどこへ行くかわかりませんx
と尾を頭にパターンマッチにリスト
x:xs
でリストを作業する機能を記述するときxs
x:xs
からリストを作成しますとxs
dup
関数を記述するために多くの方法がありますが、これは|
dup :: Char -> String -> String
dup c [] = []
dup c (x:xs)
| c == x = x:x:dup c xs
| otherwise = x:dup c xs
main = do
let x = dup 'a' "the cat in the hat has a fat head"
putStrLn x
ガードを使用して、私の迅速な解決策である
the caat in the haat haas aa faat heaad
にこれを行うには非常に多くの方法を与えます;)、例えば
dup :: Char -> String -> String
dup charToDup s = concatMap dupC s
where dupC c = if c == charToDup then replicate 2 c
else [c]
リストの理解度を使用して解決できます。
dup :: Char -> [Char] -> [Char]
dup c string = [ ss | s <- string, ss <- if c == s then [c] ++ [s] else [s]]
ようこそスタックオーバーフロー!私は間違っているかもしれませんが、これは問題文のように見えます。テストケースでさえ、試みはしません。なぜあなたはこれをあなた自身で解決しようとしていて、どこにいらっしゃったのか見ていないのですか? :) – Alec