/tmp/duangsuse.sock
23 subscribers
303 photos
3 videos
92 files
337 links
从 duangsuse::Echo (@dsuse) 跟进出来的分支,将在作者恢复原帐号访问的时候合并删除。
Download Telegram
Forwarded from Deleted Account
sin triangle square saw
lpf hpf adsr
Forwarded from Deleted Account
应用的确是蛮多的
音乐本质波形,就是震子一段时间的的震动,频率、能量、波形……
sin wave; triangle wave
square wave; saw wave
high pass filter; low pass filter
ADSR
Forwarded from LiFePO4:沙雕吐槽 (Enl_DM☃️)
Forwarded from Nael
This media is not supported in your browser
VIEW IN TELEGRAM
#重要通知

【国家卫健委公布第四版诊疗方案:新型冠状病毒可通过接触传播】
国家卫建委与国家中医药管理局公布《新型冠状病毒感染的肺炎诊疗方案(试行第四版)》:①潜伏期一般3-7天,最长不超过14天;②多数患者预后良好,儿童病例症状相对较轻;③儿童及婴幼儿也有发病;④新型冠状病毒与SARS同源性达85%。(人民日报
Forwarded from 每日消费电子观察 (Dave Lin)
B社官方微博发毁灭战士x辐射漫画提醒:不要吃蝙蝠
https://www.gamersky.com/news/202001/1259733.shtml
streams.iterate(1, [](x) -> x * 2)
.filter([](x) -> x > 100_000)
.skip(5)
.take_while([](x) -> x <= 5000_000)
.for_each(system.out.println)

生成序列自(1),2*它。
去滤出「它大十万」
去略过(5)
去取当「它不大五百万」
去对所有(::说)

……怎么办呢……
/tmp/duangsuse.sock
今天上午,我想了一些语言实现的细节。 1. 绝句的一些语法大体上是那样,但偶尔会有『插入模式』的修改,怎么做这一部分的代码复用 比如,绝句的逗号表示法偶尔会有带 [] 标签的版本和 〖〗 参数的版本、enum class 的布局也要允许在顿号后换行,怎么在兼容这样情况同时进行解析器的代码复用 2. 我说「回」「抛下」「停下」不是表达式,那么 空则,回。 这样的类型检查怎么做? 况且绝句的逗号表示法的逗顿句简写,基本上可以认为是等同 Kotlin 的 {} brace block,那么它是否可以有值?…
1. 很简单啊,解析器不是可以动态用子程序组织的吗?只要添加对应的参数,就可以把结果放到 SyntaxTuple
2. 空则,回。 这个空则 当然是要求最后得到一个 Nothing 了(按 Kotlin 的思路)
,、。 逗顿句简记,如果是多句的情况并且需求处要一个值,为了保证顿号的语义没问题
是不可能支持的。逗顿句不能有值,如果是逗号块那也需要写 回[令为] 什么的。

所以说,「空则」提供多句可以,但最后都必须是……
算了,那样要分开来写控制流分析和类型检查啊…… 我感觉回到了 C _Noreturn 的时代,好无趣的样子啊
我在考虑 还是回到 Kotlin 的那种处理方法,{} block 内(逗顿句)也允许 return@ 好了
行一(回、停下、继续) 又该怎么办呢……

「若」的表达式形式也是
量 某物 = 若p,
回[某物] 1
否则,
回[某物] 2

……是不是有点 太严格了
而且这样

说(若[话]p,回[话]"你好"。否则,回[话]"再见"。)
println(if (p) "你好" else "再见")

就很冗长啊

说(若p,回[说]"你好"。否则,回[说]"再见"。)

这样又显得特殊处理太多,又是 block 调用的 receiver 又是量的名字、调用的函数名,还区分情况。

看来单句和多句的情况 必须要区分了

说(若p,"你好"。否则,"再见"。)

这是单句的情况,逗号表示法本身可以有值。

说(若p,说("啊")、"你好"。否则,"再见"。)


这段代码就无效了,多句不能有值……

可是…… 这个区分感觉好莫名其妙啊
说(若p,某事情()、偏好的招呼用语。否则,"再见"。)

、a。 其实给人「a是值」的感觉呢
这么说,Kotlin 真的做对了?
break continue 如果要支持 if 表达式,就必须要提供?
{} 里面的最后一项本来就应该表达块本身的值?
……果然最好的方法还是,面向表达式。
反正 控制流和表达式 明明就是一家子的
为什么要强行分开呢
Forwarded from Deleted Account
刚才提到了点传统的类型理论,小白肯定蒙蔽吧。
类型是值的集合,会以「a, b, c 值都属于 A 类型」形式描述。
1, 2, 3 都是 Int
1.0, 2.0, 3.0 都是 Double

fun Int.plus(other: Int): Int
是一个操作,接受两个 Int(receiver 处的也算)返回一个 Int
所以你就可以 (1 + 1) + 2 这么用,因为 (1+1) 本身也是 Int

A 和 B 的交集(intersection) 在类型上,就是说一个兼容AB交集的操作,同时兼容 A 和 B 作为输入
比如,Int 和 Double 的交集是 Number,fun Number.toInt(): Int,可以视为两者兼有的操作

A 和 B 的并集(union) 在可以同时视为 A 及 B
比如,Int 和 Double 的并集可以是 Number 以及 Any 以及 Any?

刚才我说 listOf(1, return): List<T> 其中用的操作的签名是 fun <T> listOf(vararg item: T): List<T>
之所以说是 union 不是 intersection 是,举个例子吧,因为它上面的 List<T>.get(Int): T 需要同时兼容输出 Int 和 Nothing,自然是并集喽。

Any? 的意思是除了 Any 原有的元素还可是 null

Kotlin 里那个 in / out 的意思还是从那个类型参数的使用位置来看。

fun main(args: Array<out String>)
就是不让用 Array<String>.set(Int, String)
Forwarded from Deleted Account
好看嘛,用 fun <CAT> play(cat: CAT) where CAT: CoolCat, CAT: Happyable 可不方便
不然语义实在捉鸡
Forwarded from Deleted Account
只是对于集合论的一些符号 化成 ASCII,许多人的理解会 产生分歧
这一点 不是特别容易遇到,但的确是存在的
有些人觉得 A|B 是 intersection 呢
还有人觉得 A^B 是 intersection
也有人吧 A|B 当 union
Forwarded from Deleted Account
我是说传统的那种情况,类型被视为集合
那样类型系统就是值和关于值的操作
Forwarded from Deleted Account
listOf 的两个参数 String, Int 我们来取一个 union……
interface String: Comparable<String>
interface Int: Number, Comparable<Int>

结果就是 Comparable<T>
两个参数再取 union…… {String & Int}
为了安全,compareTo(other: T) 就必须同时兼容 String 和 Int
就是 Any 啦

至于 Serializeable,那个也都说了是 { {Comparable<A&B>} & Serializable}
是在外面的东西
Forwarded from Deleted Account
Int & String 是 Any 或 Any?
fun accept(x: Any) {}
listOf(1, "").forEach(::accept)
acceptable

忘了,其实 Int&String 是 Nothing,不过 accept 是 Function<in Any, out Unit>