6
module Main where
qsort :: Ord a => [a] -> [a]
qsort [] = []
qsort (x : xs) = qsort smaller ++ [x] ++ qsort larger
where
smaller = [a | a <- xs , a <= x]
larger = [a | a <- xs , a > x]
main = do qsort [1,3,2]
내가받을 다음과 같은 오류 내가 잘못 뭐하는 거지하스켈 주요 기능
Couldn't match expected type `IO t0' with actual type `[a0]'
In the expression: main
When checking the type of the function `main'
?
나는 do를 제거한 다음 동일한 오류가 발생합니다. main :: qsort [1,2,3] – weima
@weima'main :: IO()'와'qsort :: Ord a => [a] -> [a]'를 사용한다면'main = qsort [1, 3, 2]', 왜냐하면'main'은'IO()'타입을 가지고 있고'[a]'타입을 가지고 있기 때문입니다. 만약 당신이'int x = 1; string y = x;', 대부분의 프로그래밍 언어는'string'과'int'가 같지 않기 때문에 타입 불일치로이를 거부합니다. 여기서 일어나는 일이 있는데,'main'은 하나의 타입이고 다른 타입의 값과 동일하게 설정하려고한다고했습니다. 'qsort'의 출력을'IO' 값으로 변환해야하고, 인쇄하기를 원하기 때문에'print' 함수가 이것을 할 수 있습니다. – bheklilr
은 기본 고정 유형입니까? main = [Integer]를 정의하여 main = qsort [1,2,3]가 컴파일되도록 시도했지만 여전히 오류가 발생합니다. main이 있어야하고 IO 클래스 출력이 있어야합니다. – weima