duangsuse::Echo
722 subscribers
4.29K photos
130 videos
583 files
6.51K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
可以试着解析一些良好定义的结构,比如 Java classfile 文件结构,我这里有比较规范的参考书可用。
可以不必严格在 Kotlin Common 里编写主要测试定义,但不得不在 jvmMain 里添加具体实例着实有点麻烦
测试是自动化的,不好拿位图读取这样的任务做…… 也不是不可以
可是 Java class file 需要无符号数值 u1, u2, u4, u8,而现在最大只支持到 u2
不得不多写几个 unsigned extension

u8 已经逾越了 kotlin.Long 能存储的范围,根本无法在不使用 unsigned types 的情况下支持,暂时别名到 int64 好了
This media is not supported in your browser
VIEW IN TELEGRAM
模拟了一下 LiterateKt CLI 项目生成工具的工作流程,懂了,但是我在想一个内部的临时印象式程序部分 App(intrinsic, destination, listOf(source)) 时 对那个 intrinsic 莫名头疼,想了很有几遍,现在还不好。
哔(bin)你太美~
object UTF8: Contextual<Nat16, ByteArray>(u2, ::bytes) 哇真是太 cool 了
看起来如果写完效果会很不错
不过现在有 array, bytes, Repeat 三种方式可以『循环』读取数据,有点感觉让人无所适从?

尤其是 array 和 Repeat,它们的结果都是 Array…… 只不过 array 的结果是 of reified type,Repeat 的是 Any 而已
This media is not supported in your browser
VIEW IN TELEGRAM
很想皮一下,移植 Haskell 式 newtype 我们也弄一个 NewType 式的读写,语言内部的类型概念只用于区分,可是那不是很工程。
OneItem 吧。
可是那样不能使用 companion object, 虽然我承认这本身就是一种略带滥用的方法
好像不行,算了……
感谢 CSDN 用户【初级程序员虾饺】的博文,unsigned extension 终于写对了…… 我对补码什么的机器数值表现形式不是很了解
我和 duangsuse 考虑再三,决定 Contextual 不能替代专门的 Pattern<Cnt>.sizedByteArray()

从根本上解决了 array, repeat, bytes『三要素』的混乱
开玩笑的,我就是 duangsuse。
说起来,要是想让 bin.pat.Pattern 架构支持静态长度写入,还得专门再加一个计算长度的操作,这样必须修改所有 Pattern 实现。

其实我没太大办法解决 Repeat(sizer, item); array(init, sizer); sizer.sizedByteArray 不对称的问题