 }
 
 public extension RangeReplaceableRandomAccessSlice
-    where Base : TensorProtocol, Base.Index == Int, IndexDistance == Int
+    where Base : TensorProtocol, Base.Index == Int
 {
     public var shape: TensorShape {
         return base.elementShape?.prepending(count) ?? .scalar

    subscript(index: TensorIndex) -> Self { get }
}

public extension TensorProtocol where IndexDistance == Int {
    /// Tensor shape
    var shape: TensorShape {
        return elementShape?.prepending(count) ?? .scalar
    }


}

public extension TensorProtocol {

    public func isSimilar(to other: Self) -> Bool {
        return shape ~ other.shape
