This commit is contained in:
alexander.nutz
2024-03-28 17:55:28 +01:00
parent 48f0e27f77
commit b87c0755ad
3 changed files with 84 additions and 4 deletions

View File

@@ -24,6 +24,86 @@ repositories {
}
dependencies {
implementation("me.alex_s168:blitz:0.5")
implementation("me.alex_s168:blitz:0.6")
}
```
```
## Examples
### Fibonacci sequence
```kotlin
val fib = lazySequence(0 to 1) { i, f ->
f(i-1) + f(i-2)
}
println(fib[10])
```
### Unix `uniq`
```kotlin
val inp = sequenceOf("AAA", "BBB", "AAA", "AAA", "AAA", "BBB")
val out = inp.easyMappingSequence { i, s, m ->
if (s(i-1) == m(i)) null
else m(i)
}
println(out.contents)
```
### Reading files
```kotlin
val file = Path.of("test.txt") // Path
.getFile() // File
val text = file.read() // ByteBatchSequence
.stringify() // Sequence<String> // (NOT lines!!)
.flatten() // String
```
### Bit fields
```kotlin
class Flags: BitField() {
var direction by bit(0)
var moving by bit(1)
var frontLight by bit(2)
}
val byte = getByteFromSomewhere()
val flags = Flags().decode(byte)
flags.direction = !flags.direction
putByteSomewhere(flags.encode())
```
### Unix `cat` with monads (pure)
```kotlin
fun pureCat(args: Array<String>): Monad<Unit> =
args
.ifEmpty { arrayOf("-") }
.map {
if (it == "-") readIn()
else unit(it)
.asPath()
.read()
.stringify()
}
.rewrap()
.flatten()
.reduce { s -> print(s) }
```
### Numbers to bytes
```kotlin
val num: Short = 5
val bytes = num.toBytes(Endian.LITTLE)
```
### Caching delegate property
```kotlin
class Label {
val font = "Arial 11"
val fontWith by caching(::font) {
someFunctionToCalculate(it)
}
}
```
### Contents
```kotlin
val a = listOf(1, 2, 3, 4)
val b = arrayOf(1, 2, 3, 4)
println(a.contents == b.contents) // true
println(b.contents) // [1, 2, 3, 4]
```
### Either
No example yet

View File

@@ -5,7 +5,7 @@ plugins {
}
group = "me.alex_s168"
version = "0.5"
version = "0.6"
repositories {
mavenCentral()

View File

@@ -16,7 +16,7 @@ fun Provider<RawSource>.readerSequence(): ByteBatchSequence =
var i = 0
while (!(buffered.exhausted() || i == limit - 1))
out[i ++] = buffered.readByte()
return out.sliceArray(0..i)
return out.sliceArray(0..<i)
}
override fun nextBytes(dest: ByteArray): Int =