函数组合
2025/6/5大约 1 分钟
函数组合
我觉得可以有函数复合语法,函数a/b
意味着b在a后面执行(b(a(x))
),a*b
意味着b在a前面执行(a(b(x))
),这可以用于所有函数之间
可选
并且要输入输出类型相匹配才能通过
例如,先记录数据再清洗输入最后转换格式应该这样
ret *= logData/sanitizeInput/transformFormat
或者
ret *= transformFormat*sanitizeInput*logData
我就是要尽可能复用现有的符号,当这种复用在语言中普遍时,用户就会养成多看类型的习惯了
可选
process_data * 2
这种不是复合,应该算process_data(2)
另外我觉得可以在中间添加更多的转换
设计匿名函数,foo*^(\1, \0*k)*(1,2)
相当于foo(2,1*k)
允许分支f*[a,b]*2
等价于[f(a(2)),f(b(2))])
,于是[f,g]*[a,b]*2
等价于[f(a(2)),f(b(2)),g(a(2)),g(b(2))]
,这导致右边放列表的字面量会引发歧义,所以需要与列表字面量进行区分,或者它不允许与值组合来直接调用
以上转换为/
也成立只是方向反了
而模式匹配则主要用在/
上,每个{}里列出几个函数,只匹配参数对上的第一个函数
(a,b)/{
(1,x)->...
(2,x)->...
}/{
...
}/bar