Comments (14)
For ordered collections, we could also have a Sorted[A]
predicate.
Though I'm not sure how the user could choose between ascendent and descendent order.
from refined.
Good idea, @jgpacker ! We could have SortedAsc
and SortedDesc
or provide an extra type for the sort order: trait SortOrder; trait Ascending extends SortOrder; trait Descending extends SortOrder
. Another possibility is to have something like SortedWith[P]
where P
is some kind of binary predicate (which we don't have yet). For example: SortedWith[GreaterEqual2]
where GreaterEqual2
gives you a BinaryPredicate
instance with isValid(t1: T, t2: T): Boolean = t1 >= t2
.
from refined.
Another collection predicate: IndexWhere[PA, PI]
. It could be used like this IndexWhere[Digit, LessEqual[_2]]
which validates any collection of Char
where one of the first three chars is a digit.
from refined.
-
Contains[A]
-
Index[N, P]
-
Unique
-
Head[P]
-
Last[P]
-
Tail[P]
-
Init[P]
from refined.
SortedWith
as outlined in #6 (comment) is a misnomer. It should better be called Pairwise[P]
since it checks if consecutive pairs of elements in a sequence satisfy the binary predicate P
.
from refined.
Hi, @fthomas :)
I want to Implement Unique
Predicate.
I want you to tell me Signature of Unique
and Usage of Unique
.
from refined.
@sh0hei The idea of Unique
is that it checks that a collection has no duplicated elements. It has no parameters, so would be defined as empty case class: case class Unique()
.
Usage would look something like this:
type UniqueList[A] = List[A] Refined Unique
scala> RefType.applyRef[UniqueList[Int]](List(1, 2, 3))
res0: Either[String, UniqueList[Int]]= Right(Refined(List(1, 2, 3)))
scala>RefType.applyRef[UniqueList[Int]](List(1, 2, 2))
res1: Either[String, UniqueList[Int]]= Left("Predicate failed: List(1, 2, 2) contains duplicated elements: 2")
from refined.
okay :)
I try it !
from refined.
Awesome! :-)
from refined.
@fthomas Excuse me, I'd like also to know about Usage Tail
, Init
. I'll try to implement it.
from refined.
@sh0hei Tail
and Init
would be similar to the already existing Head
and Last
predicates (see collection.scala). They check if all but the first/last element of a sequence satisfy a given predicate.
from refined.
Closing since most of the predicates in this ticket are now implemented.
from refined.
Hey, what's the status on Sorted
predicates?
from refined.
@kubukoz It hasn't been implemented yet. :) But I'm open to adding Sorted
or Sorted{Asc, Desc}
or something similar to the librarary.
from refined.
Related Issues (20)
- refined-cats is not published for Scala 3.x HOT 3
- Broken link in README
- Versioning scheme is not declared
- OpenAPI with Refined Strings HOT 4
- Chaining refined string operation HOT 1
- Publish for Scala native? HOT 1
- Pureconfig not published for scala3 HOT 1
- Scala 3.2: Comparing NonNegInt with Int gives a compile error HOT 1
- Creating a Map of Literal Refined Types as the Key doesn't work HOT 1
- Size predicate validator error HOT 7
- refined-scalacheck all values discarded HOT 5
- `Greater[5] Or Equal[5]` results in drastic performance problems with `unsafeFrom` HOT 8
- Int Refined Positive does work with Scala 3.2.0 HOT 1
- Add support for `NonBlankString` and `StrippedString`
- Replace HList useages with Tuple in scala3 implmentations HOT 2
- Runtime `java.lang.AbstractMethodError` when combining refinement erasure, value class erasure, and generic type erasure HOT 3
- Define versionScheme
- Alphanumeric type is not declared infix HOT 2
- type mismatch with function argument HOT 1
- Inconsistency between 0.9.25 and 0.9.26 versions - possible regression HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from refined.