Estoy tomando una programación funcional Coursera en la clase Scala. Esta es la segunda semana y choco contra una pared. En la tarea estamos trabajando con Sets, pero no con el tipo de Set que todos conocemos en Java, por ejemplo. Es un conjunto que devuelve verdadero si el valor está allí y de lo contrario es falso. Dicen que no es un contenedor, es solo una función.Ayuda de asignación: unión entre conjuntos
Para que quede claro, necesito su ayuda. No quiero que resuelvas mi tarea, es solo un ejemplo de que quiero tener la idea de lo que debo hacer.
/**
* We represent a set by its characteristic function, i.e.
* its `contains` predicate.
*/
type Set = Int => Boolean
/**
* Indicates whether a set contains a given element.
*/
def contains(s: Set, elem: Int): Boolean = s(elem)
/**
* Returns the set of the one given element.
*/
def singletonSet(elem: Int): Set = Set(elem)
/**
* Returns the union of the two given sets,
* the sets of all elements that are in either `s` or `t`.
*/
def union(s: Set, t: Set): Set = ???
Este es el código. En el singletonSet
supongo que la forma de resolverlo es devolver el Set(elem)
, ¿verdad?
Si eso es bueno, ¿cómo se supone que debo hacer la unión entre los dos? No soy nuevo en programación pero no veo ninguna manera de hacerlo. Como no debería devolver un "conjunto" de números.
Esto es lo que otro alumno me contó sobre los conjuntos: "Pero todo un" Conjunto "es una función que toma un Int y devuelve un Booleano (Int => Booleano). Cualquier función que toma un Int y devuelve un boolean ajusta el tipo 'Set' "
lo que intenté en la función de unión es tener algo como:.
def union(s: Set, t: Set): Set = (s | t) //value | not a member of Int => Boolean
Cualquier ayuda se agradece :)
Curioso que http://stackoverflow.com/questions/13052735/is-my-understanding-of-below-scala-code-correct es esencialmente la misma pregunta y permanece abierta. La OMI debe estar abierta ya que son preguntas válidas. – talonx