From 8ae36d445217a1a5ad85307d3dc065d688ee8190 Mon Sep 17 00:00:00 2001 From: Simon Vergauwen Date: Wed, 3 Feb 2021 13:37:45 +0100 Subject: [PATCH 1/5] Deprecate Show --- .../src/main/kotlin/arrow/core/Const.kt | 4 +- .../src/main/kotlin/arrow/core/Either.kt | 17 +++--- .../src/main/kotlin/arrow/core/Eval.kt | 21 +++++++ .../src/main/kotlin/arrow/core/Ior.kt | 38 ++++++++----- .../src/main/kotlin/arrow/core/Iterable.kt | 4 -- .../src/main/kotlin/arrow/core/List.kt | 7 --- .../src/main/kotlin/arrow/core/ListK.kt | 14 +++-- .../src/main/kotlin/arrow/core/MapK.kt | 5 +- .../main/kotlin/arrow/core/NonEmptyList.kt | 13 +---- .../src/main/kotlin/arrow/core/Option.kt | 17 +++--- .../src/main/kotlin/arrow/core/Ordering.kt | 56 ++++++++++--------- .../src/main/kotlin/arrow/core/SequenceK.kt | 12 +++- .../src/main/kotlin/arrow/core/SetK.kt | 5 +- .../src/main/kotlin/arrow/core/SortedMapK.kt | 8 ++- .../src/main/kotlin/arrow/core/Tuple10.kt | 36 ++---------- .../src/main/kotlin/arrow/core/Tuple2.kt | 22 ++------ .../src/main/kotlin/arrow/core/Tuple3.kt | 24 ++------ .../src/main/kotlin/arrow/core/Tuple4.kt | 24 ++------ .../src/main/kotlin/arrow/core/Tuple5.kt | 26 ++------- .../src/main/kotlin/arrow/core/Tuple6.kt | 27 ++------- .../src/main/kotlin/arrow/core/Tuple7.kt | 29 ++-------- .../src/main/kotlin/arrow/core/Tuple8.kt | 31 ++-------- .../src/main/kotlin/arrow/core/Tuple9.kt | 33 ++--------- .../src/main/kotlin/arrow/core/Validated.kt | 19 ++++--- .../src/main/kotlin/arrow/core/boolean.kt | 9 --- .../src/main/kotlin/arrow/core/char.kt | 9 --- .../src/main/kotlin/arrow/core/map.kt | 14 ----- .../src/main/kotlin/arrow/core/number.kt | 43 -------------- .../src/main/kotlin/arrow/core/set.kt | 6 -- .../src/main/kotlin/arrow/core/string.kt | 16 ++---- .../src/main/kotlin/arrow/typeclasses/Show.kt | 3 + .../core/extensions/const/show/ConstShow.kt | 2 + .../core/extensions/either/show/EitherShow.kt | 3 +- .../core/extensions/hashed/show/HashedShow.kt | 2 + .../arrow/core/extensions/ior/show/IorShow.kt | 6 +- .../core/extensions/list/show/ListKShow.kt | 9 +-- .../core/extensions/listk/show/ListKShow.kt | 5 +- .../core/extensions/mapk/show/MapKShow.kt | 3 +- .../nonemptylist/show/NonEmptyListShow.kt | 10 +--- .../core/extensions/option/show/OptionShow.kt | 6 +- .../extensions/ordering/show/OrderingShow.kt | 3 +- .../sequencek/show/SequenceKShow.kt | 2 + .../core/extensions/setk/show/SetKShow.kt | 11 +--- .../extensions/tuple10/show/Tuple10Show.kt | 11 +--- .../core/extensions/tuple2/show/Tuple2Show.kt | 11 +--- .../core/extensions/tuple3/show/Tuple3Show.kt | 11 +--- .../core/extensions/tuple4/show/Tuple4Show.kt | 11 +--- .../core/extensions/tuple5/show/Tuple5Show.kt | 11 +--- .../core/extensions/tuple6/show/Tuple6Show.kt | 11 +--- .../core/extensions/tuple7/show/Tuple7Show.kt | 11 +--- .../core/extensions/tuple8/show/Tuple8Show.kt | 11 +--- .../core/extensions/tuple9/show/Tuple9Show.kt | 11 +--- .../validated/show/ValidatedShow.kt | 3 +- 53 files changed, 236 insertions(+), 520 deletions(-) diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Const.kt b/arrow-core-data/src/main/kotlin/arrow/core/Const.kt index ee58d7e7c..fa834b835 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Const.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Const.kt @@ -4,6 +4,7 @@ import arrow.Kind import arrow.typeclasses.Applicative import arrow.typeclasses.Semigroup import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation class ForConst private constructor() { companion object } typealias ConstOf = arrow.Kind2 @@ -37,11 +38,12 @@ data class Const(private val value: A) : ConstOf { fun value(): A = value + @Deprecated(ShowDeprecation) fun show(SA: Show): String = "$Const(${SA.run { value.show() }})" override fun toString(): String = - show(Show.any()) + "$Const($value)" } fun ConstOf.combine(SG: Semigroup, that: ConstOf): Const = diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Either.kt b/arrow-core-data/src/main/kotlin/arrow/core/Either.kt index 553c95e1b..f0fc4604c 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Either.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Either.kt @@ -1063,7 +1063,7 @@ sealed class Either : EitherOf { override val isLeft = true override val isRight = false - override fun toString(): String = show(Show.any(), Show.any()) + override fun toString(): String = "Either.Left($a)" companion object { operator fun invoke(a: A): Either = Left(a) @@ -1078,7 +1078,7 @@ sealed class Either : EitherOf { override val isLeft = false override val isRight = true - override fun toString(): String = show(Show.any(), Show.any()) + override fun toString(): String = "Either.Right($b)" companion object { operator fun invoke(b: B): Either = Right(b) @@ -1086,12 +1086,13 @@ sealed class Either : EitherOf { } fun show(SL: Show, SR: Show): String = fold( - { - "Left(${SL.run { it.show() }})" - }, - { - "Right(${SR.run { it.show() }})" - } + { "Left(${SL.run { it.show() }})" }, + { "Right(${SR.run { it.show() }})" } + ) + + override fun toString(): String = fold( + { "Either.Left($it)" }, + { "Either.Right($it)" } ) fun toValidatedNel(): ValidatedNel = diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Eval.kt b/arrow-core-data/src/main/kotlin/arrow/core/Eval.kt index 0497a1e50..ad32ef627 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Eval.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Eval.kt @@ -290,6 +290,9 @@ sealed class Eval : EvalOf { data class Now(val value: A) : Eval() { override fun value(): A = value override fun memoize(): Eval = this + + override fun toString(): String = + "Eval.Now($value)" } /** @@ -308,6 +311,9 @@ sealed class Eval : EvalOf { override fun value(): A = value override fun memoize(): Eval = this + + override fun toString(): String = + "Eval.Later(f)" } /** @@ -321,6 +327,9 @@ sealed class Eval : EvalOf { data class Always(private val f: () -> A) : Eval() { override fun value(): A = f() override fun memoize(): Eval = Later(f) + + override fun toString(): String = + "Eval.Always(f)" } /** @@ -331,6 +340,9 @@ sealed class Eval : EvalOf { data class Defer(val thunk: () -> Eval) : Eval() { override fun memoize(): Eval = Memoize(this) override fun value(): A = collapse(this).value() + + override fun toString(): String = + "Eval.Defer(thunk)" } /** @@ -348,6 +360,9 @@ sealed class Eval : EvalOf { abstract fun run(s: S): Eval override fun memoize(): Eval = Memoize(this) override fun value(): A = evaluate(this) + + override fun toString(): String = + "Eval.FlatMao(..)" } /** @@ -363,7 +378,13 @@ sealed class Eval : EvalOf { override fun value(): A = result.getOrElse { evaluate(eval).also { result = Some(it) } } + + override fun toString(): String = + "Eval.Memoize($eval)" } + + override fun toString(): String = + "Eval(...)" } fun Iterator.iterateRight(lb: Eval, f: (A, Eval) -> Eval): Eval { diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Ior.kt b/arrow-core-data/src/main/kotlin/arrow/core/Ior.kt index 70472b2f8..64d72f5fc 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Ior.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Ior.kt @@ -7,7 +7,9 @@ import arrow.typeclasses.Semigroup import arrow.typeclasses.Show @Deprecated("Kind is deprecated, and will be removed in 0.13.0. Please use one of the provided concrete methods instead") -class ForIor private constructor() { companion object } +class ForIor private constructor() { + companion object +} @Deprecated("Kind is deprecated, and will be removed in 0.13.0. Please use one of the provided concrete methods instead") typealias IorOf = arrow.Kind2 @Deprecated("Kind is deprecated, and will be removed in 0.13.0. Please use one of the provided concrete methods instead") @@ -596,7 +598,7 @@ sealed class Ior : IorOf { override val isLeft: Boolean get() = true override val isBoth: Boolean get() = false - override fun toString(): String = "Left(${ value.toString() })" + override fun toString(): String = "Ior.Left($value)" companion object { @Deprecated("Deprecated, use the constructor instead", ReplaceWith("Left(a)")) @@ -609,7 +611,7 @@ sealed class Ior : IorOf { override val isLeft: Boolean get() = false override val isBoth: Boolean get() = false - override fun toString(): String = "Right(${ value.toString() })" + override fun toString(): String = "Ior.Right($value)" companion object { @Deprecated("Deprecated, use the constructor instead", ReplaceWith("Right(a)")) @@ -622,7 +624,7 @@ sealed class Ior : IorOf { override val isLeft: Boolean get() = false override val isBoth: Boolean get() = true - override fun toString(): String = "Both(${ leftValue.toString() }, ${ rightValue.toString() })" + override fun toString(): String = "Ior.Both($leftValue, rightValue)" } @Deprecated( @@ -642,6 +644,12 @@ sealed class Ior : IorOf { { a, b -> "Both(${SL.run { a.show() }}, ${SR.run { b.show() }})" } ) + override fun toString(): String = fold( + { "Ior.Left($it" }, + { "Ior.Right($it)" }, + { a, b -> "Ior.Both($a, $b)" } + ) + inline fun bicrosswalk( fa: (A) -> Iterable, fb: (B) -> Iterable @@ -650,7 +658,7 @@ sealed class Ior : IorOf { { a -> fa(a).map { it.leftIor() } }, { b -> fb(b).map { it.rightIor() } }, { a, b -> fa(a).align(fb(b)) } - ) + ) inline fun bicrosswalkMap( fa: (A) -> Map, @@ -660,7 +668,7 @@ sealed class Ior : IorOf { { a -> fa(a).mapValues { it.value.leftIor() } }, { b -> fb(b).mapValues { it.value.rightIor() } }, { a, b -> fa(a).align(fb(b)) } - ) + ) inline fun bicrosswalkNull( fa: (A) -> C?, @@ -704,21 +712,21 @@ sealed class Ior : IorOf { fold( { emptyList() }, { b -> fa(b).map { Right(it) } }, - { a, b -> fa(b).map { Both(a, it) }} + { a, b -> fa(b).map { Both(a, it) } } ) inline fun crosswalkMap(fa: (B) -> Map): Map> = fold( { emptyMap() }, { b -> fa(b).mapValues { Right(it.value) } }, - { a, b -> fa(b).mapValues { Both(a, it.value) }} + { a, b -> fa(b).mapValues { Both(a, it.value) } } ) inline fun crosswalkNull(ior: Ior, fa: (B) -> C?): Ior? = ior.fold( { a -> Left(a) }, { b -> fa(b)?.let { Right(it) } }, - { a, b -> fa(b)?.let { Both(a, it) }} + { a, b -> fa(b)?.let { Both(a, it) } } ) inline fun all(predicate: (B) -> Boolean): Boolean = @@ -794,21 +802,21 @@ sealed class Ior : IorOf { fold( { a -> listOf(Left(a)) }, { b -> fa(b).map { Right(it) } }, - { a, b -> fa(b).map { Both(a, it) }} + { a, b -> fa(b).map { Both(a, it) } } ) inline fun traverseEither(fa: (B) -> Either): Either> = fold( { a -> Either.right(Left(a)) }, { b -> fa(b).map { Right(it) } }, - { a, b -> fa(b).map { Both(a, it) }} + { a, b -> fa(b).map { Both(a, it) } } ) inline fun traverseValidated(fa: (B) -> Validated): Validated> = fold( { a -> Valid(Left(a)) }, { b -> fa(b).map { Right(it) } }, - { a, b -> fa(b).map { Both(a, it) }} + { a, b -> fa(b).map { Both(a, it) } } ) inline fun traverse_(fa: (B) -> Iterable): List = @@ -977,7 +985,7 @@ fun Ior.replicate(SA: Semigroup, n: Int): Ior> = is Ior.Right -> Ior.Right(List(n) { value }) is Ior.Left -> this is Ior.Both -> bimap( - { List(n - 1) { leftValue}.fold(leftValue, { acc, a -> SA.run { acc + a }}) }, + { List(n - 1) { leftValue }.fold(leftValue, { acc, a -> SA.run { acc + a } }) }, { List(n) { rightValue } } ) } @@ -988,7 +996,7 @@ fun Ior.replicate(SA: Semigroup, n: Int, MB: Monoid): Ior Ior.Right(MB.run { List(n) { value }.combineAll() }) is Ior.Left -> this is Ior.Both -> bimap( - { List(n - 1) { leftValue}.fold(leftValue, { acc, a -> SA.run { acc + a }}) }, + { List(n - 1) { leftValue }.fold(leftValue, { acc, a -> SA.run { acc + a } }) }, { MB.run { List(n) { rightValue }.combineAll() } } ) } @@ -1039,7 +1047,7 @@ fun Ior.zip(SA: Semigroup, fb: Ior): Ior> zip(SA, fb, ::Pair) fun Ior.zipEval(SA: Semigroup, other: Eval>, f: (B, C) -> Z): Eval> = - other.map {zip(SA, it).map { a -> f(a.first, a.second) }} + other.map { zip(SA, it).map { a -> f(a.first, a.second) } } fun Semigroup.Companion.ior(SA: Semigroup, SB: Semigroup): Semigroup> = IorSemigroup(SA, SB) diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Iterable.kt b/arrow-core-data/src/main/kotlin/arrow/core/Iterable.kt index dd6dc58a5..4e0a513c5 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Iterable.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Iterable.kt @@ -5,7 +5,6 @@ package arrow.core import arrow.typeclasses.Eq import arrow.typeclasses.Monoid import arrow.typeclasses.Semigroup -import arrow.typeclasses.Show import kotlin.collections.foldRight as _foldRight inline fun Iterable.foldRight(initial: B, operation: (A, acc: B) -> B): B = @@ -267,9 +266,6 @@ inline fun Iterable.rightPadZip(other: Iterable, fa: (A, B?) -> fun Iterable.rightPadZip(other: Iterable): List> = this.rightPadZip(other) { a, b -> a toT b } -fun Iterable.show(SA: Show): String = "[" + - joinToString(", ") { SA.run { it.show() } } + "]" - @Suppress("UNCHECKED_CAST") private tailrec fun go( buf: MutableList, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/List.kt b/arrow-core-data/src/main/kotlin/arrow/core/List.kt index b78d7f9e4..7a128ee60 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/List.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/List.kt @@ -5,7 +5,6 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Semigroup -import arrow.typeclasses.Show import arrow.typeclasses.defaultSalt import arrow.typeclasses.hashWithSalt import kotlin.collections.plus as _plus @@ -125,9 +124,3 @@ object ListMonoid : Monoid> { override fun empty(): List = emptyList() override fun List.combine(b: List): List = this._plus(b) } - -fun Show.Companion.list(SA: Show): Show> = - object : Show> { - override fun List.show(): String = - show(SA) - } diff --git a/arrow-core-data/src/main/kotlin/arrow/core/ListK.kt b/arrow-core-data/src/main/kotlin/arrow/core/ListK.kt index 995da4420..2109c6712 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/ListK.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/ListK.kt @@ -3,8 +3,11 @@ package arrow.core import arrow.Kind import arrow.typeclasses.Applicative import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation -class ForListK private constructor() { companion object } +class ForListK private constructor() { + companion object +} typealias ListKOf = arrow.Kind @Suppress("UNCHECKED_CAST", "NOTHING_TO_INLINE") @@ -420,10 +423,13 @@ data class ListK(private val list: List) : ListKOf, List by list ): ListK> = this.rightPadZip(other) { a, b -> a toT b } - fun show(SA: Show): String = "[" + - list.joinToString(", ") { SA.run { it.show() } } + "]" + @Deprecated(ShowDeprecation) + fun show(SA: Show): String = SA.run { + joinToString(prefix = "[", separator = ", ", postfix = "]") { it.show() } + } - override fun toString(): String = show(Show.any()) + override fun toString(): String = + list.toString() companion object { diff --git a/arrow-core-data/src/main/kotlin/arrow/core/MapK.kt b/arrow-core-data/src/main/kotlin/arrow/core/MapK.kt index 4d219bc40..e4e2b283d 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/MapK.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/MapK.kt @@ -3,6 +3,7 @@ package arrow.core import arrow.Kind import arrow.typeclasses.Applicative import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation @Deprecated("Kind is deprecated, and will be removed in 0.13.0. Please use one of the provided concrete methods instead") class ForMapK private constructor() { companion object } @@ -54,9 +55,11 @@ data class MapK(private val map: Map) : MapKOf, Map }.value() } + @Deprecated(ShowDeprecation) fun show(SK: Show, SA: Show): String = "Map(${toList().k().map { it.toTuple2() }.show(Show { show(SK, SA) })})" - override fun toString(): String = show(Show.any(), Show.any()) + override fun toString(): String = + map.toString() override fun equals(other: Any?): Boolean = when (other) { diff --git a/arrow-core-data/src/main/kotlin/arrow/core/NonEmptyList.kt b/arrow-core-data/src/main/kotlin/arrow/core/NonEmptyList.kt index 853694de7..7db1bb5f5 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/NonEmptyList.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/NonEmptyList.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Semigroup import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation @Deprecated("Kind is deprecated, and will be removed in 0.13.0. Please use one of the provided concrete methods instead") class ForNonEmptyList private constructor() { companion object } @@ -306,11 +307,12 @@ class NonEmptyList( override fun hashCode(): Int = all.hashCode() + @Deprecated(ShowDeprecation) fun show(SA: Show): String = "NonEmptyList(${all.k().show(SA)})" override fun toString(): String = - show(Show.any()) + "NonEmptyList(${all.joinToString()})" fun align(b: NonEmptyList): NonEmptyList> = NonEmptyList(Ior.Both(head, b.head), tail.align(b.tail)) @@ -664,9 +666,6 @@ fun Order.Companion.nonEmptyList(OA: Order): Order> = fun Semigroup.Companion.nonEmptyList(): Semigroup> = NonEmptyListSemigroup as Semigroup> -fun Show.Companion.nonEmptyList(SA: Show): Show> = - NonEmptyListShow(SA) - private class NonEmptyListEq( private val EQA: Eq, ) : Eq> { @@ -692,12 +691,6 @@ object NonEmptyListSemigroup : Semigroup> { NonEmptyList(this.head, this.tail.plus(b)) } -private class NonEmptyListShow( - private val SA: Show, -) : Show> { - override fun NonEmptyList.show(): String = show(SA) -} - fun NonEmptyList.zip(fb: NonEmptyList, f: (A, B) -> Z): NonEmptyList = NonEmptyList(f(head, fb.head), tail.zip(fb.tail, f)) diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Option.kt b/arrow-core-data/src/main/kotlin/arrow/core/Option.kt index 8cf15e3b8..0f189852a 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Option.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Option.kt @@ -960,25 +960,26 @@ sealed class Option : OptionOf { DeprecationLevel.WARNING ) fun show(SA: Show): String = fold( - { - "None" - }, - { - "Some(${SA.run { it.show() }})" - } + { "None" }, + { "Some(${SA.run { it.show() }})" } ) + + override fun toString(): String = fold( + { "Option.None" }, + { "Option.Some($it)" } + ) } object None : Option() { override fun isEmpty() = true - override fun toString(): String = "None" + override fun toString(): String = "Option.None" } data class Some(val t: T) : Option() { override fun isEmpty() = false - override fun toString(): String = "Some($t)" + override fun toString(): String = "Option.Some($t)" } /** diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Ordering.kt b/arrow-core-data/src/main/kotlin/arrow/core/Ordering.kt index 2c295d9c1..0e97e72f5 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Ordering.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Ordering.kt @@ -5,29 +5,42 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Semigroup -import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.hashWithSalt sealed class Ordering { override fun equals(other: Any?): Boolean = this === other // ref equality is fine because objects should be singletons - override fun toString(): String = show() + override fun toString(): String = + when (this) { + LT -> "LT" + GT -> "GT" + EQ -> "EQ" + } - override fun hashCode(): Int = toInt() + override fun hashCode(): Int = + when (this) { + LT -> -1 + GT -> 1 + EQ -> 0 + } - fun toInt(): Int = when (this) { - LT -> -1 - GT -> 1 - EQ -> 0 - } + fun toInt(): Int = + when (this) { + LT -> -1 + GT -> 1 + EQ -> 0 + } - operator fun plus(b: Ordering): Ordering = when (this) { - LT -> LT - EQ -> b - GT -> GT - } + operator fun plus(b: Ordering): Ordering = + when (this) { + LT -> LT + EQ -> b + GT -> GT + } - fun hash(): Int = hashWithSalt(hashCode()) + fun hash(): Int = + hashWithSalt(hashCode()) fun hashWithSalt(salt: Int): Int = salt.hashWithSalt(hashCode()) @@ -67,11 +80,9 @@ sealed class Ordering { fun combine(b: Ordering): Ordering = this + b - fun show(): String = when (this) { - LT -> "LT" - GT -> "GT" - EQ -> "EQ" - } + @Deprecated(ShowDeprecation) + fun show(): String = + toString() companion object { fun fromInt(i: Int): Ordering = when (i) { @@ -98,8 +109,6 @@ fun Monoid.Companion.ordering(): Monoid = OrderingMonoid fun Order.Companion.ordering(): Order = OrderingOrder -fun Show.Companion.ordering(): Show = OrderingShow - @Suppress("EXTENSION_SHADOWED_BY_MEMBER") private object OrderingEq : Eq { override fun Ordering.eqv(b: Ordering): Boolean = @@ -126,8 +135,3 @@ private object OrderingMonoid : Monoid { private object OrderingOrder : Order { override fun Ordering.compare(b: Ordering): Ordering = this.compare(b) } - -@Suppress("EXTENSION_SHADOWED_BY_MEMBER") -private object OrderingShow : Show { - override fun Ordering.show(): String = this.show() -} diff --git a/arrow-core-data/src/main/kotlin/arrow/core/SequenceK.kt b/arrow-core-data/src/main/kotlin/arrow/core/SequenceK.kt index ce15ef8fd..2374d2c00 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/SequenceK.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/SequenceK.kt @@ -3,8 +3,11 @@ package arrow.core import arrow.Kind import arrow.typeclasses.Applicative import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation -class ForSequenceK private constructor() { companion object } +class ForSequenceK private constructor() { + companion object +} typealias SequenceKOf = arrow.Kind @Suppress("UNCHECKED_CAST", "NOTHING_TO_INLINE") @@ -75,9 +78,12 @@ data class SequenceK(val sequence: Sequence) : SequenceKOf, Sequenc fun toList(): List = this.fix().sequence.toList() - fun show(SA: Show): String = "Sequence(${toList().k().show(SA)})" + @Deprecated(ShowDeprecation) + fun show(SA: Show): String = + "Sequence(${toList().k().show(SA)})" - override fun toString(): String = show(Show.any()) + override fun toString(): String = + sequence.toString() companion object { diff --git a/arrow-core-data/src/main/kotlin/arrow/core/SetK.kt b/arrow-core-data/src/main/kotlin/arrow/core/SetK.kt index ff4725779..e516c3ed5 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/SetK.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/SetK.kt @@ -1,6 +1,7 @@ package arrow.core import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation @Deprecated("Kind is deprecated, and will be removed in 0.13.0. Please use one of the provided concrete methods instead") class ForSetK private constructor() { companion object } @@ -32,9 +33,11 @@ data class SetK(private val set: Set) : SetKOf, Set by set { else -> false } + @Deprecated(ShowDeprecation) fun show(SA: Show): String = "Set(${toList().k().show(SA)})" - override fun toString(): String = show(Show.any()) + override fun toString(): String = + set.toString() companion object { diff --git a/arrow-core-data/src/main/kotlin/arrow/core/SortedMapK.kt b/arrow-core-data/src/main/kotlin/arrow/core/SortedMapK.kt index 3a27c995f..8a8ba1d8b 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/SortedMapK.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/SortedMapK.kt @@ -3,6 +3,7 @@ package arrow.core import arrow.Kind import arrow.typeclasses.Applicative import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.collections.flatMap class ForSortedMapK private constructor() { companion object } @@ -65,9 +66,12 @@ data class SortedMapK, B>(private val map: SortedMap) : override fun hashCode(): Int = map.hashCode() - fun show(SA: Show, SB: Show): String = "SortedMap(${toList().k().map { it.toTuple2() }.show(Show { show(SA, SB) })})" + @Deprecated(ShowDeprecation) + fun show(SA: Show, SB: Show): String = + "SortedMap(${toList().k().map { it.toTuple2() }.show(Show { show(SA, SB) })})" - override fun toString(): String = show(Show.any(), Show.any()) + override fun toString(): String = + map.toString() companion object } diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Tuple10.kt b/arrow-core-data/src/main/kotlin/arrow/core/Tuple10.kt index 36cd03784..1b45cc35e 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Tuple10.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Tuple10.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt class ForTuple10 private constructor() { @@ -21,44 +22,17 @@ inline fun Tuple10Of data class Tuple10(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F, val g: G, val h: H, val i: I, val j: J) : Tuple10Of { + + @Deprecated(ShowDeprecation) fun show(SA: Show, SB: Show, SC: Show, SD: Show, SE: Show, SF: Show, SG: Show, SH: Show, SI: Show, SJ: Show): String = "(" + listOf(SA.run { a.show() }, SB.run { b.show() }, SC.run { c.show() }, SD.run { d.show() }, SE.run { e.show() }, SF.run { f.show() }, SG.run { g.show() }, SH.run { h.show() }, SI.run { i.show() }, SJ.run { j.show() }).joinToString(", ") + ")" - override fun toString(): String = show(Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any()) + override fun toString(): String = + "($a, $b, $c, $d, $e, $f, $g, $h, $i, $j)" companion object } -private class Tuple10Show( - private val SA: Show, - private val SB: Show, - private val SC: Show, - private val SD: Show, - private val SE: Show, - private val SF: Show, - private val SG: Show, - private val SH: Show, - private val SI: Show, - private val SJ: Show -) : Show> { - override fun Tuple10.show(): String = - show(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ) -} - -fun Show.Companion.tuple10( - SA: Show, - SB: Show, - SC: Show, - SD: Show, - SE: Show, - SF: Show, - SG: Show, - SH: Show, - SI: Show, - SJ: Show -): Show> = - Tuple10Show(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ) - fun Tuple10.eqv( EQA: Eq, EQB: Eq, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Tuple2.kt b/arrow-core-data/src/main/kotlin/arrow/core/Tuple2.kt index 0a6f035b0..961e50105 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Tuple2.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Tuple2.kt @@ -9,6 +9,7 @@ import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Semigroup import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt class ForTuple2 private constructor() { @@ -58,31 +59,16 @@ data class Tuple2(val a: A, val b: B) : Tuple2Of { fun reverse(): Tuple2 = Tuple2(b, a) + @Deprecated(ShowDeprecation) fun show(SA: Show, SB: Show): String = "(" + listOf(SA.run { a.show() }, SB.run { b.show() }).joinToString(", ") + ")" - override fun toString(): String = show(Show.any(), Show.any()) + override fun toString(): String = + "($a, $b)" companion object } -fun Pair.show(SA: Show, SB: Show): String = - "(${SA.run { first.show() }}, ${SB.run { second.show() }})" - -private class PairShow( - private val SA: Show, - private val SB: Show -) : Show> { - override fun Pair.show(): String = - show(SA, SB) -} - -fun Show.Companion.pair( - SA: Show, - SB: Show -): Show> = - PairShow(SA, SB) - fun Pair.eqv( EQA: Eq, EQB: Eq, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Tuple3.kt b/arrow-core-data/src/main/kotlin/arrow/core/Tuple3.kt index e993e175e..dc92241dd 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Tuple3.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Tuple3.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt class ForTuple3 private constructor() { @@ -22,33 +23,16 @@ inline fun Tuple3Of.fix(): Tuple3 = @Deprecated("Deprecated in favor of Kotlin's Triple", ReplaceWith("Triple(a, b, c)")) data class Tuple3(val a: A, val b: B, val c: C) : Tuple3Of { + @Deprecated(ShowDeprecation) fun show(SA: Show, SB: Show, SC: Show): String = "(" + listOf(SA.run { a.show() }, SB.run { b.show() }, SC.run { c.show() }).joinToString(", ") + ")" - override fun toString(): String = show(Show.any(), Show.any(), Show.any()) + override fun toString(): String = + "($a, $b, $c)" companion object } -fun Triple.show(SA: Show, SB: Show, SC: Show): String = - "(${SA.run { first.show() }}, ${SB.run { second.show() }}, ${SC.run { third.show() }})" - -private class TripleShow( - private val SA: Show, - private val SB: Show, - private val SC: Show -) : Show> { - override fun Triple.show(): String = - show(SA, SB, SC) -} - -fun Show.Companion.triple( - SA: Show, - SB: Show, - SC: Show -): Show> = - TripleShow(SA, SB, SC) - fun Triple.eqv( EQA: Eq, EQB: Eq, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Tuple4.kt b/arrow-core-data/src/main/kotlin/arrow/core/Tuple4.kt index 0a55ace25..0ee50e913 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Tuple4.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Tuple4.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt class ForTuple4 private constructor() { @@ -21,32 +22,17 @@ inline fun Tuple4Of.fix(): Tuple4 = this as Tuple4 data class Tuple4(val a: A, val b: B, val c: C, val d: D) : Tuple4Of { + + @Deprecated(ShowDeprecation) fun show(SA: Show, SB: Show, SC: Show, SD: Show): String = "(" + listOf(SA.run { a.show() }, SB.run { b.show() }, SC.run { c.show() }, SD.run { d.show() }).joinToString(", ") + ")" - override fun toString(): String = show(Show.any(), Show.any(), Show.any(), Show.any()) + override fun toString(): String = + "($a, $b, $c, $d)" companion object } -private class Tuple4Show( - private val SA: Show, - private val SB: Show, - private val SC: Show, - private val SD: Show -) : Show> { - override fun Tuple4.show(): String = - show(SA, SB, SC, SD) -} - -fun Show.Companion.tuple4( - SA: Show, - SB: Show, - SC: Show, - SD: Show -): Show> = - Tuple4Show(SA, SB, SC, SD) - fun Tuple4.eqv( EQA: Eq, EQB: Eq, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Tuple5.kt b/arrow-core-data/src/main/kotlin/arrow/core/Tuple5.kt index dc76c7f7b..4ccdb355d 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Tuple5.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Tuple5.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt class ForTuple5 private constructor() { @@ -21,34 +22,17 @@ inline fun Tuple5Of.fix(): Tuple5 this as Tuple5 data class Tuple5(val a: A, val b: B, val c: C, val d: D, val e: E) : Tuple5Of { + + @Deprecated(ShowDeprecation) fun show(SA: Show, SB: Show, SC: Show, SD: Show, SE: Show): String = "(" + listOf(SA.run { a.show() }, SB.run { b.show() }, SC.run { c.show() }, SD.run { d.show() }, SE.run { e.show() }).joinToString(", ") + ")" - override fun toString(): String = show(Show.any(), Show.any(), Show.any(), Show.any(), Show.any()) + override fun toString(): String = + "($a, $b, $c, $d, $e)" companion object } -private class Tuple5Show( - private val SA: Show, - private val SB: Show, - private val SC: Show, - private val SD: Show, - private val SE: Show -) : Show> { - override fun Tuple5.show(): String = - show(SA, SB, SC, SD, SE) -} - -fun Show.Companion.tuple5( - SA: Show, - SB: Show, - SC: Show, - SD: Show, - SE: Show -): Show> = - Tuple5Show(SA, SB, SC, SD, SE) - fun Tuple5.eqv( EQA: Eq, EQB: Eq, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Tuple6.kt b/arrow-core-data/src/main/kotlin/arrow/core/Tuple6.kt index 309fc13f1..0fefdf49b 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Tuple6.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Tuple6.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt class ForTuple6 private constructor() { @@ -21,36 +22,16 @@ inline fun Tuple6Of.fix(): Tuple6 data class Tuple6(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F) : Tuple6Of { + @Deprecated(ShowDeprecation) fun show(SA: Show, SB: Show, SC: Show, SD: Show, SE: Show, SF: Show): String = "(" + listOf(SA.run { a.show() }, SB.run { b.show() }, SC.run { c.show() }, SD.run { d.show() }, SE.run { e.show() }, SF.run { f.show() }).joinToString(", ") + ")" - override fun toString(): String = show(Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any()) + override fun toString(): String = + "($a, $b, $c, $d, $e, $f)" companion object } -private class Tuple6Show( - private val SA: Show, - private val SB: Show, - private val SC: Show, - private val SD: Show, - private val SE: Show, - private val SF: Show -) : Show> { - override fun Tuple6.show(): String = - show(SA, SB, SC, SD, SE, SF) -} - -fun Show.Companion.tuple6( - SA: Show, - SB: Show, - SC: Show, - SD: Show, - SE: Show, - SF: Show -): Show> = - Tuple6Show(SA, SB, SC, SD, SE, SF) - fun Tuple6.eqv( EQA: Eq, EQB: Eq, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Tuple7.kt b/arrow-core-data/src/main/kotlin/arrow/core/Tuple7.kt index 5aeb25c06..7a4cbe68e 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Tuple7.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Tuple7.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt class ForTuple7 private constructor() { @@ -21,38 +22,16 @@ inline fun Tuple7Of.fix(): Tuple7 data class Tuple7(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F, val g: G) : Tuple7Of { + @Deprecated(ShowDeprecation) fun show(SA: Show, SB: Show, SC: Show, SD: Show, SE: Show, SF: Show, SG: Show): String = "(" + listOf(SA.run { a.show() }, SB.run { b.show() }, SC.run { c.show() }, SD.run { d.show() }, SE.run { e.show() }, SF.run { f.show() }, SG.run { g.show() }).joinToString(", ") + ")" - override fun toString(): String = show(Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any()) + override fun toString(): String = + "($a, $b, $c, $d, $e, $f, $g)" companion object } -private class Tuple7Show( - private val SA: Show, - private val SB: Show, - private val SC: Show, - private val SD: Show, - private val SE: Show, - private val SF: Show, - private val SG: Show -) : Show> { - override fun Tuple7.show(): String = - show(SA, SB, SC, SD, SE, SF, SG) -} - -fun Show.Companion.tuple7( - SA: Show, - SB: Show, - SC: Show, - SD: Show, - SE: Show, - SF: Show, - SG: Show -): Show> = - Tuple7Show(SA, SB, SC, SD, SE, SF, SG) - fun Tuple7.eqv( EQA: Eq, EQB: Eq, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Tuple8.kt b/arrow-core-data/src/main/kotlin/arrow/core/Tuple8.kt index 49d748155..f5b6067e5 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Tuple8.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Tuple8.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt class ForTuple8 private constructor() { @@ -21,40 +22,16 @@ inline fun Tuple8Of.fix(): Tupl this as Tuple8 data class Tuple8(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F, val g: G, val h: H) : Tuple8Of { + @Deprecated(ShowDeprecation) fun show(SA: Show, SB: Show, SC: Show, SD: Show, SE: Show, SF: Show, SG: Show, SH: Show): String = "(" + listOf(SA.run { a.show() }, SB.run { b.show() }, SC.run { c.show() }, SD.run { d.show() }, SE.run { e.show() }, SF.run { f.show() }, SG.run { g.show() }, SH.run { h.show() }).joinToString(", ") + ")" - override fun toString(): String = show(Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any()) + override fun toString(): String = + "($a, $b, $c, $d, $e, $f, $g, $h)" companion object } -private class Tuple8Show( - private val SA: Show, - private val SB: Show, - private val SC: Show, - private val SD: Show, - private val SE: Show, - private val SF: Show, - private val SG: Show, - private val SH: Show -) : Show> { - override fun Tuple8.show(): String = - show(SA, SB, SC, SD, SE, SF, SG, SH) -} - -fun Show.Companion.tuple8( - SA: Show, - SB: Show, - SC: Show, - SD: Show, - SE: Show, - SF: Show, - SG: Show, - SH: Show -): Show> = - Tuple8Show(SA, SB, SC, SD, SE, SF, SG, SH) - fun Tuple8.eqv( EQA: Eq, EQB: Eq, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Tuple9.kt b/arrow-core-data/src/main/kotlin/arrow/core/Tuple9.kt index 6b327f59c..e23bb6e49 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Tuple9.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Tuple9.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt class ForTuple9 private constructor() { @@ -21,42 +22,16 @@ inline fun Tuple9Of.fix() this as Tuple9 data class Tuple9(val a: A, val b: B, val c: C, val d: D, val e: E, val f: F, val g: G, val h: H, val i: I) : Tuple9Of { + @Deprecated(ShowDeprecation) fun show(SA: Show, SB: Show, SC: Show, SD: Show, SE: Show, SF: Show, SG: Show, SH: Show, SI: Show): String = "(" + listOf(SA.run { a.show() }, SB.run { b.show() }, SC.run { c.show() }, SD.run { d.show() }, SE.run { e.show() }, SF.run { f.show() }, SG.run { g.show() }, SH.run { h.show() }, SI.run { i.show() }).joinToString(", ") + ")" - override fun toString(): String = show(Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any(), Show.any()) + override fun toString(): String = + "($a, $b, $c, $d, $e, $f, $g, $h, $i)" companion object } -private class Tuple9Show( - private val SA: Show, - private val SB: Show, - private val SC: Show, - private val SD: Show, - private val SE: Show, - private val SF: Show, - private val SG: Show, - private val SH: Show, - private val SI: Show -) : Show> { - override fun Tuple9.show(): String = - show(SA, SB, SC, SD, SE, SF, SG, SH, SI) -} - -fun Show.Companion.tuple9( - SA: Show, - SB: Show, - SC: Show, - SD: Show, - SE: Show, - SF: Show, - SG: Show, - SH: Show, - SI: Show -): Show> = - Tuple9Show(SA, SB, SC, SD, SE, SF, SG, SH, SI) - fun Tuple9.eqv( EQA: Eq, EQB: Eq, diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Validated.kt b/arrow-core-data/src/main/kotlin/arrow/core/Validated.kt index 391fdc4ab..33ab36ed4 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Validated.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Validated.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Semigroup import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.defaultSalt import arrow.typeclasses.hashWithSalt @@ -821,13 +822,15 @@ sealed class Validated : ValidatedOf { inline fun foldMap(MB: Monoid, f: (A) -> B): B = fold({ MB.empty() }, f) + @Deprecated(ShowDeprecation) fun show(SE: Show, SA: Show): String = fold( - { - "Invalid(${SE.run { it.show() }})" - }, - { - "Valid(${SA.run { it.show() }})" - } + { "Invalid(${SE.run { it.show() }})" }, + { "Valid(${SA.run { it.show() }})" } + ) + + override fun toString(): String = fold( + { "Validated.Invalid($it)" }, + { "Validated.Valid($it)" } ) fun hash(HL: Hash, HR: Hash): Int = @@ -839,11 +842,11 @@ sealed class Validated : ValidatedOf { ) data class Valid(val a: A) : Validated() { - override fun toString(): String = show(Show.any(), Show.any()) + override fun toString(): String = "Validated.Valid($a)" } data class Invalid(val e: E) : Validated() { - override fun toString(): String = show(Show.any(), Show.any()) + override fun toString(): String = "Validated.Invalid($e)" } inline fun fold(fe: (E) -> B, fa: (A) -> B): B = diff --git a/arrow-core-data/src/main/kotlin/arrow/core/boolean.kt b/arrow-core-data/src/main/kotlin/arrow/core/boolean.kt index c0b24af7a..ebf07d5af 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/boolean.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/boolean.kt @@ -4,12 +4,6 @@ import arrow.typeclasses.Eq import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order -import arrow.typeclasses.Show - -private object BooleanShow : Show { - override fun Boolean.show(): String = - this.toString() -} private object BooleanEq : Eq { override fun Boolean.eqv(b: Boolean): Boolean = this == b @@ -24,9 +18,6 @@ private object BooleanHash : Hash { override fun Boolean.hash(): Int = this.hashCode() } -fun Show.Companion.boolean(): Show = - BooleanShow - fun Eq.Companion.boolean(): Eq = BooleanEq diff --git a/arrow-core-data/src/main/kotlin/arrow/core/char.kt b/arrow-core-data/src/main/kotlin/arrow/core/char.kt index b7cc05764..8c28a8613 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/char.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/char.kt @@ -3,12 +3,6 @@ package arrow.core import arrow.typeclasses.Eq import arrow.typeclasses.Hash import arrow.typeclasses.Order -import arrow.typeclasses.Show - -private object CharShow : Show { - override fun Char.show(): String = - this.toString() -} private object CharEq : Eq { override fun Char.eqv(b: Char): Boolean = this == b @@ -26,9 +20,6 @@ private object CharHash : Hash { override fun Char.hash(): Int = this.hashCode() } -fun Show.Companion.char(): Show = - CharShow - fun Eq.Companion.char(): Eq = CharEq diff --git a/arrow-core-data/src/main/kotlin/arrow/core/map.kt b/arrow-core-data/src/main/kotlin/arrow/core/map.kt index 6e967a3a2..300cf0cd1 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/map.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/map.kt @@ -4,7 +4,6 @@ import arrow.typeclasses.Eq import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Semigroup -import arrow.typeclasses.Show import arrow.typeclasses.defaultSalt import kotlin.collections.flatMap as _flatMap @@ -344,19 +343,6 @@ private class MapHash( hashWithSalt(HK, HA, salt) } -fun Map.show(SK: Show, SA: Show): String = - "Map(${toList().k().show(Show { show(SK, SA) })})" - -fun Show.Companion.map(SK: Show, SA: Show): Show> = - MapShow(SK, SA) - -private class MapShow( - private val SK: Show, - private val SA: Show -) : Show> { - override fun Map.show(): String = show(SK, SA) -} - fun Map.combine(SG: Semigroup, b: Map): Map = with(SG) { if (size < b.size) foldLeft(b) { my, (k, b) -> my + Pair(k, b.maybeCombine(my[k])) } else b.foldLeft(this@combine) { my, (k, a) -> my + Pair(k, a.maybeCombine(my[k])) } diff --git a/arrow-core-data/src/main/kotlin/arrow/core/number.kt b/arrow-core-data/src/main/kotlin/arrow/core/number.kt index 271fe4c77..82da173f7 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/number.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/number.kt @@ -6,7 +6,6 @@ import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Semigroup import arrow.typeclasses.Semiring -import arrow.typeclasses.Show // //////// // Byte @@ -37,10 +36,6 @@ private object ByteEq : Eq { override fun Byte.eqv(b: Byte): Boolean = this == b } -private object ByteShow : Show { - override fun Byte.show(): String = toString() -} - private object ByteHash : Hash { override fun Byte.hash(): Int = hashCode() } @@ -48,9 +43,6 @@ private object ByteHash : Hash { fun Hash.Companion.byte(): Hash = ByteHash -fun Show.Companion.byte(): Show = - ByteShow - fun Eq.Companion.byte(): Eq = ByteEq @@ -95,10 +87,6 @@ private object DoubleEq : Eq { override fun Double.eqv(b: Double): Boolean = this == b } -private object DoubleShow : Show { - override fun Double.show(): String = toString() -} - private object DoubleHash : Hash { override fun Double.hash(): Int = hashCode() } @@ -106,9 +94,6 @@ private object DoubleHash : Hash { fun Hash.Companion.double(): Hash = DoubleHash -fun Show.Companion.double(): Show = - DoubleShow - fun Eq.Companion.double(): Eq = DoubleEq @@ -148,10 +133,6 @@ private object IntEq : Eq { override fun Int.eqv(b: Int): Boolean = this == b } -private object IntShow : Show { - override fun Int.show(): String = toString() -} - private object IntOrder : Order { override fun Int.compare(b: Int): Ordering = Ordering.fromInt(this.compareTo(b)) override fun Int.compareTo(b: Int): Int = this.compareTo(b) @@ -164,9 +145,6 @@ private object IntHash : Hash { fun Hash.Companion.int(): Hash = IntHash -fun Show.Companion.int(): Show = - IntShow - fun Eq.Companion.int(): Eq = IntEq @@ -211,10 +189,6 @@ private object LongEq : Eq { override fun Long.eqv(b: Long): Boolean = this == b } -private object LongShow : Show { - override fun Long.show(): String = toString() -} - private object LongHash : Hash { override fun Long.hash(): Int = hashCode() } @@ -222,9 +196,6 @@ private object LongHash : Hash { fun Hash.Companion.long(): Hash = LongHash -fun Show.Companion.long(): Show = - LongShow - fun Eq.Companion.long(): Eq = LongEq @@ -269,10 +240,6 @@ private object ShortEq : Eq { override fun Short.eqv(b: Short): Boolean = this == b } -private object ShortShow : Show { - override fun Short.show(): String = toString() -} - private object ShortHash : Hash { override fun Short.hash(): Int = hashCode() } @@ -280,9 +247,6 @@ private object ShortHash : Hash { fun Hash.Companion.short(): Hash = ShortHash -fun Show.Companion.short(): Show = - ShortShow - fun Eq.Companion.short(): Eq = ShortEq @@ -327,10 +291,6 @@ private object FloatEq : Eq { override fun Float.eqv(b: Float): Boolean = this == b } -private object FloatShow : Show { - override fun Float.show(): String = toString() -} - private object FloatHash : Hash { override fun Float.hash(): Int = hashCode() } @@ -338,9 +298,6 @@ private object FloatHash : Hash { fun Hash.Companion.float(): Hash = FloatHash -fun Show.Companion.float(): Show = - FloatShow - fun Eq.Companion.float(): Eq = FloatEq diff --git a/arrow-core-data/src/main/kotlin/arrow/core/set.kt b/arrow-core-data/src/main/kotlin/arrow/core/set.kt index f2cee3b1f..74cdfeb86 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/set.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/set.kt @@ -4,7 +4,6 @@ import arrow.typeclasses.Eq import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Semigroup -import arrow.typeclasses.Show import arrow.typeclasses.hashWithSalt object SetExtensions @@ -46,11 +45,6 @@ fun Eq.Companion.set(EQ: () -> Eq): Eq> = object : Eq> { else false } -fun Show.Companion.set(SA: () -> Show): Show> = object : Show> { - override fun Set.show(): String = - show(SA()) -} - fun Hash.Companion.set(HA: Hash): Hash> = object : Hash> { override fun Set.hashWithSalt(salt: Int): Int = hashWithSalt(HA, salt) diff --git a/arrow-core-data/src/main/kotlin/arrow/core/string.kt b/arrow-core-data/src/main/kotlin/arrow/core/string.kt index 99e06aa9b..00eb15880 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/string.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/string.kt @@ -5,7 +5,6 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Semigroup -import arrow.typeclasses.Show private object StringSemigroup : Semigroup { override fun String.combine(b: String): String = "${this}$b" @@ -29,17 +28,10 @@ private object StringEq : Eq { fun Eq.Companion.string(): Eq = StringEq -private object StringShow : Show { - override fun String.show(): String = "\"${this.escape()}\"" - - private fun String.escape(): String = - replace("\n", "\\n").replace("\r", "\\r") - .replace("\"", "\\\"").replace("\'", "\\\'") - .replace("\t", "\\t").replace("\b", "\\b") -} - -fun Show.Companion.string(): Show = - StringShow +fun String.escaped(): String = + replace("\n", "\\n").replace("\r", "\\r") + .replace("\"", "\\\"").replace("\'", "\\\'") + .replace("\t", "\\t").replace("\b", "\\b") private object StringOrder : Order { override fun String.compare(b: String): Ordering = diff --git a/arrow-core-data/src/main/kotlin/arrow/typeclasses/Show.kt b/arrow-core-data/src/main/kotlin/arrow/typeclasses/Show.kt index 5fa954205..b678cae1d 100644 --- a/arrow-core-data/src/main/kotlin/arrow/typeclasses/Show.kt +++ b/arrow-core-data/src/main/kotlin/arrow/typeclasses/Show.kt @@ -1,9 +1,12 @@ package arrow.typeclasses +const val ShowDeprecation = "Show is deprecated in favor of toString(), since Kotlin's Std doesn't take Show into account" + /** * A type class used to get a textual representation for an instance of type [A] in a type safe way. * */ +@Deprecated(ShowDeprecation) interface Show { /** diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/const/show/ConstShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/const/show/ConstShow.kt index cadd4c2e0..07eb9236f 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/const/show/ConstShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/const/show/ConstShow.kt @@ -3,11 +3,13 @@ package arrow.core.extensions.const.show import arrow.core.Const.Companion import arrow.core.extensions.ConstShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) +@Deprecated(ShowDeprecation) inline fun Companion.show(SA: Show): ConstShow = object : arrow.core.extensions.ConstShow { override fun SA(): arrow.typeclasses.Show = SA } diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/either/show/EitherShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/either/show/EitherShow.kt index fa645f473..76da9c790 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/either/show/EitherShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/either/show/EitherShow.kt @@ -3,13 +3,14 @@ package arrow.core.extensions.either.show import arrow.core.Either.Companion import arrow.core.extensions.EitherShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated("@extension kinded projected functions are deprecated", ReplaceWith("Show.either(HL, HR)", "arrow.core.Show", "arrow.core.either")) +@Deprecated(ShowDeprecation) inline fun Companion.show(SL: Show, SR: Show): EitherShow = object : arrow.core.extensions.EitherShow { override fun SL(): arrow.typeclasses.Show = SL diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/hashed/show/HashedShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/hashed/show/HashedShow.kt index 710c6ba1b..621f3e486 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/hashed/show/HashedShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/hashed/show/HashedShow.kt @@ -3,11 +3,13 @@ package arrow.core.extensions.hashed.show import arrow.core.Hashed.Companion import arrow.core.extensions.HashedShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) +@Deprecated(ShowDeprecation) inline fun Companion.show(SA: Show): HashedShow = object : arrow.core.extensions.HashedShow { override fun SA(): arrow.typeclasses.Show = SA } diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/ior/show/IorShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/ior/show/IorShow.kt index 0b96397b3..e58df1e27 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/ior/show/IorShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/ior/show/IorShow.kt @@ -3,15 +3,13 @@ package arrow.core.extensions.ior.show import arrow.core.Ior.Companion import arrow.core.extensions.IorShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "Show typeclass is deprecated. Use concrete methods on Ior", - level = DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show(SL: Show, SR: Show): IorShow = object : arrow.core.extensions.IorShow { override fun SL(): arrow.typeclasses.Show = SL diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/list/show/ListKShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/list/show/ListKShow.kt index b1dc0856e..ae85644bd 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/list/show/ListKShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/list/show/ListKShow.kt @@ -1,8 +1,9 @@ package arrow.core.extensions.list.show import arrow.core.extensions.ListKShow -import arrow.core.show as _show +import arrow.core.k import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.String import kotlin.Suppress import kotlin.collections.List @@ -15,9 +16,9 @@ import kotlin.jvm.JvmName "EXTENSION_SHADOWED_BY_MEMBER", "UNUSED_PARAMETER" ) -@Deprecated("@extension projected functions are deprecated", ReplaceWith("show(arg1)", "arrow.core.show")) +@Deprecated(ShowDeprecation, ReplaceWith("toString()")) fun List.show(SA: Show): String = - _show(SA) + k().show(SA) @Deprecated("Receiver List object is deprecated, prefer to turn List functions into top-level functions") object List { @@ -25,6 +26,6 @@ object List { "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) - @Deprecated("@extension projected functions are deprecated", ReplaceWith("Show.list(arg1)", "arrow.core.list", "arrow.core.Show")) + @Deprecated(ShowDeprecation) inline fun show(SA: Show): ListKShow = object : arrow.core.extensions.ListKShow { override fun SA(): arrow.typeclasses.Show = SA }} diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/listk/show/ListKShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/listk/show/ListKShow.kt index 76dcff5ef..e3d1641a4 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/listk/show/ListKShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/listk/show/ListKShow.kt @@ -5,6 +5,7 @@ import arrow.core.ForListK import arrow.core.ListK.Companion import arrow.core.extensions.ListKShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.String import kotlin.Suppress import kotlin.jvm.JvmName @@ -16,7 +17,7 @@ import kotlin.jvm.JvmName "EXTENSION_SHADOWED_BY_MEMBER", "UNUSED_PARAMETER" ) -@Deprecated("@extension projected functions are deprecated", ReplaceWith("show(arg1)", "arrow.core.show")) +@Deprecated(ShowDeprecation, ReplaceWith("toString()")) fun Kind.show(SA: Show): String = arrow.core.ListK.show(SA).run { this@show.show() as kotlin.String } @@ -25,6 +26,6 @@ fun Kind.show(SA: Show): String = arrow.core.ListK.show(S "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated("@extension projected functions are deprecated", ReplaceWith("Show.list(SA)", "arrow.core.list", "arrow.core.Show")) +@Deprecated(ShowDeprecation) inline fun Companion.show(SA: Show): ListKShow = object : arrow.core.extensions.ListKShow { override fun SA(): arrow.typeclasses.Show = SA } diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/mapk/show/MapKShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/mapk/show/MapKShow.kt index 18bfcb2d8..c8cf4ffc1 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/mapk/show/MapKShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/mapk/show/MapKShow.kt @@ -3,13 +3,14 @@ package arrow.core.extensions.mapk.show import arrow.core.MapK.Companion import arrow.core.extensions.MapKShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated("@extension projected functions are deprecated", ReplaceWith("Show.map(SK, SA)", "arrow.core.Show", "arrow.core.map")) +@Deprecated(ShowDeprecation) inline fun Companion.show(SK: Show, SA: Show): MapKShow = object : arrow.core.extensions.MapKShow { override fun SK(): arrow.typeclasses.Show = SK diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/nonemptylist/show/NonEmptyListShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/nonemptylist/show/NonEmptyListShow.kt index 610981346..ec7a1a696 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/nonemptylist/show/NonEmptyListShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/nonemptylist/show/NonEmptyListShow.kt @@ -3,19 +3,13 @@ package arrow.core.extensions.nonemptylist.show import arrow.core.NonEmptyList.Companion import arrow.core.extensions.NonEmptyListShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "@extension projected functions are deprecated", - ReplaceWith( - "Show.nonEmptyList(SA)", - "arrow.core.nonEmptyList", "arrow.core.Show" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show(SA: Show): NonEmptyListShow = object : arrow.core.extensions.NonEmptyListShow { override fun SA(): arrow.typeclasses.Show = SA } diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/option/show/OptionShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/option/show/OptionShow.kt index 5dfb1e022..2853d3ce0 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/option/show/OptionShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/option/show/OptionShow.kt @@ -3,14 +3,12 @@ package arrow.core.extensions.option.show import arrow.core.Option.Companion import arrow.core.extensions.OptionShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "Show typeclass is deprecated. Use concrete methods on Option", - level = DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show(SA: Show): OptionShow = object : arrow.core.extensions.OptionShow { override fun SA(): arrow.typeclasses.Show = SA } diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/ordering/show/OrderingShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/ordering/show/OrderingShow.kt index c72992d8c..9c0fc22a9 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/ordering/show/OrderingShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/ordering/show/OrderingShow.kt @@ -2,6 +2,7 @@ package arrow.core.extensions.ordering.show import arrow.core.Ordering.Companion import arrow.core.extensions.OrderingShow +import arrow.typeclasses.ShowDeprecation import kotlin.PublishedApi import kotlin.Suppress @@ -15,5 +16,5 @@ internal val show_singleton: OrderingShow = object : arrow.core.extensions.Order "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated("@extension kinded projected functions are deprecated", ReplaceWith("Show.ordering()", "arrow.core.Show", "arrow.core.ordering")) +@Deprecated(ShowDeprecation) inline fun Companion.show(): OrderingShow = show_singleton diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/sequencek/show/SequenceKShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/sequencek/show/SequenceKShow.kt index 966e9108f..7794551d3 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/sequencek/show/SequenceKShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/sequencek/show/SequenceKShow.kt @@ -3,11 +3,13 @@ package arrow.core.extensions.sequencek.show import arrow.core.SequenceK.Companion import arrow.core.extensions.SequenceKShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) +@Deprecated(ShowDeprecation) inline fun Companion.show(SA: Show): SequenceKShow = object : arrow.core.extensions.SequenceKShow { override fun SA(): arrow.typeclasses.Show = SA } diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/setk/show/SetKShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/setk/show/SetKShow.kt index b5eed73eb..11c2d3198 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/setk/show/SetKShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/setk/show/SetKShow.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.setk.show import arrow.core.SetK.Companion import arrow.core.extensions.SetKShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "@extension kinded projected functions are deprecated", - ReplaceWith( - "Show.set(SA)", - "arrow.core.set", - "arrow.typeclasses.Show" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show(SA: Show): SetKShow = object : arrow.core.extensions.SetKShow { override fun SA(): arrow.typeclasses.Show = SA } diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple10/show/Tuple10Show.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple10/show/Tuple10Show.kt index f0e5be1c8..08f00c81f 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple10/show/Tuple10Show.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple10/show/Tuple10Show.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.tuple10.show import arrow.core.Tuple10.Companion import arrow.core.extensions.Tuple10Show import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "@extension kinded projected functions are deprecated", - ReplaceWith( - "Show.tuple10(SA, SB, SC, SD, SE, SF, SG, SH, SI, SJ)", - "arrow.core.Show", - "arrow.core.tuple10" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show( SA: Show, SB: Show, diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple2/show/Tuple2Show.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple2/show/Tuple2Show.kt index ecf82854b..b65ac22ff 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple2/show/Tuple2Show.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple2/show/Tuple2Show.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.tuple2.show import arrow.core.Tuple2.Companion import arrow.core.extensions.Tuple2Show import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "Tuple2 is deprecated in favor of Kotlin's Pair. ReplaceWith Pair and use Pair instance of Show", - ReplaceWith( - "Show.pair(SA, SB, SC)", - "arrow.core.Show", - "arrow.core.pair" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show(SA: Show, SB: Show): Tuple2Show = object : arrow.core.extensions.Tuple2Show { override fun SA(): arrow.typeclasses.Show = SA diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple3/show/Tuple3Show.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple3/show/Tuple3Show.kt index 43ff0052d..7f17f62ea 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple3/show/Tuple3Show.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple3/show/Tuple3Show.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.tuple3.show import arrow.core.Tuple3.Companion import arrow.core.extensions.Tuple3Show import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "Tuple3 is deprecated in favor of Kotlin's Triple. ReplaceWith Triple and use Triple instance of Show", - ReplaceWith( - "Show.triple(SA, SB, SC)", - "arrow.core.Show", - "arrow.core.triple" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show( SA: Show, SB: Show, diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple4/show/Tuple4Show.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple4/show/Tuple4Show.kt index 516d7485d..174f2aefa 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple4/show/Tuple4Show.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple4/show/Tuple4Show.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.tuple4.show import arrow.core.Tuple4.Companion import arrow.core.extensions.Tuple4Show import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "@extension kinded projected functions are deprecated", - ReplaceWith( - "Show.tuple4(SA, SB, SC, SD)", - "arrow.core.Show", - "arrow.core.tuple4" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show( SA: Show, SB: Show, diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple5/show/Tuple5Show.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple5/show/Tuple5Show.kt index 86abb5035..9fe5a8517 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple5/show/Tuple5Show.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple5/show/Tuple5Show.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.tuple5.show import arrow.core.Tuple5.Companion import arrow.core.extensions.Tuple5Show import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "@extension kinded projected functions are deprecated", - ReplaceWith( - "Show.tuple5(SA, SB, SC, SD, SE)", - "arrow.core.Show", - "arrow.core.tuple5" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show( SA: Show, SB: Show, diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple6/show/Tuple6Show.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple6/show/Tuple6Show.kt index 79c4ac703..591c34d1e 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple6/show/Tuple6Show.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple6/show/Tuple6Show.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.tuple6.show import arrow.core.Tuple6.Companion import arrow.core.extensions.Tuple6Show import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "@extension kinded projected functions are deprecated", - ReplaceWith( - "Show.tuple6(SA, SB, SC, SD, SE, SF)", - "arrow.core.Show", - "arrow.core.tuple6" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show( SA: Show, SB: Show, diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple7/show/Tuple7Show.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple7/show/Tuple7Show.kt index 655242e72..28fe0a1f6 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple7/show/Tuple7Show.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple7/show/Tuple7Show.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.tuple7.show import arrow.core.Tuple7.Companion import arrow.core.extensions.Tuple7Show import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "@extension kinded projected functions are deprecated", - ReplaceWith( - "Show.tuple7(SA, SB, SC, SD, SE, SF, SG)", - "arrow.core.Show", - "arrow.core.tuple7" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show( SA: Show, SB: Show, diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple8/show/Tuple8Show.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple8/show/Tuple8Show.kt index dd9335470..0c6edb8a6 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple8/show/Tuple8Show.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple8/show/Tuple8Show.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.tuple8.show import arrow.core.Tuple8.Companion import arrow.core.extensions.Tuple8Show import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "@extension kinded projected functions are deprecated", - ReplaceWith( - "Show.tuple8(SA, SB, SC, SD, SE, SF, SG, SH)", - "arrow.core.Show", - "arrow.core.tuple8" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show( SA: Show, SB: Show, diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple9/show/Tuple9Show.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple9/show/Tuple9Show.kt index 0910917b0..2f3c75cd8 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/tuple9/show/Tuple9Show.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/tuple9/show/Tuple9Show.kt @@ -3,21 +3,14 @@ package arrow.core.extensions.tuple9.show import arrow.core.Tuple9.Companion import arrow.core.extensions.Tuple9Show import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated( - "@extension kinded projected functions are deprecated", - ReplaceWith( - "Show.tuple9(SA, SB, SC, SD, SE, SF, SG, SH, SI)", - "arrow.core.Show", - "arrow.core.tuple9" - ), - DeprecationLevel.WARNING -) +@Deprecated(ShowDeprecation) inline fun Companion.show( SA: Show, SB: Show, diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/validated/show/ValidatedShow.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/validated/show/ValidatedShow.kt index 622b6fbbd..83aac5874 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/validated/show/ValidatedShow.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/validated/show/ValidatedShow.kt @@ -3,13 +3,14 @@ package arrow.core.extensions.validated.show import arrow.core.Validated.Companion import arrow.core.extensions.ValidatedShow import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import kotlin.Suppress @Suppress( "UNCHECKED_CAST", "NOTHING_TO_INLINE" ) -@Deprecated("@extension kinded projected functions are deprecated", ReplaceWith("Show.validated(SL, SR)", "arrow.core.Show", "arrow.core.validated")) +@Deprecated(ShowDeprecation) inline fun Companion.show(SL: Show, SR: Show): ValidatedShow = object : arrow.core.extensions.ValidatedShow { override fun SL(): arrow.typeclasses.Show = SL From 1d8fe869ed79598364b37171b0aee7555d551820 Mon Sep 17 00:00:00 2001 From: Simon Vergauwen Date: Wed, 3 Feb 2021 14:28:29 +0100 Subject: [PATCH 2/5] Apply suggestions from code review Co-authored-by: Francisco Diaz --- arrow-core-data/src/main/kotlin/arrow/core/Either.kt | 1 + arrow-core-data/src/main/kotlin/arrow/core/Eval.kt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Either.kt b/arrow-core-data/src/main/kotlin/arrow/core/Either.kt index f0fc4604c..bab81baa8 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Either.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Either.kt @@ -1085,6 +1085,7 @@ sealed class Either : EitherOf { } } + @Deprecated(ShowDeprecation) fun show(SL: Show, SR: Show): String = fold( { "Left(${SL.run { it.show() }})" }, { "Right(${SR.run { it.show() }})" } diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Eval.kt b/arrow-core-data/src/main/kotlin/arrow/core/Eval.kt index 455697253..56b0f745f 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Eval.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Eval.kt @@ -546,7 +546,7 @@ sealed class Eval : EvalOf { override fun value(): A = evaluate(this) override fun toString(): String = - "Eval.FlatMao(..)" + "Eval.FlatMap(..)" } /** From 5f8f0d497ba24f753fb6a51274ee092205edf720 Mon Sep 17 00:00:00 2001 From: Simon Vergauwen Date: Wed, 3 Feb 2021 14:38:06 +0100 Subject: [PATCH 3/5] Deprecate Show for primitives in extension package --- .../kotlin/arrow/core/extensions/boolean.kt | 5 ++-- .../main/kotlin/arrow/core/extensions/char.kt | 5 ++-- .../kotlin/arrow/core/extensions/number.kt | 25 ++++++++++--------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/boolean.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/boolean.kt index b70816dea..abb97278f 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/boolean.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/boolean.kt @@ -6,8 +6,9 @@ import arrow.typeclasses.Hash import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation -@Deprecated("Typeclass interface implementation will not be exposed directly anymore", ReplaceWith("Show.boolean()", "arrow.core.Show", "arrow.core.boolean")) +@Deprecated(ShowDeprecation) interface BooleanShow : Show { override fun Boolean.show(): String = this.toString() @@ -29,7 +30,7 @@ interface BooleanHash : Hash, BooleanEq { override fun Boolean.hash(): Int = this.hashCode() } -@Deprecated("Typeclass instance have been moved to the companion object of the typeclass", ReplaceWith("Show.boolean()", "arrow.core.Show", "arrow.core.boolean")) +@Deprecated(ShowDeprecation) fun Boolean.Companion.show(): Show = object : BooleanShow {} diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/char.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/char.kt index 237f89605..0cd4b0e11 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/char.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/char.kt @@ -5,8 +5,9 @@ import arrow.typeclasses.Eq import arrow.typeclasses.Hash import arrow.typeclasses.Order import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation -@Deprecated("Typeclass interface implementation will not be exposed directly anymore", ReplaceWith("Show.char()", "arrow.core.Show", "arrow.core.char")) +@Deprecated(ShowDeprecation) interface CharShow : Show { override fun Char.show(): String = this.toString() @@ -31,7 +32,7 @@ interface CharHash : Hash, CharEq { override fun Char.hash(): Int = this.hashCode() } -@Deprecated("Typeclass instance have been moved to the companion object of the typeclass", ReplaceWith("Show.char()", "arrow.core.Show", "arrow.core.char")) +@Deprecated(ShowDeprecation) fun Char.Companion.show(): Show = object : CharShow {} diff --git a/arrow-core/src/main/kotlin/arrow/core/extensions/number.kt b/arrow-core/src/main/kotlin/arrow/core/extensions/number.kt index fc41f5b93..da4b8d035 100644 --- a/arrow-core/src/main/kotlin/arrow/core/extensions/number.kt +++ b/arrow-core/src/main/kotlin/arrow/core/extensions/number.kt @@ -8,6 +8,7 @@ import arrow.typeclasses.Order import arrow.typeclasses.Semigroup import arrow.typeclasses.Semiring import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation // //////// // Byte @@ -42,7 +43,7 @@ interface ByteEq : Eq { override fun Byte.eqv(b: Byte): Boolean = this == b } -@Deprecated("Typeclass interface implementation will not be exposed directly anymore", ReplaceWith("Show.byte()", "arrow.core.Show", "arrow.core.byte")) +@Deprecated(ShowDeprecation) interface ByteShow : Show { override fun Byte.show(): String = toString() } @@ -56,7 +57,7 @@ interface ByteHash : Hash, ByteEq { fun Byte.Companion.hash(): Hash = object : ByteHash {} -@Deprecated("Typeclass instance have been moved to the companion object of the typeclass", ReplaceWith("Show.byte()", "arrow.core.Show", "arrow.core.byte")) +@Deprecated(ShowDeprecation) fun Byte.Companion.show(): Show = object : ByteShow {} @@ -113,7 +114,7 @@ interface DoubleEq : Eq { override fun Double.eqv(b: Double): Boolean = this == b } -@Deprecated("Typeclass interface implementation will not be exposed directly anymore", ReplaceWith("Show.double()", "arrow.core.Show", "arrow.core.double")) +@Deprecated(ShowDeprecation) interface DoubleShow : Show { override fun Double.show(): String = toString() } @@ -127,7 +128,7 @@ interface DoubleHash : Hash, DoubleEq { fun Double.Companion.hash(): Hash = object : DoubleHash {} -@Deprecated("Typeclass instance have been moved to the companion object of the typeclass", ReplaceWith("Show.double()", "arrow.core.Show", "arrow.core.double")) +@Deprecated(ShowDeprecation) fun Double.Companion.show(): Show = object : DoubleShow {} @@ -178,7 +179,7 @@ interface IntEq : Eq { override fun Int.eqv(b: Int): Boolean = this == b } -@Deprecated("Typeclass interface implementation will not be exposed directly anymore", ReplaceWith("Show.int()", "arrow.core.Show", "arrow.core.int")) +@Deprecated(ShowDeprecation) interface IntShow : Show { override fun Int.show(): String = toString() } @@ -197,7 +198,7 @@ interface IntHash : Hash { @Deprecated("Typeclass instance have been moved to the companion object of the typeclass", ReplaceWith("Hash.int()", "arrow.core.Hash", "arrow.core.int")) fun Int.Companion.hash(): Hash = object : IntHash {} -@Deprecated("Typeclass instance have been moved to the companion object of the typeclass", ReplaceWith("Show.int()", "arrow.core.Show", "arrow.core.int")) +@Deprecated(ShowDeprecation) fun Int.Companion.show(): Show = object : IntShow {} @@ -254,7 +255,7 @@ interface LongEq : Eq { override fun Long.eqv(b: Long): Boolean = this == b } -@Deprecated("Typeclass interface implementation will not be exposed directly anymore", ReplaceWith("Show.long()", "arrow.core.Show", "arrow.core.long")) +@Deprecated(ShowDeprecation) interface LongShow : Show { override fun Long.show(): String = toString() } @@ -268,7 +269,7 @@ interface LongHash : Hash, LongEq { fun Long.Companion.hash(): Hash = object : LongHash {} -@Deprecated("Typeclass instance have been moved to the companion object of the typeclass", ReplaceWith("Hash.long()", "arrow.core.Show", "arrow.core.long")) +@Deprecated(ShowDeprecation) fun Long.Companion.show(): Show = object : LongShow {} @@ -325,7 +326,7 @@ interface ShortEq : Eq { override fun Short.eqv(b: Short): Boolean = this == b } -@Deprecated("Typeclass interface implementation will not be exposed directly anymore", ReplaceWith("Show.short()", "arrow.core.Show", "arrow.core.short")) +@Deprecated(ShowDeprecation) interface ShortShow : Show { override fun Short.show(): String = toString() } @@ -339,7 +340,7 @@ interface ShortHash : Hash, ShortEq { fun Short.Companion.hash(): Hash = object : ShortHash {} -@Deprecated("Typeclass instance have been moved to the companion object of the typeclass", ReplaceWith("Show.short()", "arrow.core.Show", "arrow.core.short")) +@Deprecated(ShowDeprecation) fun Short.Companion.show(): Show = object : ShortShow {} @@ -396,7 +397,7 @@ interface FloatEq : Eq { override fun Float.eqv(b: Float): Boolean = this == b } -@Deprecated("Typeclass interface implementation will not be exposed directly anymore", ReplaceWith("Show.float()", "arrow.core.Show", "arrow.core.float")) +@Deprecated(ShowDeprecation) interface FloatShow : Show { override fun Float.show(): String = toString() } @@ -410,7 +411,7 @@ interface FloatHash : Hash, FloatEq { fun Float.Companion.hash(): Hash = object : FloatHash {} -@Deprecated("Typeclass instance have been moved to the companion object of the typeclass", ReplaceWith("Show.float()", "arrow.core.Show", "arrow.core.float")) +@Deprecated(ShowDeprecation) fun Float.Companion.show(): Show = object : FloatShow {} From 81a6499ea763e1b7e2c3c9439625defb43458fbb Mon Sep 17 00:00:00 2001 From: Simon Vergauwen Date: Wed, 3 Feb 2021 14:48:19 +0100 Subject: [PATCH 4/5] Remove Show instance for Validated --- .../src/main/kotlin/arrow/core/Validated.kt | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Validated.kt b/arrow-core-data/src/main/kotlin/arrow/core/Validated.kt index 33ab36ed4..b5e59d5d1 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Validated.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Validated.kt @@ -958,9 +958,6 @@ fun Eq.Companion.validated(EQE: Eq, EQA: Eq): Eq> = fun Hash.Companion.validated(HE: Hash, HA: Hash): Hash> = ValidatedHash(HE, HA) -fun Show.Companion.validated(SE: Show, SA: Show): Show> = - ValidatedShow(SE, SA) - fun Order.Companion.validated(OE: Order, OA: Order): Order> = ValidatedOrder(OE, OA) @@ -1267,14 +1264,6 @@ private class ValidatedEq( eqv(EQL, EQR, b) } -private class ValidatedShow( - private val SL: Show, - private val SR: Show, -) : Show> { - override fun Validated.show(): String = - show(SL, SR) -} - private class ValidatedHash( private val HL: Hash, private val HR: Hash From ab6fa354560867097bd9d4b591434ed3a6f196ce Mon Sep 17 00:00:00 2001 From: Simon Vergauwen Date: Wed, 3 Feb 2021 15:21:14 +0100 Subject: [PATCH 5/5] Fix missing import Either --- arrow-core-data/src/main/kotlin/arrow/core/Either.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/arrow-core-data/src/main/kotlin/arrow/core/Either.kt b/arrow-core-data/src/main/kotlin/arrow/core/Either.kt index bab81baa8..134db03fa 100644 --- a/arrow-core-data/src/main/kotlin/arrow/core/Either.kt +++ b/arrow-core-data/src/main/kotlin/arrow/core/Either.kt @@ -10,6 +10,7 @@ import arrow.typeclasses.Monoid import arrow.typeclasses.Order import arrow.typeclasses.Semigroup import arrow.typeclasses.Show +import arrow.typeclasses.ShowDeprecation import arrow.typeclasses.hashWithSalt @Deprecated("Kind is deprecated, and will be removed in 0.13.0. Please use one of the provided concrete methods instead")