“print("吃了么")”
说("吃了么")
“// 简单值部分”
“var 某变量 = 42
某变量 = 50”
变数 某变量 = 42
某变量 = 50
变参 k:数 = 1 “type inference is supported”
“let 某常量 = 42”
常数 某常量 = 42 “只能在文件作用域或「例」作用域声明和定义”
“let 隐式整数 = 70
let 隐式小数 = 70.0
let 显式小数: Double = 70”
量 隐式整数 = 七十
量 隐式小数 = 70.0
量 显式小数:实数 = 70.0 “小数点不能去!”
“let 标签 = "宽度为"
let 宽度 = 94
let 宽度标签 = 标签 + String(宽度)”
量 标签 = "宽度为"
量 宽度 = 94
量 宽度标签 = 标签去接(宽度去化文())
“let 苹果 = 3
let 桔子 = 5
let 苹果小结 = "我有\(苹果)个苹果."
let 水果小结 = "我有\(苹果 + 桔子)个水果." ”
解量 (苹果、桔子) = 元二(3、5)
量苹果小结="我有${苹果}个苹果"
量水果小结="我有${苹果+桔子}个水果"
“let 引用 = """
我说"我有\(苹果)个苹果."
我又说"我有\(苹果 + 桔子)个水果."
""" ”
量 引用 = """ 为
我说"我有${苹果}个苹果."
我又说"我有${苹果 + 桔子}个水果."
“var 购物单 = ["鱼", "水", "花"]
购物单[1] = "瓶水" ”
量购物单=动行一("鱼"、"水"、"花")
购物单[1] = "瓶水"
“var 职位 = [
"小二": "船长",
"小王": "机械师",
]
职位["小刘"] = "公关" ”
量 职位 = 动表一("小二"对"船长"、"小王"对"机械师")
职位["小王"] = "公关"
“购物单.append("颜料")
print(购物单)”
购物单去加入("颜料")
说(购物单)
“let 空数组 = [String]()
let 空字典 = [String: Float]()”
量 空数组 = 组<文>(0),“初始化器为”不可能。
量 空字典 = 表<文>(初始大小=0)。
“购物单 = []”
购物单=动行空()
“职位 = [:]”
职位=动表空()
“// 控制流部分”
“let 个人得分 = [75, 43, 103, 87, 12]
var 队得分 = 0
for 得分 in 个人得分 {
if 得分 > 50 {
队得分 += 3
} else {
队得分 += 1
}
}
print(队得分)”
量 人得分 = 行一(75、43、103、87、12)
变数 队得分 = 0
对人得分里的分数,
判存分数,
于0..50,队得分=队得分+1。
否则,队得分=队得分+3。 “这是假设绝句还没到第一个正式版的时候,没有存储抽象”
“有的话:队得分令置为「它后」“只是说可以这么写”、队得分令置为「+3」”
“var 可缺字符串: String? = "Hello"
print(可缺字符串 == nil)”
量 可缺字符串:文? = "Hello"
说(可缺字符串是空)
“var 可缺名字: String? = "鸟布拉斯基"
var 问好 = "吃了么!"
if let 名字 = 可缺名字 {
问好 = "吃了么, \(名字)"
}”
变文? 可缺名字 = "鸟布拉斯基"
变文 问候 = "吃了么!"
可缺名字? 令为,
问候 = "吃了么,$名字?"
“可见绝句要好好考虑一下这个标识符允许什么东西的问题,我的建议是:”
“(1) 参考Kotlin,因为Java/Kotlin 都不允许Unicode中符号的部分字符作为标识符成分,比如'?'。”
“(2) 针对全角半角的常见中文和程序设计语言文法符号,令解析器创建有针对性的镇静解析容错策略。”
“let 绰号: String? = nil
let 全名: String = "鸟布拉斯基"
let 打招呼 = "你好\(绰号 ?? 全名)"”
量 绰号:文? = 空
量 全名:文 = "鸟布拉斯基"
量 招呼 = "你好${绰号空则全名}"
“let 蔬菜 = "红椒"
switch 蔬菜 {
case "西芹":
print("纤维素高")
case "黄瓜", "胡萝卜":
print("干啃不错")
case let x where x.hasSuffix("椒"):
print("\(x)辣么?")
default:
print("炖汤里都行")
}”
引记法 绝句.符号 「以」
引记法 绝句.数据.文 「~终」
量 蔬菜 = "甜椒"
量 建议 = 判蔬菜,
"西芹","纤维素高"。
"黄瓜"、"胡萝卜","干啃不错"。
“它以("椒")终……” “这也是可选的。”
否则,
若蔬菜以("椒")终,"${蔬菜}辣么?"。
否则,"炖汤里都行"。
“这是绝句的带宾语判断(subjective when),中缀链表示法也是可以使用的,不过要在前面加上「它」以与值判断区分。”
判断,
蔬菜是"西芹",说("纤维素高")。
蔬菜是"黄瓜"、蔬菜是"胡萝卜",说("干啃不错")。
上皆,说(“那些是正常情况hhh”)。
“when语句不需要exhaustive也不需要有「否则」”
“顺便说一句,如果每一个 when branch 都是常量,最好还是用 `表一("A"对1、"B"对2)` 吧”
“可见,第三人称形式需要我们好好考虑何处该有,何处不该有。词法作用域技术上还是没问题的。”
“绝句不能学着类似Scala、Swift、Ruby一样什么都抄它们的,就随机判断而言我很不支持那种模式匹配做法,Haskell也不支持(这里,「随机」的机是当机立断的机)”
“这就是我说的「90%」以外的极端情况,为什么判断要有顺序?
判断、判x、判属、判存这些都是无序的,
允许 where x.hasSuffix() 就可能引入了副作用,这是不规范的。”
“相比之下,一般而言绝句的「」中缀记法的实现(和「算符」是不同的,算符是『元方法』)都不会有副作用,所以是相对一致的。”Forwarded from Albert News | 您可能感兴趣的内容 (Albert Xu)
Facebook Messenger is removing the ability to find someone by entering their phone number
Facebook Messenger正在删除通过输入其电话号码来查找某人的功能
来源:
https://twitter.com/wongmjane/status/1210864489358184448
Facebook Messenger正在删除通过输入其电话号码来查找某人的功能
来源:
https://twitter.com/wongmjane/status/1210864489358184448
Twitter
Jane Manchun Wong
Facebook Messenger is removing the ability to find someone by entering their phone number
翻译成中文就是
量 userProfile:AlipayProfile接着翻译就是
@GetMapping @RequireRoles("consumer") 取者,
回 currentUser 令为(alipayUserService去::getProfile)
?去令为(::AlipayProfileData)
空则,抛下BusinessEx("unexpected_exception") 。
量 用户资料:支付宝资料传输 【身份要求 "消费者"】
【GET路径】的取者,
回 当前用户令为(支付宝用户服务去::取资料)?
去令为(::支付宝资料传输)
空则,抛下BusinessEx("unexpected_exception")。Forwarded from dnaugsuz
所以说这样的无参 getter 就得用 val 的形式写了……虽然好像 Kotlin 的 annotation 无法把 getter 作为方法 annote?
val userProfile: AlipayProfile
@GetMapping @RequireRoles("consumer") get() {
return currentUser.let(alipayUserService::getProfile)
?.let(::AlipayProfileData)
?: throw BusinessEx("unexpected_exception")
}
duangsuse::Echo
“print("吃了么")” 说("吃了么") “// 简单值部分” “var 某变量 = 42 某变量 = 50” 变数 某变量 = 42 某变量 = 50 变参 k:数 = 1 “type inference is supported” “let 某常量 = 42” 常数 某常量 = 42 “只能在文件作用域或「例」作用域声明和定义” “let 隐式整数 = 70 let 隐式小数 = 70.0 let 显式小数: Double = 70” 量 隐式整数 = 七十 量 隐式小数 = 70.0 量…
“let 有趣的数 = [
"质数": [2, 3, 5, 7, 11, 13],
"斐波那契": [1, 1, 2, 3, 5, 8],
"平方": [1, 4, 9, 16, 25],
]”
量 有趣的数们 = 表一(
"质数"对 行一(2、3、5、7、11、13)、
"Fibo"对 行一(1、1、2、3、5、8)、
"平方"对 行一(1、4、9、16、25) ) “但这不是绝句一般的风格”
量『有趣的数们 一般风格』:表<文、行<数>> = 动表一() 顺便, “我觉得强行合法化规则还是和Kotlin一样吧”
它加入("质数"对 行一(2、3、5、7、11、13))
它加入("Fibo"对 行一(1、1、2、3、5、8))
它加入("平方"对 行一(1、4、9、16、25))
“好吧,这更不是一般风格……”
“var 最大 = 0
for (种类, 数) in 有趣的数 {
for 某数 in 数 {
if 某数 > 最大 {
最大 = 某数
}
}
}
print(最大)”
变数 最大 = 零 “皮一下”
解对『有趣的数们』里的(_种、数们),
对数们里的此数,
若此数大『最大』,最大 = 此数。
“若此数是最大,什么都不做。”
“所以说逻辑推导也是类型检查(会是这样)或者lint的时候必须的啊,还得考虑什么多线程,这又是一个难点”
“不过绝句应该好像可以加『语者』来允许 variable 的 smart cast、判定 exhaustive 什么的?”
“ ‘!语者 单线程逻辑’ ”
“var 翻番 = 2
while 翻番 < 100 {
翻番 *= 2
}
print(翻番)”
变数 『二翻番』 = 2
重复若『二翻番』小一百, “不良实践呢”
翻番令置为「*2」 “刻意用正式版的特性,以显得绝句的『高明』之处。”
“这个「」呢你可以理解为函数调用里另一个类似逗号的东西,不需要额外加括号才能调用了,不过它们也不可能作为值单独出现。”
“当然,绝句的记法(自定义中后缀)也是利用了这种括号的,不过个属于定义的就不一样了。最大的区别是调用的「」可以进行中后连缀、「定记法」和「记法的」很死。”
“var 也翻 = 2
repeat {
也翻 *= 2
} while 也翻 < 100
print(也翻)”
引记法 绝句.符号 「止」 “本来实现是在 绝句.区间.数步进 的,许多绝句的符号哪怕是「~前」「~后」都必须先「引记法」才能用,除非很内部的比如+-*/、且或非”
说((2止100)的末项)
变数 也翻=2
重复,也翻 = 也翻*2。若也翻小100; “加「;」皮一下”
“看,这里「重复……若…」里「若」的布局深度,就是父层的深度。一个「若」只能对应上一个「重复」”
“上一个也可以优雅地写进一行内,哪怕是包含多条语句也一样,这是逗号表示法最突出的一个优点。”
重复,
也翻 = 也翻*2
若也翻小100
说(也翻)
“var 总和 = 0
for i in 0..<4 {
总和 += i
}
print(总和)”
“看到这里的 0..<4,我突然觉得 Apple 的 Swift 设计得真是不考虑简单性…… 那么多特化的语法,却远远不如 Kotlin 的 a..b 和 a until b 好学、优雅”
变数 总和 = 0
对0止4里的i,总和令置为「+i」。 “再用一次正式版的特性,嘲讽一下 Swift。”
说(总和)
“// 函数和闭包”
“func 问好(人: String, 日子: String) -> String {
return "吃了么\(人), 今天是\(日子)." //“你看看这个语序不当的,表意语而不是上下文放前边。”
}
问好(人: "小白", 日子: "周二")”
“好吧,name: Type、name: Value of Type 算这个还能看得的。”
事 问好(人:文、日子:文):文 为
回"($日子)吃了么$人?"
事 问好1(人:文、日子:文) = "($日子)吃了么$人?" “传统Kotlin简化定义方式,还能返回类型推导”
问好(人="江小白"、日子="星期二") “代名调用,这样可以尽可能大的利用默认参数,规则和Kotlin一致同时只能使用带名不带名之一。”
“Kotlin fun a(x:Int=2, y:Int)=x”
“a(1) 会认为只是提供了 x 的参数,而绝句认为,形式参数跟在可选参数后是没有意义的,因为它的意义基本都可以等价代换到后面,而利用具名调用和不具名方式切分传参顺序相当令人困惑,所以类似C++地,不允许这种写法。”
“只解决不得不解决的问题(比如调用参数的模板化),不把解决方案本身做成一种问题。”
例物 星期(“公开的”量 号:文) 为 “很多东西默认都是公开的,而不是莫名其妙写一大堆public,这是鼓励大家把私下的逻辑写精炼一点。”
第一("一")、第二("二")、第三("三")、
第四("四")、第五("五")、第六("六")、
第七("日")
“本身有 name(名字)、ordinal(序号)”
“伴生例里有 values(取值)、valueOf(String)(值于)”
“func 问好(_ 人: String, 在 日子: String) -> String {
return "吃了么\(人), 今天是\(日子)."
}
问好("小黑", 在: "周三")”
“按照上面的说法,『绝句』绝不会在这种无聊的地方下功夫,为了解决一个不该存在的问题让代码更不和谐、更难理解。”
“绝句利用「记法」「内联的物」「扩物」完全有能力实现 `在("周三")向("小黑")去问好()` 这种形式且有能力进行『语序变动』的DSL,但它默认不那么做,难道这不比keyword arguments「高级」?只是不想给别人制造写出问题代码的可能性而已。”
“参数列表的特性上下功夫,甚至最后跪舔『脚本语言』Python式的弄,不如好好斟酌一下标准库怎么设计好。”
“func 统计(得分: [Int]) -> (最小: Int, 最大: Int, 总和: Int) {
var 最小 = 得分[0]
var 最大 = 得分[0]
var 总和 = 0
for 分 in 得分 {
if 分 > 最大 {
最大 = 分
} else if 分 < 最小 {
最小 = 分
}
总和 += 分
}
return (最小, 最大, 总和)
}
let 结果 = 统计(得分: [5, 3, 100, 3, 9])
print(结果.总和)
print(结果.2)”
“绝句里单引号是文档,可以在工具里看到。”
“一个类/物的类型参数可以直接加入文档,参数和返回值的文档可以直接加在前面也可以独立加”
“和Kotlin,也是Markdown的”
事 统计(得分:组<数>):‘最小、最大、总和’ 元三<数、数、数> 为
对得分里的分,
判分, “一时间我也找不到更好的方法把「对」和「判」连在一起”
它大最大,最大 = 它。 “「它」是此分支局部的”
它小最小,最小 = 它。
上皆,总和令置为「+分」。
回元三(最小、最大、总和)
这里,
变数 最小 初0;变数 最大 初0;变数 总和 初0 “不是一般的编程风格,但不置可否。”
“这个版本里,暂时我不会把对「变(属)(名)初(言)」的修改加上,请兼容前面的一部分。”
“func 返回十五() -> Int {
var y = 10
func 加() {
y += 5
}
加()
return y
}
返回十五()”
duangsuse::Echo
“print("吃了么")” 说("吃了么") “// 简单值部分” “var 某变量 = 42 某变量 = 50” 变数 某变量 = 42 某变量 = 50 变参 k:数 = 1 “type inference is supported” “let 某常量 = 42” 常数 某常量 = 42 “只能在文件作用域或「例」作用域声明和定义” “let 隐式整数 = 70 let 隐式小数 = 70.0 let 显式小数: Double = 70” 量 隐式整数 = 七十 量 隐式小数 = 70.0 量…
以前我偶尔以『艺术品』的心态想到『用中文写程序』,把中文看得比编程重,结果写出来的东西不像中文更不能编程。
现在我多学习了几门『不常见』的编程语言,Haskell、Scala、Kotlin,结果写出来的东西不仅符合编程逻辑而且像中文,这真是奇怪啊。
如果你连文字都不会敲、逗号顿号傻傻分不清,是设计不出『中文编程语言』的,这一点不必多说吧。
现在我多学习了几门『不常见』的编程语言,Haskell、Scala、Kotlin,结果写出来的东西不仅符合编程逻辑而且像中文,这真是奇怪啊。
如果你连文字都不会敲、逗号顿号傻傻分不清,是设计不出『中文编程语言』的,这一点不必多说吧。
duangsuse::Echo
😏 Sticker
FONT = Font.FreeTypeFont.read('/usr/...')
(BASE_X, FIXED_Y) = (..., ...)
def compositeText(s):
img = Image.open('panda.png')
(txtW, txtH) = FONT.getSize(s)
txtWd2 = txtW/2 #atom layout calc (width-balance)
img.draw_text(x=(BASE_X-txtWd2), y=FIXED_Y, font=FONT, text=s)
return img #effect
def main():
for text in input().split(" "):
img = compositeText(text)
img.save(f'panda_{text}.png') 别测试,我说着玩的,没看见我没写导入吗? 😂
其实我把 Binarie 的类图都画好了,难点也的 swapIntegral, fromIntegral, toIntegral 也整理到 Convert.kt 里了,可就是没时间实现了,算。
其实 ParserKt 也一样,我完全建模好了 Input 和 Parser(以及 PredicateParser:AtomParser, ReduceParser, Seq, Repeat、OrParser) 架构,可就是没时间实现…… 也是天注定吧。
其实 ParserKt 也一样,我完全建模好了 Input 和 Parser(以及 PredicateParser:AtomParser, ReduceParser, Seq, Repeat、OrParser) 架构,可就是没时间实现…… 也是天注定吧。
duangsuse::Echo
“let 有趣的数 = [ "质数": [2, 3, 5, 7, 11, 13], "斐波那契": [1, 1, 2, 3, 5, 8], "平方": [1, 4, 9, 16, 25], ]” 量 有趣的数们 = 表一( "质数"对 行一(2、3、5、7、11、13)、 "Fibo"对 行一(1、1、2、3、5、8)、 "平方"对 行一(1、4、9、16、25) ) “但这不是绝句一般的风格” 量『有趣的数们 一般风格』:表<文、行<数>> = 动表一() 顺便, …
事 『十五』():数 为
变数 y 初0
加();回y
这里, “当然是从 Kotlin+Haskell 共同衍生的用法,局部函数(local function) + where scope”
事 加() 为
y令置为「+5」
“一时间我也没想到「为」写一行内的做法,我考虑一下……”
“事 加() 为,y令置为「+5」。”
“可是多少还有点不好看,不够一致”
“啊,才想起来有等号函数的…… 😂”
事 加():效果 = y令置为「+5」“条件是得有存储抽象,那也不是很难实现的。”
“如果说包含赋值的「事」可以写在一行内,我是断断不能同意的……Python也是一样,Lambda都不能有赋值”
“func 造累加器() -> ((Int) -> Int) {
func 加一(数: Int) -> Int {
return 1 + 数
}
return 加一
}
var 累加 = 造累加器()
累加(7)”
事 造累加器():(数)数 为
事 加一(n:数):数 = n+1
回 加一
“这个累加器很不称职,是无状态的。”
量 累加 = 造累加器()
累加(7) “8”
物 真累加器(变数 n 初0) 为 “你没有看错,的确是这种顺序。”
“再比如呢” 造于(量x:数=0、变数 y 初1)
“造于(变参n:数“变参定义” = 0“默认值”、量k:数):我(n=1)”
“不是很对称,但我也没办法,因为我觉得它是(有价值?)的,实在不行我还可以「变参」么”
事 加上(k:数):真累加器 为
n=n+k;回我
初,说("又有一个累加器被制造出来了。")。
量 实际上之累加器=真累加器()
实际上之累加器去加(7)去加(8) “7+8”
变数 a“变参定义” 初0“初始值”
晚成的变参 a1:数“定义” “……”
变参 a2:数? 初空
说(a2!) “运行时异常”
“func 有匹配(列表: [Int], 条件: (Int) -> Bool) -> Bool {
for 某项 in 列表 {
if 条件(某项) {
return true
}
}
return false
}”
定记法「存」
私下的事 存匹配(此行:行<数>、条件试:命题<数>):真假 为
对此行里的,
量符合 = 条件试(它);若符合,回真。
回假
扩物 行<数> 为 “模板特化?🤔 绝句编译器使用 Map 数据结构查找这些特化的扩物,泛化类物实例什么的,参数化类型实例都有hashCode。”
记法「存」的事 存一(条件:命题<数>) = 存匹配(我、条件)
“func 小于十(数: Int) -> Bool {
return 数 < 10
}”
事 小于十(此数:数) = 此数小十 “放心,不会和「小」冲突。调用都是「去」或者无前缀、点号前缀的”
“属别名 命题<值者> = (值者)真假”
量 小于十闭包:命题<数> = 函数,它小十。 “函数「小十」”
“var 数列 = [20, 19, 7, 12]
有匹配(列表: 数列, 条件: 小于十)”
量 数列 = 行一(20、19、7、12)
有匹配(数列、::小于十) “架构器和函数都可以被引用,要是在对象上用就得『去::』了。”
“数列.map({ (数: Int) -> Int in
let 结果 = 3 * 数
return 结果
})”
数列去投至,〖此数:数〗
量结果 = 3*此数
回结果
说(数列去投至,3*它。)
数列去投至「*3」令为(::说)
“无论是用逗号表示法+第三人称还是「」中缀简记都比 Swift 好看一万倍,🌶🐔 Swift。”
“考虑到「投」不能作为标准符号没「引记法」,要不然就基本完全是自然语言了。”
“let 映射后 = 数列.map({ 数 in 3 * 数 })
print(映射后)”
量 映射后 = 数列去投至,〖此数〗3去乘(此数)。
说(映射后)
“let 排序 = 数列.sorted { $0 > $1 }
print(排序)”
量 有序 = 数列去排至,〖a、b〗a大b。“降序”
“当然,写多参空方括号多难看啊,`数列去排至「大」`也不赖。”
断言(有序[0]大有序[1])
说(有序)https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/index.html
试着定义一些绝句的核心类型,至于绝句如何翻译至多门语言…… 只当下面是Kotlin翻译目标专属的。
啊好累啊,会不会是绝句的文档写起来麻烦……
此外还有好多应该定义的,
Annotation 注解,这个只是个标记
Comparable 有序<入T>
算符 求序(另:T):序
例物 序 { 大、小、等 }
还有算符 component1-5
有许多组一 组空 组全空
当然,它可以这样调用,我还没设计 spread 语法……
CharSequnece 字符序列:可度
Annotation 里的也可以
Closeable 可关闭
Throwable 可抛下
Serializable 可化串
Pair 元二
Triple 元三
String 文
Nothing 断止
Unit 效果
Version 绝句.核心库版本
Function<in T, out R>
例物 并发安全 { 安全、实例一致、不安全 }
Exception 错误 (
Error 失败
RuntimeException 运行时错误
ArithmeticException 运算错误
IndexOutOfBoundsException 索引越界错误 (一般人写程序都不会出这种错误,所以不作简化)
ClassCaseException 作属断言错误(还分 Java 的、Kotlin 的、绝句的……)
IllegalArgumentException 参数断言失败
IllegalStateException 状态断言失败
AssertionError 断言失败:失败(绝句正好反着来,Exception=错误、Error=“异常”,Error是主动的所以叫失败、Exception是被动的而我又不想破坏中文语言习惯所以这么叫)
NoSuchElementException 项目未找到错误
NotImplementedError 尚待实现失败
NoWhenBranchMatchedException 分支穷举性断言错误(据说Common里没有)
UninitializedPropertyAccessException 属性未初始化访问错误
UnsupportedOperationException 操作未支持错误
NullPointerException 非空断言错误(还分 Java、Kotlin、绝句的)
NumberFormatException 数值解析错误
OutOfMemoryError 内存耗尽失败
Closeable 可关闭
Enum<ENUM: Enum<ENUM>>: 有序<ENUM>(name: String, ordinal: Int) 枚举项
为等、化记码、化文
abstract Number 数值
to (Byte/Short/Char/Int/Long/Float/Double)
以及 Byte, Short, Char, Int, Long, Float, Double 这些加了 Comparable 的
Boolean: Comparable<Boolean> 真假
算符 且、或、非……
记法「异」
为等、化文、化记码
扩展个 『化字节』 就可以了,但我不打算让 `true>false`,看不出有什么意义。
ConcurrentModificationException 并发变动错误(暂时这么叫?
This exception may be thrown by methods that have detected concurrent modification of an object when such modification is not permissible.
DeprecationLevel 弃置级别
Deprecated
SinceKotlin
Suppress, ReplaceWith
UnsafeVariance
Volatile 并发易变
Synchronized 完全同步
BuilderInference
大概就是这么说:
我不会……
PublishedApi 事实开放
OptionalExpectation 可无实际
ParameterName 默认名
试着定义一些绝句的核心类型,至于绝句如何翻译至多门语言…… 只当下面是Kotlin翻译目标专属的。
包 绝句
‘绝句中任何「物」的基础物,位于继承树的最顶端。’
开放的物『值』 “公开的造于()” 为
‘将[我]与[另]进行相等性判断。若等价,回真。’
‘[另] 比较宾语,`1是2`里的`2`。’
‘实现必须满足以下性质(这里 _斜体_ 都是非空 [值]):
+ 自反性(reflexive):对何 _x_,`x是x`成立。
+ 对称性(symmetric):对何 _x_、_y_,若`x是y`,`y是x`成立。否则`y是x`定不成立。
+ 传递性(transitive):对何 _a_、_b_、_c_,若`a是b`且`b是c`,`a是c`成立。
+ 一致性(consistent):对何配对的 _a_、_b_,任意次执行`a是b`结果不变,或者说它是纯函数(pure function)。
+ 非空判断:对何 _x_,`x是空`不成立。`空是空`成立。 ’
【内建 "Any.equals"】待例、开放、算符的事 问等(另:值?):真假
‘取此值的哈希码。对于 [为等] 的值,哈希码总是一致的,即便其一「不即是」另一。’
【内建 "Any.hashCode"】待例、开放的事 化记码():记码
‘取此值的文本化表达’
【内建 "Any.toString"】待例、开放的事 化文():文 啊好累啊,会不会是绝句的文档写起来麻烦……
此外还有好多应该定义的,
Annotation 注解,这个只是个标记
Comparable 有序<入T>
算符 求序(另:T):序
例物 序 { 大、小、等 }
属别名 顺序<T> = (T、T)有序.序Array<T> 组:可度(Sized) size大小 算符们:get取 set置 iterator建迭子
还有算符 component1-5
有许多组一 组空 组全空
fun <reified T> emptyArray(): Array<T>当然这个待例是【内建】的……
对何<真项>皆有待例的事 组空():组<项>
fun <reified T> arrayOfNulls(size: Int): Array<T?>
对何<真项>皆有待例的事 组全空(计:计数):组<项?>
fun <reified T> arrayOf(vararg elements: T): Array<T>
对何<真项>皆有待例的事 组一(许多的内容:项):组<项>
当然,它可以这样调用,我还没设计 spread 语法……
组一(*xs)还有许多的 Unboxed array:Boolean/Byte/Short/Char/Int/Long/Float/Double Array
CharSequnece 字符序列:可度
Annotation 里的也可以
【路径们 3、[1, 2, 3]】Cloneable 可复制
Closeable 可关闭
Throwable 可抛下
Serializable 可化串
Pair 元二
Triple 元三
String 文
Nothing 断止
Unit 效果
Version 绝句.核心库版本
Function<in T, out R>
对何<入T、出R>皆有物 函数 算符的事 用
Lazy<T> 惰性求值<值者>例物 并发安全 { 安全、实例一致、不安全 }
Exception 错误 (
接迎XX错误我觉得没啥不对的……何况异常和错误很多时候对它们的区别是让人莫名其妙的)Error 失败
RuntimeException 运行时错误
ArithmeticException 运算错误
IndexOutOfBoundsException 索引越界错误 (一般人写程序都不会出这种错误,所以不作简化)
ClassCaseException 作属断言错误(还分 Java 的、Kotlin 的、绝句的……)
IllegalArgumentException 参数断言失败
IllegalStateException 状态断言失败
AssertionError 断言失败:失败(绝句正好反着来,Exception=错误、Error=“异常”,Error是主动的所以叫失败、Exception是被动的而我又不想破坏中文语言习惯所以这么叫)
NoSuchElementException 项目未找到错误
NotImplementedError 尚待实现失败
NoWhenBranchMatchedException 分支穷举性断言错误(据说Common里没有)
UninitializedPropertyAccessException 属性未初始化访问错误
UnsupportedOperationException 操作未支持错误
NullPointerException 非空断言错误(还分 Java、Kotlin、绝句的)
NumberFormatException 数值解析错误
OutOfMemoryError 内存耗尽失败
Closeable 可关闭
Enum<ENUM: Enum<ENUM>>: 有序<ENUM>(name: String, ordinal: Int) 枚举项
为等、化记码、化文
abstract Number 数值
to (Byte/Short/Char/Int/Long/Float/Double)
以及 Byte, Short, Char, Int, Long, Float, Double 这些加了 Comparable 的
Boolean: Comparable<Boolean> 真假
算符 且、或、非……
记法「异」
为等、化文、化记码
扩展个 『化字节』 就可以了,但我不打算让 `true>false`,看不出有什么意义。
ConcurrentModificationException 并发变动错误(暂时这么叫?
This exception may be thrown by methods that have detected concurrent modification of an object when such modification is not permissible.
DeprecationLevel 弃置级别
Deprecated
SinceKotlin
Suppress, ReplaceWith
UnsafeVariance
Volatile 并发易变
Synchronized 完全同步
BuilderInference
大概就是这么说:
fun <T> sequence(block: @BuilderInference suspend Scope<T>.() -> Unit): Sequence<T>靠着 Scope<T> 上的 yield(T) 就能够推断出 Scope 的类型
val seq = sequence { yield(1) }
我不会……
PublishedApi 事实开放
OptionalExpectation 可无实际
ParameterName 默认名
Kotlin
kotlin - Kotlin Programming Language
duangsuse::Echo
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/index.html 试着定义一些绝句的核心类型,至于绝句如何翻译至多门语言…… 只当下面是Kotlin翻译目标专属的。 包 绝句 ‘绝句中任何「物」的基础物,位于继承树的最顶端。’ 开放的物『值』 “公开的造于()” 为 ‘将[我]与[另]进行相等性判断。若等价,回真。’ ‘[另] 比较宾语,`1是2`里的`2`。’ ‘实现必须满足以下性质(这里 _斜体_ 都是非空 [值]): +…
然后看看一些基本的算符……
inc后 dec前
plus加+ minus减- times乘* div除/ mod取余
unaryMinus取负-@
扩展的位运算,我打算把他们放在专门的包里
and与「位交」 or或「位并」xor异或「位异」
shl左移「左移」shr右移「右移」
fun TODO(reason: String): Nothing
fun Throwable.addSuppressed(exception: Throwable)
val Throwable.stackTrace: Array<StackTraceElement>
fun assert(value: Boolean, lazyMessage: () -> Any)
fun assert(value: Boolean)
fun check(value: Boolean)
fun require(value: Boolean)
fun <T : Any> requireNotNull(value: T?): T
fun <T : Any> checkNotNull(value: T?): T
fun <T : Enum<T>> enumValues(): Array<T>
fun <T : Enum<T>> enumValueOf(name: String): T
lazy, lazyOf
isFinite, isInfinite, isNaN
fun Double.toBits(): Long
fun Double.Companion.fromBits(bits: Long): Double
fun Double.toRawBits(): Long
fun Int.toBigInteger(): BigInteger
fun <T> Pair<T, T>.toList(): List<T>
fun <R> synchronized(lock: Any, block: () -> R): R
fun <R> runCatching(//令试
operator fun String?.plus(other: Any?): String
fun Any?.toString(): String
fun Any?.hashCode(): Int
“包 绝句.额联”定记法「接」
扩物『文』 为
待例、记法「接」的事 接(右:文):文
定记法「~次」
扩物『数』 为
记法「~次」的事 次:计次“……”
内联的事 计做(次:计次、动作:(计数)效果) 为
对次里的计,动作(计)。
……
语言内部的 ranges (progession), annotation 当然是需要的
考虑一下好像也需要 collection(Iterable可迭, Collection合, Slice切片, List行, Set集, Map表), math, text, system, io, delegates 甚至 time, reflect 这样的包。
此时和Kotlin差的除了Unsigned integer和suspend、Result<T>不多了。
inc后 dec前
plus加+ minus减- times乘* div除/ mod取余
unaryMinus取负-@
扩展的位运算,我打算把他们放在专门的包里
and与「位交」 or或「位并」xor异或「位异」
shl左移「左移」shr右移「右移」
val KProperty0<*>.isInitialized: Boolean量
fun TODO(reason: String): Nothing
fun Throwable.addSuppressed(exception: Throwable)
val Throwable.stackTrace: Array<StackTraceElement>
fun assert(value: Boolean, lazyMessage: () -> Any)
fun assert(value: Boolean)
fun check(value: Boolean)
fun require(value: Boolean)
fun <T : Any> requireNotNull(value: T?): T
fun <T : Any> checkNotNull(value: T?): T
fun <T : Enum<T>> enumValues(): Array<T>
fun <T : Enum<T>> enumValueOf(name: String): T
lazy, lazyOf
isFinite, isInfinite, isNaN
fun Double.toBits(): Long
fun Double.Companion.fromBits(bits: Long): Double
fun Double.toRawBits(): Long
fun Int.toBigInteger(): BigInteger
fun <T> Pair<T, T>.toList(): List<T>
fun <R> synchronized(lock: Any, block: () -> R): R
fun <R> runCatching(//令试
operator fun String?.plus(other: Any?): String
fun Any?.toString(): String
fun Any?.hashCode(): Int
“包 绝句.额联”定记法「接」
扩物『文』 为
待例、记法「接」的事 接(右:文):文
定记法「~次」
扩物『数』 为
记法「~次」的事 次:计次“……”
内联的事 计做(次:计次、动作:(计数)效果) 为
对次里的计,动作(计)。
……
语言内部的 ranges (progession), annotation 当然是需要的
考虑一下好像也需要 collection(Iterable可迭, Collection合, Slice切片, List行, Set集, Map表), math, text, system, io, delegates 甚至 time, reflect 这样的包。
此时和Kotlin差的除了Unsigned integer和suspend、Result<T>不多了。
唉突然莫名觉得好失望啊,做了那么多东西其实Kotlin早就有解决方案了,我还以为更好呢。
也是,绝句设计其实现在没啥时间的,还能指望什么有价值,文法上做点好东西就行了,其实类型系统本来不想的话也不必定义的。
Kotlin已经这么完善,直接翻译到Kotlin好了
也是,绝句设计其实现在没啥时间的,还能指望什么有价值,文法上做点好东西就行了,其实类型系统本来不想的话也不必定义的。
Kotlin已经这么完善,直接翻译到Kotlin好了
inline class Result<out T> : Serializable靠,我自己之前设计出内联类啊……Kotlin里现在也有了(虽然它早都有了,呵呵)
内联类什么的还是绝句编译器自己实现吧,免得要开Experimental以及语义差别。
对何<出值>皆有
内联物 结果:可化串……
我觉得还是苦它一点,先做成一个直接的翻译器吧…… 反正项目结构简直是和 Kotlin Van 全一致啊……
除了包命名空间的解析还是要自己做(记法的依赖),好像都没啥可说的了。
其实PKNF的形式化定义早就写出来了,而且PKNF语法本身就是上下文相关的(现在定义写在纸面上),所以说就语法而谈技术上是不存在难题。无论是『汉语编程』、自定义中缀、Layout布局、逗号表示法、汉字数值……
所以绝句应该在现在就可以开始整理语言和核心库设计了,不过在那之前我必须先把那个 Sakura 扩展lambda演算计算器的一部分弄出来,然后拿 ParserKt 尝试解决中文数值、自定义infix、布局文法的问题。(为了弄一个能被快速实现的『脚本语言』我之前有刻意简化Sakura呢,所以等这个叫Sakura的脚本语言发布之前会有一个语法比较类似的玩具能够测试各种东西)
除了包命名空间的解析还是要自己做(记法的依赖),好像都没啥可说的了。
其实PKNF的形式化定义早就写出来了,而且PKNF语法本身就是上下文相关的(现在定义写在纸面上),所以说就语法而谈技术上是不存在难题。无论是『汉语编程』、自定义中缀、Layout布局、逗号表示法、汉字数值……
所以绝句应该在现在就可以开始整理语言和核心库设计了,不过在那之前我必须先把那个 Sakura 扩展lambda演算计算器的一部分弄出来,然后拿 ParserKt 尝试解决中文数值、自定义infix、布局文法的问题。(为了弄一个能被快速实现的『脚本语言』我之前有刻意简化Sakura呢,所以等这个叫Sakura的脚本语言发布之前会有一个语法比较类似的玩具能够测试各种东西)
duangsuse::Echo
#Android #dev #tech 之前打算重构的e2im,其实草稿都打好了……
1. unsigned long long in 32-bit 检查是为何而定(这部分逻辑我是抄的,但不是复制粘贴
2. 'newline' bug in result protocol (已修复)
3. check errno always single digit, for result protocol limitation
4. prototecting(variable, op) and foreach(name, begin-end iterable, op) rewrite in functional subprocedure form
5. extract takeWhile functional abstraction
6. [Kotlin] retry -> runFailures
7. extract non-su mode superclass
8. specify error code semantics
!1 open fail
!2 file not exists
!3 file not supported
9. [Kotlin] add helper for ListFlags
getWithItem(.): Array<Pair<T, Boolean>>
setWithItem(flags: Array<Pair<T, Boolean>>)
mapWithItem(f):Unit = set(get().let(f))
10. extract: abstract class ChildProcessIntract
2. 'newline' bug in result protocol (已修复)
3. check errno always single digit, for result protocol limitation
4. prototecting(variable, op) and foreach(name, begin-end iterable, op) rewrite in functional subprocedure form
5. extract takeWhile functional abstraction
6. [Kotlin] retry -> runFailures
7. extract non-su mode superclass
8. specify error code semantics
!1 open fail
!2 file not exists
!3 file not supported
9. [Kotlin] add helper for ListFlags
getWithItem(.): Array<Pair<T, Boolean>>
setWithItem(flags: Array<Pair<T, Boolean>>)
mapWithItem(f):Unit = set(get().let(f))
10. extract: abstract class ChildProcessIntract