从用户那里获取信息:Haskell

时间:2018-10-31 15:06:26

标签: haskell

这是haskell。该程序还可以。我需要再做一件事,但我做不到。在我的代码中,输入内容可以说17不是来自我初始化它的用户。我无法从用户输入号码。那是我的具体查询

问题是 给定一个数字列表和一个数字k,返回列表中是否有两个数字加起来等于k。例如,给定[10、15、3、7]和k为17,因为10 + 7为17,所以返回true。

以下是代码。我尝试过这样的事情

toList :: String -> [Integer]
toList input = read ("[" ++ input ++ "]")



check :: Integer -> [Integer] -> Bool 
check k (x:xs) = if ((k-x) `elem` xs) 
         then True
         else (check k xs)
check k x = False 

main = do
 let k = input <- getLine
 putStrLn "Enter a list of numbers (separated by comma):"
 input <- getLine
 print $  (check k  (toList input))

1 个答案:

答案 0 :(得分:2)

只需多次使用getLine

main :: IO ()
main = do
  putStrLn "Enter a number:"
  k <- read <$> getLine 
  putStrLn "Enter a list of numbers (separated by comma):"
  input <- toList <$> getLine
  print $ check k input