Programação funcional, mapa Scala e dobra à esquerda [fechado]
Quais são alguns bons tutoriais na dobra à esquerda?
Pergunta original, restaurada da exclusão para fornecer contexto para outras respostas:
Estou tentando implementar um método para encontrar a caixa de retângulo de círculo, círculo, localização e o grupo que estende Shape. O grupo é basicamente uma matriz de formas
abstract class Shape
case class Rectangle(width: Int, height: Int) extends Shape
case class Location(x: Int, y: Int, shape: Shape) extends Shape
case class Circle(radius: Int) extends Shape
case class Group(shape: Shape*) extends Shape
Peguei a caixa delimitadora para todos os três, exceto o grupo um. Portanto, agora, para o método da caixa delimitadora, eu sei que deveria usar o mapa e dobrar à esquerda para o Grupo, mas não consigo descobrir a sintaxe exata de sua criação.
object BoundingBox {
def boundingBox(s: Shape): Location = s match {
case Circle(c)=>
new Location(-c,-c,s)
case Rectangle(_, _) =>
new Location(0, 0, s)
case Location(x, y, shape) => {
val b = boundingBox(shape)
Location(x + b.x, y + b.y, b.shape)
}
case Group(shapes @ _*) => ( /: shapes) { } // i dont know how to proceed here.
}
}
A caixa delimitadora de grupo é basicamente a menor caixa delimitadora com todas as formas incluídas.