-2
두리스트 또는 세트의 합집합을위한 함수형 프로그램 작성 방법은 무엇입니까?기능적 프로그래밍 함수
두리스트 또는 세트의 합집합을위한 함수형 프로그램 작성 방법은 무엇입니까?기능적 프로그래밍 함수
언어에 따라 다르지만 일반적으로 공유 요소를 식별하는 세트를 순회하는 재귀 적 솔루션이 있습니다.
예.
union :: Ord a => Set a -> Set a -> Set a
union Tip t2 = t2
union t1 Tip = t1
union t1 t2 = hedgeUnion (const LT) (const GT) t1 t2
hedgeUnion _ _ t1 Tip
= t1
hedgeUnion cmplo cmphi Tip (Bin _ x l r)
= join x (filterGt cmplo l) (filterLt cmphi r)
hedgeUnion cmplo cmphi (Bin _ x l r) t2
= join x (hedgeUnion cmplo cmpx l (trim cmplo cmpx t2))
(hedgeUnion cmpx cmphi r (trim cmpx cmphi t2))
where
cmpx y = compare x y
또는 더 간단하게,리스트를 들어, 기본 Data.Set
유형에 하스켈 :
unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
unionBy eq xs ys = xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs
이 숙제 질문처럼 들리 겠지만 나는 물린 것이다. 파이썬에서 :
lambda x, y: x + filter(lambda z: z not in x, y)
은 python 'functional'입니까? – KevinDTimm
나는 그렇게 말하지 않겠지 만 기능적 코드를 작성할 수 있습니다. :) – jalf
동의. 그것은 Haskell이나 F #의 의미에서 순전히 기능적이지는 않지만, 기능적 패러다임을 지원합니다. –