接上文 《从 Java 和 JavaScript 来学习 Haskell 和 Groovy(引子)》。
该文介绍了函数式编程的概念、特点以及Haskell这门函数式编程语言的相关知识。
Scalaz是由一堆的typeclass组成。每一个typeclass具备自己特殊的功能。用户可以通过随意多态(ad-hoc polymorphism)把这些功能施用在自己定义的类型上。scala
原文: http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html 参考文章: http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf
OOP中的Class是对象模板,用来描述现实事物,并封装其内部状态。FP中没有内部状态一说,所以Class在函数式上下文指的就是接口。派生自某类(deriving (SomeTypeclass))是说具有某类定义的行为,相当于OOP中的实现了某个接口,所以具有接口定义的行为
在List场景,xs <*> ys表示从左侧xs中取出函数作用于右侧ys中的每一项,有两种实现方式:
最近,我在阅读 Steve Yegg 的文集《程序员的呐喊》。 这是一本非常有趣的书,里面甚至包含了一个小测试(原文),区分一个程序员到底是保守派还是自由派。 下面一共有十个问题,每个问题都有 A 和
---- theme: github 每次看到干尸鬼鲛起舞,都有一种说不出的难受,不行,发出来,让大家一起难受难受~🐶 Haskell 是一门纯的函数式语言。 也就是说计算机主要是通过函数来完成的(像在数学中一样),而不是通过“先做这个,再做那个”的命令式操作顺序进行的(像在主流的编程语言中一样)。—— Simon Peyton Jones 初见😀 什么是 Haskell ?我们从 wiki 上可以找到以下要点: Haskell 是一种标准化的,通用的纯函数式编程语言,有惰性求值和强静态类型; 在H
如果不做任何处理的话…生成的 ml 里的 nat 则都会是 Church Numeral…
在上一篇文章中,我通过几个Java的例子简单的说明了Monad的本质和一些工程中常见的用途。接下来的文章就不再侧重于工程了,而是要慢慢向理论转换。而作为过渡,我选择了Haskell来代替Java进行说明。本篇文章默认读者已经对Haskell的基本语法有所了解,因此对此类内容我不会再做赘述。
如果现代Python有一个标志性特性,那么简单说来便是Python对自身定义的越来越模糊。在过去的几年的许多项目都极大拓展了Python,并重建了“Python”本身的意义。 与此同时新技术的涌现侵占了Python的份额,并带来了新的优势: Go – ( Goroutines, Types, Interfaces ) Rust – ( Traits, Speed, Types ) Julia – ( Speed, Types, Multiple Dispatch ) Scala – ( Traits, Sp
前两天,一个微信好友,也是我《Rust 第一课》的读者,就我课程中这段话跟我讨论了几句 TDD(Test Driven Development):
对从人脑功能磁共振成像(fMRI)数据中获得的丰富的动态的时空变化特性进行建模是一项具有挑战性的任务。对大脑区域和连接水平进行分析为fMRI数据提供了更直接的生物学解释,并且到目前为止一直有助于描述大脑中的特征。在本文中作者假设,与之前研究广泛使用的预先进行的fMRI时变信息转换以及脑区之间的功能连接特征相比,直接在四维(4D)fMRI体素级别空间中进行时空特征的学习可以增强大脑表征的鉴别性。基于这个目的,作者对最近提出的结构MRI(sMRI)深度学习(DL)方法进行扩展,以额外获得时变信息和在预处理好的fMRI数据上对提出的4D深度学习模型进行训练。结果表明使用基于复杂的非线性函数的深度时空方法为学习任务生成具有鉴别性的编码,使用fMRI体素/脑区/功能连接特征对模型进行验证,发现本文方法的分类性能优于传统标准机器学习(SML)和DL方法,除了相对简单的集中趋势测量的fMRI数据的时间平均值。此外,作者探讨了不同方法识别fMRI特征的优劣,其中对于fMRI体素级别特征DL显著优于SML方法。总之作者的研究结果体现了在fMRI体素级别数据上训练的DL模型的效率和潜力,并强调了开发辅助工具的重要性,以促进对这种灵活模型的解释。本文发表在IEEE Engineering in Medicine & Biology Society (EMBC)
Pair of Numbers Q: Why name inductive? A: Inductive means building things bottom-up, it doesn’t have
Scala语言设计概述 Scala的设计受许多编程语言和研究思想的影响。事实上,仅很少的Scala的特点是全新的;大多数都已经被以另外的形式用在其他语言中了。Scala的革新主要来源于它是如何构造并放在一起的。在这部分里,我们罗列了对Scala设计的主要影响。列表并不全——因为围绕着编程语言的设计有太多的好点子,没办法全都列举在这里。 Scala语言设计的“蓝本”语言 在最表层,Scala采用了Java和C#语法的大部,而它们大部分借自于C和C++句法的改变。表达式,句子和代码块多数和Java一样,同样
学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰。 作为一个程序语言的研究者,我深深的知道这种心理产生的根源。程序语言里面其实有着非常简单,永恒不变的原理。看到了它们,就可以在很短的时间之内就能学会并且开始使用任何新的语言,而不是花费很多功夫去学习一个又一个的语言。 对程序语言的各种误解 学习程序语言的人,经常会出现以下几种心理,以至于他们会觉得有学不完
学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰。 作为一个程序语言的研究者,我深深的知道这种心理产生的根源。程序语言里面其实有着非常简单,永恒不变的原理。看到了它们,就可以在很短的时间之内就能学会并且开始使用任何新的语言,而不是花费很多功夫去学习一个又一个的语言。 对程序语言的各种误解 学习程序语言的人,经常会出现以下几种心理,以至于他们会觉得有学不完的东西,
Until today, We were living in the monomorphic world of Coq. So if we want a list, we have to define it for each type:
参考iview, ant-design 的栅格组件,发现两者的基础思路是一致的。 这里通过实现一个简化版的栅格组件做总结.
首先我们需要 check equality for types. 这里非常简单,如果是 SystemF 会麻烦很多,对 ∀ 要做 local nameless 或者 alpha renaming:
本文最初发布于 Foxhound Systems 网站,经授权由 InfoQ 中文站翻译并分享。
Python 标准库中的functools和itertools模块,提供了一些函数式编程的工具函数。
前言 我们都知道,开发中会有这么一个过程,就是将服务器返回的数据转换成我们自己定义的模型对象。当然服务器返回的数据结构有xml类型的,也有json类型的。本文只讨论json格式的。 大家在项目中一般是怎么样将服务器返回的json转化成自己定义的模型类呢? 我在项目中一般都是使用的MJExtension。 本文讲解的也基本就是解读MJExtension中的部分源码。 好了,废话不多说,直接上代码,let's go 简单字典转模型 首先,从最简单的字典开始,例如我们需要将如下的字典转化成自定义的模型。
数学世界里,0是加法单位元,1是乘法单位元(identity element),例如:
本文的写作的灵感主要是看了这个视频 : Tutorial: Typeclasses in Scala with Dan Rosen
在前面的文章中,我们其实已经提及了一些泛型类型。例如Option、Vec和Result。泛型可以在函数、数据结构、Enum和方法中进行定义。在Rust中,我们习惯使用T作为通用的类型名称,当然也可以是其他名称,只不过习惯上优先使用T(Type)来表示。它可以帮我们消除一些重复代码,例如实现逻辑相同但参数类型不同的两个函数,我们就可以通过泛型技术将其进行合并。下面我们分别演示泛型的几种定义。
这门语言在数学模型上有着很深的优势,虽然它有很多特性,让人很难接受,随着学习的深入,你才会发现这会多么有趣。
前言 本文的写作的灵感主要是看了这个视频 : Tutorial: Typeclasses in Scala with Dan Rosen 加上查阅了相关的资料,觉得可以写一篇博客,再加上也很久没写博客了。本文的主要内容是根据参考资料 对typeclass的解释再加上自己的一点点理解,代码会借(cao)鉴(xi)资料中的例子(不过代码会稍作修改)。 正文 typeclass定义 首先简单看看维基上对于typeclass的定义:"In computer science, a type class is
https://learnyoua.haskell.sg/content/zh-cn/ch12/a-fistful-of-monads.html
这是一篇姗姗来迟的文章 ,我本应该紧接着在《架构守护代码化:架构文档即测试》一文之后,详细介绍我们在 Uncode 中引入的『架构守护代码化』工具 Guarding。不过呢,从时间点上来看,现在也不算太晚,笑。
在程序设计的时候,我们通常希望使用同样的数据结构或算法,就可以处理许多不同类型的元素,比如通用的List或只需要实现compare函数的排序算法。对于这个问题,不同的编程语言已经提出了各种各样的解决方案:从只是提供对特定目标有用的通用函数(如C,Go),到功能强大的图灵完备的通用系统(如Rust,C++)。在本文中,我将带你领略不同语言中的泛型系统以及它们是如何实现的。我将从C这样的不具备泛型系统的语言如何解决这个问题开始,然后分别展示其他语言如何在不同的方向上逐渐添加扩展,从而发展出各具特色的泛型系统。 泛型是元编程领域内通用问题的简单案例:编写可以生成其他程序的程序。我将描述三种不同的完全通用的元编程方法,看看它们是如何在泛型系统空的不同方向进行扩展:像Python这样的动态语言,像Template Haskell这样的过程宏系统,以及像Zig和Terra这样的阶段性编译。
柯里化即 Currying,是一门编译原理层面的技术,用途是实现多参函数,其为实现多参函数提供了一个递归降解的实现思路——把接受多个参数的函数变换成接受第一个参数的函数,并且返回接受剩余参数且返回结果的新函数。
用谱功率密度(Spectral Power Distribution ),SPD来描述光在不同波长的分布,就是光源在不同波长的功率分布
回归作为数据分析中非常重要的一种方法,在量化中的应用也很多,从最简单的因子中性化到估计因子收益率,以及整个Barra框架,都是以回归为基础,本文总结各种回归方法以及python实现的代码。
来来回回已经碰到这问题不知道多少次了,但每过一段时间总得把它弄混。郁闷啊。还是得记下来才行,不然每次都翻规范太痛苦了。
这里使用VirtualBox,虚拟机系统与正常系统,在性能上和功能上有些弱,其他基本一致。
mybatis可以说是目前互联网公司使用最广泛半自动的ORM框架,它不仅能够替代我们编写繁琐的JDBC代码,而且手动编写sql可以编写出更高性能的sql语句。这么优秀的开源框架,我觉得我们应该学习一下。
【新智元导读】人工智能(AI)已经成为一个热门话题,也是一个大的研究领域,每个巨头科技公司以及创业公司都在其中努力。这是一个非常广泛的话题,从基本的计算器、自我导航技术到能够彻底改变未来的具有自我意识
本文介绍了Scala语言中的多态性,包括基于类型的多态性、基于对象的多态性、基于函数和类的多态性,以及如何使用这些多态性编写代码。同时,本文还介绍了一种简化多态性方法:类型类,以及如何使用类型类来实现多态性。
::读作“类型为”(has type),告诉编译器变量name是String类型(即[Char]类型)的
当.NET在2000/2001年第一次发布的时候,Java社区认为它仅仅是从语言以及标准库上对Java的一个“克隆”。我们把二者的简单实例代码进行比较以后就可以很轻易地得出这样一个感受。不过,微软从它多年的Java经验中获益匪浅,并且成功解决了一些Sun现在才后知后觉的问题。Java社区也有人开始认为,.NET和CLR要比Java发展得更加快速。Neil Bartlett称: 我认为微软在CLR上的创新速度更快是非常明显的。举例来说:LINQ就是一个极其强大的新特性(补充一下,它基于Haskell语言的mo
因为前端并不需要对JSON 进行encode/decode , 只需要对JSON string 进行parse.
柯里化, 即 Currying 的音译。Currying 是编译原理层面实现多参函数的一个技术。
我们从SqlSessionFactoryBuilder解析mybatis-config.xml配置文件开始:
本文主要探讨了资本配置和资本定价方面的内容,包括资本配置的有效前沿、资本定价模型(如资本资产定价模型和证券市场线)和对冲基金在资本定价中的作用。作者通过分析资本配置和资本定价的关系,以及资本市场中的风险和收益,探讨了建立有效前沿的方法和资本资产定价模型在证券组合管理中的应用。同时,文章还探讨了资本定价模型在量化交易和对冲基金中的应用,以及如何在证券组合管理中应用这些模型。
非分区表 -- 示例1: use temp; drop table tmp_cuiwei_main_recommend; create table IF NOT EXISTS tmp_cuiwei_main_recommend( sml_sa_id int, sml_set_time int, sml_cancel_time int ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' L
而网上有不少的前端的代码高亮库,例如https://github.com/PrismJS/prism-themes 。针对这个样式 我有介绍各种Theme的效果Prism-Themes 代码主题样式效果 (zinyan.com)
从类型来看,Functor到Applicative再到Monad是从一般到特殊的递进过程(Monad是特殊的Applicative,Applicative是特殊的Functor)
领取专属 10元无门槛券
手把手带您无忧上云