当前位置:  开发笔记 > 编程语言 > 正文

解释SML函数及其类型

如何解决《解释SML函数及其类型》经验,为你挑选了1个好方法。

所以我有这个功能:

fn (f,g,x) => g(f(x));

这个函数的类型是:

('a -> 'b) * ('b -> 'c) * 'a -> 'c

函数是否表示f表示'a,g表示'b,x表示'c?在那种情况下,怎么会('a -> 'b)出现?因为这不代表f - > g?

如果这是一个模糊而写得不好的问题,请道歉.

有人可以向我解释如何计算该函数的类型吗?

谢谢.



1> luqui..:

这是一个可能有用的图表:

   ('a -> b') * ('b -> 'c) * 'a  ->   'c
    ^^^^^^^^     ^^^^^^^^     ^     ^^^^^^^
fn (   f      ,     g      ,  x) => g(f(x));

对于任何你想要的类型'a,'b'c,

f拿一个'a并返回一个'b

g拿a 'b并返回a'c

x是一个'a.

'c在最后说,鉴于这些东西,我们的函数返回'c.

那你怎么得到一个'c?好吧,既然x'a,你可以f用来获得'b:

x : 'a
f(x) : 'b

现在我们有一个'b,如果你给g一个'b它会给你回'c:

g(f(x)) : 'c

这就是我们如何到达功能的主体.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有