FlexibleContents扩展有什么好处?你能用一个简单的例子来解释一下吗? [英] What is the FlexibleContexts extension good for? Could you please explain it using a simple example?

查看:0
本文介绍了FlexibleContents扩展有什么好处?你能用一个简单的例子来解释一下吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过搜索对普通人(例如,像我一样读过LYHFGG的人)解释它的网页来了解FlexibleContages扩展的作用,但我没有找到任何这样的资源。

因此我就这个话题向专家请教:你们能解释一下这个扩展是什么,为什么会存在,并给出一两个简单的例子,说明人们应该如何使用它以及为什么使用它?

此外如果我正在阅读他人的代码which使用此扩展,那么我应该了解有关此扩展的哪些信息才能理解使用此扩展编写的代码?

推荐答案

没有FlexibleContexts函数定义上的所有类型类约束必须具有类型变量。例如:

add :: Num a => a -> a -> a 
add = (+)

其中a是类型变量。启用FlexibleContexts后,您可以在类型类中拥有任何类型。

intAdd :: Num Int => Int -> Int -> Int 
intAdd = (+)

这个例子是人为设计的,但这是我能想到的最简单的例子。FlexibleContexts通常只与MultiParamTypeClasses一起使用。下面是一个例子:

class Shower a b where
  myShow :: a -> b

doSomething :: Shower a String => a -> String
doSomething = myShow
在这里,您可以看到我们说我们只需要Shower a String。如果没有FlexibleContextsString,则必须是类型变量而不是具体类型。

这篇关于FlexibleContents扩展有什么好处?你能用一个简单的例子来解释一下吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆