首页
学习
活动
专区
圈层
工具
发布

Monoid_Haskell笔记9

,见newtype_Haskell笔记8 Product的Monoid实现如下: instance Num a => Semigroup (Product a) where () = coerce...from a use of ‘mappend’ 四.Foldable与Monoid Monoid实例都支持mappend行为,可以理解为“叠加”,把两个Monoid实例通过运算变成一个Monoid实例...,此外,还支持“折叠”(mconcat),能把一组Monoid实例从头到尾“叠加”起来,从而“折叠”成一个Monoid实例 一组东西能被“折叠”起来形成一个东西,这个东西就是“可折叠的”,即Foldable...,从类型声明来看,foldMap显然是面向Monoid的,而foldr则是更一般的fold接口 具体来看,foldMap所做的事情就是用函数a -> m对Foldable结构(t a)做映射,得到内容是一组...也是个Monoid实例,因为需要对Node的内容做mappend。

98230
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Navigation问题详解——Fragment创建新的实例

    之后,也在尝试使用Navigation,但是使用的过程当中遇到了问题: 每次进入下一个Fragment不管任务栈里是否存在该Fragment的实例,都会创建一个新的实例而不会复用。...为了说明问题,我录了一个GIF ?...这样就会出现一个问题,可能我们之前的OneFragment保存一些状态或者数据,当我们跳转OneFragment的时候,因为创建新的实例导致我们之前保存状态或者数据全部消失。...如有问题欢迎给我留言! 问题依旧.... 看似,我们在回退的时候,正常了。...但是,我们的问题依旧存在,每次点击的时候依然会创建一个新的Fragment,一个新的实例,只是我们在创建新的实例的时候,把之前的给清除了而已。 我会在下一篇文章介绍如何解决这个问题!

    2.2K20

    什么是 Monad (Functional Programming)?函子到底是什么?ApplicativeMonad

    问题:f和g合并成了h,那么可以合并的函数需要符合什么条件呢?...Monad工作原理包含两个部分:对原范畴组合成新的范畴,这个范畴对于Monad来说必须是幺半群Monoid,可以认为Monad是一系列自函子的组合,这种组合是一种转换,转换的结果是Monoid。...image.png fmap的输入参数是a->b函数,在我们这个案例中是(+3),然后定义一个函子Functor,这里是Haskell的Just 2,最后返回一个新的函子,在我们案例中,使用Haskell...在Haskell这类的强类型语言中,我们甚至可以组装自己的Tuple Monad。...,这没有问题,但是你不能将两个函数类型组合起来还是和原来函数类型一样。

    5.1K30

    热爱函数式的你,句句纯正的 Haskell【类型篇】

    我们从 wiki 上可以找到以下要点: Haskell 是一种标准化的,通用的纯函数式编程语言,有惰性求值和强静态类型; 在Haskell中,“函数是第一类对象”。...我们在下一小节做更为细致的说明“类型类”~ 类型别名 一个数据的类型可以由多个其他的类型组成,在 Haskell 中,可以用 type 关键字将这些复杂的类型替换成为其他简单的名字; Prelude>...上图不在灰色方框内的部分全部是类型类; Haskell 给很多“类型”分成了“类型类”,归为一类的类型有着共同的属性,不同类型所归的类就称为类型类。...floor floor :: (RealFrac a, Integral b) => a -> b Prelude> floor(1.2) 1 类型类中定义了一些函数,如果定义了一个新的类型,只要这个类型实现了类型类中声明的函数这个类型就属于该类型类了...可以看出,Haskell 的严格定义类型和 javaScript 中还是有较大差异,一个强类型,一个弱类型~ 强类型适合大型项目的维护,弱类型与动态性结合,开发简单,处理灵活; Haskell 的类型类

    1.7K30

    【Haskell】stack环境遇到的版本过低问题和网络问题

    我在刚想接触haskell,找到课程资源在搭环境时遇到了stack版本过低和网络的问题(貌似)。 stack版本过低 这个在课程资源的README.md里有讲,表现为类似于下面这行的错误。...RedownloadInvalidResponse # 按理来说更新就好 stack upgrade 但是,我那个时候也是网络有问题,最后其实是自己在github上下下来,然后解压安装的…… 网络 据...Polar学长所说,应该要挂代理,但是我其实已经挂了,而且也尝试过按照Install/upgrade - The Haskell Tool Stack (haskellstack.org)以及其他很多文档说的...,所说的挂上国内Thu的源,但是都不行。...最后,偶然直接搜Thu的stackage软件仓库源,发现上面找的文档不好用的原因,大概是stack版本更新,config.yaml的写法换了导致的,最终愉快地解决了。

    38710

    一些范畴论上的概念

    为了能真正理解Haskell中的Functor、Applicative、Monad、Monoid,以及它们到底有什么用,个人觉得还是有必要 了解 一些范畴论里面的概念的 函数 Function 函数表示特定类型之间的...Functor 函子与函数不同,函数描述的是类型之间的映射,而函子描述的是 范畴(category) 之间的映射 范畴 范畴是一组类型及其关系 态射 的集合。...Haskell中,Functor是可以被map over的东西,List就是一个典型的instance。...这表达了一个范畴的元素可以被映射为另一个范畴的元素 我们看下Haskell中map函数的定义: map :: (a -> b) -> [a] -> [b] 把我们上面的Int String的例子代入,配合柯里化的概念可以得出...我们再看下幺半群规定的结合律。对于函数而言,结合律就是将函数以各种结合方式嵌套起来调用。我们将Haskell中的 . 函数看做这里的二元运算。

    46710

    PHP弱类型引发的漏洞实例

    我们知道PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型,PHP 会根据变量的值,自动把变量的值转换为正确的数据类型,但在这个转换过程中就有可能引发一些安全问题。...在找回密码时,当$dopost = safequestion时,通过传入的member_id查询出对应id用户的安全问题和答案信息,当我们传入的问题和答案不为空,而且等于之前设置的问题和答案,就进入sn...函数松散性 switch() 如果switch是数字类型的case的判断时,switch会将其中的参数转换为int类型。 ? 实例:HDwikiSQL注入 ? 实际执行的语句: ?...实例:PHPYun二次注入 ?...以上就是常见的利用PHP弱类型产生的一些安全问题,在CTF、PHP代码审计中也会遇到这种利用弱类型来绕过逻辑判断,进而引发更大问题的漏洞。

    1.9K10

    Axios 实例 JSON 的问题

    结论 要用 axios.create 来创建实例,我之前没看文档,直接想当然的用 new axios.Axios,结果后端返回 application/json 的内容,而我只能接收到字符串。...因为 axios.create 会有一些默认配置项,其中就包括了对 JSON 的处理,所以说我们平时直接用 axios.get 的时候不用手动处理 JSON 格式的数据。...源码探究 本文写于 22/10/19,当读者看到时源码可能已发生变化,不过思想还是一样的。...在 lib/axios.js 的 25-44 行如下: function createInstance(defaultConfig) { const context = new Axios(defaultConfig...为了让更多的人能看到我的文章,也是由于收到邀请: 我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?

    68530

    七夕送礼很发愁?自己编写一个区块链送女友吧~

    我们需要在其各自的模块中放置主要的类型以及类型类的实例: {-# LANGUAGE GeneralizedNewtypeDeriving, NoImplicitPrelude, DeriveTraversable...我们需要一种方法来挖掘新的块来做任何有趣的事情。...一个常用的库就是 binary,该库提供了我们将为我们的类型实现的 Binary 类类型。 手动编写实例并不困难,但是使用递归类型的一个好处就是编译器可以为我们生成 Binary 实例。...Haskell wiki 有一份关于 binary 使用这些 Generic 实例来定义可用于任何内容的序列化器的概述。...我认为这些都是挖矿问题,因为矿工运行的代码需要处理这些问题。 对于#3 我们将等到 Networking 来解决. 其余的问题可以现在解决。

    1.1K160

    铁定不纯的IO_Haskell笔记5

    写在前面 一直有个疑惑,Haskell号称纯函数式语言,那么铁定不纯的场景(肯定有副作用,或者操作本身就是副作用)如何解决?...Haskell的做法其实类似于React的componentDidMount()等组件生命周期函数,React建议(道德约束)保持render()是纯函数,带有副作用的操作挪到componentDidMount...Haskell提供了do语句块,也是用来隔离不纯的部分的 一.I/O action 先看个函数类型: > :t print print :: Show a => a -> IO () print函数接受一个...a => Monoid (IO a) -- Defined in ‘GHC.Base’ 从类型上看,IO与Maybe :: * -> *类似,都是接受一个具体类型参数,返回具体类型(比如IO ())...:: (* -> *) -> Constraint Monad :: (* -> *) -> Constraint -- 找两个对应实例,List和IO instance Traversable []

    1.7K30

    从未来看C#

    DataModel(...); return new ErrorModel(...); } 还有和类型,用来表示多个类型之和,我们此前在设计接口时,如果需要一个类型实现了多个接口,则需要定义一个新接口去实现之前的接口...,样板代码 IAB 将不再需要: void Foo(IA & IB obj) { ... } 或者我们也可以这样声明新的类型: type IAB = IA & IB; Bottom Type Bottom...{ get; } } 然后我们可以为这个 concept 创建类型类的实例: instance IntMonoid : Monoid { int Append(this int x,...int y) => x + y; static int Zero => 0; } 这样我们就为 int 类型实现了 Monoid 接口。...后记 以上特性都是对代码布局和组成影响非常大的特性,并且不少特性几年前就已经被官方实现,但是因为存在尚未讨论解决的问题,迟迟没有发布进产品。

    36420
    领券