如何解决如何运行 Ocaml 模拟
如果我想在下面的代码上运行抽象机的模拟,我怎么知道工作区、堆栈和堆中会有什么?
let rec map (f: 'a -> 'b) (y: 'a list): 'b list =
begin match y with
| [] -> []
| h :: t -> (f h) :: (map f t)
end in
let x = map (fun t -> t + 1) [0; 1; 2] in
0 :: x
解决方法
您使用了我们(阅读 StackOverflow 的人)不共享的术语。特别是,我们不知道你说的是什么抽象机器。
一般来说,关于计算机系统,工作区通常包含当前的定义。一开始它可能包含预定义的函数等等。您的代码使用了一些预定义的类型名称(如 'a list
)和构造函数(如 ::
)。我不知道它们是否需要专门出现在您的工作区中。
很可能您的 map
和 x
定义需要作为第一步加载到工作区中。
堆栈包含已调用但尚未返回的函数的记录。一般来说,开始评估时它会是空的。
堆是目前存在但稍后可能会消失(不再需要时)的一组值的通用术语。除非您计算名为 map
和 x
的值,否则堆一开始也可能是空的。
对不起,我不能说得更具体了。听起来你正在上课,你可能想咨询一些课堂资源(包括教授或助教:-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。