concatr ::Integer -> [[Integer]] -> [[Integer]]
concatr x (y) = [x] : y
concatr x (y:ys) = concatr x y: concatr x ys
저는 머리가 다 치기 시작한 수많은 조합을 시도했습니다. 정확히 내가 뭘 잘못하고 있니? 난 그냥 전달 된 목록의 모든 하위 목록에 넣어 정수를 원한다.목록에있는 모든 하위 목록의 시작 부분에 요소를 추가하십시오.
concatr ::Integer -> [[Integer]] -> [[Integer]]
concatr x (y) = [x] : y
concatr x (y:ys) = concatr x y: concatr x ys
저는 머리가 다 치기 시작한 수많은 조합을 시도했습니다. 정확히 내가 뭘 잘못하고 있니? 난 그냥 전달 된 목록의 모든 하위 목록에 넣어 정수를 원한다.목록에있는 모든 하위 목록의 시작 부분에 요소를 추가하십시오.
당신이 map
피하려면 :
concatr :: Integer -> [[Integer]] -> [[Integer]]
concatr x [] = []
concatr x (y:ys) = (x:y):concatr x ys
2 예 : 목록이 비어 있으면
y:ys
인 경우 새 머리글은 x:y
이고 나머지 부분은 재귀 호출 concatr
입니다.예 : concatr 1 [[0],[2]]
이 [[1,0],[1,2]
입니다.
게시 된 "솔루션"의 경우 첫 번째 패턴은 항상 ('concatr x (y) == concatr x y')와 일치하므로 항상 [[x], rest 또는 original list]'와 같습니다. 두 번째 경우에서 시도한 것처럼 ('concatr x y' 대신'(x : y)'를 사용하지 못했을 때) 원래의 목록을 분해해야하며, 널 (null) 경우'concatr x [] '로 끝나야합니다. –
죄송합니다, 질문에 제안 된 코드를 언급 할 때 "게시 된 솔루션"이라고 말했습니다. 그것은 아마 혼란 스럽습니다. –