case class Address
(street
: String, city
: String, zipcode
: String
) case class Person
(name
: String, address
: Address
) case class Account
(owner
: Person, entries
: List
[Int
])
def balance
(a
: Account
) = a.
entries.
sum
}
def sum
[A
](a
: A
)(implicit summer
: Sum
[A
]) = summer.
sum(a
)
def sum
(a
: Account
): Int
= balance
(a
) }
val account
= Account
(Person
("name", Address
("streetname",
"cityname",
"10000")), List
(2,
8,
32))
println(sum(account))
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewoJICAgIGNhc2UgY2xhc3MgQWRkcmVzcyhzdHJlZXQ6IFN0cmluZywgY2l0eTogU3RyaW5nLCB6aXBjb2RlOiBTdHJpbmcpCiAgICBjYXNlIGNsYXNzIFBlcnNvbihuYW1lOiBTdHJpbmcsIGFkZHJlc3M6IEFkZHJlc3MpCiAgICBjYXNlIGNsYXNzIEFjY291bnQob3duZXI6IFBlcnNvbiwgZW50cmllczogTGlzdFtJbnRdKQoKICAgIGRlZiBiYWxhbmNlKGE6IEFjY291bnQpID0gYS5lbnRyaWVzLnN1bQoKICAgIHRyYWl0IFN1bVtBXSB7CiAgICAgIGRlZiBzdW0oYTogQSk6IEludAogICAgfQoKICAgIGRlZiBzdW1bQV0oYTogQSkoaW1wbGljaXQgc3VtbWVyOiBTdW1bQV0pID0gc3VtbWVyLnN1bShhKQoKICAgIGltcGxpY2l0IG9iamVjdCBBY2NvdW50U3VtIGV4dGVuZHMgU3VtW0FjY291bnRdIHsKICAgICAgZGVmIHN1bShhOiBBY2NvdW50KTogSW50ID0gYmFsYW5jZShhKQogICAgfQoKICAgIHZhbCBhY2NvdW50ID0gQWNjb3VudChQZXJzb24oIm5hbWUiLCBBZGRyZXNzKCJzdHJlZXRuYW1lIiwgImNpdHluYW1lIiwgIjEwMDAwIikpLCBMaXN0KDIsIDgsIDMyKSkKCiAgICBwcmludGxuKHN1bShhY2NvdW50KSkKfQ==