monad理解

        每个学习monad的人都要写一份自己理解的monad。然后还是包括自己没人能看到自己在写啥,而且大部分写的还是错误的。

        距离学习monad有接近2周了,已经挺模糊了。

        monad我理解有两个基本作用:

1. 能够对全部的返回值做链式调用。只能封装成monad的形式,才能保证返回的是一个符合monad要求的对象,可以一直去链式调用

2. 将结果有变化的地方,用monad进行封装。骗自己说是封装的是行为,不是结果。美其名曰将变化的部分为了将副作用局限在一个可控的范围内。

monad就是自函子范畴上的幺半群。

        1. 自函子范畴

        A monad is a monoid in the category of endofunctors. Whats the problem?

1. 为什么叫范畴。就是因为可以存在f*g*m 等等这种多层复合映射,而不是只有单一的f(x)这种单一映射。为了表示这种多层复合映射,因此这里应该叫范畴才行

2. 自函子。应该就是指f*g*m这种复合映射的定义域和值域是同一个。

3. 幺半群其实就是重点理解return其实是一个单位元。

幺半群的三个特性,本质上就是为了可以有效的进行链式操作。同时结合律的特性保证了函数式程序的编译执行过程中,可以自主进行函数的优化结合进行性能优化。

函数式编程——Functor、Applicative、Monad | 楚权的世界

函数式夜点心:IO Monad 与副作用处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习数据库2

在数据库中创建一个表student,用于存储学生信息 查看建表结果 向student表中添加一条新记录 记录中id字段的值为1,name字段的值为"monkey",grade字段的值为98.5 并查看结果 向student表中添加多条新记录 2,"bob"…

鸿蒙开发小案例(名片管理))

鸿蒙开发小案例(名片管理) 1、页面效果1.1 初始页面1.2 点击名片展开1.3 点击收藏1.4 点击编辑按钮 2、实现代码2.1 DataModel.ets2.2 RandomUtil.ets2.3 ContactList.ets 1、页面效果 1.1 初始页面 1.2 点击名片展开 1.3 点击收藏 1.4 点击编辑按钮 2、…

百度、谷歌、必应收录个人博客网站

主要是给各个搜索引擎提交你的sitemap文件,让别人能搜到你博客的内容。 主题使用的Butterfly。 生成sitemap 安装自动生成sitemap插件。 npm install hexo-generator-sitemap --save npm install hexo-generator-baidu-sitemap --save在站点配置文件_config.yml…

【手撕数据结构】卸甲时/空间复杂度

目录 前言时间复杂度概念⼤O的渐进表⽰法小试牛刀 空间复杂度 前言 要想知道什么是空/时间复杂度,就得知道什么是数据结构。 这得分两层来理解。我们生活中处处存在数据,什么抖音热点上的国际大事,什么懂的都懂的雍正卸甲等等一系列我们用户看得到的&a…

鸿蒙语言基础类库:【@ohos.url (URL字符串解析)】

URL字符串解析 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入…

【K8s】专题六(5):Kubernetes 稳定性之重启策略、滚动更新策略

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号! 目录 一、重启策略 1、基本介绍 2、资源清单(示例) 二、滚动更新策略 …

Vue框架引入

vue简介 1.1.vue是什么?Vue官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ vue是一套构建用户界面的渐进式javascript框架 构建用户界面:将我们手里拿到的数据通过某种办法变成用户可以看见的界面前端工程师的职责:就是在合适的时候发出合适的请求,然后…

展开说说:Android服务之bindService解析

前面两篇文章我们分别总结了Android四种Service的基本使用以及源码层面总结一下startService的执行过程,本篇继续从源码层面总结bindService的执行过程。 本文依然按着是什么?有什么?怎么用?啥原理?的步骤来分析。 b…

Splunk Enterprise 任意文件读取漏洞(CVE-2024-36991)

文章目录 前言漏洞描述影响版本漏洞复现POC批量检测-nuclei脚本 修复建议 前言 Splunk Enterprise 是一款强大的机器数据管理和分析平台,能够实时收集、索引、搜索、分析和可视化来自各种数据源的日志和数据,帮助企业提升运营效率、增强安全性和优化业务…

数据库作业3

DELETE FROM student WHERE grade IS NULL; 一、数据库操作部分 1. 向 student 表中添加一条新记录: INSERT INTO student (id, name, grade) VALUES (1, monkey, 98.5); 2. 向 student 表中添加多条新记录: INSERT INTO student (id, name, grade) V…

【MYSQL】如何解决 bin log 与 redo log 的一致性问题

该问题问的其实就是redo log 的两阶段提交 为什么说redo log 具有崩溃恢复的能力 MySQL Server 层拥有的 bin log 只能用于归档,不足以实现崩溃恢复(crash-safe),需要借助 InnoDB 引擎的 redo log 才能拥有崩溃恢复的能力。所谓崩…

PHP的发展历程以及功能使用场景

PHP的发展历程 PHP的发展历程可以追溯到1994年,由丹麦计算机程序员拉斯穆斯勒多夫(Rasmus Lerdorf)出于个人网站统计访问者信息的需求而创建。以下是PHP发展历程中的几个重要里程碑: 初创阶段(1994-1995年&#xff09…

二刷力扣——单调栈

739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 ,用递减单调栈,就可以确定在栈里面的每个比当前元素i小的元素,下一个更大的就是这个i,然后弹出并记录;然后当前元素i入栈,仍然满足递减…

数学基础 -- 三角学

三角学 三角学(Trigonometry)是数学的一个分支,主要研究三角形的边长与角度之间的关系。三角学在几何学、物理学、工程学等多个领域中有广泛的应用。以下是三角学的一些基本概念和公式: 基本概念 直角三角形:一个角…

Java进阶----继承

继承 一.继承概述 继承是可以通过定义新的类,在已有类的基础上扩展属性和功能的一种技术. 案例:优化 猫、狗JavaBean类的设计 狗类:Dog 属性:名字 name,年龄 age 方法:看家 watchHome(),Gett…

防抖和字节流

防抖(Debouncing)和字节流(Byte Stream)是两个不同的概念,分别在编程和数据传输领域中使用。 防抖(Debouncing) 防抖是一种在前端开发中常用的技术,用于控制事件处理函数的执行频率…

Android多开应用软件系统设计

设计一个支持Android多开应用的软件系统,主要涉及到以下几个关键技术点和设计考虑: 1. 虚拟化技术 容器技术:与传统的虚拟机不同,可以采用更轻量级的容器技术,为每个应用实例创建独立的运行环境。这包括分配独立的用…

Ubuntu配置sendmail client,用sendmail命令来发送邮件

参考文档 https://mailoutgoing.com/support/mailrelay/sendmail.html https://www.sendmail.org/~ca/email/auth.html https://docs.oracle.com/en/operating-systems/oracle-linux/6/admin/configure-sendmail.html 总结 1、ubuntu环境下,sendmail服务位于/etc/i…

HTTP 请求走私漏洞详解

超详细的HTTP请求走私漏洞教程,看完还不会你来找我。 1. 简介 HTTP请求走私漏洞(HTTP Request Smuggling)发生在前端服务器(也称代理服务器,一般会进行身份验证或访问控制)和后端服务器在解析HTTP请求时&…

上位机图像处理和嵌入式模块部署(mcu项目2:串口日志记录器)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 淘宝上面有一个商品蛮好玩的,那就是日志记录器。说是记录器,其实就是一个模块,这个模块的输入是一个ttl串口&am…