今天见到了久违的supervisor……

首先是程序正确性的证明问题,如何证明我生成的hoopl representation是正确的。这个问题很复杂,老大说暂时不要纠结。的确,编译类的程序的正确性证明比较麻烦,估计要是真的能做出来东西以后才会考虑。

关于生成变量的变量名与原有变量名冲突问题,现在我的处理方法是统一前缀"prefix_",新生成变量为前缀加纯数字,原有变量则直接冠以前缀。新生变量名的唯一性由hoopl保证,而新旧变量名不可能重叠因为旧变量名不可能是纯数字,而新变量非前缀部分为纯数字。

关于生成新变量和functionCall的参数忽略问题,暂时来看老大觉得不会有什么问题,不过他也偏爱尽量获取已有信息去生成。暂时忽略。

关于forloop的step问题,与我预想的一样,step总是正整数。

莫名其妙自动出现的struct array mem问题应该是在plug-in部分以及C文件部分处理,所以下一步需要读这些部分,也是为生成C代码做准备。

可能可以使用ExtendedClass省略很多重复的工作,老大给了个例子可以研究一下。

关于增加IOmonad进去,原来可以用UniqueMonad的MonadTransfer,原以为m是一定要一个class的,原来不是,可以是IO。这样就可以随时打印出东西或者使用liftIO了。

关于pretty printing,果然是推荐平台自带的那个library。

关于之前说的使用seq来避免++,老大说如果不是有非常大的影响暂时不做。

type定义方面,建议我以后对复杂类使用record形式方便改动,当然我已经了解改类型的痛苦了,在删除depth参数的时候,满篇的改啊……

关于我的自娱自乐翻译工作,老大建议我找些人帮忙,虽然周围没有,但是可以去maillinglist里发,非常有道理~~