if-program
没难度,直接按照输出样式用 list 链接即可
pow-expr
这里其实就是实施一个快速幂,其实之前用 Scheme 完成过类似的
只是这里需要使用宏
需要注意:
- list 和 cons 的区别
- 这里的 base 需要使用 unquote,因为需要显示实际的 base,因此前面需要用 quaisi-quote
repeat
这里需要实现两个函数
首先,define-macro
这里需要注意的是,网站已经给出等效的 lambda 的做法,因此这里需要传入的 f 应该用一个匿名函数来代替,需要借助 lambda 把一个表达式转换成一个函数/方法/变换
同时,需要注意 begin 的用法,这里的 f 调用需要加
()
给括起来然后做一个递归即可