标签:VBA 这是一段非常好的代码,来自ozgrid.com,可以使用它来快速排序VBA中的数组。 代码如下: '对一维或二维数组排序....'二维数组可以通过传递适当的列编号作为sortKeys参数来指定其排序键. '函数传递一个引用,因此将对原始数组进行变异..... ' '示例使用: ' sortArray myArray - 一维数组 ' sortArray myArray, 2 - 二维数组, 单个排序键...' sortArray myArray, Array(2,3,1) - 二维数组,多个排序键 Function sortArray(ByRef arr As Variant, Optional ByRef...(可以使用自动筛选来查看默认排序与排序代码的结果对比): Sub smartNumberSort() Dim a, i& ReDim a(1 To 500) a(1) = "Key" For i
Do-notation Do表记(do-notation)是Haskell给Monad操作提供的语法糖。在不使用Do表记情况下,使用Monad的代码是相当混乱的。...在IO操作中,这个优势还可以变得更加的明显。Haskell采用Monad实现IO相关的API,这个Monad就称为IO Monad。...Haskell中的IO函数都会返回一个IO Monad,而上面的代码中,我们并没有对每一条都使用之前的结果。对于部分IO Monad(如putStrLn返回的),我们直接就抛弃了这些返回值。...Applicative和Monad都能实现运算的组合与排序,因此它们都能对运算进行建模,但是Applicative在运算的过程中并没有上下文。...至于这个定律是什么,在讲原理的文章中我会详细说明。
不可变的数据结构在 FP 中经常使用,让你不必时刻担心代码会对传递的数据做什么奇怪的事情。在这个 Java 应用中,我发现了大量“防御性复制代码”。...在这个 Java 应用程序中,我将很多有状态的函数转换为无状态的函数,让代码更加简洁,并修复了一些错误。...此外还有其他的一些好处(当然也有缺点),但总的来说,在这个 Java 应用程序中,我能够用较少的代码行修复错误并实现大量的新功能。在我的经验中,这是很常见的收益。 这些好处是众所周知的。...“流氓”的函数式编程 为了说明我的观点,我决定在函数式编程语言 Haskell 中实现快速排序。...如果你了解 Haskell 的语法,它就很容易理解,而且没有什么排序代码比它更容易维护的了(好吧,filter 确实应该被 partition 取代,因为 filter 会破坏信息;使用 filter
JUL 是什么 JUL全称Java util Logging是java原生的日志框架,使用时不需要另外引用第三方类库,相对其他日志框 架使用方便,学习简单,能够在小型应用中灵活使用。 ?...代码中如何使用(控制台输出) 1 首先创建一个maven项目 ? 2 写对应代码 ? ?...以后的日志不仅仅是控制台输出了,而且还可以输出到文件 运行上面代码之后: ? 还有文件: ? 这个里面的日志和控制台的一模一样 日志对象父子关系 ? ?...以上就是默认的,进行解释这个默认的配置: ? ?...,在配置文件里面把默认的关掉。
,要对数据集合中的元素做什么样的操作。...考虑一下排序的经典例子,可以自定义 Comparator 接口的实现,从而对特定对象列表进行排序。...比如 Categories,这个,我在前面一篇 《元编程》中已经介绍过了。 最后来说 Haskell。...前文已经介绍过了高阶函数的使用,但是在 Haskell 中,所有的函数都可以理解为,每次调用最多都只接受一个参数,如果有多个参数怎么办?...因为对于常规语言,如果面临递归工作栈过深的问题,可以优化为循环解决问题;但是在 Haskell 中,是没有循环语法的,这就意味着必须用尾递归来解决这个本来得用循环才能解决的问题。
Type Class (类型类) 的概念来自 Haskell,表示一系列函数的集合,在概念上, Type Class 和面向对象领域的泛型接口比较类似。...例如 Haskell 的 Ord 类型类在概念上和 Java 的 Comparable 非常类似。...在 Haskell 中,Type Class 使用 class 关键字定义: class BasicEq a where isEqual :: a -> a -> Bool isEqual...Java中的 Type Class 在面向对象领域使用接口解决类似 Type Class 的问题,例如 Java 的 Comparable 接口。...中已经预定了常见的Type Class Instance 的隐式对象,所以我们可以在任何地方对常见类型进行排序。
由于函数编程和静态,代码可以轻松地在云上的不同CPU上执行。行业采用方面,Facebook使用Haskell打击垃圾邮件。 6. JavaScript ?...在JavaScript中,学习对话模型并不重要。学习服务器端的数据,然后通过Ajax调用学习者进行预测。...例如,在Prolog中,更容易表达对象之间的空间关系,比如表达“绿色的三角形在蓝色的后面”。说明一般规则也很简单,例如表达“对象A比对象B更靠近人,而B比C更近,则A应该比C更近”。...C ++比其他语言更快——它在硬件层进行通信的能力允许你改进代码执行时间。这对在意耗时的人工智能项目非常有用。它可以用于统计AI方法,如神经网络中的。...在Python中,几乎所有的想法都可以通过30-40行代码快速验证。
在 Haskell 中 Functor 是一个类型类。 其定义如下: ? 在 Kotlin 中,可以认为 Functor 是一种定义了 fmap 方法/扩展函数的类型。...就像《黑客帝国》中的 Morpheus,fmap 知道都要做什么;如果你从 Nothing# 开始,那么你会以 Nothing# 结束! fmap 是禅道。...Applicative 定义了 (*)(在 Haskell 中是 ),它知道如何将一个 包装在上下文中的 函数应用到一个 包装在上下文中的 值上: ?...这究竟是什么意思,这个函数为什么包装在 JUST 中?...Monad 有一个函数 ))=(在 Haskell 中是 >>=,读作“绑定”)来做这个。 让我们来看个示例。 老搭档 Maybe 是一个 monad: ?
例如,在撰写 Haskell 时,无需担心以下问题: 我是否需要检查这个字段是否为空? 如果请求负载中缺少字段怎么办? 这个字符串已经被解码为整数了吗? 如果无法将这个字符串解码为整数怎么办?...类型签名甚至可以用来在 Haskell 代码的整个语料库中搜索相关函数。...以纯函数式风格编写代码具有很多好处,并且有利于打造井井有条的代码库。 “纯函数式编程”中的“纯”这个概念很重要。从这个意义上讲,纯度意味着我们编写的代码是纯净的,或者说没有副作用。...在 Haskell 中开发应用程序时,我们通常只在一个窗格中打开一个带有文本编辑器的终端,然后在另一个窗格中打开 ghcid。...在开发过程中,除了紧密的反馈循环外,Haskell 代码还易于重构和修改。就像用其他任何语言编写的现实世界代码一样,用 Haskell 编写的代码也不会写一次就完事。
其实对于一个物理学家,他心目中知识的价值是这样排序的: ? COBOL 在那么靠前的位置我觉得是用来搞笑的,不过你大致看到了很多 IT 技术在真正的科学家眼里的价值和它们的有效期。...引难为豪 在 IT 行业里批评一个技术难用,是一件非常容易伤自尊的事情,因为立马会有人噼里啪啦打出一些稀奇古怪的命令或者一大篇代码,说:就是这么简单!...如果 Haskell 有一天像 Java 一样如日中天(当然不大可能),肯定对大部分问题的答案也就是“去读API!”其实它已经在向这一步发展了。...其结果是,人类的文明因为这些文章,在程序员的世界里倒退了几十甚至几百年。很多外行人人不喜欢跟程序员说话,叫他们是 nerd,就是这个原因。 ?...它们在我眼里只不过是临时拿来用一下的工具,可是我仍然能用它们写出一流的代码。 看到这些宗教性质的聚会,我终于理解了一些地区是如何被从一个国家分裂出去,最后沦落为另外一个国家殖民地的。
最近有空就在看Haskell,真是越看越觉得这个语言有意思。在知乎(原回答@阅千人而惜知己的)找到了一份很有意思的求素数代码,非常简洁,我觉得很能体现这个语言的特点。...这里提及一下,[2..]是Haskell列表的一个神奇的特性,即支持无限列表。这个Haskell的lazy特性有很大的关系。...类似的算法在CPP中可以这么表示: bool primes[maxn]; for (int i = 2; i < sqrt(maxn+0.5); i...的确,在处理诸如递归这种问题上,FP总是能用短小精悍的代码在众多语言中脱颖而出。...虽然说这样高度精简的代码由于不直观,并不太适合在实际的项目中使用,况且其他语言的稍长的代码甚至可能在效率上更优,但这仍不影响Haskell表现其独有的简洁及优雅的魅力。
导语 :这个系列打算分为三部分,由浅入深地介绍所谓的函数式编程 1)Haskell入门 2)Monad介绍 3)函数式编程的思想 Haskell简介 Haskell诞生于1990年,是一门纯函数式编程语言...然后看下Haskell对这个问题的处理: ?...就一行代码,涉及了三个函数 1)filter :从价格集合中筛选出大于20的价格,形成新的集合 2)map:对1中产生的新集合进行变换处理,这里的处理是每个元素*0.9,也就是打九折 3)sum:对2中产生集合进行求和处理...我的电脑是Windows,在Windows下打开cmd,输入ghci,就能进入编程界面,在这个界面能够进行简单的编码,比如下面: ? 这里简单的进行了一次 3+5的求和操作。...这段代码定义了一个函数findMax,输入两个数字x和y,输出x和y的最大值,这里要注意下haskell内if else语句else是不可或缺的,不像JAVA可以只写if不写else。
除了提供额外的功能外,在每个对象中嵌入vtables还解决了之前需要构造新类型的问题。与Go不同的是,在Java中,排序函数可以使用该类型上的Comparable接口。...在C语言中,你可以使用预处理程序,在宏或头文件中定义你的数据结构,并多次包含#defines。在Go中,有像genny这样的脚本,可以简化代码生成的过程。...下面是模板Haskell中的一个例子。...所以这就意味着我们可以通过在我们的元级中增加类型系统来解决这个问题,并静态检查它们是否支持你使用的操作。...这就是泛型在Rust中的工作方式,在语言层面来说也是Swift和Haskell中泛型的工作方式。
Haskell是一种标准化的、通用纯函数式编程语言,有非限定性语义和强静态类型,在Haskell中,函数是一等公民。...ghc包含了三个主最要的部分: ghc 编译器 ghci 交互式解析器和调试器 runghc 以脚本的方式运行Haskell 而我们即将学习的起点就是在ghci中来练习Haskell的基本语法。...这个项目,有趣的地方在于很多审计需要符合科学与哲学,它要解决的问题很像是比特币+以太坊,很有意思的是它通过民主投票的方式来解决分歧,我很喜欢这个特性,我们持有的Cardano代币,就能让我们进行投票,并且这不是损耗...回归语言Haskell,函数式的编程其实有一点上,大家都很清楚,用很少的代码来完成一件事情。Haskell还可以定义跟数学的过程一一对应,这就很有意思了。...我们知道计算机学科其实也是一门数学学科,你想想,能跟数学的过程一一对应的语言,在研究领域,得多牛逼。
该标志--reorder-goals试图根据某些启发式重新排序目标。它可能使回溯更快。如果你不添加这个标志,cabal可能会进入某些“坏”搜索分支,并在这里浪费大量的时间和内存。...您可能会注意到“沙盒”版本yesod-platform可能比我们在上一节中安装的版本更新,因为在沙箱中,cabal在较小的树上搜索解决方案,因此结果可能会更好。...在本节中,我们将介绍一种将您的站点部署到Nginx的方法。 准备Yesod 在部署之前,您需要准备要部署的文件。.../configure && make从源代码构建Unix包的标准方法。但是不要跑到cabal install这里!此命令将您的应用程序安装到其沙箱中,这不是我们想要的。...我们只会/var/myblog在Production环境中运行,所以我们只需要修改这个设置文件的最后三行: /var/myblog/config/settings.yml1 2 3 Production
这是这个系列的最后一篇,从编程范型的角度概览,前面几篇的链接在文章后半部分有汇总。...Java 和 JavaScript 位列其中,从表中的分别可以看出二者的分别:因为 Java 有线程的概念,可以写并发编程范型的代码;有泛型的定义,可以进行泛型编程;有专门的 Class 类,可以反射和自省...这里提到 “多范型”,其实这个概念定义也不精确,大致来说,除了 Haskell,我们今天讨论的三门其它的语言,都算是多范型的编程语言。例如用 Java 也可以写函数式编程的代码,但是需要避免使用状态。...擅长表现面向对象的范型,限制也很多,不容易搞破坏,但是讽刺的是,它本身却存在非对象的原语类型,就是 int、float、double 等等这些东西,这个不足在 Groovy 中被修复。...Groovy 包含 Java 一切包含的东西,但是由于语言灵活,特别是动态语言的特性,在很多范型编程上面更有优势,比如面向切面编程。之前介绍过的元编程,在 Groovy 里发扬光大。
老九学堂 你身边的IT导师 11月编程语言排行榜 Java稳居第一,Python超越C#排名第四,而Perl、PHP 排名均有所下滑,其他脚本语言也逐渐走出前 20 名,甚至传说中最文青的语言 Haskell...被踢出 Top 50; 另一方面,今年年初,Swift 语言在 TIOBE 指数排行榜中曾一度进入前十名。...大型语言的优势: 另一方面,面对脚本语言存在的威胁,静态类型语言对它们在类型方面的繁琐操作进行了简化:它们都以 C# 中的“var”关键字开始,接着是 Java 中的类型推断和 C++ 中的自动指定符。...Top 10 编程语言 TIOBE 指数走势(2002-2016) 其它语言排名 第 21-50 名如下,可能存在遗漏: 第 51-100 名如下,由于它们之间的数值差异较小,仅以文本形式列出(按字母排序...请注意这个排行榜只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。
* y 形式与函数调用差不多,函数名加空格分隔的参数列表,=后面是函数体 2个特点: 声明顺序无所谓 函数名首字母不能大写,不能数字开头 P.S.数学里把相似的东西用x x' x''的命名习惯表示,在Haskell...里也可以这样做: y x = x ^ 2 y' x = x ^ 2 + 1 另外,中缀形式转换在函数声明中也可以用: x `mod'` y = x - (x `div` y) * y 一些场景下能够提升函数声明的可读性...无参函数 常量可以理解成无参函数,例如: > :t 2 2 :: Num t => t 或者更生动的例子: -- 无参函数,就是const two = 1 + 1 匿名函数 匿名函数即函数表达式,在Haskell...(10, 50) sArea = show area -- 可以定义函数 addSpace s = ' ' : s -- where可以嵌套,在辅助函数中定义辅助函数...、where、let、List Comprehension等特定场景) 六.数据结构 List Haskell中的List是单一类型数组,例如: emptyArr = [] numbers = [1,
and Haskell 就很好的诠释了这个道理。...然而在生产环境中,基于 性能和安全性 的考虑,一般会使用函数式语言 Clojure 或 Haskell。 在生产环境中,可能要并发出里几百万个参数,因此面临的挑战是:如何高效、安全的执行这些运算。...(refs),同时创建了多个线程自增这个引用对象,按理说每个线程都修改这个引用会导致竞争状态出现,但从结果来看是正常的,说明 Clojure 引擎在执行时会自动解决这个问题。...代码和阅读数学公式一样轻松。...3 总结 本文介绍了为什么深度学习更适合使用函数式语言,以及介绍了 Clojure 与 Haskell 语言的共性:安全性、高性能,以及各自独有的特性,证明了为何这两种语言更适合用在深度学习中。
我们从 wiki 上可以找到以下要点: Haskell 是一种标准化的,通用的纯函数式编程语言,有惰性求值和强静态类型; 在Haskell中,“函数是第一类对象”。...我们在下一小节做更为细致的说明“类型类”~ 类型别名 一个数据的类型可以由多个其他的类型组成,在 Haskell 中,可以用 type 关键字将这些复杂的类型替换成为其他简单的名字; Prelude>...在控制台输入 :t 5 查看输出: Prelude> :t 5 5 :: Num p => p 5 是 Num 类型类,这个数可以是整数,也可以是小数或其他数类型; => 是类型类的限定符号; Haskell...,如果定义了一个新的类型,只要这个类型实现了类型类中声明的函数这个类型就属于该类型类了; 小结 入门第一篇,类型在程序语言中非常重要!...,以及类型类底下的各种函数,真的太好用了吧~ 不用理会类型转换,特别是像 js 中的隐式转换,真的太爽了~ 在逐渐学习的过程中,不断提升强类型设计精髓的理解。
领取专属 10元无门槛券
手把手带您无忧上云