let b = new SaveIterator([1,2,3].values())
[...takeWhile(x => x < 3, b)] //Array [ 1, 2 ]
b.lastItem //3
[...takeWhile(x => x <= 3, b)] //Array [ 3 ]
b.lastItem //undefinedSection = literateBegin (anyElement|Example)*? literateEnd
Example = exampleBegin anyElement*? exampleEnd
duangsuse::Echo
😂 Sticker
简直莫名其妙,我不是要写 Kotlin 文章的,怎么开始写起这个来了……
算了不要什么 exampleBegin 了,真是无聊。
算了不要什么 exampleBegin 了,真是无聊。
暂时没简化
其实 ES6 也不是不能简化 DOM 树/Event 的构建/操作,而且还很有效,可我暂时不想再设计,毕竟无关痛痒。
document.createElement 什么的,大家不喜勿喷。其实 ES6 也不是不能简化 DOM 树/Event 的构建/操作,而且还很有效,可我暂时不想再设计,毕竟无关痛痒。
今天有点晚了就写不了那个关系式的了…… 但愿明天,还有为了绝句成功完成必须的 Literate Kotlin 项目生成软件能正常写出来。
先修补下找出,绝句这几天就完善了『第一人称』『第二人称』『第三人称』和中缀链、基本语法模型。
剧透一下,那个关系式的 最后总结有 6 个基本元素:State, Variable, Introduce, Eq, Either, Both
fun <V, K> Iterable<V>.hist(key: (V) -> K): Map<K, List<V>> {
val histogram: MutableMap<K, MutableList<V>> = mutableMapOf()
for(item in this) histogram.getOrPut(key(item), ::mutableListOf).add(item)
return histogram
}
listOf(1, "abc", "emmm", -1)
[1, abc, emmm, -1]listOf(1, "abc", "emmm", -1).hist { it::class }
{class kotlin.Int=[1, -1], class kotlin.String=[abc, emmm]} #Kotlin 先修补下找出,绝句这几天就完善了『第一人称』『第二人称』『第三人称』和中缀链、基本语法模型。
剧透一下,那个关系式的 最后总结有 6 个基本元素:State, Variable, Introduce, Eq, Either, Both
<div class="literateBegin" id="input-impl"></div>现在可以这么写了。我艹,原来
<div class="literateBegin" depend="input-impl"></div>
exampleBegin 什么的都是过度设计,section 依赖才是真理啊! #Kotlin还是只有 literateBegin / literateEnd,可是却可以随便写 example,而且兼容独立按 md 文件单元编译的 standalone tool,还真是蛮 effective,适合我这种菜鸡。
突然觉悟我这个其实写错了啊!它既不是 peek 也不是 lastItem/consume!
peek 的肯定是 next 啊!可是这个只有第一个的 peek 是 next,其他的都是 lastItem…… 所以说 iterator 里应该是 yield lastItem 的,然后取下一个 lastItem。
而我要的其实不必真的 peek,lastItem/consume 就足够了,而且用 peek 的话 takeWhile 等函数式流操作依然要重写。
peek 的肯定是 next 啊!可是这个只有第一个的 peek 是 next,其他的都是 lastItem…… 所以说 iterator 里应该是 yield lastItem 的,然后取下一个 lastItem。
而我要的其实不必真的 peek,lastItem/consume 就足够了,而且用 peek 的话 takeWhile 等函数式流操作依然要重写。
duangsuse::Echo
我来谈谈 Literate Kotlin 的脚本应该怎么写。 #JavaScript 这个脚本,就是要允许我们在文章里嵌入 Kotlin 代码和依赖代码的示例, 然后每个相对独立且可以作为 Kotlin File 编译的部分完成后,显式一个按钮以归总一个部分的代码,并允许在 Kotlin Playground 执行它。 (感谢 JetBrains 特地包装的这个编辑器,使用一点也不困难,尽可能减少了我在无意义事情上花费的时间和痛苦) 至于 Kotlin Playground 的部分他们提供了很简单的 API:…
现在我有了一个更好的思路解决,也就可以写 example 了。
就是『我的 literate 的 literate 不是我的 literate』,我们认为 (literateBegin (literateBegin ... literateEnd) ... literateEnd) 里层的 (begin...end) 不被外部建项工具和 literate_kt.js 提取
然后就可以用 depend="parent_id" 直接去加隐式依赖就好了,反正每个 begin end 后都有 [Kotlin Code] 按钮的。
实现的模式是这样的:
就是『我的 literate 的 literate 不是我的 literate』,我们认为 (literateBegin (literateBegin ... literateEnd) ... literateEnd) 里层的 (begin...end) 不被外部建项工具和 literate_kt.js 提取
然后就可以用 depend="parent_id" 直接去加隐式依赖就好了,反正每个 begin end 后都有 [Kotlin Code] 按钮的。
<div class="literateBegin" id="emmm"></div>
<div class="literateEnd"></div>
<div class="literateBegin" id="wmmm"></div>
<div class="literateBegin" depend="emmm wmmm"></div> <!--inner literate-->
<div class="literateEnd"></div>
<div class="literateEnd"></div> 实现的模式是这样的:
Literate = <div class="literateBegin *"></div>
(<*> | Literate)*?
<div class="literateEnd *"></div>s=new SaveIterator([1,2,3])
Object { s: Array Iterator, last: {…} }
takeWhile(x=>x<2, s)
Generator { }
[...takeWhile(x=>x<2, s)]
Array [ 1 ]
s.lastItem
3 服了。
突然才想起来,其实 Peek/Save 和具体的辅助函数 next() 不 next() 关系都是很大的…… 一个是移动数据流、一个是不移动,根本没法直接兼容 takeWhile,不然是分不清的……
万恶的 ES6,它非得你 next() 才能知道是否 hasNext,或者说能判的时候状态必须改变,好多程序写起来就会麻烦一些
万恶的 ES6,它非得你 next() 才能知道是否 hasNext,或者说能判的时候状态必须改变,好多程序写起来就会麻烦一些