Fw: [讨论] 未来式语法

楼主: sunneo (艾斯寇德)   2014-05-03 23:25:09
※ [本文转录自 Programming 看板 #1JPFyVsG ]
作者: sunneo (艾斯寇德) 看板: Programming
标题: [讨论] 未来式语法
时间: Sat May 3 22:37:13 2014
有天我再跟labmate聊天时提到:"如果等等谁出现了就..."
我想到程式语言与未来式条件的支援需求
当撰写程式的人期待着撰写一些事件触发行为时,他需要先为某个属性加上
callback的函式,然后为他撰写类似onUpdate的行为,接着才能为一个属性
撰写类似未来式的叙述。
目前较接近的方案是c++11的future & promise,不过跟这边想得还有些差异
我想的是如果有未来状态的条件判断,
使用者可以用轻巧的方式注册一个与变量相关的callback
这样的callback具有跟变量符号相等的区域性:
当使用者再一个函式内关心的是区域变量,则这个未来的发生只会在函式内。
如果关心的是一块动态内存,那么这个未来处理行为的发生会在任何存取的地方
这个未来式如果用编译器来支援,他应该可以像是lambda一样表达
future_condition:
future => (cond_expr) compound_statement
| future => changed(ident_list) compound_statement
那么编译器将要为所有cond_expr中,涉及的变量的改变插入一个叫用callback的指令。
如此一来,对于部份想要设计数学符号相关的使用者,他们可以让每个单独的变量都具有
函式同等意义的副作用。他可以用简单的方式定义(ex: y=a*x+b)
再任何地方取出变量时都可以得到相关变量的变化炼结。
这样的形式可以确保存取时得到的是变动后的模样
目前是否有看过类似未来条件判断的程式语言或实现?或者针对这方面的有效性评估?
======================================
我想以一个C-like的sample code大概是像这样
// y=a*x+b;
// update if changed
future => changed(a,x,b){
y=a*x+b;
};
// y is used as fraction, it should not be 0
future => (y==0){
warning("y should not be zero");
};
// some content(s) of array is changed (optional), re-product its sum
void somefuncCaptureChangeOfArray(int* array,int size){
int sum = 0;
sum = sumOfArray(array,size);
future => changed(array[]){ //注册事件
sum = sumOfArray(array,size);
};
dosomething(array); // <- 再这里面触发,array是阵列,位址方式,
}
但希望不要碍于一个形式,如果他更能像if的话就更棒了,所以上面应该变成
//y=ax+b
future if changed(a,x,b){
y=a*x+b;
}
future if (y==0){
warning("y should not be zero");
}
含condition的相当于capture特定变量的changed事件,然后去判断并执行,所以
future if(y==0){
// body
}
会等同于
future if changed(y){
if(y==0){
// body
}
}
作者: CindyLinz (Cindy Wang)   2014-05-04 00:01:00
要不要示意一下 sample code 可能长什么样子?
楼主: sunneo (艾斯寇德)   2014-05-04 00:26:00
原来现在ptt推文在merge上有同步处理了0.0 我补了sample
楼主: sunneo (艾斯寇德)   2014-05-04 00:29:00
真的有reactive的意味在
作者: adxis (Acquire higher)   2014-05-04 17:13:00
haskell? lazy evaluation?
作者: CindyLinz (Cindy Wang)   2014-05-04 19:45:00
haskell 有好几套 reactive programming 的 lib只是我不熟.... ._.
作者: CindyLinz (Cindy Wang)   2014-05-04 19:46:00
作者: NilPtr (神奇的空指标)   2014-12-23 23:54:00
看不太懂,是类似C++Boost的Signal/solt吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com