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

fgx的类型= g.GX

如何解决《fgx的类型=g.GX》经验,为你挑选了1个好方法。

我不清楚为什么函数被定义为

f g x = g . g x

有类型

f :: (b -> a -> b) -> b -> a -> a -> b

我原以为它会是类型的

f :: (t -> t) -> t -> t

任何人都可以向我解释表达方式是如何分解的?谢谢!



1> lisyarus..:

请注意,功能应用程序具有最高优先级; 经营者以后来.

因此,该术语g . g x首先应用gx,然后组成的结果,g本身.如果x有类型b,g必须有类型b -> c.由于我们撰写gg x(型的后者c),c必须是一个函数式返回b,所以c = a -> b.现在,gis b -> a -> b的类型和类型g . g xa -> (a -> b); f碰巧的类型(b -> a -> b) -> b -> a -> a -> b.

如果你想要这样的东西(a -> a) -> a -> a,你可以试试其中之一

f g x = g (g x)
f g x = (g . g) x
f g x = g . g $ x
f g = g . g

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