Merge and aggregate datasets: Difference between revisions

Content added Content deleted
(→‎{{header|Haskell}}: added solution)
m (→‎Reading and merging: simplified a bit)
Line 591: Line 591:


<lang haskell>import Data.List
<lang haskell>import Data.List
import Data.Maybe (mapMaybe, maybeToList)
import Data.Maybe
import System.IO (readFile)
import System.IO (readFile)
import Text.Read (readMaybe)
import Text.Read (readMaybe)
Line 622: Line 622:


instance Semigroup Patient where
instance Semigroup Patient where
p1 <> p2 = Patient
Patient p1 n1 v1 s1 <> Patient p2 n2 v2 s2 =
(if null (pid p1) then pid p2 else pid p1)
Patient (fromJust $ Just p1 <|> Just p2)
(name p1 <|> name p2)
(n1 <|> n2)
(visits p1 <|> visits p2)
(v1 <|> v2)
(scores p2 <|> scores p1)
(s1 <|> s2)


instance Monoid Patient where
instance Monoid Patient where