     /// Returns the elements of this cursor of cursors, concatenated.
     public func joined() -> FlattenCursor<Self> {
         return FlattenCursor(self)
+    }
+}
+
+extension Cursor where Element: Sequence {
+    /// Returns the elements of this cursor of sequences, concatenated.
+    public func joined() -> FlattenCursor<MapCursor<Self, IteratorCursor<Self.Element.Iterator>>> {
+        return flatMap { $0 }
     }
 }
 

    /// Returns a cursor over the concatenated results of mapping transform
    /// over self.
    public func flatMap<SegmentOfResult : Cursor>(_ transform: @escaping (Iterator.Element) throws -> SegmentOfResult) -> FlattenCursor<MapCursor<IteratorCursor<Self.Iterator>, SegmentOfResult>> {
        return IteratorCursor(makeIterator()).flatMap(transform)
    }
}

    /// Returns a cursor over the concatenated results of mapping transform
    /// over self.
    public func flatMap<SegmentOfResult : Sequence>(_ transform: @escaping (Element) throws -> SegmentOfResult) -> FlattenCursor<MapCursor<Self, IteratorCursor<SegmentOfResult.Iterator>>> {
        return flatMap { try IteratorCursor(transform($0)) }
    }
    
    /// Returns a cursor over the concatenated results of mapping transform
