/tmp/duangsuse.sock
23 subscribers
303 photos
3 videos
92 files
337 links
从 duangsuse::Echo (@dsuse) 跟进出来的分支,将在作者恢复原帐号访问的时候合并删除。
Download Telegram
Forwarded from Deleted Account
就是针对大情况优化,不制造历史问题。
Forwarded from Deleted Account
与人方便自己方便,不至于基本模型看不出来,新人上手都困难重重
本来就是个 100 块的价,非得整成 5w 买不下来
本来是玉米粥,非得挂个“黄金粥”,这种傲慢与偏见,才是最大的强迫症。
Parser.kt:155:9: error: inner class of generic class extending 'Throwable' is prohibited
emm...
现在 ParserKt 的风格比较类似『在规范化的同时保证可扩展性』
比较混乱,比如 ErrorListener 就不是一个很好的设计,引起了 error 和 ParseError 的 混淆?
Parser.kt:159:17: error: subclass of 'Throwable' may not have type parameters
#KotlinEmmm 🌚
我真的服了我自己了,我居然把 Tuple 和 Fold 做成了 Kotlin 语言扩展级别的东西了……

emptyTuple<Int>() == emptyTuple<Int>()
tupleOf(1,2) != tupleOf(1)

"abc".asIterable().fold(asString()) == "abc"
"abc".asIterable().fold(asList()) == listOf('a', 'b', 'c')
listOf(1,2,3).fold(JoinFold(0, Int::plus)) == 6
其实我不就想写个组合解析器框架么……
#KotlinEmmm operator fun not() = object: SatisfyTest<IN>() {
override val test = !this@SatisfyTest.test
}

原来这样的 object 的 label 是它的 父树 的 name……
fun <IN> Feed<IN>.takeWhile(predicate: Predicate<IN>): Sequence<IN>
= sequence { while (true) yield(consumeIf(predicate) ?: break) }
fun <IN> Feed<IN>.take(n: Cnt): Sequence<IN>
= takeWhile { true }.take(n)
删了
壮士断腕……
inputOf(1,2,3,10,2).asSequence().takeWhile { it < 10 }.asIterable().fold(JoinFold(0, {this*10+it}))
Parser.kt
13.6 KB
好像 Tuple, Fold, Input 都成了 Kotlin 标准库的扩展……
#KotlinEmmm Parser.kt:333:76: error: 'toDashString' is a member and an extension at the same time. References to such elements are not allowed
override fun toString() = ranges.joinToString("", transform = CharRange::toDashString).surround("[" to "]")
Parser.kt
13.8 KB
完成了 IES(item, elementIn, satisfy)
var terminator = terminate.read(s)
while (terminator == notParsed) {
reducer.accept(item.read(s) ?: return notParsed)
terminator = terminate.read(s)
}
return Tuple2(reducer.finish(), terminator)


Kotlin 牛逼啊,这么含糊的 nullability 都推导得出来?!
Parser.kt
18.4 KB
#Kotlin #code 添加了一个 stay。 val sign = elementIn('+', '-').toDefault('+')
val digit = Convert(elementIn('0'..'9'), {it-'0'}, {'0'+it})
fun asInt(radix: Int) = JoinFold(0, {this*radix+it})
val numPart = Until(asInt(10), !digit, digit)
Parser.kt
20.2 KB
移除错误设计的 Until 之前的最后一个版本,我把 Until 的 terminator 也给存下来了……