좋아, 하스켈에서 스도쿠 해 찾기를 만들려고했지만 예상되는 유형 [[Int]]을 실제 유형 IO()와 일치시킬 수 없다는 오류가 나타납니다.하스켈 재귀 회귀
재귀 찾기 시도 : 내가 유효한에 대한 모든 정의를 포함하는 경우
는test i j q s_board = if ((valid_row i q s_board)&&(valid_column j q s_board)&& (valid_sub_board i j q s_board)) then (solve (set_value i j q s_board)) else s_board
foo i j s_board = if ((get_value i j s_board) == 0) then [test i j q s_board | q <- [1..9]] else s_board
solve s_board = if (full_board s_board) then (print_board s_board) else [foo i j s_board | i <- [0..8], j <- [0..8]]
이 질문은 매우 긴 것 여기 내 재귀 적 해석에서 시도, 오류 메시지 및 코드의 기타 관련 부분입니다 열, 행 등의 기능을 제공하지만 이러한 기능이 작동하는지 확인했습니다. 내 보드를 인쇄하기 위해 사용하고 코드를 또한 여기
Couldn't match expected type `[[Int]]' with actual type `IO()'
In the return type of a call of `print_board'
In the expression: (print_board s_board)
In the expression:
if (full_board s_board) then
(print_board s_board)
else
[foo i j s_board | i <- [0 .. 8], j <- [0 .. 8]]
있다 :이 코드 나는 다음과 같은 오류 메시지가 받고 있어요
-- showLine: this function provides formating for a single row
showLine :: [Int] -> String
showLine = intercalate " | "
. map unwords
. chunksOf 3
. map show
-- showBoad: this function provides formating for the entire board
showBoard :: [[Int]] -> String
showBoard = intercalate "---------------------\n"
. map unlines
. chunksOf 3
. map showLine
-- print_board: this function is meant to print out the entire board
print_board :: [[Int]] -> IO()
print_board s_board = putStrLn $ showBoard s_board
너희들의 문제 무엇이 보입니까 무엇 나는 지금까지 가지고있다. 저는 하스켈에게 완전히 새로운 것입니다. 그리고 이것은 제가 시도한 최초의 실제 프로그램입니다. 어떤 도움이라도 대단히 감사하겠습니다.