지금까지 내가 가진 하스켈에서 분수 배낭 문제를 어떻게하려고하스켈, 다른 유형의 목록의 목록을 가져 오는 중 오류 값 (FRAC 배낭 확률값)
코드 :
{- Input "how much can the knapsack hole <- x" "Possible items in sack [(label, value, weight), ...]" -}
knap x [] = []
knap x y = if length y == 1 then
입력 목록 [([Char], Integer, Integer), ...] 형식의 목록입니다 (문자, 정수 및 정수 목록).
내 문제는 배낭에 넣을 수있는 각 항목의 레이블, 값 및 무게를 뽑으려고합니다. 내 서곡에서
(리스트의 목록에서 값을 당겨)> 프롬프트에서 내가 수행하여 몇 가지 시도를하고있는 중이 야
ghci 출력 :
Prelude> let x = [("label 1", 2, 14), ("label 2", 1, 15)]
Prelude> :t x
x :: [([Char], Integer, Integer)]
Prelude> length x
2
Prelude> x !! 0
("label 1",2,14)
Prelude> x !! 0 !! 1
<interactive>:1:1:
Couldn't match expected type `[a0]'
with actual type `([Char], Integer, Integer)'
Expected type: [[a0]]
Actual type: [([Char], Integer, Integer)]
In the first argument of `(!!)', namely `x'
In the first argument of `(!!)', namely `x !! 0'
당신은 내가 목록을하려고 볼 수 있듯이 !! !! 색인 !! 색인을 사용하여 "항목"의 가중치를 가져 오십시오. 이를 수행하기위한 올바른 구문은 무엇입니까?
첫 번째 코드 블록의 나머지 'if'표현식을 잊어 버린 적이 있습니까? 또한,'[([Char], Integer, Integer)]'는 튜플의리스트이며, 당신이 성취하고자하는 것이 아닙니다. 대신에 [[((Char), Integer, Integer)]]'를 찾을 수도 있습니다. –
입력을 튜플 목록으로 허용해야하는 경우 튜플에 값을 가져 오는 방법은 무엇입니까? –