PLT 板


LINE

看板 PLT  RSS
※ 引述《SansWord (是你)》之铭言: : 最近在做作业~正在学着用scheme 实作letrec : 现在作业已经due, 也已经写出来了~可是感觉自己还是有点一知半解... : 来这里问问有没有更general 的 "letrec 如何可能" 的学理原则 : 先解释名词(我想大家都知道了~不过还是先说明) : 以下语法用偷懒的scheme style psudeo code.(特色是括号还是超级多) : letrec: : (letrec : ( : (foo (\x. (if (= x 1) : 1 : (* x ( foo(- x 1) : ) : ) : ) : ) : (foo 3) : ) : letrec 是专门let里面有recursive call 的专门function : 我的作法是: : 先让environment (称为ev1) 里面有一个 (foo 'dontcare) pair : 然後再用set-cdr! 的方式把 (foo 'dontcare) 後面set : 成 lambda function eval 後的结果 : 可是在我的实作中~ eval lambad function 的时候,会包入当下的environment : 此时包入的environment (称为ev2) 内也必须要有一个 (foo '....) pair, : 否则该lambda function内的foo 会找不到东西 : =======以下开始 loop========== : 所以 ev2 的 (foo '...) pair 後面又是一个lambda, 里面又要包 : environment(称作ev3) 里面也要有 (foo '...) ...又得是一个lambda... : ... ... (inductive phrase) : 这个lambda 里面又要有env n....里面又要包lambda, 里面又要有env n+1 : ============================== : 所以要怎麽处理呢? : 我最後是recursively 的让env 里面包的就是env. (自己里面包自己) : 可是总觉得怪怪的.... : ============================= : 更麻烦的问题~那mutual recursion呢?又要怎实作? : 会不会有晦暗的角落出错我却没注意到? 我有玩过 Scheme 但不算很熟,从你的说明我无法清楚地了解你的做法(当然 也不清楚你遇到的困难是甚麽)。 如果是我会这麽做(使用 syntax 扩展): (define-syntax myletrec (syntax-rules () ((_ ((name value) ...) expr ...) (let ((name #f) ...) (set! name value) ... (begin expr ...))))) 这作法大致上如同 r5rs 里关於 letrec 的描述。 (letrec <bindings> <body>) Syntax: <bindings> should have the form (( variable init ) . . . ) 先利用 let construct 替每一个 variable 配置空间,然後再塞值到对应的 空间(binding)里,最後在这些 variable bindings 都存在的 context 内 evaluate <body> 内的所有的 expression。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.130.72







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灯, 水草

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

TOP