fix
This commit is contained in:
84
README.md
84
README.md
@@ -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
|
@@ -5,7 +5,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "me.alex_s168"
|
||||
version = "0.5"
|
||||
version = "0.6"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
@@ -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 =
|
||||
|
Reference in New Issue
Block a user