sml - 自然数上的通用序列
问题描述
我正在尝试创建一个通用序列,其行为如下:
val generic_sequence= fn : (int -> int) -> int seq
也就是说,它应该接收一个函数作为输入:
foo: int -> int
并创建一个在所有自然数上激活 foo 的序列。
我写了以下辅助代码(工作正常):
datatype 'a seq = Nil
| Cons of 'a * (unit-> 'a seq);
fun head (Cons(x,_)) = x;
fun tail (Cons (_,xf)) = xf();
fun naturals k = Cons(k,fn()=>naturals (k+1));
当我尝试实现通用序列时,我被卡住了。这就是我所拥有的。
fun aux (Cons(x,xf))= (Cons(foo x,(fn=>aux((xf())))));
fun generic_seq foo = (aux (from 0));
我有两个问题:
它不编译
我不确定我的方法是否正确
希望能得到一些帮助。
解决方案
好的,我想通了,
我创建了一个 mapq 函数,它基本上为我做了一切。
fun mapq f Nil = Nil
| mapq f (Cons (x,xf)) = Cons (f(x), fn() => mapq f (xf()));
推荐阅读
- angular - 如何将多个选择组件绑定到单个 Angular 6+ 响应式表单而不会发出重复的更改
- excel - 使用 excel 用户窗体激活 excel 工作表
- python - 阵列轴上滚动或滑动窗口的广义方法
- android - Appcelerator - 使用谷歌地图和开放街道地图在 Android 上出现问题
- kotlin - 将数据从回调推送到 Kotlin 协程的方法是什么
- flutter - 图片资源加载太慢
- php - 更改 Wordpress Divi 主题中的“阅读更多”文本
- docker - 使用 paclair 分析 docker-images 的配置以获取来自 nexus 的 clair
- python - 对于其他列中的每次更改,我们如何用这些行的平均值替换多行数据?
- java - 如何减小 GIF 大小?