---- theme: github 每次看到干尸鬼鲛起舞,都有一种说不出的难受,不行,发出来,让大家一起难受难受~🐶 Haskell 是一门纯的函数式语言。 也就是说计算机主要是通过函数来完成的(像在数学中一样),而不是通过“先做这个,再做那个”的命令式操作顺序进行的(像在主流的编程语言中一样)。—— Simon Peyton Jones 初见😀 什么是 Haskell ?我们从 wiki 上可以找到以下要点: Haskell 是一种标准化的,通用的纯函数式编程语言,有惰性求值和强静态类型; 在H
英文原文:Functional Programming Is Hard,That's Why It's Good 很奇怪不是,很少有人每天都使用函数式编程语言。如果你用Scala, Haskell, Erlang,F#或某个Lisp方言来编程,很可能没有公司会花钱聘你。这个行业里的绝大部分人都是使用像Python, Ruby, Java或C#等面向对象的编程语言,它们用起来很顺手。不错,你也许会偶然用到一两个函数式语言特征,例如block,但人们不会去做函数式编程。 然而,很多年来,我
在两年半前我写了这篇文章《为什么柯里化是有用的》 ——一些关于在JavaScript中使用柯里化函数的赞美之言。这篇文章轻松成为阅读量最大的一篇,每个月给我带来许多读者。
本文最初发布于 Foxhound Systems 网站,经授权由 InfoQ 中文站翻译并分享。
该文介绍了函数式编程的概念、特点以及Haskell这门函数式编程语言的相关知识。
我在滑铁卢大学的最后一个学期选了CS444:编译原理这门课程,课程项目是编写一个编译器,将Java语言的子集编译成x86代码,三人结组,语言自由选择。
我记得刚接触计算机的时候,我就受到了两个非常巨大的错误观念的影响,这个观念最初是来自于老师的传授还是学长的教诲已经记不清了,但是直到我工作几年以后,才慢慢有了实际的体会:
作为开源领域的新手,我经常感到害怕。一开始,我甚至不确定我是否应该做贡献,尽管我在我的祖国印度尼西亚参与了几个社区。这种感觉并不容易消散(之前我一直活跃在Docker和Kubernetes社区)。
AI自动化技术一直以来总是能够给我们带来不一样的惊喜,让人惊叹AI行业的发展速度和潜力。其中,AI代码翻译工具成为众多开发者和编程爱好者们热议的一个话题,AI自动化技术的蓬勃发展为代码翻译带来了新的变革,这也引领着未来AI代码翻译的发展方向。
随着年度复工大戏的开播,编程界语言排行榜又要面临一次全新的洗牌,六大编程语言将要黄了!此消息一出,令众多程序员心碎!
Haskell 值与函数是统一的,函数只是需要其他参数输入的值。如果定义的是函数,那么这个函数的行为在运行过程中也是不会改变的,对于某一个特定的输入返回的结果总是确定的,这样的函数为纯函数。
前段时间学了下 Haskell,看完了《Haskell 趣学指南》,刷了一些题,《Real World Haskell》正在看。因为早先看过《SICP》,有点 FP 的基础,平常写 Swift 也喜欢用些 FP 的技巧,所以暂时没有什么特别颠覆性的感觉。最大的感受是,以前对 Functor、Applicative 和 Monad 的理解太片面了。
昨天的文章删了,因为我的 vscode 把 markdown 里的 * 自动替换成了 _,导致一些公式的表述变得异常奇怪。另外,原创忘记打开了。
本文作者是高级系统开发工程师 Torbear Gannholm。Torbear 有着 30 多年的开发经验,对技术很深刻的理解。对于什么是好的编程语言,他发表了一篇文章分享了自己的观点。以下是他的全文:
本文最初发布于 phaazon.net 网站,经原作者授权由 InfoQ 中文站翻译并分享。
在关于软件质量的相关谈论中,我通常会引用一条经验法则。所以,我决定发帖总结一下。我将其称为“软件质量的黄金准则”,因为它简单明了,并且可以广泛使用。
继月初 HStreamDB 0.9 正式发布之后,HStreamDB 团队投入了新的 v0.10 的开发周期。本月主要新增了端到端压缩、CLI 支持 TLS 等功能,并修复了多项已知问题,同时新的 Haskell gRPC 框架以及云原生的全托管流数据库服务 HStream Cloud 也正在开发中。
函数式语言在深度学习领域应用很广泛,因为函数式与深度学习模型的契合度很高,The Beauty of Functional Languages in Deep Learning — Clojure and Haskell 就很好的诠释了这个道理。
他书中的句子,他的公开演讲或是私下的谈话,都被不同的人到处引用 —— 今年的 code beam,好些 speaker 用 Joe 的原话来佐证自己的观点。Joe 因为 Erlang 的诞生被视作天才,视作英雄,视作传奇。但 Joe 自己却将其归功于 Ericsson 的「大度」:你知道 Ericsson 为什么把 Erlang 开源了么?因为有一天高层突然宣布:所有项目只能使用 C++ 或者 Java,不能用除此之外的任何语言。于是我们跟头头们商量,既然 Erlang 我们自己都不待见了,那干脆开源吧,头头说:随你便,我不关心。于是 Erlang 才得以摆脱 Ericsson 的控制,获得新生。
haskell是一种函数编程式语言,ghc是Glasgow Haskell Compiler的简称,也是Haskell Platform的基础. 下面是安装ghc的步骤:
选自知乎用户:https://www.zhihu.com/question/284549387/answer/451018336
Diesel 是一个安全的、可扩展的 ORM 和 Rust 查询构建器。其借助 Rust 的语言特性,在不牺牲性能的前提下,消除了运行时错误。
这很简单。 那么扩展一下,我们说任何值都可以放到一个上下文中。 现在你可以把上下文想象为一个可以在其中装进值的盒子:
Observable是方兴未艾的FRP(Functional Reactive Programming)革命里最引人注目的一把火炬。FRP发展了也有两年多了,至今为止,还没有一个很好的定义,wikipedia上的定义和reactivemanifesto.org上的说辞要么太抽象,要么太泛泛。我比较喜欢如下这样一个定义: FRP is about "datatypes that represent a value 'over time'" 因为它点出了最关键的要素:时间。在FRP出现之前,几乎没有一种软件思想
什么是函数式编程 基本概念:他是一种编程范式,对于函数式编程来说,它只关心定义输入数据和输出数据相关的关系,数学表达式里面其实是在做一种映射(mapping),输入的数据和输出的数据关系是什么样的,是用函数来定义的。 特征: stateless:函数不维护任何状态。函数式编程的核心精神是 stateless,简而言之就是它不能存在状态,打个比方,你给我数据我处理完扔出来。里面的数据是不变的。 immutable:输入数据是不能动的,动了输入数据就有危险,所以要返回新的数据集。(不可变的) Jav
人工智能已成为我们日常生活不可或缺的一部分,它被广泛地应用到几百种实际场景中,极大地便利人们的工作和生活。
从硬盘读文件时并不会一次性全读入内存,而是一点一点的流式读取。文本文件的话,默认buffer是line-buffering,即一次读一行,二进制文件的话,默认buffer是block-buffering,一次读一个chunk,其具体大小取决于操作系统
函数式编程是一种历史悠久的编程范式。作为演算法,它的历史可以追溯到现代计算机诞生之前的λ演算,本文希望带大家快速了解函数式编程的历史、基础技术、重要特性和实践法则。
并不是所有编程语言都能经久不衰。事实上,新一代的开发人员会采用他们认为更容易使用的其他语言或框架,即使是最流行的语言也不可避免地会走向衰落。
卡尔达诺是一个去中心化的公有区块链和加密货币项目,它目前正在开发一个智能合约平台,该平台旨在提供更多超越以往任何协议的高级功能。它是第一个衍生自科学哲学的区块链平台,主要以研究驱动,开发团队网罗了全球顶尖的工程师和研究人员。
上面的几个表达式产生的都是无限列表。对于习惯了主流编程语音的朋友可能感到困惑,在有限的内存里面如何能表达无限的概念。主要的原因就是 Haskell 是一门默认采用惰性求值策略的语言,没有用到的部分,在内存里面只是一个表达式,并不会真正的去做计算。
这门语言在数学模型上有着很深的优势,虽然它有很多特性,让人很难接受,随着学习的深入,你才会发现这会多么有趣。
近年来,函数式编程发展突飞猛进。探讨该主题的书籍和会议数量激增、Scala 和 Clojure 等语言在快速普及,还有 John Carmack、Bob Martin 等名人的支持,都说明了这一事实。
在上篇中,我们分析了函数式编程的起源和基本特性,并通过每一个特性的示例来演示这种特性的实际效果。首先,函数式编程起源于数理逻辑,起源于λ演算,这是一种演算法,它定义一些基础的数据结构,然后通过归约和代换来实现更复杂的数据结构,而函数本身也是它的一种数据。其次,我们探讨了很多函数式编程的特性,比如:
表达式是编程语言中最常用到的基础之一,本片让我们来看看在 Haskell 中表达式是怎样的?
最早接触过IO Monad,后来又了解了Maybe Monad和List Monad,实际上还有很多Monad(比如Writer Monad、Reader Monad、State Monad等),位于mtl package,可以通过ghc-pkg命令来查看:
词法分析(lexical analysis)1 和语法分析(syntactic analysis,又称为 parsing)2,同属于编译器的前端部分。词法分析器(lexer)将输入拆分为一个个的 token,然后语法分析器根据特定的语法规则将输入的 token 解析为一个结构化的表示,一般为抽象语法树(abstract syntax tree),供之后的语义分析器使用。
工程师要有技术观,产品观和数据观。 (1)技术观 什么是正确的技术观? 我觉得首先是对各种技术不排斥,兼容并蓄。初入行的工程师往往会陷入对某种技术的深深的迷恋而不能自拔,以至于一旦有不同的声音出现,就会使出吃奶的智商为自己的真爱辩解。这种单纯和幼稚几乎是每个工程师成长的必经之路,就像情窦初开的少年看上了隔壁班的小芳,就以为世上西子只此一人一样;等到见识到了更大的世界,读了更多的书籍,即便还深爱着小芳,也能欣赏环肥燕瘦了。 兼容并蓄意味着博采众家之长,用不同的工具解决不同的问题。 其次是对所用技术和所学技术的
Yesod是一个基于纯函数式编程语言Haskell的Web框架。它专为高效开发类型安全,RESTful和高性能Web应用程序而设计。本指南介绍了在Debian 7(Wheezy)上部署Yesod和Nginx Web服务器,MySQL数据库所需的过程。
许多同学好奇,私信问我是如何学习技术的。正好最近在学习 Rust 语言,趁着记忆犹新,便以 Rust 为例,谈谈我的学习方式。
今日 @开源中国 一则消息引发热议:微软计划将 Rust 作为 C 和 C++ 的安全替代品。
Pandoc 是由 John MacFarlane 开发的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的「瑞士军刀」。Pandoc 使用 Haskell 语言编写,以命令行形式实现与用户的交互,可支持多种操作系统;Pandoc 采用 GNU GPL 授权协议发布,属于自由软件。
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
本文作者从自己的观点出发,介绍了未来 20 年内可能消失的五种编程语言,并给出了具体的原因。最后对想要学习编程的初学者给出了学习建议。
本文作者从自己的观点出发,介绍了未来 20 年内可能消失的 5 个编程语言,并给出了具体的原因。最后对想要学习编程的初学者给出了学习建议。
shell 脚本的第一行,#!之后应该是什么?如果拿这个问题去问别人,不同的人的回答可能各不相同。
学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”。所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰。 作为一个程序语言的研究者,我深深的知道这种心理产生的根源。程序语言里面其实有着非常简单,永恒不变的原理。看到了它们,就可以在很短的时间之内就能学会并且开始使用任何新的语言,而不是花费很多功夫去学习一个又一个的语言。 对程序语言的各种误解 学习程序语言的人,经常会出现以下几种心理,以至于他们会觉得有学不完
领取专属 10元无门槛券
手把手带您无忧上云