PLT 板


LINE

看板 PLT  RSS
※ [本文转录自 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 } } --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.127.114.38
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Programming/M.1399127839.A.D90.html
1F:→ jokester:没有明白, 会否有点像observer pattern?162.243.251.162 05/03 23:16
2F:→ jokester:可以附一个这文法的实用例子吗?162.243.251.162 05/03 23:16
3F:推 suhorng:挺有趣的XD 要不要转来 PLT 板讨论看看? 36.229.106.116 05/03 23:19
4F:→ sunneo:好啊 转转 140.127.114.38 05/03 23:22



※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: sunneo (140.127.114.38), 05/03/2014 23:25:09
5F:→ CindyLinz:要不要示意一下 sample code 可能长什麽样子? 05/04 00:01
suhorng:我有点联想到 reactive programming XD 05/04 00:14 ※ 编辑: sunneo (140.127.114.38), 05/04/2014 00:25:48
6F:→ sunneo:原来现在ptt推文在merge上有同步处理了0.0 我补了sample 05/04 00:26
7F:→ sunneo:真的有reactive的意味在 05/04 00:29
8F:→ adxis:haskell? lazy evaluation? 05/04 17:13
9F:推 CindyLinz:haskell 有好几套 reactive programming 的 lib 05/04 19:45
10F:→ CindyLinz:只是我不熟.... ._. 05/04 19:45
11F:→ CindyLinz:http://tinyurl.com/388jcaj 05/04 19:46
12F:→ NilPtr: 看不太懂,是类似C++Boost的Signal/solt吗? 12/23 23:54







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP