나는, 즉 더 복잡 foldr 문, 함수 2 개 매개 변수를 사람, 및과 /와에 문제가있어, 그러나 foldr (+) 0 [1,2,3]
같은 간단한 foldr 문을 이해합니다. 아무도 이러한 대답을 얻기 위해 발생하는 단계를 설명 할 수 있습니까? foldr (\x y -> (x+y)*2) 2 [1,3] = 22
foldr (/) 2 [8,12,24
나는 하스켈 얻을 sep [1, 2, 3, 4, 5]을 evalutes 방법을 이해하기 위해 노력하고있어 ([1, 3], [2, 4, 5]) : sep [ ] = ([ ], [ ])
sep [x] = ([ ], [x])
sep (x1:x2:xs) = let (is, ps) = sep xs in (x1:is, x2:ps)
내가 이런 식으로 시작 : 다
아니라,이 foldr 사용하여 필터 함수의 정의는 다음과 같습니다의 난이 기능이 있다고 가정 해 봅시다 예를 들어 너무 myFilter p xs = foldr step [] xs
where step x ys | p x = x : ys
| otherwise = ys
: myFilter odd [1,2,3,4]
그래서이 될 것
방망이를 벗어났다. 이것은 과제를위한 것이고 나는 대답을 찾고 있지 않다. 꽤 오래되었습니다. sumTR [ ] acc = acc
sumTR (x:xs) acc = sumTR xs (x + acc)
우리가 유도에 의해 증명해야 : sumTR xs (sumTR ys acc) = sumTR (ys ++ xs) acc
기본 케이스를 증명 (XS를에 영입
하스켈에서 방정식 추론과 증명에 대해이 연습을 발견했습니다. 다음 코드는 주어진 : type Stack = [Int]
type Code = [Op]
data Op = PUSH Int | ADD
deriving (Show)
--
-- Stack machine
--
exec :: Code -> Stack -> Stack
exec [ ] s = s
"Thinking Functionally With Haskell"의 한 가지는 프로그램을보다 효율적으로 사용하는 것입니다. 융합 법. 나는 답을 되풀이하려고 애쓰는 데 어려움을 겪고있다. 계산의 일부는 등식 추론을 통해 maximum (xs ++ map (x+) xs)을 max (maximum xs) (x + maximum xs)으로 변환해야합니다. max