function - 我需要编写一个haskell 函数来复制字符串中出现的每个字符,两者都是由用户给出的。

标签 function haskell duplicates

到目前为止,这就是我所拥有的。我知道它与函数本身有关,因为我有 Char -> String -> String,但我需要用户输入它,所以 IO.我不太确定如何做到这一点。

dup :: Char -> String -> String
dup c [] = []
dup c (x:xs)
  | c == x    =  x:x:dup c xs
  | otherwise =  x:dup c xs

main = do
  putStrLn "Enter a sentence."
  sentence <- getLine
  putStrLn "Enter a single letter that is in your sentence, to duplicate."
  letter <- getLine
  let x = dup 'letter''sentence'
   putStrLn x

最佳答案

很近。哪里getLine给出 String , 或 [Char] ,你只想要一个 Char .你可以这样做:

main = do
  putStrLn "Enter a sentence."
  sentence <- getLine
  putStrLn "Enter a single letter that is in your sentence, to duplicate."
  -- Get first character only
  letter:_ <- getLine
  let x = dup letter sentence
  putStrLn x

对此有一些警告,因为模式匹配可能会失败,但它会起作用,并且与您编写的内容非常接近。

关于function - 我需要编写一个haskell 函数来复制字符串中出现的每个字符,两者都是由用户给出的。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41030541/

相关文章:

javascript - 现场过滤数据的最佳方法

php - 在函数中使用 PHP define() 是否真的对该函数的调用者有用?

haskell - 由于语法错误,我无法在 Haskell 上执行任何操作

haskell - 使用 foldr 实现 take

javascript - 通用工厂/服务以避免 Angular 中的重复代码

javascript - 在函数表达式上使用 .map 时难以理解参数内容

function - 如何在没有宏的情况下评估Excel中的函数?

scala - 在函数列表上折叠 flatMap/bind(也就是命名组合器!)

java - 获取对 Set 中重复项的引用

pandas - 删除具有在 Pandas 数据框中移动的两列的重复值的行?