 
   public init(withSize size: Int32) {
     self.size = size
+  }
+
+  public var description: String {
+    return "Discrete(\(size))"
   }
 
   public func sample<G: RandomNumberGenerator>(generator: inout G) -> ShapedArray<Int32> {

    self.shape = sizes.map { Int($0) }
  }

  public func sample<G: RandomNumberGenerator>(generator: inout G) -> ShapedArray<Int32> {
    // TODO
    fatalError("Not implemented.")
  }

  public func contains(_ value: ShapedArray<Int32>) -> Bool {
    // TODO
    fatalError("Not implemented.")
  }
}

public struct Box<Scalar: TensorFlowScalar>: Space {
  public let low: Scalar
  public let high: Scalar
  public let shape: [Int]

  public func sample<G: RandomNumberGenerator>(generator: inout G) -> ShapedArray<Scalar> {
    // TODO
    fatalError("Not implemented.")
  }

  public func contains(_ value: ShapedArray<Scalar>) -> Bool {
    // TODO
    fatalError("Not implemented.")
  }
}

    self.shape = [size]
  }

  public var description: String {
    return "MultiBinary(\(size))"
  }

  public func sample<G: RandomNumberGenerator>(generator: inout G) -> ShapedArray<Int32> {
    var scalars: [Scalar] = []
    for _ in 0..<size {
