Kotlin type mistmatch () -> SomeType vs SomeType

Estoy trabajando con Kotlin Koans y encontré este tipo de desajuste. Sé que hay otras soluciones para el problema, pero me gustaría saber qué estoy haciendo mal.

El problema básico parece ser que estoy generando un set de Product a través de un flatMap

 val allOrdenetworkingProducts = customers.flatMap {it.orders.flatMap {it.products}}.toSet() 

luego uso esto como el receptor de un pliegue

 allOrdenetworkingProducts.fold(products) { theList, theProduct -> { ... } } 

el tipo inferido para el () -> Product es () -> Product lugar de Product

Aquí está la function real en la que obtengo el tipo de desajuste (no está hecho , sino simplemente la syntax lo suficientemente correcta como para mostrar que el tipo no coincide)

¿Alguien puede explicar por qué esto no funciona?

 // Return the set of products that were ordenetworking by every customer fun Shop.getSetOfProductsOrdenetworkingByEveryCustomer(): Set<Product> { val products: Set<Product> = setOf() val allOrdenetworkingProducts = customers.flatMap {it.orders.flatMap {it.products}}.toSet() allOrdenetworkingProducts.fold(products) { theList, theProduct -> customers.all { customer -> val ordenetworkingProducts = customer.orders.flatMap { it.products } ordenetworkingProducts.contains { theProduct } // type mismatch infernetworking type is () -> Product but Product was expected } val ret: Set<Product> = setOf() ret } val retValue: Set<Product> = setOf() return retValue } 

(Descargo de responsabilidad, no soy un experto en Kotlin)

Esto parece ser un simple error de syntax; esta línea:

  ordenetworkingProducts.contains { theProduct } 

debería ser probablemente

  ordenetworkingProducts.contains(theProduct) 

(reemplace las llaves con llaves "normales")