저는 하스켈의 초심자입니다. 두 개의 매개 변수가있는 함수를 만들려고 해요 : 문자와 문자열. 이 함수는 문자열을 살펴보고 주어진 문자가 문자열에 있는지 확인한 다음 문자열에있는 문자의 위치를 나타내는 정수 목록을 반환합니다.하스켈 형식 불일치 Int 및 [Int]
내 코드는 다음과 같습니다 지능형리스트와 재귀 함수입니다
tegnPose :: Char -> String -> [Int]
tegnPose c [] = []
tegnPose c (x:xs) = [if not (xs !! a == c)
then [a] ++ tegnPose c xs
else tegnPose c xs |a <- [0.. length xs - 1]]
.
오류 내가 얻을 :
Uke4.hs:14:7: error:
* Couldn't match expected type `Int' with actual type `[Int]'
* In the expression: [a] ++ tegnPose c xs
In the expression:
if not (xs !! a == c) then [a] ++ tegnPose c xs else tegnPose c xs
In the expression:
[if not (xs !! a == c) then
[a] ++ tegnPose c xs
else
tegnPose c xs |
a <- [0 .. length xs - 1]]
|
14 | then [a] ++ tegnPose c xs
| ^^^^^^^^^^^^^^^^^^^^
Uke4.hs:15:7: error:
* Couldn't match expected type `Int' with actual type `[Int]'
* In the expression: tegnPose c xs
In the expression:
if not (xs !! a == c) then [a] ++ tegnPose c xs else tegnPose c xs
In the expression:
[if not (xs !! a == c) then
[a] ++ tegnPose c xs
else
tegnPose c xs |
a <- [0 .. length xs - 1]]
|
15 | else tegnPose c xs |a <- [0.. length xs - 1]]
나는 재귀 함수 단지를 통해 실행해야합니다 같은 불일치가 발생하는 방법을 이해하지 않습니다.
목록 이해는 기본적으로 목록을 반환합니다. 아직 또 다른 목록을 반환하려고하면 원하는 목록이 아닌 목록이 제공됩니다. 나는 이해력을 완전히 피하기 위해 그것을 다시 쓰겠습니다. –