나는 임의의리스트를 가져 와서 하나가 다른리스트의 서브리스트인지를 비교하는 함수를 작성하고있다. stdin의 경우 사용자에게 두 개의 목록을 요청했지만 임의의 유형을 허용하는 방법을 찾을 수는 없습니다.Haskell의 임의 유형 [stdin]에서 목록을 읽는 방법?
1 main :: IO()
2 main = do
3 l1 <- getLine
4 l2 <- getLine
5 print $ sublist (read l1 :: [Int]) (read l2:: [Int])
6
7 sublist :: Eq a => [a] -> [a] -> Bool
8 sublist b p = any ((b ==) . take len) . takeWhile ((len<=) . length) $ iterate tail p
9 where len = length b
내 주요 문제는 내가 read
에 대한 유형을 선택해야 라인 5
입니다 : 여기에 지금까지 내 코드입니다. 어떤 도움을 크게 감상 할 수
>>> [1,2,3]
[1,2,3,4,5]
True
>>> ["a", "bc"]
["xy", "b", "bc"]
False
>>> [True, False, True]
>>> [False, True, False, True]
True
-- And even nested types
>>> [[1], [2,3]]
[[2,4], [1], [2,3], [4]
True
: 만 현재 한 번에 하나를 지원할 수있는 동안 내가 가지고 싶은 입력과 출력의
몇 가지 예!
사용자가 입력 할 수있는 것과 입력을 해석 할 유형에 대한 몇 가지 예를 제공하십시오. – ErikR
좋은 아이디어, 나는 그들을 –
에 추가 할 수 있습니다. 사용자가 다음을 입력 할 수 있습니까? [1, 2, "cat"]'? – ErikR