https://github.com/sweet-delights/delightful-typeclasses
A Scala library containing utility typeclasses
https://github.com/sweet-delights/delightful-typeclasses
lgpl scala shapeless typeclass typeclasses
Last synced: 5 months ago
JSON representation
A Scala library containing utility typeclasses
- Host: GitHub
- URL: https://github.com/sweet-delights/delightful-typeclasses
- Owner: sweet-delights
- License: other
- Created: 2020-11-06T19:13:50.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-08-19T21:05:00.000Z (10 months ago)
- Last Synced: 2024-11-11T05:13:15.572Z (7 months ago)
- Topics: lgpl, scala, shapeless, typeclass, typeclasses
- Language: Scala
- Homepage:
- Size: 62.5 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: COPYING
- Code of conduct: CODE_OF_CONDUCT
Awesome Lists containing this project
README
[](https://travis-ci.com/sweet-delights/delightful-typeclasses)
[](https://maven-badges.herokuapp.com/maven-central/org.sweet-delights/delightful-typeclasses_2.13)`delightful-typeclasses` is Scala a library containing utility typeclasses.
This library is built for Scala 2.12.15, 2.13.8 and 3.1.2
### SBT
```scala
libraryDependencies += "org.sweet-delights" %% "delightful-typeclasses" % "0.2.0"
```### Maven
```xmlorg.sweet-delights
delightful-typeclasses_2.12
0.2.0```
## [License](LICENSE.md)
All files in `delightful-typeclasses` are under the GNU Lesser General Public License version 3.
Please read files [`COPYING`](COPYING) and [`COPYING.LESSER`](COPYING.LESSER) for details.## Available typeclasses
### `Default[T]`
The `Default[T]` typeclass creates a default instance of `T`.
*Step 1*: define case classes
```scala
import java.time.LocalDateTimecase class Foo(
opt: Option[Int],
str: String,
double: Double,
more: List[Bar]
)case class Bar(
list: List[LocalDateTime]
)
```*Step 2*: instantiate!
```scala
val default = Default[Foo]
println(default)
// Foo(
// opt = Some(0),
// str = "",
// double = "0.0",
// List(
// Bar(List(LocalDateTime.parse("1970-01-01T00:00:00.000")))
// )
// )
```## Acknowledgments
- the [`shapeless`](https://github.com/milessabin/shapeless) library
- the [The Type Astronaut's Guide to Shapeless](https://underscore.io/books/shapeless-guide/) book
- the [Scala 3](https://docs.scala-lang.org/scala3/reference/contextual/derivation.html) documentation